summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
Commit message (Collapse)AuthorAgeFilesLines
* core: fade in windows when they are brought from invisible workspacesVaxry2024-12-221-0/+6
|
* core: fix possible crash on null active workspaceVaxry2024-12-191-1/+2
| | | | fixes #7822
* internal: Make static analysis more happy (#8767)Ikalco2024-12-191-4/+4
| | | | | | | | | * make functions used in 1 file static * fix invalid substr param -1 * give default initializer to borderGradier * move RASSERT from printf to std::print
* internal: remove dead code (#8748)Ikalco2024-12-171-16/+0
|
* core: Move regex from stdlib to re2 (#8736)Vaxry2024-12-161-9/+11
| | | Moves the regex handling from stdlib to re2
* core: drop using deques in favor of vectorsVaxry2024-12-161-3/+3
| | | | No point in most of these.
* compositor: fix monitor arrangement with mixed auto directionsVaxry2024-12-131-32/+30
| | | | fixes #8518
* windows: allow replacing existing fullscreen (#8566)littleblack1112024-12-101-1/+4
| | | | | | | | | | | | | * feat: `binds:allow_replace_fullscreen` this allows replacement of fullscreen window(i.e. fullscreening another window when one is already fullscreened on the workspace) this is used when a floating window that is spawned on top of a fullscreen wanted to be fullscreened * clang-format * remove: config for `allow_replace_fullscreen`
* core: Add clang-tidy (#8664)Vaxry2024-12-071-20/+18
| | | | | This adds a .clang-tidy file for us. It's not a strict requirement to be compliant, but I tuned it to be alright.
* core: Add support for hyprqtutils' update screen (#8651)Vaxry2024-12-061-1/+13
| | | | | | | | | * Nix: add hyprland-qtutils to PATH * flake.lock: update --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* core: add a few festive splashesVaxry2024-12-051-2/+12
| | | | adds two new 'special' splash types for xmas and new years. Activated based on local time.
* core: move colorspace handling to oklab (#8635)Vaxry2024-12-031-5/+5
| | | | | | | | | | | * Meson: add hyprgraphics * Nix: add hyprgraphics * CI/setup_base: get hyprgraphics-git --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* binds: add option to allow fullscreening a pinned window (#8526)littleblack1112024-11-231-2/+13
|
* core: workspace-related function cleanup / refactorVaxry2024-11-221-159/+23
| | | | CCompositor is massive, and has a lot of functions that could be better optimized if in CWorkspace
* internal: fix changeWindowZOrder reordering incorrectly (#8494)Aqa-Ib2024-11-181-3/+3
|
* core: guard pmonitor in focuswindowVaxry2024-11-161-2/+2
| | | | | | may be null fixes #8483
* compositor: make sure we don't ret early on no surfaceVaxry2024-11-091-1/+1
| | | | | | if there is no implicit surface passed, make sure the current focus is not null, otherwise we nope early without focusing the window fixes #8293
* shadow: add sharp and refactor optionsVaxry2024-11-051-6/+5
| | | | options moved to decoration:shadow:
* renderer: Add a missing texture asset and a user checkVaxry2024-11-011-0/+6
| | | | | | | | 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.
* internal: more profiling less calls and local copies (#8300)Tom Englund2024-10-301-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* core: move internal structures to monitor pointers (#8266)Vaxry2024-10-271-32/+31
|
* core: fix group members disappearing when you move the group to another ↵Aqa-Ib2024-10-261-1/+1
| | | | | | | monitor (#8237) * fix group members disappearance when you move the group to another monitor * remove repeated action
* internal: cleanup CMonitor usage and fix a few ref hogsVaxry2024-10-261-4/+4
| | | | ref #8221
* groups: add group_on_movetoworkspace (#8159)Aqa-Ib2024-10-231-11/+38
|
* internal: Move CMonitor to SP (#8178)Vaxry2024-10-191-56/+56
| | | | | * move monitors to sp * XD
* monitor: modernize/refactor last legacy-handled eventsVaxry2024-10-191-1/+1
|
* hyprland: convert std::cout and std::cerr to std::println()Toni500git2024-10-131-6/+8
|
* input: Fix VRR for constrained cursors (#6877)UjinT342024-10-121-0/+4
|
* dispatchers: allow leading whitespace in window parameter (#8016)JManch2024-10-081-17/+20
|
* security-context: implement protocolVaxry2024-10-061-0/+12
| | | | fixes #7318
* compositor: update all xdg outputs on arrangeVaxry2024-10-051-0/+3
|
* compositor/wayland: up the max buffer size to avoid disconnects when app hangsVaxry2024-09-301-0/+4
|
* userchecks: add an xdg_current_desktop checkvaxerski2024-09-181-1/+11
| | | | | | ref https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/251 if the XDG_CURRENT_DESKTOP is externally managed (e.g. DE, DM, etc) Hyprland will not overwrite it. In those cases, if that's undesired, portals and other apps depending on it might break.
* internal: fix initial cursor warping (#7793)Ikalco2024-09-141-0/+34
|
* xwayland: add option to enable/disable xwayland (#7633)trianta2024-09-051-1/+1
| | | | | | | | | | | | | | | | | | | * config: add xwayland enabled option to config * xwayland: use DISPLAY env variable for enable/disable of new launches * xwayland: close X11 windows when turning of XWayland * clang: format fix * config: add better description for xwayland:enabled * xwayland: close X11 windows on disable without crashes * xwayland: better method of informing CXWayland if xwayland enabled * xwayland: prevent closing non-xwayland windows on disable * misc: loop formatting
* sessionLock: ensure sls focus in some edge cases (#7647)Maximilian Seidler2024-09-041-1/+1
| | | | | | | | | | | | | | | | * input: return early in mouseMoveUnified when the session is locked * sessionLock: make make a commit an opportunity to focus session lock surfaces * compositor: allow resetting focus when session is locked * input: remove redundant PMONITOR checks PMONITOR is checked above * input: check isSessionLocked earlier in mouseMoveUnified A bit of reordering, so that we don't call some stuff that is irrelevant when the session is locked
* xdg-dialog: implement new protocolVaxry2024-08-301-5/+12
|
* window/xwayland: minor property cleanupVaxry2024-08-301-7/+7
| | | | fixes #6921
* misc: constify the remaining for loops (#7534)Tom Englund2024-08-261-56/+56
| | | now we roll loops at blazing constified speed.
* core: make most for loops use const references (#7527)Tom Englund2024-08-261-16/+16
| | | | why not let the compiler optimise things for us at hyprspeeds when we can.
* misc: Rename all instances of "emtpy" to "empty" (#7522)Adithya Ajith2024-08-261-2/+2
|
* windowrules: add fullscreenstate field (#7466)Sungyoon Cho2024-08-231-2/+5
| | | | | * windowrules: add fullscreenstate field * fix typo
* monitor: avoid dangling references to old monitors being undestroyedvaxerski2024-08-191-2/+1
| | | | ref #7414
* compositor: update suspendstate on window move (#7396)Tom Englund2024-08-181-0/+1
| | | | | | hyprctl dispatch -- movetoworkspacesilent x,"^kitty$" where X is the current workspace makes kitty stops updating until current workspace is changed while it is on the screen. update the suspend state after it has been moved.
* env: Add HYPRLAND_NO_SD_VARS env condition (#7358)Vladimir-csp2024-08-161-2/+6
| | | | | | | | | * Add HYPRLAND_NO_SD_VARS env condition wip #7083 * Formatting shuffle * Formatting
* core: Preserve existing XDG_CURRENT_DESKTOP (#7347)Vladimir-csp2024-08-151-1/+6
| | | | | | | | | * Preserve existing XDG_CURRENT_DESKTOP * fix --------- Co-authored-by: vaxerski <vaxry@vaxry.net>
* cursormgr: fix cursor gsettings on session change (#7295)Ikalco2024-08-131-0/+1
|
* core: fix data race and a unsigned int rollover (#7278)Tom Englund2024-08-121-0/+4
| | | | | | | | | | | | | | | | | | * keybindmgr: avoid uint rollover on mouse keycode mouse keycode is 0, and the switch case checks for 0 - 8 and rolls over, just return early if keycode is 0. * watchdog: avoid data races in watchdog asan thread sanitizer reported data races in the watchdog from reading and setting the bool variables make them std::atomic bools. also add a atomic bool for the main thread to wait for to avoid data race when reading the config values. * hyprdebug: change non unicode character to name asan created false positives and didnt like this bit, so for the sake of easier debugging rename it to something unicode.
* pointermgr: fix initial cursorwarp (#7286)Tom Englund2024-08-111-35/+0
| | | | | | | change the hook to monitorAdded instead of newMonitor so its finalized in the compositor and added to vMonitors, move the checkDefaultCursorWarp to PointerManager and check for it upon mode change. and also ensure it doesnt go out of bounds by replacing it in the middle again on resolution changes.
* internal: introduce new types to avoid unsigned int rollover and signed int ↵Tom Englund2024-08-081-37/+37
| | | | | | | | | | | | | | | | | | | | overflow (#7216) * framebuffer: avoid gluint overflow GLuint was being initialized to -1 and rolling over to unsigned int max, its defined behaviour but very unnecessery. add a bool and use it for checking if allocated or not. * opengl: avoid gluint rollover -1 rolls over to unsigned int max, use 0xFF instead. * core: big uint64_t to int type conversion there were a few uint64_t to int implicit conversions overflowing int and causing UB, make all monitor/workspaces/windows use the new typedefs. also fix the various related 64 to 32 implicit conversions going around found with -Wshorten-64-to-32