aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-11-02Systemd fixesPavel Solovev
Fix installation path, install the service only if the systemd option is enabled
2024-11-01hyprland-systemd.desktop improvements (#8318)izmyname
2024-11-01renderer: Add a missing texture asset and a user checkVaxry
When an asset is missing, instead of a black screen, render an obnoxious, yet standard, missing texture. Additionally, warn the user assets failed to load. Shoutout to Arch for having their assets broken for months. Fix your shit. I am tired of it, and it's negatively impacting users.
2024-11-01hyprctl: reload windowrules on reloadAllvaxerski
2024-11-01monitors: fix vrr breaking monitor disconnect (#8314)Ikalco
2024-10-31snap: add option `border_overlap` and other improvements (#8289)Mike Will
* snap: add option `border_overlap` and other improvements I really liked the way borders used to overlap when snapping and how only the window's main surface would snap to the monitor, so I would like to bring that behavior back, but in the form of a config option. Other improvements include: - reduced the number of snap functions from 4 down to 2, and only one ever gets called at any given time. - border size should not be added to gap size. It seemed like the right thing to do at the time, but it makes snapping feel way stronger than it actually should. - all const variables have been given the all-caps naming convention. - to avoid excessive casting, border size is declared as a double. - to avoid excessive x + w, y + h calculations. I'm using a struct called Range and working only with start and end values until the very end of the function. - check for both monitor snapping as well as reserved monitor space snapping in a relatively efficient way. * snap: always border-align for corners and reserved monitor space We probably don't want to treat reserved monitor space as if it were just a smaller monitor. Instead, it should be treated more like a borderless window, which means our window's border should never encroach upon it.
2024-10-30internal: more profiling less calls and local copies (#8300)Tom Englund
* compositor: reduce amount of window box copies mousemoveunified can call this very frequently, the cbox copying actually shows up as an impact in such cases, move it down in the scope and only do it when necessery. * core: constify and reference frequent calls profiling shows these as frequent called functions try to reduce the amount of copies with references and const the variables. * pointermgr: remove not used local copy, const ref remove unneded local copies and const ref cursorsize. * inputmgr: reduce amount of calls to vectortowindow the amount of calls to g_pCompositor->vectorToWindowUnified fast ramps up in cpu usage with enough windows existing and moving the mouse, move the PWINDOWIDEAL up and reuse it if its already the same. * protocol: compositor remove unused local copy remove unused local copy of accumulateCurrentBufferDamage and const previousBuffer. * renderer: reduce scope of variables and refactor move a few variables down in their scopes to reduce the amount of calls and copies when not needed, also add one more for loop in renderWorkspaceWindows and store the windows in a vector with weakpointers that should be rendered, this adds a loop but reduces the amount of repeated calls to shouldRenderWindow and also makes the rest of the loops go over way smaller vector when many windows exist.
2024-10-30input: revert #8279Vaxry
2024-10-30input: simulate mouse movement after scroll to refocus window (#8279)nickodei
2024-10-30internal: check size limit in layouts (#8298)MightyPlaza
modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/helpers/MiscFunctions.cpp modified: src/helpers/MiscFunctions.hpp modified: src/layout/DwindleLayout.cpp modified: src/layout/IHyprLayout.cpp modified: src/layout/MasterLayout.cpp modified: src/macros.hpp
2024-10-30group: fix moveWindowIntoGroup (#8297)Aqa-Ib
2024-10-28seat: avoid sending pointless 'keymap' and 'repeat_info' events (#8276)staticssleever668
#### Describe your PR, what does it fix/add? Fix lag spikes when pressing more than 6 keys at the same time. #### Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.) Debugging process: <details> This is triggered by typing some applications, like CopyQ or XWayland. Typing in Firefox doesn't lead to lag, however it itself does lag handling these events. Profiling CopyQ shows that paths leading to `QtWaylandClient::QWaylandInputDevice::Keyboard::keyboard` take over 80% of processing time of an otherwise idle program. Looking at output of 'wev' even when it's not focused shows same events received over and over again. ``` [14: wl_keyboard] repeat_info: rate: 25 keys/sec; delay: 300 ms [14: wl_keyboard] keymap: format: 1 (xkb v1), size: 64754 ``` Looking at what passes through CInputManager::onKeyboardKey() -> CSeatManager::setKeyboard() shows Hyprland 'switching' between endpoints of the same keyboard, one of them being named like the other but with '-1' suffix. </details> Tested changing layouts in Fcitx5 and with following config. ``` input:kb_layout = us,cz input:kb_variant = ,qwerty input:kb_options = grp:alt_shift_toggle ``` Also tested changing 'input:repeat_delay' while running. Curiously, now these events appear in the output of 'wev' only once. Changing layouts still seems to work fine though. #### Is it ready for merging, or does it need work? Ready for merging.
2024-10-28hyprctl: move setprop into dispatchers (#8275)MightyPlaza
* move setprop into dispatchers modified: src/debug/HyprCtl.cpp modified: src/managers/KeybindManager.cpp modified: src/managers/KeybindManager.hpp * add deprecated modified: src/debug/HyprCtl.cpp
2024-10-28internal: few more marginal optimisations from profiling (#8271)Tom Englund
* deco: reduce local temporars and function calls profiling shows this is a high used function, reduce the amount of function calls and local temporar copies and also check if we even need to add extents at all in the loop. * popup: optimize bfhelper in popups pass nodes as const reference and reserve the size of the children node vector help reduce the reallocations. * procotol: make compositor bfhelper use const ref use const ref for nodes and reserve second nodes vector size to reduce amount of reallocation needed.
2024-10-28swallow: check if swallow_regex doesn't exist (#8265)Aqa-Ib
Avoid to run CWindow::getSwallower() when `swallow_regex` doesn't exist in the user's config file.
2024-10-28layout: slight adjustments to snapping logic (#8273)Mike Will
fixes some bugs with resizing and corner snapping
2024-10-27layout: don't snap to self and allow same-pid snapsVaxry
fixes #8255
2024-10-27layout: window snapping cleanup + fixesVaxry
way better now heh fixes #8259 fixes #8267
2024-10-27core: move internal structures to monitor pointers (#8266)Vaxry
2024-10-27groupbar: set locked color when groups are globally locked (#8257)Ryan
2024-10-27internal: optimize cursor move a bit (#8264)Tom Englund
* window: inline and const getWindowMainSurfaceBox getWindowMainSurfaceBox gets called a lot of times from deep down from mousemoveunified, profiling mousemoveunified it spends quite a lot of cpu time in here, let the compiler optimize the call to getWindowMainSurfaceBox by inlining and making it const. reducing the overhead. * inputmgr: return early and use std::any_of return early in mousemoveunified to reduce the amount of unnecessery calls to various pointers when not needed, also make isconstrained use std::any_of instead of for loop to use the STL optimized paths with hopes and dreams marginally faster. * decoration: return early, reduce temporar copy return earlier and reduce the temp copies by using one .lock instead of two
2024-10-27groups: fix swallowing (#8223)Aqa-Ib
* fix swallowing for groups * remove unnecessary check * clang-format * clarify comment * make variables consistent * make aditional variables consistent
2024-10-26Build with hyprland-session.service (#8251)izmyname
Co-authored-by: Mihai Fufezan <[email protected]>
2024-10-26misc: Fix bad links to wiki (#8240)Damianu
Same as in https://github.com/hyprwm/hyprland-wiki/pull/828
2024-10-26core: fix group members disappearing when you move the group to another ↵Aqa-Ib
monitor (#8237) * fix group members disappearance when you move the group to another monitor * remove repeated action
2024-10-26pointer: add default auto for no_hw_cursorsVaxry
auto defaults to off on nvidia, on for everyone else. Gotta wait until we do fucking drm_dumb and it fucking works
2024-10-26internal: cleanup CMonitor usage and fix a few ref hogsVaxry
ref #8221
2024-10-25example/hyprland-session.service: add support for xdg autostart (#8230)izmyname
2024-10-25security-context: avoid UB in C macro (#8229)Tom Englund
to safely use wl_container_of with a class the class has to be no virtual functions, no inheritance, and uniform access control (e.g all public) work around this by putting this into a destroywrapper struct.
2024-10-24Improve hyprland-session.service (#8225)izmyname
2024-10-24hyprctl: add caps/num lock state for keyboards (#8145)czlabinger
--------- Co-authored-by: Behzad <[email protected]>
2024-10-24internal: Remove some unused lambda captures (#8218)Honkazel
2024-10-23Makefile: fix legacyrendererdebug typo (#8214)Honkazel
2024-10-23updated flake.lockchitoroagad
2024-10-23groups: add group_on_movetoworkspace (#8159)Aqa-Ib
2024-10-22default/config: improve default animationsVaxry
objectively better
2024-10-22hyprpm: Add option to notify on fail and keep original notify (#8167)KAGEYAM4
* Only generate notification on fail Hyprpm fail/pass notification are mutually exclusive. * Add option to notify on fail and keep original notify (#1) * Add option to notify on fail and keep original notify --------- Co-authored-by: KAGEYAM4 <[email protected]> --------- Co-authored-by: littleblack111 <[email protected]>
2024-10-21renderer: fix floating window damage (#8182)Ikalco
2024-10-21input: add snapping to floating windows (#8088)Mike Will
* add snapping to floating windows Works for both moving and resizing of windows. It comes with 3 options: `general:snap:enabled` - whether it's enabled, off by default `general:snap:window_gap` - minimum gap in pixels between windows before snapping. Setting to 0 effectively turns off this method of snapping. `general:snap:monitor_gap` - minimum gap in pixels between window and monitor edges before snapping. Again, setting it to 0 effectively turns it off. * snap: add more ignore criteria and change if clause into a guard * snap: refactor code * snap: new refactoring approach and account for border size * snap: do corner snapping after all edge snapping is done The approach of performing corner snaps after each individual edge snap results in far fewer scenarios where snapping can occur. After trying it out for a while, I found that I prefer an approach that's more prone to snapping. * snap: combine snapWindows and snapMonitor into a single function * snap: add forced aspect ratio functionality * snap: avoid directly referring to border_size config value * snap: address vaxerski feedback - add new line between functions - use std::function typedef for SnapFn and make snap functions static - avoid uninitialized variable declarations. - change ignore condition m_bIsX11 to isX11OverrideRedirect() - use braces for CBox and Vector2D declarations. - add SNAP_INVALID to eSnapEdge enum - use bitshift notation for eSnapEdge and eRectCorner - make performSnap a non-member function. * snap: add corner-snapping to forced aspect ratio mode
2024-10-19monitor: avoid crash on released buffer in surfVaxry
2024-10-19layersurface: fixup brace styleVaxry
2024-10-19layersurface: round geom in arrangeLayerArrayVaxry
fixes #8171
2024-10-19internal: Move CMonitor to SP (#8178)Vaxry
* move monitors to sp * XD
2024-10-19defaultConfig: improve smart gapsVaxry
2024-10-19window: guard PMONITOR in commit listenerVaxry
ref #8170
2024-10-19monitor: modernize/refactor last legacy-handled eventsVaxry
2024-10-19foreign-toplevel-wlr: don't send updates to X11 OR windowsVaxry
2024-10-19foreign-toplevel: don't send updates to X11 OR windowsVaxry
2024-10-19config: fix generateConfig loop (#8164)Maximilian Seidler
* config: fix generateConfig loop * config: cleanup getMainConfigPath
2024-10-17session-lock: reset seat grab on a new session lock (#8147)Maximilian Seidler