Showing preview only (4,782K chars total). Download the full file or copy to clipboard to get everything.
Repository: hyprwm/Hyprland
Branch: main
Commit: b940b0d2c197
Files: 704
Total size: 4.4 MB
Directory structure:
gitextract_i75a93nh/
├── .clang-format
├── .clang-format-ignore
├── .clang-tidy
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ └── bug.yml
│ ├── actions/
│ │ └── setup_base/
│ │ └── action.yml
│ ├── labeler.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yaml
│ ├── clang-format-check.sh
│ ├── clang-format.yml
│ ├── close-issues.yml
│ ├── labeler.yml
│ ├── man-update.yaml
│ ├── new-pr-comment.yml
│ ├── nix-ci.yml
│ ├── nix-test.yml
│ ├── nix-update-inputs.yml
│ ├── nix.yml
│ ├── release.yaml
│ ├── security-checks.yml
│ └── translation-ai-check.yml
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── VERSION
├── assets/
│ └── hyprland-portals.conf
├── docs/
│ ├── Hyprland.1
│ ├── Hyprland.1.rst
│ ├── ISSUE_GUIDELINES.md
│ ├── hyprctl.1
│ └── hyprctl.1.rst
├── example/
│ ├── hyprland.conf
│ ├── hyprland.desktop.in
│ ├── hyprland.service
│ ├── launch.json
│ ├── screenShader.frag
│ └── swaybg@.service
├── flake.nix
├── hyprctl/
│ ├── CMakeLists.txt
│ ├── hw-protocols/
│ │ └── hyprpaper_core.xml
│ ├── hyprctl.bash
│ ├── hyprctl.fish
│ ├── hyprctl.usage
│ ├── hyprctl.zsh
│ └── src/
│ ├── Strings.hpp
│ ├── helpers/
│ │ └── Memory.hpp
│ ├── hyprpaper/
│ │ ├── Hyprpaper.cpp
│ │ └── Hyprpaper.hpp
│ └── main.cpp
├── hyprland.pc.in
├── hyprpm/
│ ├── CMakeLists.txt
│ ├── hyprpm.bash
│ ├── hyprpm.fish
│ ├── hyprpm.usage
│ ├── hyprpm.zsh
│ └── src/
│ ├── core/
│ │ ├── DataState.cpp
│ │ ├── DataState.hpp
│ │ ├── HyprlandSocket.cpp
│ │ ├── HyprlandSocket.hpp
│ │ ├── Manifest.cpp
│ │ ├── Manifest.hpp
│ │ ├── Plugin.cpp
│ │ ├── Plugin.hpp
│ │ ├── PluginManager.cpp
│ │ └── PluginManager.hpp
│ ├── helpers/
│ │ ├── Colors.hpp
│ │ ├── Die.hpp
│ │ ├── StringUtils.hpp
│ │ ├── Sys.cpp
│ │ └── Sys.hpp
│ ├── main.cpp
│ └── progress/
│ ├── CProgressBar.cpp
│ └── CProgressBar.hpp
├── hyprtester/
│ ├── CMakeLists.txt
│ ├── clients/
│ │ ├── child-window.cpp
│ │ ├── pointer-scroll.cpp
│ │ ├── pointer-warp.cpp
│ │ └── shortcut-inhibitor.cpp
│ ├── plugin/
│ │ ├── Makefile
│ │ ├── build.sh
│ │ └── src/
│ │ ├── globals.hpp
│ │ └── main.cpp
│ ├── protocols/
│ │ └── .gitignore
│ ├── src/
│ │ ├── Log.hpp
│ │ ├── hyprctlCompat.cpp
│ │ ├── hyprctlCompat.hpp
│ │ ├── main.cpp
│ │ ├── shared.hpp
│ │ └── tests/
│ │ ├── clients/
│ │ │ ├── .gitignore
│ │ │ ├── child-window.cpp
│ │ │ ├── pointer-scroll.cpp
│ │ │ ├── pointer-warp.cpp
│ │ │ ├── shortcut-inhibitor.cpp
│ │ │ └── tests.hpp
│ │ ├── main/
│ │ │ ├── animations.cpp
│ │ │ ├── colors.cpp
│ │ │ ├── dwindle.cpp
│ │ │ ├── exec.cpp
│ │ │ ├── gestures.cpp
│ │ │ ├── groups.cpp
│ │ │ ├── hyprctl.cpp
│ │ │ ├── keybinds.cpp
│ │ │ ├── layer.cpp
│ │ │ ├── layout.cpp
│ │ │ ├── master.cpp
│ │ │ ├── misc.cpp
│ │ │ ├── persistent.cpp
│ │ │ ├── scroll.cpp
│ │ │ ├── snap.cpp
│ │ │ ├── solitary.cpp
│ │ │ ├── tags.cpp
│ │ │ ├── tests.hpp
│ │ │ ├── window.cpp
│ │ │ └── workspaces.cpp
│ │ ├── plugin/
│ │ │ ├── plugin.cpp
│ │ │ └── plugin.hpp
│ │ ├── shared.cpp
│ │ └── shared.hpp
│ └── test.conf
├── nix/
│ ├── default.nix
│ ├── formatter.nix
│ ├── hm-module.nix
│ ├── lib.nix
│ ├── module.nix
│ ├── overlays.nix
│ ├── tests/
│ │ └── default.nix
│ └── update-inputs.sh
├── protocols/
│ ├── input-method-unstable-v2.xml
│ ├── kde-server-decoration.xml
│ ├── virtual-keyboard-unstable-v1.xml
│ ├── wayland-drm.xml
│ ├── wlr-data-control-unstable-v1.xml
│ ├── wlr-foreign-toplevel-management-unstable-v1.xml
│ ├── wlr-gamma-control-unstable-v1.xml
│ ├── wlr-layer-shell-unstable-v1.xml
│ ├── wlr-output-management-unstable-v1.xml
│ ├── wlr-output-power-management-unstable-v1.xml
│ ├── wlr-screencopy-unstable-v1.xml
│ └── wlr-virtual-pointer-unstable-v1.xml
├── scripts/
│ ├── generateShaderIncludes.sh
│ ├── hyprlandStaticAsan.diff
│ └── waylandStatic.diff
├── src/
│ ├── Compositor.cpp
│ ├── Compositor.hpp
│ ├── SharedDefs.hpp
│ ├── config/
│ │ ├── ConfigDataValues.hpp
│ │ ├── ConfigDescriptions.hpp
│ │ ├── ConfigManager.cpp
│ │ ├── ConfigManager.hpp
│ │ ├── ConfigValue.cpp
│ │ ├── ConfigValue.hpp
│ │ ├── ConfigWatcher.cpp
│ │ ├── ConfigWatcher.hpp
│ │ └── defaultConfig.hpp
│ ├── debug/
│ │ ├── HyprCtl.cpp
│ │ ├── HyprCtl.hpp
│ │ ├── HyprDebugOverlay.cpp
│ │ ├── HyprDebugOverlay.hpp
│ │ ├── HyprNotificationOverlay.cpp
│ │ ├── HyprNotificationOverlay.hpp
│ │ ├── TracyDefines.hpp
│ │ ├── crash/
│ │ │ ├── CrashReporter.cpp
│ │ │ ├── CrashReporter.hpp
│ │ │ ├── SignalSafe.cpp
│ │ │ └── SignalSafe.hpp
│ │ └── log/
│ │ ├── Logger.cpp
│ │ ├── Logger.hpp
│ │ └── RollingLogFollow.hpp
│ ├── defines.hpp
│ ├── desktop/
│ │ ├── DesktopTypes.hpp
│ │ ├── Workspace.cpp
│ │ ├── Workspace.hpp
│ │ ├── history/
│ │ │ ├── WindowHistoryTracker.cpp
│ │ │ ├── WindowHistoryTracker.hpp
│ │ │ ├── WorkspaceHistoryTracker.cpp
│ │ │ └── WorkspaceHistoryTracker.hpp
│ │ ├── reserved/
│ │ │ ├── ReservedArea.cpp
│ │ │ └── ReservedArea.hpp
│ │ ├── rule/
│ │ │ ├── Engine.cpp
│ │ │ ├── Engine.hpp
│ │ │ ├── Rule.cpp
│ │ │ ├── Rule.hpp
│ │ │ ├── effect/
│ │ │ │ └── EffectContainer.hpp
│ │ │ ├── layerRule/
│ │ │ │ ├── LayerRule.cpp
│ │ │ │ ├── LayerRule.hpp
│ │ │ │ ├── LayerRuleApplicator.cpp
│ │ │ │ ├── LayerRuleApplicator.hpp
│ │ │ │ ├── LayerRuleEffectContainer.cpp
│ │ │ │ └── LayerRuleEffectContainer.hpp
│ │ │ ├── matchEngine/
│ │ │ │ ├── BoolMatchEngine.cpp
│ │ │ │ ├── BoolMatchEngine.hpp
│ │ │ │ ├── IntMatchEngine.cpp
│ │ │ │ ├── IntMatchEngine.hpp
│ │ │ │ ├── MatchEngine.cpp
│ │ │ │ ├── MatchEngine.hpp
│ │ │ │ ├── RegexMatchEngine.cpp
│ │ │ │ ├── RegexMatchEngine.hpp
│ │ │ │ ├── TagMatchEngine.cpp
│ │ │ │ ├── TagMatchEngine.hpp
│ │ │ │ ├── WorkspaceMatchEngine.cpp
│ │ │ │ └── WorkspaceMatchEngine.hpp
│ │ │ ├── utils/
│ │ │ │ └── SetUtils.hpp
│ │ │ └── windowRule/
│ │ │ ├── WindowRule.cpp
│ │ │ ├── WindowRule.hpp
│ │ │ ├── WindowRuleApplicator.cpp
│ │ │ ├── WindowRuleApplicator.hpp
│ │ │ ├── WindowRuleEffectContainer.cpp
│ │ │ └── WindowRuleEffectContainer.hpp
│ │ ├── state/
│ │ │ ├── FocusState.cpp
│ │ │ └── FocusState.hpp
│ │ ├── types/
│ │ │ └── OverridableVar.hpp
│ │ └── view/
│ │ ├── GlobalViewMethods.cpp
│ │ ├── GlobalViewMethods.hpp
│ │ ├── Group.cpp
│ │ ├── Group.hpp
│ │ ├── LayerSurface.cpp
│ │ ├── LayerSurface.hpp
│ │ ├── Popup.cpp
│ │ ├── Popup.hpp
│ │ ├── SessionLock.cpp
│ │ ├── SessionLock.hpp
│ │ ├── Subsurface.cpp
│ │ ├── Subsurface.hpp
│ │ ├── View.cpp
│ │ ├── View.hpp
│ │ ├── WLSurface.cpp
│ │ ├── WLSurface.hpp
│ │ ├── Window.cpp
│ │ └── Window.hpp
│ ├── devices/
│ │ ├── IHID.cpp
│ │ ├── IHID.hpp
│ │ ├── IKeyboard.cpp
│ │ ├── IKeyboard.hpp
│ │ ├── IPointer.cpp
│ │ ├── IPointer.hpp
│ │ ├── ITouch.cpp
│ │ ├── ITouch.hpp
│ │ ├── Keyboard.cpp
│ │ ├── Keyboard.hpp
│ │ ├── Mouse.cpp
│ │ ├── Mouse.hpp
│ │ ├── Tablet.cpp
│ │ ├── Tablet.hpp
│ │ ├── TouchDevice.cpp
│ │ ├── TouchDevice.hpp
│ │ ├── VirtualKeyboard.cpp
│ │ ├── VirtualKeyboard.hpp
│ │ ├── VirtualPointer.cpp
│ │ └── VirtualPointer.hpp
│ ├── event/
│ │ ├── EventBus.cpp
│ │ └── EventBus.hpp
│ ├── helpers/
│ │ ├── AnimatedVariable.hpp
│ │ ├── AsyncDialogBox.cpp
│ │ ├── AsyncDialogBox.hpp
│ │ ├── ByteOperations.hpp
│ │ ├── CMType.cpp
│ │ ├── CMType.hpp
│ │ ├── Color.cpp
│ │ ├── Color.hpp
│ │ ├── CursorShapes.hpp
│ │ ├── DamageRing.cpp
│ │ ├── DamageRing.hpp
│ │ ├── Drm.cpp
│ │ ├── Drm.hpp
│ │ ├── Format.cpp
│ │ ├── Format.hpp
│ │ ├── MainLoopExecutor.cpp
│ │ ├── MainLoopExecutor.hpp
│ │ ├── MiscFunctions.cpp
│ │ ├── MiscFunctions.hpp
│ │ ├── Monitor.cpp
│ │ ├── Monitor.hpp
│ │ ├── MonitorFrameScheduler.cpp
│ │ ├── MonitorFrameScheduler.hpp
│ │ ├── MonitorZoomController.cpp
│ │ ├── MonitorZoomController.hpp
│ │ ├── SdDaemon.cpp
│ │ ├── SdDaemon.hpp
│ │ ├── Splashes.hpp
│ │ ├── TagKeeper.cpp
│ │ ├── TagKeeper.hpp
│ │ ├── TransferFunction.cpp
│ │ ├── TransferFunction.hpp
│ │ ├── WLClasses.cpp
│ │ ├── WLClasses.hpp
│ │ ├── cm/
│ │ │ ├── ColorManagement.cpp
│ │ │ ├── ColorManagement.hpp
│ │ │ └── ICC.cpp
│ │ ├── defer/
│ │ │ └── Promise.hpp
│ │ ├── env/
│ │ │ ├── Env.cpp
│ │ │ └── Env.hpp
│ │ ├── fs/
│ │ │ ├── FsUtils.cpp
│ │ │ └── FsUtils.hpp
│ │ ├── math/
│ │ │ ├── Direction.cpp
│ │ │ ├── Direction.hpp
│ │ │ ├── Expression.cpp
│ │ │ ├── Expression.hpp
│ │ │ ├── Math.cpp
│ │ │ └── Math.hpp
│ │ ├── memory/
│ │ │ └── Memory.hpp
│ │ ├── signal/
│ │ │ └── Signal.hpp
│ │ ├── sync/
│ │ │ ├── SyncReleaser.cpp
│ │ │ ├── SyncReleaser.hpp
│ │ │ ├── SyncTimeline.cpp
│ │ │ └── SyncTimeline.hpp
│ │ ├── time/
│ │ │ ├── Time.cpp
│ │ │ ├── Time.hpp
│ │ │ ├── Timer.cpp
│ │ │ └── Timer.hpp
│ │ └── varlist/
│ │ └── VarList.hpp
│ ├── hyprerror/
│ │ ├── HyprError.cpp
│ │ └── HyprError.hpp
│ ├── i18n/
│ │ ├── Engine.cpp
│ │ └── Engine.hpp
│ ├── includes.hpp
│ ├── init/
│ │ ├── initHelpers.cpp
│ │ └── initHelpers.hpp
│ ├── layout/
│ │ ├── LayoutManager.cpp
│ │ ├── LayoutManager.hpp
│ │ ├── algorithm/
│ │ │ ├── Algorithm.cpp
│ │ │ ├── Algorithm.hpp
│ │ │ ├── FloatingAlgorithm.cpp
│ │ │ ├── FloatingAlgorithm.hpp
│ │ │ ├── ModeAlgorithm.cpp
│ │ │ ├── ModeAlgorithm.hpp
│ │ │ ├── TiledAlgorithm.hpp
│ │ │ ├── floating/
│ │ │ │ └── default/
│ │ │ │ ├── DefaultFloatingAlgorithm.cpp
│ │ │ │ └── DefaultFloatingAlgorithm.hpp
│ │ │ └── tiled/
│ │ │ ├── dwindle/
│ │ │ │ ├── DwindleAlgorithm.cpp
│ │ │ │ └── DwindleAlgorithm.hpp
│ │ │ ├── master/
│ │ │ │ ├── MasterAlgorithm.cpp
│ │ │ │ └── MasterAlgorithm.hpp
│ │ │ ├── monocle/
│ │ │ │ ├── MonocleAlgorithm.cpp
│ │ │ │ └── MonocleAlgorithm.hpp
│ │ │ └── scrolling/
│ │ │ ├── ScrollTapeController.cpp
│ │ │ ├── ScrollTapeController.hpp
│ │ │ ├── ScrollingAlgorithm.cpp
│ │ │ └── ScrollingAlgorithm.hpp
│ │ ├── space/
│ │ │ ├── Space.cpp
│ │ │ └── Space.hpp
│ │ ├── supplementary/
│ │ │ ├── DragController.cpp
│ │ │ ├── DragController.hpp
│ │ │ ├── WorkspaceAlgoMatcher.cpp
│ │ │ └── WorkspaceAlgoMatcher.hpp
│ │ └── target/
│ │ ├── Target.cpp
│ │ ├── Target.hpp
│ │ ├── WindowGroupTarget.cpp
│ │ ├── WindowGroupTarget.hpp
│ │ ├── WindowTarget.cpp
│ │ └── WindowTarget.hpp
│ ├── macros.hpp
│ ├── main.cpp
│ ├── managers/
│ │ ├── ANRManager.cpp
│ │ ├── ANRManager.hpp
│ │ ├── CursorManager.cpp
│ │ ├── CursorManager.hpp
│ │ ├── DonationNagManager.cpp
│ │ ├── DonationNagManager.hpp
│ │ ├── EventManager.cpp
│ │ ├── EventManager.hpp
│ │ ├── KeybindManager.cpp
│ │ ├── KeybindManager.hpp
│ │ ├── PointerManager.cpp
│ │ ├── PointerManager.hpp
│ │ ├── ProtocolManager.cpp
│ │ ├── ProtocolManager.hpp
│ │ ├── SeatManager.cpp
│ │ ├── SeatManager.hpp
│ │ ├── SessionLockManager.cpp
│ │ ├── SessionLockManager.hpp
│ │ ├── TokenManager.cpp
│ │ ├── TokenManager.hpp
│ │ ├── VersionKeeperManager.cpp
│ │ ├── VersionKeeperManager.hpp
│ │ ├── WelcomeManager.cpp
│ │ ├── WelcomeManager.hpp
│ │ ├── XCursorManager.cpp
│ │ ├── XCursorManager.hpp
│ │ ├── XWaylandManager.cpp
│ │ ├── XWaylandManager.hpp
│ │ ├── animation/
│ │ │ ├── AnimationManager.cpp
│ │ │ ├── AnimationManager.hpp
│ │ │ ├── DesktopAnimationManager.cpp
│ │ │ └── DesktopAnimationManager.hpp
│ │ ├── cursor/
│ │ │ ├── CursorShapeOverrideController.cpp
│ │ │ └── CursorShapeOverrideController.hpp
│ │ ├── eventLoop/
│ │ │ ├── EventLoopManager.cpp
│ │ │ ├── EventLoopManager.hpp
│ │ │ ├── EventLoopTimer.cpp
│ │ │ └── EventLoopTimer.hpp
│ │ ├── input/
│ │ │ ├── IdleInhibitor.cpp
│ │ │ ├── InputManager.cpp
│ │ │ ├── InputManager.hpp
│ │ │ ├── InputMethodPopup.cpp
│ │ │ ├── InputMethodPopup.hpp
│ │ │ ├── InputMethodRelay.cpp
│ │ │ ├── InputMethodRelay.hpp
│ │ │ ├── Tablets.cpp
│ │ │ ├── TextInput.cpp
│ │ │ ├── TextInput.hpp
│ │ │ ├── Touch.cpp
│ │ │ ├── UnifiedWorkspaceSwipeGesture.cpp
│ │ │ ├── UnifiedWorkspaceSwipeGesture.hpp
│ │ │ └── trackpad/
│ │ │ ├── GestureTypes.hpp
│ │ │ ├── TrackpadGestures.cpp
│ │ │ ├── TrackpadGestures.hpp
│ │ │ └── gestures/
│ │ │ ├── CloseGesture.cpp
│ │ │ ├── CloseGesture.hpp
│ │ │ ├── CursorZoomGesture.cpp
│ │ │ ├── CursorZoomGesture.hpp
│ │ │ ├── DispatcherGesture.cpp
│ │ │ ├── DispatcherGesture.hpp
│ │ │ ├── FloatGesture.cpp
│ │ │ ├── FloatGesture.hpp
│ │ │ ├── FullscreenGesture.cpp
│ │ │ ├── FullscreenGesture.hpp
│ │ │ ├── ITrackpadGesture.cpp
│ │ │ ├── ITrackpadGesture.hpp
│ │ │ ├── MoveGesture.cpp
│ │ │ ├── MoveGesture.hpp
│ │ │ ├── ResizeGesture.cpp
│ │ │ ├── ResizeGesture.hpp
│ │ │ ├── SpecialWorkspaceGesture.cpp
│ │ │ ├── SpecialWorkspaceGesture.hpp
│ │ │ ├── WorkspaceSwipeGesture.cpp
│ │ │ └── WorkspaceSwipeGesture.hpp
│ │ ├── permissions/
│ │ │ ├── DynamicPermissionManager.cpp
│ │ │ └── DynamicPermissionManager.hpp
│ │ └── screenshare/
│ │ ├── CursorshareSession.cpp
│ │ ├── ScreenshareFrame.cpp
│ │ ├── ScreenshareManager.cpp
│ │ ├── ScreenshareManager.hpp
│ │ └── ScreenshareSession.cpp
│ ├── pch/
│ │ └── pch.hpp
│ ├── plugins/
│ │ ├── HookSystem.cpp
│ │ ├── HookSystem.hpp
│ │ ├── PluginAPI.cpp
│ │ ├── PluginAPI.hpp
│ │ ├── PluginSystem.cpp
│ │ └── PluginSystem.hpp
│ ├── protocols/
│ │ ├── AlphaModifier.cpp
│ │ ├── AlphaModifier.hpp
│ │ ├── CTMControl.cpp
│ │ ├── CTMControl.hpp
│ │ ├── ColorManagement.cpp
│ │ ├── ColorManagement.hpp
│ │ ├── CommitTiming.cpp
│ │ ├── CommitTiming.hpp
│ │ ├── ContentType.cpp
│ │ ├── ContentType.hpp
│ │ ├── CursorShape.cpp
│ │ ├── CursorShape.hpp
│ │ ├── DRMLease.cpp
│ │ ├── DRMLease.hpp
│ │ ├── DRMSyncobj.cpp
│ │ ├── DRMSyncobj.hpp
│ │ ├── DataDeviceWlr.cpp
│ │ ├── DataDeviceWlr.hpp
│ │ ├── ExtDataDevice.cpp
│ │ ├── ExtDataDevice.hpp
│ │ ├── ExtWorkspace.cpp
│ │ ├── ExtWorkspace.hpp
│ │ ├── Fifo.cpp
│ │ ├── Fifo.hpp
│ │ ├── FocusGrab.cpp
│ │ ├── FocusGrab.hpp
│ │ ├── ForeignToplevel.cpp
│ │ ├── ForeignToplevel.hpp
│ │ ├── ForeignToplevelWlr.cpp
│ │ ├── ForeignToplevelWlr.hpp
│ │ ├── FractionalScale.cpp
│ │ ├── FractionalScale.hpp
│ │ ├── GammaControl.cpp
│ │ ├── GammaControl.hpp
│ │ ├── GlobalShortcuts.cpp
│ │ ├── GlobalShortcuts.hpp
│ │ ├── HyprlandSurface.cpp
│ │ ├── HyprlandSurface.hpp
│ │ ├── IdleInhibit.cpp
│ │ ├── IdleInhibit.hpp
│ │ ├── IdleNotify.cpp
│ │ ├── IdleNotify.hpp
│ │ ├── ImageCaptureSource.cpp
│ │ ├── ImageCaptureSource.hpp
│ │ ├── ImageCopyCapture.cpp
│ │ ├── ImageCopyCapture.hpp
│ │ ├── InputMethodV2.cpp
│ │ ├── InputMethodV2.hpp
│ │ ├── LayerShell.cpp
│ │ ├── LayerShell.hpp
│ │ ├── LinuxDMABUF.cpp
│ │ ├── LinuxDMABUF.hpp
│ │ ├── LockNotify.cpp
│ │ ├── LockNotify.hpp
│ │ ├── MesaDRM.cpp
│ │ ├── MesaDRM.hpp
│ │ ├── OutputManagement.cpp
│ │ ├── OutputManagement.hpp
│ │ ├── OutputPower.cpp
│ │ ├── OutputPower.hpp
│ │ ├── PointerConstraints.cpp
│ │ ├── PointerConstraints.hpp
│ │ ├── PointerGestures.cpp
│ │ ├── PointerGestures.hpp
│ │ ├── PointerWarp.cpp
│ │ ├── PointerWarp.hpp
│ │ ├── PresentationTime.cpp
│ │ ├── PresentationTime.hpp
│ │ ├── PrimarySelection.cpp
│ │ ├── PrimarySelection.hpp
│ │ ├── RelativePointer.cpp
│ │ ├── RelativePointer.hpp
│ │ ├── Screencopy.cpp
│ │ ├── Screencopy.hpp
│ │ ├── SecurityContext.cpp
│ │ ├── SecurityContext.hpp
│ │ ├── ServerDecorationKDE.cpp
│ │ ├── ServerDecorationKDE.hpp
│ │ ├── SessionLock.cpp
│ │ ├── SessionLock.hpp
│ │ ├── ShortcutsInhibit.cpp
│ │ ├── ShortcutsInhibit.hpp
│ │ ├── SinglePixel.cpp
│ │ ├── SinglePixel.hpp
│ │ ├── Tablet.cpp
│ │ ├── Tablet.hpp
│ │ ├── TearingControl.cpp
│ │ ├── TearingControl.hpp
│ │ ├── TextInputV1.cpp
│ │ ├── TextInputV1.hpp
│ │ ├── TextInputV3.cpp
│ │ ├── TextInputV3.hpp
│ │ ├── ToplevelExport.cpp
│ │ ├── ToplevelExport.hpp
│ │ ├── ToplevelMapping.cpp
│ │ ├── ToplevelMapping.hpp
│ │ ├── Viewporter.cpp
│ │ ├── Viewporter.hpp
│ │ ├── VirtualKeyboard.cpp
│ │ ├── VirtualKeyboard.hpp
│ │ ├── VirtualPointer.cpp
│ │ ├── VirtualPointer.hpp
│ │ ├── WaylandProtocol.cpp
│ │ ├── WaylandProtocol.hpp
│ │ ├── XDGActivation.cpp
│ │ ├── XDGActivation.hpp
│ │ ├── XDGBell.cpp
│ │ ├── XDGBell.hpp
│ │ ├── XDGDecoration.cpp
│ │ ├── XDGDecoration.hpp
│ │ ├── XDGDialog.cpp
│ │ ├── XDGDialog.hpp
│ │ ├── XDGOutput.cpp
│ │ ├── XDGOutput.hpp
│ │ ├── XDGShell.cpp
│ │ ├── XDGShell.hpp
│ │ ├── XDGTag.cpp
│ │ ├── XDGTag.hpp
│ │ ├── XWaylandShell.cpp
│ │ ├── XWaylandShell.hpp
│ │ ├── core/
│ │ │ ├── Compositor.cpp
│ │ │ ├── Compositor.hpp
│ │ │ ├── DataDevice.cpp
│ │ │ ├── DataDevice.hpp
│ │ │ ├── Output.cpp
│ │ │ ├── Output.hpp
│ │ │ ├── Seat.cpp
│ │ │ ├── Seat.hpp
│ │ │ ├── Shm.cpp
│ │ │ ├── Shm.hpp
│ │ │ ├── Subcompositor.cpp
│ │ │ └── Subcompositor.hpp
│ │ └── types/
│ │ ├── Buffer.cpp
│ │ ├── Buffer.hpp
│ │ ├── ContentType.cpp
│ │ ├── ContentType.hpp
│ │ ├── DMABuffer.cpp
│ │ ├── DMABuffer.hpp
│ │ ├── DataDevice.cpp
│ │ ├── DataDevice.hpp
│ │ ├── SurfaceRole.hpp
│ │ ├── SurfaceState.cpp
│ │ ├── SurfaceState.hpp
│ │ ├── SurfaceStateQueue.cpp
│ │ ├── SurfaceStateQueue.hpp
│ │ ├── WLBuffer.cpp
│ │ └── WLBuffer.hpp
│ ├── render/
│ │ ├── AsyncResourceGatherer.hpp
│ │ ├── Framebuffer.cpp
│ │ ├── Framebuffer.hpp
│ │ ├── GLRenderer.cpp
│ │ ├── GLRenderer.hpp
│ │ ├── OpenGL.cpp
│ │ ├── OpenGL.hpp
│ │ ├── Renderbuffer.cpp
│ │ ├── Renderbuffer.hpp
│ │ ├── Renderer.cpp
│ │ ├── Renderer.hpp
│ │ ├── Shader.cpp
│ │ ├── Shader.hpp
│ │ ├── ShaderLoader.cpp
│ │ ├── ShaderLoader.hpp
│ │ ├── Texture.cpp
│ │ ├── Texture.hpp
│ │ ├── Transformer.cpp
│ │ ├── Transformer.hpp
│ │ ├── decorations/
│ │ │ ├── CHyprBorderDecoration.cpp
│ │ │ ├── CHyprBorderDecoration.hpp
│ │ │ ├── CHyprDropShadowDecoration.cpp
│ │ │ ├── CHyprDropShadowDecoration.hpp
│ │ │ ├── CHyprGroupBarDecoration.cpp
│ │ │ ├── CHyprGroupBarDecoration.hpp
│ │ │ ├── DecorationPositioner.cpp
│ │ │ ├── DecorationPositioner.hpp
│ │ │ ├── IHyprWindowDecoration.cpp
│ │ │ └── IHyprWindowDecoration.hpp
│ │ ├── gl/
│ │ │ ├── GLFramebuffer.cpp
│ │ │ ├── GLFramebuffer.hpp
│ │ │ ├── GLRenderbuffer.cpp
│ │ │ ├── GLRenderbuffer.hpp
│ │ │ ├── GLTexture.cpp
│ │ │ └── GLTexture.hpp
│ │ ├── pass/
│ │ │ ├── BorderPassElement.cpp
│ │ │ ├── BorderPassElement.hpp
│ │ │ ├── ClearPassElement.cpp
│ │ │ ├── ClearPassElement.hpp
│ │ │ ├── FramebufferElement.cpp
│ │ │ ├── FramebufferElement.hpp
│ │ │ ├── Pass.cpp
│ │ │ ├── Pass.hpp
│ │ │ ├── PassElement.cpp
│ │ │ ├── PassElement.hpp
│ │ │ ├── PreBlurElement.cpp
│ │ │ ├── PreBlurElement.hpp
│ │ │ ├── RectPassElement.cpp
│ │ │ ├── RectPassElement.hpp
│ │ │ ├── RendererHintsPassElement.cpp
│ │ │ ├── RendererHintsPassElement.hpp
│ │ │ ├── ShadowPassElement.cpp
│ │ │ ├── ShadowPassElement.hpp
│ │ │ ├── SurfacePassElement.cpp
│ │ │ ├── SurfacePassElement.hpp
│ │ │ ├── TexPassElement.cpp
│ │ │ ├── TexPassElement.hpp
│ │ │ ├── TextureMatteElement.cpp
│ │ │ └── TextureMatteElement.hpp
│ │ └── shaders/
│ │ └── glsl/
│ │ ├── CM.glsl
│ │ ├── blur1.frag
│ │ ├── blur1.glsl
│ │ ├── blur2.frag
│ │ ├── blur2.glsl
│ │ ├── blurFinish.glsl
│ │ ├── blurfinish.frag
│ │ ├── blurprepare.frag
│ │ ├── blurprepare.glsl
│ │ ├── border.frag
│ │ ├── border.glsl
│ │ ├── cm_helpers.glsl
│ │ ├── constants.h
│ │ ├── defines.h
│ │ ├── ext.frag
│ │ ├── gain.glsl
│ │ ├── glitch.frag
│ │ ├── passthru.frag
│ │ ├── quad.frag
│ │ ├── rgbamatte.frag
│ │ ├── rounding.glsl
│ │ ├── shadow.frag
│ │ ├── shadow.glsl
│ │ ├── surface.frag
│ │ ├── tex300.vert
│ │ ├── tex320.vert
│ │ └── tonemap.glsl
│ ├── version.h.in
│ └── xwayland/
│ ├── Dnd.cpp
│ ├── Dnd.hpp
│ ├── Server.cpp
│ ├── Server.hpp
│ ├── XDataSource.cpp
│ ├── XDataSource.hpp
│ ├── XSurface.cpp
│ ├── XSurface.hpp
│ ├── XWM.cpp
│ ├── XWM.hpp
│ ├── XWayland.cpp
│ └── XWayland.hpp
├── start/
│ ├── CMakeLists.txt
│ └── src/
│ ├── core/
│ │ ├── Instance.cpp
│ │ ├── Instance.hpp
│ │ └── State.hpp
│ ├── helpers/
│ │ ├── Logger.hpp
│ │ ├── Memory.hpp
│ │ ├── Nix.cpp
│ │ └── Nix.hpp
│ └── main.cpp
├── systemd/
│ └── hyprland-uwsm.desktop
└── tests/
└── desktop/
└── Reserved.cpp
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
Language: Cpp
BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: true
AlignConsecutiveAssignments: true
AlignEscapedNewlines: Right
AlignOperands: false
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: false
BreakConstructorInitializers: AfterColon
ColumnLimit: 180
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: false
IncludeBlocks: Preserve
IndentCaseLabels: true
IndentWidth: 4
PointerAlignment: Left
ReflowComments: false
SortIncludes: false
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 4
UseTab: Never
AllowShortEnumsOnASingleLine: false
BraceWrapping:
AfterEnum: false
AlignConsecutiveDeclarations: AcrossEmptyLines
NamespaceIndentation: All
================================================
FILE: .clang-format-ignore
================================================
subprojects/**/*
================================================
FILE: .clang-tidy
================================================
WarningsAsErrors: >
-*,
bugprone-*,
-bugprone-multi-level-implicit-pointer-conversion,
-bugprone-empty-catch,
-bugprone-unused-return-value,
-bugprone-reserved-identifier,
-bugprone-switch-missing-default-case,
-bugprone-unused-local-non-trivial-variable,
-bugprone-easily-swappable-parameters,
-bugprone-forward-declararion-namespace,
-bugprone-forward-declararion-namespace,
-bugprone-macro-parentheses,
-bugprone-narrowing-conversions,
-bugprone-branch-clone,
-bugprone-assignment-in-if-condition,
concurrency-*,
-concurrency-mt-unsafe,
cppcoreguidelines-*,
-cppcoreguidelines-pro-type-const-cast,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-avoid-const-or-ref-data-members,
-cppcoreguidelines-non-private-member-variables-in-classes,
-cppcoreguidelines-avoid-goto,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-avoid-do-while,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-explicit-virtual-functions,
-cppcoreguidelines-avoid-c-arrays,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-narrowing-conversions,
-cppcoreguidelines-pro-type-union-access,
-cppcoreguidelines-pro-type-member-init,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-macro-to-enum,
-cppcoreguidelines-init-variables,
-cppcoreguidelines-pro-type-cstyle-cast,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-pro-type-reinterpret-cast,
-google-global-names-in-headers,
-google-readability-casting,
google-runtime-operator,
misc-*,
-misc-use-internal-linkage,
-misc-unused-parameters,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-include-cleaner,
-misc-use-anonymous-namespace,
-misc-const-correctness,
modernize-*,
-modernize-use-emplace,
-modernize-redundant-void-arg,
-modernize-use-starts-ends-with,
-modernize-use-designated-initializers,
-modernize-use-std-numbers,
-modernize-return-braced-init-list,
-modernize-use-trailing-return-type,
-modernize-use-using,
-modernize-use-override,
-modernize-avoid-c-arrays,
-modernize-macro-to-enum,
-modernize-loop-convert,
-modernize-use-nodiscard,
-modernize-pass-by-value,
-modernize-use-auto,
performance-*,
-performance-inefficient-vector-operation,
-performance-inefficient-string-concatenation,
-performance-enum-size,
-performance-move-const-arg,
-performance-avoid-endl,
-performance-unnecessary-value-param,
portability-std-allocator-const,
readability-*,
-readability-identifier-naming,
-readability-use-std-min-max,
-readability-math-missing-parentheses,
-readability-simplify-boolean-expr,
-readability-static-accessed-through-instance,
-readability-use-anyofallof,
-readability-enum-initial-value,
-readability-redundant-inline-specifier,
-readability-function-cognitive-complexity,
-readability-function-size,
-readability-identifier-length,
-readability-magic-numbers,
-readability-uppercase-literal-suffix,
-readability-braces-around-statements,
-readability-redundant-access-specifiers,
-readability-else-after-return,
-readability-container-data-pointer,
-readability-implicit-bool-conversion,
-readability-avoid-nested-conditional-operator,
-readability-redundant-member-init,
-readability-redundant-string-init,
-readability-avoid-const-params-in-decls,
-readability-named-parameter,
-readability-convert-member-functions-to-static,
-readability-qualified-auto,
-readability-make-member-function-const,
-readability-isolate-declaration,
-readability-inconsistent-declaration-parameter-name,
-clang-diagnostic-error,
HeaderFilterRegex: '.*\.hpp'
FormatStyle: file
Checks: >
-*,
bugprone-*,
-bugprone-easily-swappable-parameters,
-bugprone-forward-declararion-namespace,
-bugprone-forward-declararion-namespace,
-bugprone-macro-parentheses,
-bugprone-narrowing-conversions,
-bugprone-branch-clone,
-bugprone-assignment-in-if-condition,
concurrency-*,
-concurrency-mt-unsafe,
cppcoreguidelines-*,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-avoid-const-or-ref-data-members,
-cppcoreguidelines-non-private-member-variables-in-classes,
-cppcoreguidelines-avoid-goto,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-avoid-do-while,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-explicit-virtual-functions,
-cppcoreguidelines-avoid-c-arrays,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-narrowing-conversions,
-cppcoreguidelines-pro-type-union-access,
-cppcoreguidelines-pro-type-member-init,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-macro-to-enum,
-cppcoreguidelines-init-variables,
-cppcoreguidelines-pro-type-cstyle-cast,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-pro-type-reinterpret-cast,
google-global-names-in-headers,
-google-readability-casting,
google-runtime-operator,
misc-*,
-misc-unused-parameters,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-include-cleaner,
-misc-use-anonymous-namespace,
-misc-const-correctness,
modernize-*,
-modernize-return-braced-init-list,
-modernize-use-trailing-return-type,
-modernize-use-using,
-modernize-use-override,
-modernize-avoid-c-arrays,
-modernize-macro-to-enum,
-modernize-loop-convert,
-modernize-use-nodiscard,
-modernize-pass-by-value,
-modernize-use-auto,
performance-*,
-performance-avoid-endl,
-performance-unnecessary-value-param,
portability-std-allocator-const,
readability-*,
-readability-function-cognitive-complexity,
-readability-function-size,
-readability-identifier-length,
-readability-magic-numbers,
-readability-uppercase-literal-suffix,
-readability-braces-around-statements,
-readability-redundant-access-specifiers,
-readability-else-after-return,
-readability-container-data-pointer,
-readability-implicit-bool-conversion,
-readability-avoid-nested-conditional-operator,
-readability-redundant-member-init,
-readability-redundant-string-init,
-readability-avoid-const-params-in-decls,
-readability-named-parameter,
-readability-convert-member-functions-to-static,
-readability-qualified-auto,
-readability-make-member-function-const,
-readability-isolate-declaration,
-readability-inconsistent-declaration-parameter-name,
-clang-diagnostic-error,
CheckOptions:
performance-for-range-copy.WarnOnAllAutoCopies: true
performance-inefficient-string-concatenation.StrictMode: true
readability-braces-around-statements.ShortStatementLines: 0
readability-identifier-naming.ClassCase: CamelCase
readability-identifier-naming.ClassIgnoredRegexp: I.*
readability-identifier-naming.ClassPrefix: C # We can't use regex here?!?!?!?
readability-identifier-naming.EnumCase: CamelCase
readability-identifier-naming.EnumPrefix: e
readability-identifier-naming.EnumConstantCase: UPPER_CASE
readability-identifier-naming.FunctionCase: camelBack
readability-identifier-naming.NamespaceCase: CamelCase
readability-identifier-naming.NamespacePrefix: N
readability-identifier-naming.StructPrefix: S
readability-identifier-naming.StructCase: CamelCase
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
================================================
FILE: .github/FUNDING.yml
================================================
ko_fi: vaxry
================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: Do not open issues, go to discussions please!
description: Do not open an issue
body:
- type: checkboxes
attributes:
label: Please close this issue.
description: Users cannot open issues. I want my issue to be closed.
options:
- label: Yes, I want this issue to be closed.
required: true
- type: textarea
id: body
attributes:
label: Issue body
================================================
FILE: .github/actions/setup_base/action.yml
================================================
name: "Setup base"
inputs:
INSTALL_XORG_PKGS:
description: 'Install xorg dependencies'
required: false
default: false
runs:
using: "composite"
steps:
- name: Get required pacman pkgs
shell: bash
run: |
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
pacman --noconfirm --noprogressbar -Syyu
pacman --noconfirm --noprogressbar -Sy \
base-devel \
cairo \
clang \
cmake \
git \
glaze \
glm \
glslang \
go \
gtest \
hyprlang \
hyprcursor \
jq \
libc++ \
libdisplay-info \
libdrm \
libepoxy \
libfontenc \
libglvnd \
libinput \
libjxl \
libliftoff \
libspng \
libwebp \
libxcursor \
libxcvt \
libxfont2 \
libxkbcommon \
libxkbfile \
lld \
meson \
muparser \
ninja \
pango \
pixman \
pkgconf \
pugixml \
scdoc \
seatd \
systemd \
tomlplusplus \
wayland \
wayland-protocols \
xcb-util-errors \
xcb-util-renderutil \
xcb-util-wm \
xcb-util \
xcb-util-image \
libzip \
librsvg \
re2
- name: Get hyprwayland-scanner-git
shell: bash
run: |
git clone https://github.com/hyprwm/hyprwayland-scanner --recursive
cd hyprwayland-scanner
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
cmake --install build
- name: Get hyprwire-git
shell: bash
run: |
git clone https://github.com/hyprwm/hyprwire --recursive
cd hyprwire
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
cmake --install build
- name: Get hyprutils-git
shell: bash
run: |
git clone https://github.com/hyprwm/hyprutils && cd hyprutils && cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -B build && cmake --build build --target hyprutils && cmake --install build
- name: Get hyprgraphics-git
shell: bash
run: |
git clone https://github.com/hyprwm/hyprgraphics && cd hyprgraphics && cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -B build && cmake --build build --target hyprgraphics && cmake --install build
- name: Get aquamarine-git
shell: bash
run: |
git clone https://github.com/hyprwm/aquamarine && cd aquamarine && cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -B build && cmake --build build --target aquamarine && cmake --install build
- name: Get Xorg pacman pkgs
shell: bash
if: inputs.INSTALL_XORG_PKGS == 'true'
run: |
pacman --noconfirm --noprogressbar -Sy \
xorg-fonts-encodings \
xorg-server-common \
xorg-setxkbmap \
xorg-xkbcomp \
xorg-xwayland
- name: Checkout Hyprland
uses: actions/checkout@v4
with:
submodules: recursive
# Fix an issue with actions/checkout where the checkout repo is not mark as safe
- name: Mark directory as safe for git
shell: bash
run: |
git config --global --add safe.directory /__w/Hyprland/Hyprland
================================================
FILE: .github/labeler.yml
================================================
assets:
- changed-files:
- any-glob-to-any-file: "assets/**"
docs:
- changed-files:
- any-glob-to-any-file: "docs/**"
hyprctl:
- changed-files:
- any-glob-to-any-file: "hyprctl/**"
hyprpm:
- changed-files:
- any-glob-to-any-file: "hyprpm/**"
nix:
- changed-files:
- any-glob-to-any-file: "nix/**"
protocols:
- changed-files:
- any-glob-to-any-file: ["protocols/**", "src/protocols/**"]
start:
- changed-files:
- any-glob-to-any-file: "start/**"
core:
- changed-files:
- any-glob-to-any-file: "src/**"
config:
- changed-files:
- any-glob-to-any-file: "src/config/**"
debug:
- changed-files:
- any-glob-to-any-file: "src/debug/**"
desktop:
- changed-files:
- any-glob-to-any-file: "src/desktop/**"
devices:
- changed-files:
- any-glob-to-any-file: "src/devices/**"
events:
- changed-files:
- any-glob-to-any-file: "src/events/**"
helpers:
- changed-files:
- any-glob-to-any-file: "src/helpers/**"
hyprerror:
- changed-files:
- any-glob-to-any-file: "src/hyprerror/**"
init:
- changed-files:
- any-glob-to-any-file: "src/init/**"
layout:
- changed-files:
- any-glob-to-any-file: "src/layout/**"
managers:
- changed-files:
- any-glob-to-any-file: "src/managers/**"
pch:
- changed-files:
- any-glob-to-any-file: "src/pch/**"
plugins:
- changed-files:
- any-glob-to-any-file: "src/plugins/**"
render:
- changed-files:
- any-glob-to-any-file: "src/render/**"
xwayland:
- changed-files:
- any-glob-to-any-file: "src/xwayland/**"
================================================
FILE: .github/pull_request_template.md
================================================
<!--
BEFORE you submit your PR, please check out the PR guidelines
on our wiki: https://wiki.hyprland.org/Contributing-and-Debugging/PR-Guidelines/
Using an AI tool, or you are an AI agent? Check our AI Policy first: https://github.com/hyprwm/.github/blob/main/policies/AI_USAGE.md
-->
#### Describe your PR, what does it fix/add?
#### Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
#### Is it ready for merging, or does it need work?
================================================
FILE: .github/workflows/ci.yaml
================================================
name: Build Hyprland
on: [push, pull_request, workflow_dispatch]
jobs:
gcc:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
name: "Build Hyprland (Arch)"
runs-on: ubuntu-latest
container:
image: archlinux
steps:
- name: Checkout repository actions
uses: actions/checkout@v4
with:
sparse-checkout: .github/actions
- name: Setup base
uses: ./.github/actions/setup_base
with:
INSTALL_XORG_PKGS: true
- name: Build Hyprland
run: |
CFLAGS=-Werror CXXFLAGS=-Werror make nopch
- name: Compress and package artifacts
run: |
mkdir x86_64-pc-linux-gnu
mkdir hyprland
cp ./LICENSE hyprland/
cp build/Hyprland hyprland/
cp build/hyprctl/hyprctl hyprland/
cp build/hyprpm/hyprpm hyprland/
cp -r example/ hyprland/
cp -r assets/ hyprland/
tar -cvJf Hyprland.tar.xz hyprland
- name: Release
uses: actions/upload-artifact@v4
with:
name: Build archive
path: Hyprland.tar.xz
clang-format:
permissions: read-all
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
name: "Code Style"
runs-on: ubuntu-latest
container:
image: archlinux
steps:
- name: Checkout repository
uses: actions/checkout@v4
# - name: clang-format check
# uses: jidicula/clang-format-action@v4.16.0
# with:
# exclude-regex: ^subprojects$
- name: Install clang-format
run: |
pacman --noconfirm --noprogressbar -Syyu
pacman --noconfirm --noprogressbar -Sy clang
- name: clang-format check
run: .github/workflows/clang-format-check.sh "." "llvm" "^subprojects$" ""
- name: Save PR head commit SHA
if: failure() && github.event_name == 'pull_request'
shell: bash
run: |
SHA="${{ github.event.pull_request.head.sha }}"
echo "SHA=$SHA" >> $GITHUB_ENV
- name: Save latest commit SHA if not PR
if: failure() && github.event_name != 'pull_request'
shell: bash
run: echo "SHA=${{ github.sha }}" >> $GITHUB_ENV
- name: Report failure in job summary
if: failure()
run: |
DEEPLINK="${{ github.server_url }}/${{ github.repository }}/commit/${{ env.SHA }}"
echo -e "Format check failed on commit [${GITHUB_SHA:0:8}]($DEEPLINK) with files:\n$(<$GITHUB_WORKSPACE/failing-files.txt)" >> $GITHUB_STEP_SUMMARY
================================================
FILE: .github/workflows/clang-format-check.sh
================================================
#!/usr/bin/env bash
#
# Adapted from https://github.com/jidicula/clang-format-action
###############################################################################
# check.sh #
###############################################################################
# USAGE: ./entrypoint.sh [<path>] [<fallback style>]
#
# Checks all C/C++/Protobuf/CUDA files (.h, .H, .hpp, .hh, .h++, .hxx and .c,
# .C, .cpp, .cc, .c++, .cxx, .proto, .cu) in the provided GitHub repository path
# (arg1) for conforming to clang-format. If no path is provided or provided path
# is not a directory, all C/C++/Protobuf/CUDA files are checked. If any files
# are incorrectly formatted, the script lists them and exits with 1.
#
# Define your own formatting rules in a .clang-format file at your repository
# root. Otherwise, the provided style guide (arg2) is used as a fallback.
# format_diff function
# Accepts a filepath argument. The filepath passed to this function must point
# to a C/C++/Protobuf/CUDA file.
format_diff() {
local filepath="$1"
# Invoke clang-format with dry run and formatting error output
local_format="$(clang-format \
--dry-run \
--Werror \
--style=file \
--fallback-style="$FALLBACK_STYLE" \
"${filepath}")"
local format_status="$?"
if [[ ${format_status} -ne 0 ]]; then
# Append Markdown-bulleted monospaced filepath of failing file to
# summary file.
echo "* \`$filepath\`" >>failing-files.txt
echo "Failed on file: $filepath" >&2
echo "$local_format" >&2
exit_code=1 # flip the global exit code
return "${format_status}"
fi
return 0
}
CHECK_PATH="$1"
FALLBACK_STYLE="$2"
EXCLUDE_REGEX="$3"
INCLUDE_REGEX="$4"
# Set the regex to an empty string regex if nothing was provided
if [[ -z $EXCLUDE_REGEX ]]; then
EXCLUDE_REGEX="^$"
fi
# Set the filetype regex if nothing was provided.
# Find all C/C++/Protobuf/CUDA files:
# h, H, hpp, hh, h++, hxx
# c, C, cpp, cc, c++, cxx
# ino, pde
# proto
# cu
if [[ -z $INCLUDE_REGEX ]]; then
INCLUDE_REGEX='^.*\.((((c|C)(c|pp|xx|\+\+)?$)|((h|H)h?(pp|xx|\+\+)?$))|(ino|pde|proto|cu))$'
fi
cd "$GITHUB_WORKSPACE" || exit 2
if [[ ! -d $CHECK_PATH ]]; then
echo "Not a directory in the workspace, fallback to all files." >&2
CHECK_PATH="."
fi
# initialize exit code
exit_code=0
# All files improperly formatted will be printed to the output.
src_files=$(find "$CHECK_PATH" -name .git -prune -o -regextype posix-egrep -regex "$INCLUDE_REGEX" -print)
# check formatting in each source file
IFS=$'\n' # Loop below should separate on new lines, not spaces.
for file in $src_files; do
# Only check formatting if the path doesn't match the regex
if ! [[ ${file} =~ $EXCLUDE_REGEX ]]; then
format_diff "${file}"
fi
done
# global exit code is flipped to nonzero if any invocation of `format_diff` has
# a formatting difference.
exit "$exit_code"
================================================
FILE: .github/workflows/clang-format.yml
================================================
name: clang-format
on: pull_request_target
jobs:
clang-format:
permissions: write-all
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
name: "Code Style"
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: clang-format check
uses: jidicula/clang-format-action@v4.16.0
with:
exclude-regex: ^subprojects$
- name: Create comment
if: ${{ failure() && github.event_name == 'pull_request' }}
run: |
echo 'Please fix the formatting issues by running [`clang-format`](https://wiki.hyprland.org/Contributing-and-Debugging/PR-Guidelines/#code-style).' > clang-format.patch
- name: Post comment
if: ${{ failure() && github.event_name == 'pull_request' }}
uses: mshick/add-pr-comment@v2
with:
message-path: |
clang-format.patch
================================================
FILE: .github/workflows/close-issues.yml
================================================
name: Close Unauthorized Issues
on:
workflow_dispatch:
issues:
types: [opened]
jobs:
close-unauthorized-issues:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
# XXX: This *could* be done in Bash by abusing GitHub's own tool to interact with its API
# but that's too much of a hack, and we'll be adding a layer of abstraction. github-script
# is a workflow that eases interaction with GitHub API in the workflow run context.
- name: "Close 'unauthorized' issues"
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const ALLOWED_USERS = ['vaxerski', 'fufexan', 'NotAShelf'];
const CLOSING_COMMENT = 'Users are no longer allowed to open issues themselves, please open a discussion instead.\n\nPlease see the [wiki](https://wiki.hyprland.org/Contributing-and-Debugging/Issue-Guidelines/) on why this is the case.\n\nWe are volunteers, and we need your cooperation to make the best software we can. Thank you for understanding! ❤️\n\n[Open a discussion here](https://github.com/hyprwm/Hyprland/discussions)';
async function closeUnauthorizedIssue(issueNumber, userName) {
if (ALLOWED_USERS.includes(userName)) {
console.log(`Issue #${issueNumber} - Created by authorized user ${userName}`);
return;
}
console.log(`Issue #${issueNumber} - Unauthorized, closing`);
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
state: 'closed',
state_reason: 'not_planned'
});
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
body: CLOSING_COMMENT
});
}
if (context.eventName === 'issues' && context.payload.action === 'opened') {
// Direct access to the issue that triggered the workflow
const issue = context.payload.issue;
// Skip if this is a PR
if (issue.pull_request) {
console.log(`Issue #${issue.number} - Skipping, this is a pull request`);
return;
}
// Process the single issue that triggered the workflow
await closeUnauthorizedIssue(issue.number, issue.user.login);
} else {
// For manual runs, we need to handle pagination
async function* fetchAllOpenIssues() {
let page = 1;
let hasNextPage = true;
while (hasNextPage) {
const response = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
per_page: 100,
page: page
});
if (response.data.length === 0) {
hasNextPage = false;
} else {
for (const issue of response.data) {
yield issue;
}
page++;
}
}
}
// Process issues one by one
for await (const issue of fetchAllOpenIssues()) {
try {
// Skip pull requests
if (issue.pull_request) {
console.log(`Issue #${issue.number} - Skipping, this is a pull request`);
continue;
}
await closeUnauthorizedIssue(issue.number, issue.user.login);
} catch (error) {
console.error(`Error processing issue #${issue.number}: ${error.message}`);
}
}
}
================================================
FILE: .github/workflows/labeler.yml
================================================
name: "Pull Request Labeler"
on:
- pull_request_target
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5
================================================
FILE: .github/workflows/man-update.yaml
================================================
name: Build man pages
on:
workflow_dispatch:
push:
paths:
- docs/**
branches:
- 'main'
jobs:
main:
name: Build man pages
runs-on: ubuntu-latest
steps:
- name: Install deps
run: sudo apt install pandoc
- name: Clone repository
uses: actions/checkout@v4
with:
token: ${{ secrets.PAT }}
- name: Build man pages
run: make man
- uses: stefanzweifel/git-auto-commit-action@v5
name: Commit
with:
commit_message: "[gha] build man pages"
================================================
FILE: .github/workflows/new-pr-comment.yml
================================================
name: "New MR welcome comment"
on:
pull_request_target:
types:
- opened
jobs:
comment:
if: >
github.event.pull_request.user.login != 'vaxerski' &&
github.event.pull_request.user.login != 'fufexan' &&
github.event.pull_request.user.login != 'gulafaran' &&
github.event.pull_request.user.login != 'ujint34' &&
github.event.pull_request.user.login != 'paideiadilemma' &&
github.event.pull_request.user.login != 'notashelf'
runs-on: ubuntu-latest
permissions:
pull-requests: write
env:
PR_COMMENT: |
Hello and thank you for making a PR to Hyprland!
Please check the [PR Guidelines](https://wiki.hypr.land/Contributing-and-Debugging/PR-Guidelines/) and make sure your PR follows them.
It will make the entire review process faster. :)
If your code can be tested, please always add tests. See more [here](https://wiki.hypr.land/Contributing-and-Debugging/Tests/).
_beep boop, I'm just a bot. A real human will review your PR soon._
steps:
- name: Add comment to PR
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const pr = context.payload.pull_request;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: process.env.PR_COMMENT,
});
================================================
FILE: .github/workflows/nix-ci.yml
================================================
name: Nix
on: [push, pull_request, workflow_dispatch]
jobs:
update-inputs:
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
uses: ./.github/workflows/nix-update-inputs.yml
secrets: inherit
hyprland:
if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork)
uses: ./.github/workflows/nix.yml
secrets: inherit
with:
command: nix build 'github:${{ github.repository }}?ref=${{ github.ref }}' -L --extra-substituters "https://hyprland.cachix.org"
xdph:
if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork)
needs: hyprland
uses: ./.github/workflows/nix.yml
secrets: inherit
with:
command: nix build 'github:${{ github.repository }}?ref=${{ github.ref }}#xdg-desktop-portal-hyprland' -L --extra-substituters "https://hyprland.cachix.org"
test:
if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork)
uses: ./.github/workflows/nix-test.yml
secrets: inherit
================================================
FILE: .github/workflows/nix-test.yml
================================================
name: Nix (Test)
on:
workflow_call:
secrets:
CACHIX_AUTH_TOKEN:
required: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Nix
uses: nixbuild/nix-quick-install-action@v31
with:
nix_conf: |
keep-env-derivations = true
keep-outputs = true
- name: Restore and save Nix store
uses: nix-community/cache-nix-action@v6
with:
# restore and save a cache using this key (per job)
primary-key: nix-${{ runner.os }}-${{ github.job }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}
# collect garbage until the Nix store size (in bytes) is at most this number
# before trying to save a new cache
gc-max-store-size-linux: 5G
- uses: cachix/cachix-action@v15
with:
name: hyprland
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Run test VM
run: nix build 'github:${{ github.repository }}?ref=${{ github.ref }}#checks.x86_64-linux.tests' -L --extra-substituters "https://hyprland.cachix.org"
- name: Check exit status
run: grep 0 result/exit_status
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: result
================================================
FILE: .github/workflows/nix-update-inputs.yml
================================================
name: Nix (Update Inputs)
on:
workflow_call:
secrets:
PAT:
required: true
jobs:
update:
if: github.repository == 'hyprwm/Hyprland'
name: inputs
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
with:
token: ${{ secrets.PAT }}
- name: Install Nix
uses: nixbuild/nix-quick-install-action@v31
with:
nix_conf: |
keep-env-derivations = true
keep-outputs = true
- name: Restore and save Nix store
uses: nix-community/cache-nix-action@v6
with:
# restore and save a cache using this key (per job)
primary-key: nix-${{ runner.os }}-${{ github.job }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}
# collect garbage until the Nix store size (in bytes) is at most this number
# before trying to save a new cache
gc-max-store-size-linux: 5G
- name: Update inputs
run: nix/update-inputs.sh
- name: Commit
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "[gha] Nix: update inputs"
================================================
FILE: .github/workflows/nix.yml
================================================
name: Build
on:
workflow_call:
inputs:
command:
required: true
type: string
description: Command to run
secrets:
CACHIX_AUTH_TOKEN:
required: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Nix
uses: nixbuild/nix-quick-install-action@v31
with:
nix_conf: |
keep-env-derivations = true
keep-outputs = true
- name: Restore and save Nix store
uses: nix-community/cache-nix-action@v6
with:
# restore and save a cache using this key (per job)
primary-key: nix-${{ runner.os }}-${{ github.job }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}
# collect garbage until the Nix store size (in bytes) is at most this number
# before trying to save a new cache
gc-max-store-size-linux: 5G
- uses: cachix/cachix-action@v15
with:
name: hyprland
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- run: ${{ inputs.command }}
================================================
FILE: .github/workflows/release.yaml
================================================
name: Release artifacts
on:
release:
types: [published]
workflow_dispatch:
jobs:
source-tarball:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: recursive
- name: Populate git info in version.h.in
run: |
git fetch --tags --unshallow || true
COMMIT_HASH=$(git rev-parse HEAD)
BRANCH="${GITHUB_REF_NAME:-$(git rev-parse --abbrev-ref HEAD)}"
COMMIT_MSG=$(git show -s --format=%s | sed 's/[&/]/\\&/g')
COMMIT_DATE=$(git show -s --format=%cd --date=local)
GIT_DIRTY=$(git diff-index --quiet HEAD -- && echo "clean" || echo "dirty")
GIT_TAG=$(git describe --tags --always || echo "unknown")
GIT_COMMITS=$(git rev-list --count HEAD)
echo "Branch: $BRANCH"
echo "Tag: $GIT_TAG"
sed -i \
-e "s|@GIT_COMMIT_HASH@|$COMMIT_HASH|" \
-e "s|@GIT_BRANCH@|$BRANCH|" \
-e "s|@GIT_COMMIT_MESSAGE@|$COMMIT_MSG|" \
-e "s|@GIT_COMMIT_DATE@|$COMMIT_DATE|" \
-e "s|@GIT_DIRTY@|$GIT_DIRTY|" \
-e "s|@GIT_TAG@|$GIT_TAG|" \
-e "s|@GIT_COMMITS@|$GIT_COMMITS|" \
src/version.h.in
- name: Create tarball with submodules
id: tar
run: |
mkdir hyprland-source; mv ./* ./hyprland-source || tar -czv --owner=0 --group=0 --no-same-owner --no-same-permissions -f source.tar.gz *
- id: whatrelease
name: Get latest release
uses: pozetroninc/github-action-get-latest-release@master
with:
owner: hyprwm
repo: Hyprland
excludes: prerelease, draft
- name: Upload to release
id: upload
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: source.tar.gz
asset_name: source-${{ steps.whatrelease.outputs.release }}.tar.gz
tag: ${{ steps.whatrelease.outputs.release }}
overwrite: true
================================================
FILE: .github/workflows/security-checks.yml
================================================
name: Security Checks
on: [push, pull_request]
jobs:
flawfinder:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
name: Flawfinder Checks
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Scan with Flawfinder
uses: david-a-wheeler/flawfinder@8e4a779ad59dbfaee5da586aa9210853b701959c
with:
arguments: '--sarif ./'
output: 'flawfinder_results.sarif'
- name: Upload analysis results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: ${{github.workspace}}/flawfinder_results.sarif
================================================
FILE: .github/workflows/translation-ai-check.yml
================================================
name: AI Translation Check
on:
# pull_request_target:
# types:
# - opened
issue_comment:
types:
- created
permissions:
contents: read
pull-requests: write
issues: write
jobs:
review:
name: Review Translation
if: ${{ github.event_name == 'pull_request_target' || (github.event_name == 'issue_comment' && github.event.action == 'created' && github.event.issue.pull_request != null && github.event.comment.user.login == 'vaxerski' && github.event.comment.body == 'ai, please recheck' ) }}
runs-on: ubuntu-latest
env:
OPENAI_MODEL: gpt-5-mini
SYSTEM_PROMPT: |
You are a programmer and a translator. Your job is to review the attached patch for adding translation to a piece of software and make sure the submitted translation is not malicious, and that it makes sense. If the translation is not malicious, and doesn't contain obvious grammatical mistakes, say "Translation check OK". Otherwise, say "Translation check not ok" and list bad entries.
Examples of bad translations include obvious trolling (slurs, etc) or nonsense sentences. Meaningful improvements may be suggested, but if there are only minor improvements, just reply with "Translation check OK". Do not provide anything but the result and (if applicable) the bad entries or improvements.
AI_PROMPT: Translation patch below.
steps:
- name: Checkout source code
uses: actions/checkout@v5
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
i18n:
- 'src/i18n/**'
- name: Stop if i18n not changed
if: steps.changes.outputs.i18n != 'true'
run: echo "No i18n changes in this PR; skipping." && exit 0
- name: Determine PR number
id: pr
run: |
if [ "${{ github.event_name }}" = "pull_request_target" ]; then
echo "number=${{ github.event.pull_request.number }}" >> "$GITHUB_OUTPUT"
else
echo "number=${{ github.event.issue.number }}" >> "$GITHUB_OUTPUT"
fi
- name: Download combined PR diff
id: get_diff
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
run: |
# Get the combined diff for the entire PR
curl -sSL \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3.diff" \
"https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUMBER" \
-o pr.diff
# Compute character length
LEN=$(wc -c < pr.diff | tr -d ' ')
echo "len=$LEN" >> "$GITHUB_OUTPUT"
if [ "$LEN" -gt 25000 ]; then
echo "too_long=true" >> "$GITHUB_OUTPUT"
else
echo "too_long=false" >> "$GITHUB_OUTPUT"
fi
echo "got diff:"
cat pr.diff
- name: Comment when diff length exceeded
if: steps.get_diff.outputs.too_long == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
run: |
jq -n --arg body "Diff length exceeded, can't query API" '{body: ("AI translation check result:\n\n" + $body)}' > body.json
curl -sS -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
"https://api.github.com/repos/${{ github.repository }}/issues/$PR_NUMBER/comments" \
--data @body.json
- name: Query OpenAI and post review
if: steps.get_diff.outputs.too_long == 'false'
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_MODEL: ${{ env.OPENAI_MODEL }}
SYSTEM_PROMPT: ${{ env.SYSTEM_PROMPT }}
AI_PROMPT: ${{ env.AI_PROMPT }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
run: |
# Prepare OpenAI chat request payload (embed diff safely)
jq -n \
--arg model "$OPENAI_MODEL" \
--arg sys "$SYSTEM_PROMPT" \
--arg prompt "$AI_PROMPT" \
--rawfile diff pr.diff \
'{model:$model,
messages:[
{role:"system", content:$sys},
{role:"user", content: ($prompt + "\n\n```diff\n" + $diff + "\n```")}
]
}' > payload.json
# Call OpenAI
curl -sS https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d @payload.json > response.json
# Extract response text
COMMENT=$(jq -r '.choices[0].message.content // empty' response.json)
if [ -z "$COMMENT" ]; then
COMMENT="AI did not return a response."
fi
# If failed, add a note
ADDITIONAL_NOTE=""
if [[ "$COMMENT" == *"not ok"* ]]; then
ADDITIONAL_NOTE=$(echo -ne "\n\nPlease note this check is a guideline, not a hard requirement. It is here to help you translate. If you disagree with some points, just state that. Any typos should be fixed.")
fi
# Post the review as a PR comment
jq -n --arg body "$COMMENT" --arg note "$ADDITIONAL_NOTE" '{body: ("AI translation check result:\n\n" + $body + $note)}' > body.json
echo "CURLing https://api.github.com/repos/${{ github.repository }}/issues/$PR_NUMBER/comments"
curl -sS -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
"https://api.github.com/repos/${{ github.repository }}/issues/$PR_NUMBER/comments" \
--data @body.json
================================================
FILE: .gitignore
================================================
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
hyprland.pc
_deps
build/
result*
/.pre-commit-config.yaml
/.vscode/
/.idea/
.envrc
.cache
.direnv
/.cmake/
/.worktree/
*.o
protocols/*.c*
protocols/*.h*
.ccls-cache
*.so
src/render/shaders/*.inc
src/render/shaders/Shaders.hpp
hyprctl/hyprctl
hyprctl/hw-protocols/*.c*
hyprctl/hw-protocols/*.h*
gmon.out
*.out
*.tar.gz
PKGBUILD
src/version.h
hyprpm/Makefile
hyprctl/Makefile
example/hyprland.desktop
**/.#*.*
**/#*.*#
================================================
FILE: .gitmodules
================================================
[submodule "subprojects/hyprland-protocols"]
path = subprojects/hyprland-protocols
url = https://github.com/hyprwm/hyprland-protocols
[submodule "subprojects/udis86"]
path = subprojects/udis86
url = https://github.com/canihavesomecoffee/udis86
[submodule "subprojects/tracy"]
path = subprojects/tracy
url = https://github.com/wolfpld/tracy
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.30)
# Get version
file(READ "${CMAKE_SOURCE_DIR}/VERSION" VER_RAW)
string(STRIP ${VER_RAW} VER)
project(
Hyprland
DESCRIPTION "A Modern C++ Wayland Compositor"
VERSION ${VER})
include(CTest)
include(CheckIncludeFile)
include(GNUInstallDirs)
set(HYPRLAND_VERSION ${VER})
set(PREFIX ${CMAKE_INSTALL_PREFIX})
set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
set(BINDIR ${CMAKE_INSTALL_BINDIR})
set(CMAKE_MESSAGE_LOG_LEVEL "STATUS")
message(STATUS "Gathering git info")
# Make shader files includable
execute_process(COMMAND ./scripts/generateShaderIncludes.sh
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE HYPR_SHADER_GEN_RESULT)
if(NOT HYPR_SHADER_GEN_RESULT EQUAL 0)
message(
FATAL_ERROR
"Failed to generate shader includes (scripts/generateShaderIncludes.sh), exit code: ${HYPR_SHADER_GEN_RESULT}"
)
endif()
find_package(PkgConfig REQUIRED)
# Try to find canihavesomecoffee's udis86 using pkgconfig vmd/udis86 does not
# provide a .pc file and won't be detected this way
pkg_check_modules(udis_dep IMPORTED_TARGET udis86>=1.7.2)
# Find non-pkgconfig udis86, otherwise fallback to subproject
if(NOT udis_dep_FOUND)
find_library(udis_nopc udis86)
if(NOT("${udis_nopc}" MATCHES "udis_nopc-NOTFOUND"))
message(STATUS "Found udis86 at ${udis_nopc}")
else()
add_subdirectory("subprojects/udis86")
include_directories("subprojects/udis86")
message(STATUS "udis86 dependency not found, falling back to subproject")
endif()
endif()
find_library(librt rt)
if("${librt}" MATCHES "librt-NOTFOUND")
unset(LIBRT)
else()
set(LIBRT rt)
endif()
if(CMAKE_BUILD_TYPE)
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILDTYPE_LOWER)
if(BUILDTYPE_LOWER STREQUAL "release")
# Pass.
elseif(BUILDTYPE_LOWER STREQUAL "debug")
# Pass.
elseif(BUILDTYPE_LOWER STREQUAL "relwithdebinfo")
set(BUILDTYPE_LOWER "debugoptimized")
elseif(BUILDTYPE_LOWER STREQUAL "minsizerel")
set(BUILDTYPE_LOWER "minsize")
elseif(BUILDTYPE_LOWER STREQUAL "none")
set(BUILDTYPE_LOWER "plain")
else()
set(BUILDTYPE_LOWER "release")
endif()
else()
set(BUILDTYPE_LOWER "release")
endif()
pkg_get_variable(WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir)
message(STATUS "Found wayland-protocols at ${WAYLAND_PROTOCOLS_DIR}")
pkg_get_variable(WAYLAND_SCANNER_PKGDATA_DIR wayland-scanner pkgdatadir)
message(
STATUS "Found wayland-scanner pkgdatadir at ${WAYLAND_SCANNER_PKGDATA_DIR}")
if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG)
message(STATUS "Configuring Hyprland in Debug with CMake")
add_compile_definitions(HYPRLAND_DEBUG)
set(BUILD_TESTING ON)
else()
add_compile_options(-O3)
message(STATUS "Configuring Hyprland in Release with CMake")
set(BUILD_TESTING OFF)
endif()
add_compile_definitions(HYPRLAND_VERSION="${HYPRLAND_VERSION}")
include_directories(. "src/" "protocols/")
set(CMAKE_CXX_STANDARD 26)
set(CXX_STANDARD_REQUIRED ON)
add_compile_options(
-Wall
-Wextra
-Wpedantic
-Wno-unused-parameter
-Wno-unused-value
-Wno-missing-field-initializers
-Wno-gnu-zero-variadic-macro-arguments
-Wno-narrowing
-Wno-pointer-arith
-Wno-clobbered
-frtti
-fmacro-prefix-map=${CMAKE_SOURCE_DIR}/=)
# disable lto as it may break plugins
add_compile_options(-fno-lto)
set(CMAKE_EXECUTABLE_ENABLE_EXPORTS TRUE)
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
message(STATUS "Checking deps...")
find_package(Threads REQUIRED)
set(GLES_VERSION "GLES3")
find_package(OpenGL REQUIRED COMPONENTS ${GLES_VERSION})
find_package(glslang CONFIG REQUIRED)
set(AQUAMARINE_MINIMUM_VERSION 0.9.3)
set(HYPRLANG_MINIMUM_VERSION 0.6.7)
set(HYPRCURSOR_MINIMUM_VERSION 0.1.7)
set(HYPRUTILS_MINIMUM_VERSION 0.11.0)
set(HYPRGRAPHICS_MINIMUM_VERSION 0.1.6)
pkg_check_modules(aquamarine_dep REQUIRED IMPORTED_TARGET aquamarine>=${AQUAMARINE_MINIMUM_VERSION})
pkg_check_modules(hyprlang_dep REQUIRED IMPORTED_TARGET hyprlang>=${HYPRLANG_MINIMUM_VERSION})
pkg_check_modules(hyprcursor_dep REQUIRED IMPORTED_TARGET hyprcursor>=${HYPRCURSOR_MINIMUM_VERSION})
pkg_check_modules(hyprutils_dep REQUIRED IMPORTED_TARGET hyprutils>=${HYPRUTILS_MINIMUM_VERSION})
pkg_check_modules(hyprgraphics_dep REQUIRED IMPORTED_TARGET hyprgraphics>=${HYPRGRAPHICS_MINIMUM_VERSION})
string(REPLACE "." ";" AQ_VERSION_LIST ${aquamarine_dep_VERSION})
list(GET AQ_VERSION_LIST 0 AQ_VERSION_MAJOR)
list(GET AQ_VERSION_LIST 1 AQ_VERSION_MINOR)
list(GET AQ_VERSION_LIST 2 AQ_VERSION_PATCH)
set(AQUAMARINE_VERSION "${aquamarine_dep_VERSION}")
set(AQUAMARINE_VERSION_MAJOR "${AQ_VERSION_MAJOR}")
set(AQUAMARINE_VERSION_MINOR "${AQ_VERSION_MINOR}")
set(AQUAMARINE_VERSION_PATCH "${AQ_VERSION_PATCH}")
set(HYPRLANG_VERSION "${hyprlang_dep_VERSION}")
set(HYPRUTILS_VERSION "${hyprutils_dep_VERSION}")
set(HYPRCURSOR_VERSION "${hyprcursor_dep_VERSION}")
set(HYPRGRAPHICS_VERSION "${hyprgraphics_dep_VERSION}")
find_package(Git QUIET)
# Populate variables with env vars if present
set(GIT_COMMIT_HASH "$ENV{GIT_COMMIT_HASH}")
if(NOT GIT_COMMIT_HASH)
set(GIT_COMMIT_HASH "unknown")
endif()
set(GIT_BRANCH "$ENV{GIT_BRANCH}")
if(NOT GIT_BRANCH)
set(GIT_BRANCH "unknown")
endif()
set(GIT_COMMIT_MESSAGE "$ENV{GIT_COMMIT_MESSAGE}")
if(NOT GIT_COMMIT_MESSAGE)
set(GIT_COMMIT_MESSAGE "unknown")
endif()
set(GIT_COMMIT_DATE "$ENV{GIT_COMMIT_DATE}")
if(NOT GIT_COMMIT_DATE)
set(GIT_COMMIT_DATE "unknown")
endif()
set(GIT_DIRTY "$ENV{GIT_DIRTY}")
if(NOT GIT_DIRTY)
set(GIT_DIRTY "unknown")
endif()
set(GIT_TAG "$ENV{GIT_TAG}")
if(NOT GIT_TAG)
set(GIT_TAG "unknown")
endif()
set(GIT_COMMITS "$ENV{GIT_COMMITS}")
if(NOT GIT_COMMITS)
set(GIT_COMMITS "0")
endif()
if(Git_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --show-toplevel
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TOPLEVEL
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
RESULT_VARIABLE GIT_TOPLEVEL_RESULT
)
if(GIT_TOPLEVEL_RESULT EQUAL 0)
message(STATUS "Detected git repository root: ${GIT_TOPLEVEL}")
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
WORKING_DIRECTORY ${GIT_TOPLEVEL}
OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} branch --show-current
WORKING_DIRECTORY ${GIT_TOPLEVEL}
OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND sh "-c" "${GIT_EXECUTABLE} show -s --format=%s --no-show-signature | sed \"s/\\\"/\'/g\""
WORKING_DIRECTORY ${GIT_TOPLEVEL}
OUTPUT_VARIABLE GIT_COMMIT_MESSAGE OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%cd --date=local --no-show-signature
WORKING_DIRECTORY ${GIT_TOPLEVEL}
OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --quiet HEAD --
WORKING_DIRECTORY ${GIT_TOPLEVEL}
RESULT_VARIABLE GIT_DIRTY_RESULT)
if(NOT GIT_DIRTY_RESULT EQUAL 0)
set(GIT_DIRTY "dirty")
else()
set(GIT_DIRTY "clean")
endif()
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags
WORKING_DIRECTORY ${GIT_TOPLEVEL}
OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
WORKING_DIRECTORY ${GIT_TOPLEVEL}
OUTPUT_VARIABLE GIT_COMMITS OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
message(WARNING "No Git repository detected in ${CMAKE_SOURCE_DIR}")
endif()
endif()
configure_file(
${CMAKE_SOURCE_DIR}/src/version.h.in
${CMAKE_SOURCE_DIR}/src/version.h
@ONLY
)
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/version.h PROPERTIES GENERATED TRUE)
set(XKBCOMMON_MINIMUM_VERSION 1.11.0)
set(WAYLAND_SERVER_MINIMUM_VERSION 1.22.91)
set(WAYLAND_SERVER_PROTOCOLS_MINIMUM_VERSION 1.45)
set(LIBINPUT_MINIMUM_VERSION 1.28)
pkg_check_modules(
deps
REQUIRED
IMPORTED_TARGET GLOBAL
xkbcommon>=${XKBCOMMON_MINIMUM_VERSION}
uuid
wayland-server>=${WAYLAND_SERVER_MINIMUM_VERSION}
wayland-protocols>=${WAYLAND_SERVER_PROTOCOLS_MINIMUM_VERSION}
cairo
pango
pangocairo
pixman-1
xcursor
libdrm
libinput>=${LIBINPUT_MINIMUM_VERSION}
gbm
gio-2.0
re2
muparser
lcms2)
find_package(hyprwayland-scanner 0.3.10 REQUIRED)
file(GLOB_RECURSE SRCFILES "src/*.cpp")
get_filename_component(FULL_MAIN_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp ABSOLUTE)
list(REMOVE_ITEM SRCFILES "${FULL_MAIN_PATH}")
set(TRACY_CPP_FILES "")
if(USE_TRACY)
set(TRACY_CPP_FILES "subprojects/tracy/public/TracyClient.cpp")
message(STATUS "Tracy enabled, TRACY_CPP_FILES: " ${TRACY_CPP_FILES})
endif()
add_library(hyprland_lib STATIC ${SRCFILES})
add_executable(Hyprland src/main.cpp ${TRACY_CPP_FILES})
target_link_libraries(Hyprland hyprland_lib)
target_include_directories(hyprland_lib PUBLIC ${deps_INCLUDE_DIRS})
target_include_directories(Hyprland PUBLIC ${deps_INCLUDE_DIRS})
set(USE_GPROF OFF)
if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG)
message(STATUS "Setting debug flags")
if(WITH_ASAN)
message(STATUS "Enabling ASan")
target_link_libraries(hyprland_lib PUBLIC asan)
target_compile_options(hyprland_lib PUBLIC -fsanitize=address)
endif()
add_compile_options(-fno-pie -fno-builtin)
add_link_options(-no-pie -fno-builtin)
if(USE_GPROF)
add_compile_options(-pg)
add_link_options(-pg)
endif()
endif()
if(USE_TRACY)
message(STATUS "Tracy is turned on")
option(TRACY_ENABLE "" ON)
option(TRACY_ON_DEMAND "" ON)
add_subdirectory(subprojects/tracy)
add_compile_options(-fno-omit-frame-pointer)
target_link_libraries(hyprland_lib PUBLIC Tracy::TracyClient)
if(USE_TRACY_GPU)
message(STATUS "Tracy GPU Profiling is turned on")
add_compile_definitions(USE_TRACY_GPU)
endif()
endif()
if(BUILT_WITH_NIX)
add_compile_definitions(BUILT_WITH_NIX)
endif()
check_include_file("execinfo.h" EXECINFOH)
if(EXECINFOH)
message(STATUS "Configuration supports execinfo")
add_compile_definitions(HAS_EXECINFO)
endif()
include(CheckLibraryExists)
check_library_exists(execinfo backtrace "" HAVE_LIBEXECINFO)
if(HAVE_LIBEXECINFO)
target_link_libraries(hyprland_lib PUBLIC execinfo)
endif()
check_include_file("sys/timerfd.h" HAS_TIMERFD)
pkg_check_modules(epoll IMPORTED_TARGET epoll-shim)
if(NOT HAS_TIMERFD AND epoll_FOUND)
target_link_libraries(hyprland_lib PUBLIC PkgConfig::epoll)
endif()
check_include_file("sys/inotify.h" HAS_INOTIFY)
pkg_check_modules(inotify IMPORTED_TARGET libinotify)
if(NOT HAS_INOTIFY AND inotify_FOUND)
target_link_libraries(hyprland_lib PUBLIC PkgConfig::inotify)
endif()
if(NO_XWAYLAND)
message(STATUS "Using the NO_XWAYLAND flag, disabling XWayland!")
add_compile_definitions(NO_XWAYLAND)
else()
message(STATUS "XWAYLAND Enabled (NO_XWAYLAND not defined) checking deps...")
set(XWAYLAND_DEPENDENCIES
xcb
xcb-render
xcb-xfixes
xcb-icccm
xcb-composite
xcb-res
xcb-errors)
pkg_check_modules(
xdeps
REQUIRED
IMPORTED_TARGET
${XWAYLAND_DEPENDENCIES})
string(JOIN ", " PKGCONFIG_XWAYLAND_DEPENDENCIES ${XWAYLAND_DEPENDENCIES})
string(PREPEND PKGCONFIG_XWAYLAND_DEPENDENCIES ", ")
target_link_libraries(hyprland_lib PUBLIC PkgConfig::xdeps)
endif()
configure_file(hyprland.pc.in hyprland.pc @ONLY)
if(NO_SYSTEMD)
message(STATUS "SYSTEMD support is disabled...")
else()
message(STATUS "SYSTEMD support is requested (NO_SYSTEMD not defined)...")
add_compile_definitions(USES_SYSTEMD)
# session file -uwsm
if(NO_UWSM)
message(STATUS "UWSM support is disabled...")
else()
message(STATUS "UWSM support is enabled (NO_UWSM not defined)...")
install(FILES ${CMAKE_SOURCE_DIR}/systemd/hyprland-uwsm.desktop
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/wayland-sessions)
endif()
endif()
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
if(CMAKE_DISABLE_PRECOMPILE_HEADERS)
message(STATUS "Not using precompiled headers")
else()
message(STATUS "Setting precompiled headers")
target_precompile_headers(hyprland_lib PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:src/pch/pch.hpp>)
endif()
message(STATUS "Setting link libraries")
target_link_libraries(
hyprland_lib
PUBLIC
PkgConfig::aquamarine_dep
PkgConfig::hyprlang_dep
PkgConfig::hyprutils_dep
PkgConfig::hyprcursor_dep
PkgConfig::hyprgraphics_dep
PkgConfig::deps
)
target_link_libraries(
Hyprland
${LIBRT}
hyprland_lib)
if(udis_dep_FOUND)
target_link_libraries(hyprland_lib PUBLIC PkgConfig::udis_dep)
elseif(NOT("${udis_nopc}" MATCHES "udis_nopc-NOTFOUND"))
target_link_libraries(hyprland_lib PUBLIC ${udis_nopc})
else()
target_link_libraries(hyprland_lib PUBLIC libudis86)
endif()
# used by `make installheaders`, to ensure the headers are generated
add_custom_target(generate-protocol-headers)
set(PROTOCOL_SOURCES "")
function(protocolnew protoPath protoName external)
if(external)
set(path ${protoPath})
else()
set(path ${WAYLAND_PROTOCOLS_DIR}/${protoPath})
endif()
add_custom_command(
OUTPUT ${CMAKE_SOURCE_DIR}/protocols/${protoName}.cpp
${CMAKE_SOURCE_DIR}/protocols/${protoName}.hpp
COMMAND hyprwayland-scanner ${path}/${protoName}.xml
${CMAKE_SOURCE_DIR}/protocols/
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
target_sources(hyprland_lib PRIVATE protocols/${protoName}.cpp
protocols/${protoName}.hpp)
target_sources(generate-protocol-headers
PRIVATE ${CMAKE_SOURCE_DIR}/protocols/${protoName}.hpp)
list(APPEND PROTOCOL_SOURCES "${CMAKE_SOURCE_DIR}/protocols/${protoName}.cpp")
set(PROTOCOL_SOURCES "${PROTOCOL_SOURCES}" PARENT_SCOPE)
list(APPEND PROTOCOL_SOURCES "${CMAKE_SOURCE_DIR}/protocols/${protoName}.hpp")
set(PROTOCOL_SOURCES "${PROTOCOL_SOURCES}" PARENT_SCOPE)
endfunction()
function(protocolWayland)
add_custom_command(
OUTPUT ${CMAKE_SOURCE_DIR}/protocols/wayland.cpp
${CMAKE_SOURCE_DIR}/protocols/wayland.hpp
COMMAND
hyprwayland-scanner --wayland-enums
${WAYLAND_SCANNER_PKGDATA_DIR}/wayland.xml ${CMAKE_SOURCE_DIR}/protocols/
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
target_sources(hyprland_lib PRIVATE protocols/wayland.cpp protocols/wayland.hpp)
target_sources(generate-protocol-headers
PRIVATE ${CMAKE_SOURCE_DIR}/protocols/wayland.hpp)
list(APPEND PROTOCOL_SOURCES "${CMAKE_SOURCE_DIR}/protocols/wayland.hpp")
set(PROTOCOL_SOURCES "${PROTOCOL_SOURCES}" PARENT_SCOPE)
list(APPEND PROTOCOL_SOURCES "${CMAKE_SOURCE_DIR}/protocols/wayland.cpp")
set(PROTOCOL_SOURCES "${PROTOCOL_SOURCES}" PARENT_SCOPE)
endfunction()
if(TARGET OpenGL::GL)
target_link_libraries(hyprland_lib PUBLIC OpenGL::EGL OpenGL::GL glslang::glslang glslang::glslang-default-resource-limits glslang::SPIRV Threads::Threads)
else()
target_link_libraries(hyprland_lib PUBLIC OpenGL::EGL OpenGL::GLES3 glslang::glslang glslang::glslang-default-resource-limits glslang::SPIRV Threads::Threads)
endif()
pkg_check_modules(hyprland_protocols_dep hyprland-protocols>=0.6.4)
if(hyprland_protocols_dep_FOUND)
pkg_get_variable(HYPRLAND_PROTOCOLS hyprland-protocols pkgdatadir)
message(STATUS "hyprland-protocols dependency set to ${HYPRLAND_PROTOCOLS}")
else()
set(HYPRLAND_PROTOCOLS "subprojects/hyprland-protocols")
message(STATUS "hyprland-protocols subproject set to ${HYPRLAND_PROTOCOLS}")
endif()
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-global-shortcuts-v1"
true)
protocolnew("unstable/text-input" "text-input-unstable-v1" false)
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-toplevel-export-v1"
true)
protocolnew("protocols" "wlr-screencopy-unstable-v1" true)
protocolnew("protocols" "wlr-gamma-control-unstable-v1" true)
protocolnew("protocols" "wlr-foreign-toplevel-management-unstable-v1" true)
protocolnew("protocols" "wlr-output-power-management-unstable-v1" true)
protocolnew("protocols" "virtual-keyboard-unstable-v1" true)
protocolnew("protocols" "wlr-virtual-pointer-unstable-v1" true)
protocolnew("protocols" "input-method-unstable-v2" true)
protocolnew("protocols" "wlr-output-management-unstable-v1" true)
protocolnew("protocols" "kde-server-decoration" true)
protocolnew("protocols" "wlr-data-control-unstable-v1" true)
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-focus-grab-v1" true)
protocolnew("protocols" "wlr-layer-shell-unstable-v1" true)
protocolnew("protocols" "wayland-drm" true)
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-ctm-control-v1" true)
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-surface-v1" true)
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-lock-notify-v1" true)
protocolnew("${HYPRLAND_PROTOCOLS}/protocols" "hyprland-toplevel-mapping-v1"
true)
protocolnew("staging/tearing-control" "tearing-control-v1" false)
protocolnew("staging/fractional-scale" "fractional-scale-v1" false)
protocolnew("unstable/xdg-output" "xdg-output-unstable-v1" false)
protocolnew("staging/cursor-shape" "cursor-shape-v1" false)
protocolnew("unstable/idle-inhibit" "idle-inhibit-unstable-v1" false)
protocolnew("unstable/relative-pointer" "relative-pointer-unstable-v1" false)
protocolnew("unstable/xdg-decoration" "xdg-decoration-unstable-v1" false)
protocolnew("staging/alpha-modifier" "alpha-modifier-v1" false)
protocolnew("staging/ext-foreign-toplevel-list" "ext-foreign-toplevel-list-v1"
false)
protocolnew("unstable/pointer-gestures" "pointer-gestures-unstable-v1" false)
protocolnew("unstable/keyboard-shortcuts-inhibit"
"keyboard-shortcuts-inhibit-unstable-v1" false)
protocolnew("unstable/text-input" "text-input-unstable-v3" false)
protocolnew("unstable/pointer-constraints" "pointer-constraints-unstable-v1"
false)
protocolnew("staging/xdg-activation" "xdg-activation-v1" false)
protocolnew("staging/ext-idle-notify" "ext-idle-notify-v1" false)
protocolnew("staging/ext-session-lock" "ext-session-lock-v1" false)
protocolnew("stable/tablet" "tablet-v2" false)
protocolnew("stable/presentation-time" "presentation-time" false)
protocolnew("stable/xdg-shell" "xdg-shell" false)
protocolnew("unstable/primary-selection" "primary-selection-unstable-v1" false)
protocolnew("staging/xwayland-shell" "xwayland-shell-v1" false)
protocolnew("stable/viewporter" "viewporter" false)
protocolnew("stable/linux-dmabuf" "linux-dmabuf-v1" false)
protocolnew("staging/drm-lease" "drm-lease-v1" false)
protocolnew("staging/linux-drm-syncobj" "linux-drm-syncobj-v1" false)
protocolnew("staging/xdg-dialog" "xdg-dialog-v1" false)
protocolnew("staging/single-pixel-buffer" "single-pixel-buffer-v1" false)
protocolnew("staging/security-context" "security-context-v1" false)
protocolnew("staging/content-type" "content-type-v1" false)
protocolnew("staging/color-management" "color-management-v1" false)
protocolnew("staging/xdg-toplevel-tag" "xdg-toplevel-tag-v1" false)
protocolnew("staging/xdg-system-bell" "xdg-system-bell-v1" false)
protocolnew("staging/ext-workspace" "ext-workspace-v1" false)
protocolnew("staging/ext-data-control" "ext-data-control-v1" false)
protocolnew("staging/pointer-warp" "pointer-warp-v1" false)
protocolnew("staging/fifo" "fifo-v1" false)
protocolnew("staging/commit-timing" "commit-timing-v1" false)
protocolnew("staging/ext-image-capture-source" "ext-image-capture-source-v1" false)
protocolnew("staging/ext-image-copy-capture" "ext-image-copy-capture-v1" false)
protocolwayland()
# tools
add_subdirectory(hyprctl)
add_subdirectory(start)
if(NO_HYPRPM)
message(STATUS "hyprpm is disabled")
else()
add_subdirectory(hyprpm)
message(STATUS "hyprpm is enabled (NO_HYPRPM not defined)")
endif()
# binary and symlink
install(TARGETS Hyprland)
install(
CODE "execute_process( \
COMMAND ${CMAKE_COMMAND} -E create_symlink \
${CMAKE_INSTALL_FULL_BINDIR}/Hyprland \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/hyprland\" \
)")
# session file
configure_file(
${CMAKE_SOURCE_DIR}/example/hyprland.desktop.in
${CMAKE_SOURCE_DIR}/example/hyprland.desktop
@ONLY
)
install(FILES ${CMAKE_SOURCE_DIR}/example/hyprland.desktop
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/wayland-sessions)
# allow Hyprland to find assets
add_compile_definitions(DATAROOTDIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}")
# installable assets
file(GLOB_RECURSE INSTALLABLE_ASSETS "assets/install/*")
install(FILES ${INSTALLABLE_ASSETS}
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hypr)
# default config
install(FILES ${CMAKE_SOURCE_DIR}/example/hyprland.conf
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hypr)
# portal config
install(FILES ${CMAKE_SOURCE_DIR}/assets/hyprland-portals.conf
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/xdg-desktop-portal)
# man pages
file(GLOB_RECURSE MANPAGES "docs/*.1")
install(FILES ${MANPAGES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
# pkgconfig entry
install(FILES ${CMAKE_BINARY_DIR}/hyprland.pc
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
# protocol headers
set(HEADERS_PROTO "${CMAKE_CURRENT_SOURCE_DIR}/protocols")
install(
DIRECTORY ${HEADERS_PROTO}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hyprland
FILES_MATCHING
PATTERN "*.h*")
# hyprland headers
set(HEADERS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src")
install(
DIRECTORY ${HEADERS_SRC}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hyprland
FILES_MATCHING
PATTERN "*.h"
PATTERN "*.hpp"
PATTERN "*.inc")
if(BUILD_TESTING OR WITH_TESTS)
message(STATUS "Building tests")
# hyprtester
add_subdirectory(hyprtester)
# GTest
find_package(GTest CONFIG REQUIRED)
include(GoogleTest)
file(GLOB_RECURSE TESTFILES "tests/*.cpp")
add_executable(hyprland_gtests ${TESTFILES})
target_compile_options(hyprland_gtests PRIVATE --coverage)
target_link_options(hyprland_gtests PRIVATE --coverage)
target_include_directories(
hyprland_gtests
PUBLIC "./include"
PRIVATE "./src" "./src/include" "./protocols" "${CMAKE_BINARY_DIR}")
target_link_libraries(hyprland_gtests hyprland_lib GTest::gtest_main)
gtest_discover_tests(hyprland_gtests)
# Enable coverage in main hyprland lib
target_compile_options(hyprland_lib PRIVATE --coverage)
target_link_options(hyprland_lib PRIVATE --coverage)
target_link_libraries(hyprland_lib PUBLIC gcov)
# Enable coverage in hyprland exe
target_compile_options(Hyprland PRIVATE --coverage)
target_link_options(Hyprland PRIVATE --coverage)
target_link_libraries(Hyprland gcov)
endif()
if(BUILD_TESTING)
message(STATUS "Testing is enabled")
enable_testing()
add_custom_target(tests)
add_dependencies(tests hyprland_gtests)
else()
message(STATUS "Testing is disabled")
endif()
================================================
FILE: CODE_OF_CONDUCT.md
================================================
## Goal
Our goal is to provide a space where it is safe for everyone to contribute to,
and get support for, open-source software in a respectful and cooperative
manner.
We value all contributions and want to make this organization and its
surrounding community a place for everyone.
As members, contributors, and everyone else who may participate in the
development, we strive to keep the entire experience civil.
## Standards
Our community standards exist in order to make sure everyone feels comfortable
contributing to the project(s) together.
Our standards are:
- Do not harass, attack, or in any other way discriminate against anyone, including
for their protected traits, including, but not limited to, sex, religion, race,
appearance, gender, identity, nationality, sexuality, etc.
- Do not go off-topic, do not post spam.
- Treat everyone with respect.
Examples of breaking each rule respectively include:
- Harassment, bullying or inappropriate jokes about another person.
- Posting distasteful imagery, trolling, or posting things unrelated to the topic at hand.
- Treating someone as worse because of their lack of understanding of an issue.
## Enforcement
Enforcement of this CoC is done by the members of the hyprwm organization.
We, as the organization, will strive our best to keep this community civil and
following the standards outlined above.
### Reporting incidents
If you believe an incident of breaking our standards has occurred, but nobody has
taken appropriate action, you can privately contact the people responsible for dealing
with such incidents in multiple ways:
***E-Mail***
- `vaxry[at]vaxry.net`
- `mihai[at]fufexan.net`
***Discord***
- `@vaxry`
- `@fufexan`
***Matrix***
- `@vaxry:matrix.vaxry.net`
- `@fufexan:matrix.org`
We, as members, guarantee your privacy and will not share those reports with anyone.
## Enforcement Strategy
Depending on the severity of the infraction, any action from the list below may be applied.
Please keep in mind cases are reviewed on a per-case basis and members are the ultimate
deciding factor in the type of punishment.
If the matter would benefit from an outside opinion, a member might reach for more opinions
from people unrelated to the organization, however, the final decision regarding the action
to be taken is still up to the member.
For example, if the matter at hand regards a representative of a marginalized group or minority,
the member might ask for a first-hand opinion from another representative of such group.
### Correction/Edit
If your message is found to be misleading or poorly worded, a member might
edit your message.
### Warning/Deletion
If your message is found inappropriate, a member might give you a public or private warning,
and/or delete your message.
### Mute
If your message is disruptive, or you have been repeatedly violating the standards,
a member might mute (or temporarily ban) you.
### Ban
If your message is hateful, very disruptive, or other, less serious infractions are repeated
ignoring previous punishments, a member might ban you permanently.
## Scope
This CoC shall apply to all projects ran under the `hyprwm` organization and all _official_ communities
outside of GitHub.
However, it is worth noting that official communities outside of GitHub might have their own,
additional sets of rules.
================================================
FILE: LICENSE
================================================
BSD 3-Clause License
Copyright (c) 2022-2026, vaxerski
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: Makefile
================================================
PREFIX = /usr/local
stub:
@echo "Do not run $(MAKE) directly without any arguments. Please refer to the wiki on how to compile Hyprland."
release:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=${PREFIX} -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
debug:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DTESTS=true -DCMAKE_INSTALL_PREFIX:STRING=${PREFIX} -S . -B ./build
cmake --build ./build --config Debug --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
nopch:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=${PREFIX} -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
clear:
rm -rf build
rm -f ./protocols/*.h ./protocols/*.c ./protocols/*.cpp ./protocols/*.hpp
rm -f ./hyprctl/hw-protocols/*.cpp ./hyprctl/hw-protocols/*.hpp
all:
$(MAKE) clear
$(MAKE) release
install:
cmake --install ./build
uninstall:
xargs rm < ./build/install_manifest.txt
pluginenv:
@echo -en "$(MAKE) pluginenv has been deprecated.\nPlease run $(MAKE) all && sudo $(MAKE) installheaders\n"
@exit 1
installheaders:
@if [ ! -f ./src/version.h ]; then echo -en "You need to run $(MAKE) all first.\n" && exit 1; fi
# remove previous headers from hyprpm's dir
rm -fr ${PREFIX}/include/hyprland
mkdir -p ${PREFIX}/include/hyprland
mkdir -p ${PREFIX}/include/hyprland/protocols
mkdir -p ${PREFIX}/share/pkgconfig
cmake --build ./build --config Release --target generate-protocol-headers
find src -type f \( -name '*.hpp' -o -name '*.h' -o -name '*.inc' \) -print0 | cpio --quiet -0dump ${PREFIX}/include/hyprland
cp ./protocols/*.h* ${PREFIX}/include/hyprland/protocols
cp ./build/hyprland.pc ${PREFIX}/share/pkgconfig
if [ -d /usr/share/pkgconfig ]; then cp ./build/hyprland.pc /usr/share/pkgconfig 2>/dev/null || true; fi
chmod -R 755 ${PREFIX}/include/hyprland
chmod 755 ${PREFIX}/share/pkgconfig
man:
pandoc ./docs/Hyprland.1.rst \
--standalone \
--variable=header:"Hyprland User Manual" \
--variable=date:"${DATE}" \
--variable=section:1 \
--from rst \
--to man > ./docs/Hyprland.1
pandoc ./docs/hyprctl.1.rst \
--standalone \
--variable=header:"hyprctl User Manual" \
--variable=date:"${DATE}" \
--variable=section:1 \
--from rst \
--to man > ./docs/hyprctl.1
asan:
@echo -en "!!WARNING!!\nOnly run this in the TTY.\n"
@pidof Hyprland > /dev/null && echo -ne "Refusing to run with Hyprland running.\n" || echo ""
@pidof Hyprland > /dev/null && exit 1 || echo ""
rm -rf ./wayland
#git reset --hard
@echo -en "If you want to apply a patch, input its path (leave empty for none):\n"
@read patchvar; \
if [ -n "$$patchvar" ]; then patch -p1 < "$$patchvar" || echo ""; else echo "No patch specified"; fi
git clone --recursive https://gitlab.freedesktop.org/wayland/wayland
cd wayland && patch -p1 < ../scripts/waylandStatic.diff && meson setup build --buildtype=debug -Db_sanitize=address -Ddocumentation=false && ninja -C build && cd ..
cp ./wayland/build/src/libwayland-server.a .
@echo "Wayland done"
patch -p1 < ./scripts/hyprlandStaticAsan.diff
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DWITH_ASAN:STRING=True -DUSE_TRACY:STRING=False -DUSE_TRACY_GPU:STRING=False -S . -B ./build
cmake --build ./build --config Debug --target all
@echo "Hyprland done"
ASAN_OPTIONS="detect_odr_violation=0,log_path=asan.log" HYPRLAND_NO_CRASHREPORTER=1 ./build/Hyprland -c ~/.config/hypr/hyprland.conf
test:
$(MAKE) debug
./build/hyprtester/hyprtester -c hyprtester/test.conf -b ./build/Hyprland -p hyprtester/plugin/hyprtestplugin.so
================================================
FILE: README.md
================================================
<div align = center>
<img src="https://raw.githubusercontent.com/hyprwm/Hyprland/main/assets/header.svg" width="750" height="300" alt="banner">
<br>
[![Badge Workflow]][Workflow]
[![Badge License]][License]
![Badge Language]
[![Badge Pull Requests]][Pull Requests]
[![Badge Issues]][Issues]
![Badge Hi Mom]<br>
<br>
Hyprland is a 100% independent, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
It provides the latest Wayland features, is highly customizable, has all the eyecandy, the most powerful plugins,
easy IPC, much more QoL stuff than other compositors and more...
<br>
<br>
---
**[<kbd> <br> Install <br> </kbd>][Install]**
**[<kbd> <br> Quick Start <br> </kbd>][Quick Start]**
**[<kbd> <br> Configure <br> </kbd>][Configure]**
**[<kbd> <br> Contribute <br> </kbd>][Contribute]**
---
<br>
</div>
# Features
- All of the eyecandy: gradient borders, blur, animations, shadows and much more
- A lot of customization
- 100% independent, no wlroots, no libweston, no kwin, no mutter.
- Custom bezier curves for the best animations
- Powerful plugin support
- Built-in plugin manager
- Tearing support for better gaming performance
- Easily expandable and readable codebase
- Fast and active development
- Not afraid to provide bleeding-edge features
- Config reloaded instantly upon saving
- Fully dynamic workspaces
- Two built-in layouts and more available as plugins
- Global keybinds passed to your apps of choice
- Tiling/pseudotiling/floating/fullscreen windows
- Special workspaces (scratchpads)
- Window groups (tabbed mode)
- Powerful window/monitor/layer rules
- Socket-based IPC
- Native IME and Input Panels Support
- and much more...
<br>
<br>
<div align = center>
# Gallery
<br>
![Preview A]
<br>
![Preview B]
<br>
![Preview C]
<br>
<br>
</div>
# Special Thanks
<br>
**[wlroots]** - *For powering Hyprland in the past*
**[tinywl]** - *For showing how 2 do stuff*
**[Sway]** - *For showing how 2 do stuff the overkill way*
**[Vivarium]** - *For showing how 2 do stuff the simple way*
**[dwl]** - *For showing how 2 do stuff the hacky way*
**[Wayfire]** - *For showing how 2 do some graphics stuff*
<!----------------------------------------------------------------------------->
[Configure]: https://wiki.hypr.land/Configuring/
[Stars]: https://starchart.cc/hyprwm/Hyprland
[Hypr]: https://github.com/hyprwm/Hypr
[Pull Requests]: https://github.com/hyprwm/Hyprland/pulls
[Issues]: https://github.com/hyprwm/Hyprland/issues
[Todo]: https://github.com/hyprwm/Hyprland/projects?type=beta
[Contribute]: https://wiki.hypr.land/Contributing-and-Debugging/
[Install]: https://wiki.hypr.land/Getting-Started/Installation/
[Quick Start]: https://wiki.hypr.land/Getting-Started/Master-Tutorial/
[Workflow]: https://github.com/hyprwm/Hyprland/actions/workflows/ci.yaml
[License]: LICENSE
<!----------------------------------{ Thanks }--------------------------------->
[Vivarium]: https://github.com/inclement/vivarium
[WlRoots]: https://gitlab.freedesktop.org/wlroots/wlroots
[Wayfire]: https://github.com/WayfireWM/wayfire
[TinyWl]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c
[Sway]: https://github.com/swaywm/sway
[DWL]: https://codeberg.org/dwl/dwl
<!----------------------------------{ Images }--------------------------------->
[Preview A]: https://i.ibb.co/XxFY75Mk/greerggergerhtrytghjnyhjn.png
[Preview B]: https://i.ibb.co/C1yTb0r/falf.png
[Preview C]: https://i.ibb.co/2Yc4q835/hyprland-preview-b.png
<!----------------------------------{ Badges }--------------------------------->
[Badge Workflow]: https://github.com/hyprwm/Hyprland/actions/workflows/ci.yaml/badge.svg
[Badge Issues]: https://img.shields.io/github/issues/hyprwm/Hyprland
[Badge Pull Requests]: https://img.shields.io/github/issues-pr/hyprwm/Hyprland
[Badge Language]: https://img.shields.io/github/languages/top/hyprwm/Hyprland
[Badge License]: https://img.shields.io/github/license/hyprwm/Hyprland
[Badge Lines]: https://img.shields.io/tokei/lines/github/hyprwm/Hyprland
[Badge Hi Mom]: https://img.shields.io/badge/Hi-mom!-ff69b4
================================================
FILE: SECURITY.md
================================================
# Hyprland Development Security Policy
If you have a bug that affects the security of your system, you may
want to privately disclose it instead of making it immediately public.
## Supported versions
_Only_ the most recent release on Github is supported. There are no LTS releases.
## What is not a security issue
Some examples of issues that should not be reported as security issues:
- An app can execute a command when ran outside of a sandbox
- An app can write / read hyprland sockets when ran outside of a sandbox
- Crashes
- Things that are protected via permissions when the permission system is disabled
## What is a security issue
Some examples of issues that should be reported as security issues:
- Sandboxed application executing arbitrary code via Hyprland
- Application being able to modify Hyprland's code on the fly
- Application being able to keylog / track user's activity beyond what the wayland protocols allow
## How to report security issues
Please report your security issues via either of these channels:
- Mail: `vaxry [at] vaxry [dot] net`
- Matrix: `@vaxry:matrix.vaxry.net`
- Discord: `@vaxry`
================================================
FILE: VERSION
================================================
0.54.0
================================================
FILE: assets/hyprland-portals.conf
================================================
[preferred]
default=hyprland;gtk
================================================
FILE: docs/Hyprland.1
================================================
.\" Automatically generated by Pandoc 3.1.3
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "Hyprland" "1" "" "" "Hyprland User Manual"
.hy
.SH NAME
.PP
Hyprland - Dynamic tiling Wayland compositor
.SH SYNOPSIS
.PP
\f[B]Hyprland\f[R] [\f[I]arg [...]\f[R]].
.SH DESCRIPTION
.PP
\f[B]Hyprland\f[R] is an independent, highly customizable, dynamic
tiling Wayland compositor that doesn\[aq]t sacrifice on its looks.
.PP
You can launch Hyprland by either going into a TTY and executing
\f[B]Hyprland\f[R], or with a login manager.
.SH NOTICE
.PP
Hyprland is still in pretty early development compared to some other
Wayland compositors.
.PP
Although Hyprland is pretty stable, it may have some bugs.
.SH CONFIGURATION
.PP
For configuration information please see
<\f[I]https://github.com/hyprwm/Hyprland/wiki\f[R]>.
.SH OPTIONS
.TP
\f[B]-h\f[R], \f[B]--help\f[R]
Show command usage.
.TP
\f[B]-c\f[R], \f[B]--config\f[R]
Specify config file to use.
.TP
\f[B]--socket\f[R]
Sets the Wayland socket name (for Wayland socket handover)
.TP
\f[B]--wayland-fd\f[R]
Sets the Wayland socket file descriptor (for Wayland socket handover)
.SH BUGS
.TP
Submit bug reports and request features online at:
<\f[I]https://github.com/hyprwm/Hyprland/issues\f[R]>
.SH SEE ALSO
.PP
Sources at: <\f[I]https://github.com/hyprwm/Hyprland\f[R]>
.SH COPYRIGHT
.PP
Copyright (c) 2022, vaxerski
.SH AUTHORS
Vaxerski <\f[I]https://github.com/vaxerski\f[R]>.
================================================
FILE: docs/Hyprland.1.rst
================================================
:title: Hyprland
:author: Vaxerski <*https://github.com/vaxerski*>
NAME
====
Hyprland - Dynamic tiling Wayland compositor
SYNOPSIS
========
**Hyprland** [*arg [...]*].
DESCRIPTION
===========
**Hyprland** is an independent, highly customizable,
dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
You can launch Hyprland by either going into a TTY and
executing **Hyprland**, or with a login manager.
NOTICE
======
Hyprland is still in pretty early development compared to some other Wayland compositors.
Although Hyprland is pretty stable, it may have some bugs.
CONFIGURATION
=============
For configuration information please see <*https://github.com/hyprwm/Hyprland/wiki*>.
OPTIONS
=======
**-h**, **--help**
Show command usage.
**-c**, **--config**
Specify config file to use.
**--socket**
Sets the Wayland socket name (for Wayland socket handover)
**--wayland-fd**
Sets the Wayland socket file descriptor (for Wayland socket handover)
BUGS
====
Submit bug reports and request features online at:
<*https://github.com/hyprwm/Hyprland/issues*>
SEE ALSO
========
Sources at: <*https://github.com/hyprwm/Hyprland*>
COPYRIGHT
=========
Copyright (c) 2022, vaxerski
================================================
FILE: docs/ISSUE_GUIDELINES.md
================================================
# Issue Guidelines
First of all, please remember to:
- Check that your issue is not a duplicate
- Read the [FAQ](https://wiki.hypr.land/FAQ/)
- Read the [Configuring Page](https://wiki.hypr.land/Configuring/)
<br/>
# Reporting suggestions
Suggestions are welcome.
Many features can be implemented using bash scripts and Hyprland sockets, read up on those [Here](https://wiki.hypr.land/IPC). Please do not suggest features that can be implemented as such.
<br/>
# Reporting bugs
All bug reports should have the following:
- Steps to reproduce
- Expected outcome
- Noted outcome
If your bug is one that doesn't crash Hyprland, but feels like invalid behavior, that's all you need to say.
If your bug crashes Hyprland, append additionally:
- The Hyprland log
- Your config
- (v0.22.0beta and up) The Hyprland Crash Report
- (v0.21.0beta and below) Coredump / Coredump analysis (with a stacktrace)
**Important**: Please do NOT use any package for reporting bugs! Clone and compile from source.
## Obtaining the Hyprland log
If you are in a TTY, and the hyprland session that crashed was the last one you launched, the log will be printed with
```
cat $XDG_RUNTIME_DIR/hypr/$(ls -t $XDG_RUNTIME_DIR/hypr | head -n 1)/hyprland.log
```
feel free to send it to a file, save, copy, etc.
if you are in a Hyprland session, and you want the log of the last session, use
```
cat $XDG_RUNTIME_DIR/hypr/$(ls -t $XDG_RUNTIME_DIR/hypr | head -n 2 | tail -n 1)/hyprland.log
```
basically, directories in $XDG_RUNTIME_DIR/hypr are your sessions.
## Obtaining the Hyprland Crash Report (v0.22.0beta and up)
If you have `$XDG_CACHE_HOME` set, the crash report directory is `$XDG_CACHE_HOME/hyprland`. If not, it's `$HOME/.cache/hyprland`.
Go to the crash report directory and you should find a file named `hyprlandCrashReport[XXXX].txt` where `[XXXX]` is the PID of the process that crashed.
Attach that file to your issue.
## Obtaining the Hyprland coredump (v0.21.0beta and below)
If you are on systemd, you can simply use
```
coredumpctl
```
then go to the end (press END on your keyboard) and remember the PID of the last `Hyprland` occurrence. It's the first number after the time, for example `2891`.
exit coredumpctl (ctrl+c) and use
```
coredumpctl info [PID]
```
where `[PID]` is the PID you remembered.
## Obtaining the debug Hyprland coredump
A debug coredump provides more information for debugging and may speed up the process of fixing the bug.
Make sure you're on latest git. Run `git pull --recurse-submodules` to sync everything.
1. [Compile Hyprland with debug mode](http://wiki.hypr.land/Contributing-and-Debugging/#build-in-debug-mode)
> Note: The config file used will be `hyprlandd.conf` instead of `hyprland.conf`
2. `cd ~`
3. For your own convenience, launch Hyprland from a tty with the envvar `ASAN_OPTIONS="log_path=asan.log" ~/path/to/Hyprland`
4. Reproduce the crash. Hyprland should instantly close.
5. Check out your `~` and find a file called `asan.log.XXXXX` where `XXXXX` will be a number corresponding to the PID of the Hyprland instance that crashed.
6. That is your coredump. Attach it to your issue.
================================================
FILE: docs/hyprctl.1
================================================
.\" Automatically generated by Pandoc 3.1.3
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "hyprctl" "1" "" "" "hyprctl User Manual"
.hy
.SH NAME
.PP
hyprctl - Utility for controlling parts of Hyprland from a CLI or a
script
.SH SYNOPSIS
.PP
\f[B]hyprctl\f[R] [\f[I](opt)flags\f[R]] [\f[B]command\f[R]]
[\f[I](opt)args\f[R]]
.SH DESCRIPTION
.PP
\f[B]hyprctl\f[R] is a utility for controlling some parts of the
compositor from a CLI or a script.
.SH CONTROL COMMANDS
.PP
\f[B]dispatch\f[R]
.RS
.PP
Call a dispatcher with an argument.
.PP
An argument must be present.
For dispatchers without parameters it can be anything.
.PP
Returns: \f[I]ok\f[R] on success, and an error message on failure.
.TP
Examples:
\f[B]hyprctl\f[R] \f[I]dispatch exec kitty\f[R]
.RS
.PP
\f[B]hyprctl\f[R] \f[I]dispatch pseudo x\f[R]
.RE
.RE
.PP
\f[B]keyword\f[R]
.RS
.PP
Set a config keyword dynamically.
.PP
Returns: \f[I]ok\f[R] on success, and an error message on failure.
.TP
Examples:
\f[B]hyprctl\f[R] \f[I]keyword bind SUPER,0,pseudo\f[R]
.RS
.PP
\f[B]hyprctl\f[R] \f[I]keyword general:border_size 10\f[R]
.RE
.RE
.PP
\f[B]reload\f[R]
.RS
.PP
Force a reload of the config file.
.RE
.PP
\f[B]kill\f[R]
.RS
.PP
Enter kill mode, where you can kill an app by clicking on it.
You can exit by pressing ESCAPE.
.RE
.SH INFO COMMANDS
.PP
\f[B]version\f[R]
.RS
.PP
Prints the Hyprland version, flags, commit and branch of build.
.RE
.PP
\f[B]monitors\f[R]
.RS
.PP
Lists all the outputs with their properties.
.RE
.PP
\f[B]workspaces\f[R]
.RS
.PP
Lists all workspaces with their properties.
.RE
.PP
\f[B]clients\f[R]
.RS
.PP
Lists all windows with their properties.
.RE
.PP
\f[B]devices\f[R]
.RS
.PP
Lists all connected input devices.
.RE
.PP
\f[B]activewindow\f[R]
.RS
.PP
Returns the active window name.
.RE
.PP
\f[B]layers\f[R]
.RS
.PP
Lists all the layers.
.RE
.PP
\f[B]splash\f[R]
.RS
.PP
Returns the current random splash.
.RE
.SH OPTIONS
.PP
\f[B]--batch\f[R]
.RS
.PP
Specify a batch of commands to execute.
.TP
Example:
\f[B]hyprctl\f[R] \f[I]--batch \[dq]keyword general:border_size 2 ;
keyword general:gaps_out 20\[dq]\f[R]
.RS
.PP
\f[I];\f[R] separates the commands.
.RE
.RE
.PP
\f[B]-j\f[R]
.RS
.PP
Outputs information in JSON.
.RE
.SH BUGS
.TP
Submit bug reports and request features online at:
<\f[I]https://github.com/hyprwm/Hyprland/issues\f[R]>
.SH SEE ALSO
.PP
Sources at: <\f[I]https://github.com/hyprwm/Hyprland\f[R]>
.SH COPYRIGHT
.PP
Copyright (c) 2022, vaxerski
.SH AUTHORS
Vaxerski <\f[I]https://github.com/vaxerski\f[R]>.
================================================
FILE: docs/hyprctl.1.rst
================================================
:title: hyprctl(1)
:author: Vaxerski <*https://github.com/vaxerski*>
NAME
====
hyprctl - Utility for controlling parts of Hyprland from a CLI or a script
SYNOPSIS
========
**hyprctl** [*(opt)flags*] [**command**] [*(opt)args*]
DESCRIPTION
===========
**hyprctl** is a utility for controlling some parts of the compositor from a CLI or a script.
CONTROL COMMANDS
================
**dispatch**
Call a dispatcher with an argument.
An argument must be present.
For dispatchers without parameters it can be anything.
Returns: *ok* on success, and an error message on failure.
Examples:
**hyprctl** *dispatch exec kitty*
**hyprctl** *dispatch pseudo x*
**keyword**
Set a config keyword dynamically.
Returns: *ok* on success, and an error message on failure.
Examples:
**hyprctl** *keyword bind SUPER,0,pseudo*
**hyprctl** *keyword general:border_size 10*
**reload**
Force a reload of the config file.
**kill**
Enter kill mode, where you can kill an app by clicking on it.
You can exit by pressing ESCAPE.
INFO COMMANDS
=============
**version**
Prints the Hyprland version, flags, commit and branch of build.
**monitors**
Lists all the outputs with their properties.
**workspaces**
Lists all workspaces with their properties.
**clients**
Lists all windows with their properties.
**devices**
Lists all connected input devices.
**activewindow**
Returns the active window name.
**layers**
Lists all the layers.
**splash**
Returns the current random splash.
OPTIONS
=======
**--batch**
Specify a batch of commands to execute.
Example:
**hyprctl** *--batch "keyword general:border_size 2 ; keyword general:gaps_out 20"*
*;* separates the commands.
**-j**
Outputs information in JSON.
BUGS
====
Submit bug reports and request features online at:
<*https://github.com/hyprwm/Hyprland/issues*>
SEE ALSO
========
Sources at: <*https://github.com/hyprwm/Hyprland*>
COPYRIGHT
=========
Copyright (c) 2022, vaxerski
================================================
FILE: example/hyprland.conf
================================================
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hypr.land/Configuring/Monitors/
monitor=,preferred,auto,auto
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$fileManager = dolphin
$menu = hyprlauncher
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 20
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1
bezier = easeOutQuint, 0.23, 1, 0.32, 1
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
bezier = linear, 0, 0, 1, 1
bezier = almostLinear, 0.5, 0.5, 0.75, 1
bezier = quick, 0.15, 0, 0.1, 1
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
# NAME, ONOFF, SPEED, CURVE, [STYLE]
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
animation = zoomFactor, 1, 7, quick
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule {
# name = no-gaps-wtv1
# match:float = false
# match:workspace = w[tv1]
#
# border_size = 0
# rounding = 0
# }
#
# windowrule {
# name = no-gaps-f1
# match:float = false
# match:workspace = f[1]
#
# border_size = 0
# rounding = 0
# }
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# See https://wiki.hypr.land/Configuring/Gestures
gesture = 3, horizontal, workspace
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, layoutmsg, togglesplit # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrules that are useful
windowrule {
# Ignore maximize requests from all apps. You'll probably like this.
name = suppress-maximize-events
match:class = .*
suppress_event = maximize
}
windowrule {
# Fix some dragging issues with XWayland
name = fix-xwayland-drags
match:class = ^$
match:title = ^$
match:xwayland = true
match:float = true
match:fullscreen = false
match:pin = false
no_focus = true
}
# Hyprland-run windowrule
windowrule {
name = move-hyprland-run
match:class = hyprland-run
move = 20 monitor_h-120
float = yes
}
================================================
FILE: example/hyprland.desktop.in
================================================
[Desktop Entry]
Name=Hyprland
Comment=An intelligent dynamic tiling Wayland compositor
Exec=@PREFIX@/@CMAKE_INSTALL_BINDIR@/start-hyprland
Type=Application
DesktopNames=Hyprland
Keywords=tiling;wayland;compositor;
================================================
FILE: example/hyprland.service
================================================
; a primitive systemd --user example
[Unit]
Description = %p
BindsTo = graphical-session.target
Upholds = swaybg@333333.service
[Service]
Type = notify
ExecStart = /usr/bin/Hyprland
[Install]
WantedBy = default.target
================================================
FILE: example/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/Hyprland",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
]
}
================================================
FILE: example/screenShader.frag
================================================
//
// Example blue light filter shader.
//
#version 300 es
precision mediump float;
in vec2 v_texcoord;
layout(location = 0) out vec4 fragColor;
uniform sampler2D tex;
void main() {
vec4 pixColor = texture(tex, v_texcoord);
pixColor[2] *= 0.8;
fragColor = pixColor;
}
================================================
FILE: example/swaybg@.service
================================================
; a primitive systemd --user example
; see example/hyprland.service for more details
[Unit]
Description = %p
BindsTo = hyprland.service
Wants = hyprland.service
After = hyprland.service
[Service]
ExecStart = /usr/bin/swaybg --color #%i
[Install]
WantedBy = default.target
================================================
FILE: flake.nix
================================================
{
description = "Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on its looks";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
# <https://github.com/nix-systems/nix-systems>
systems.url = "github:nix-systems/default-linux";
aquamarine = {
url = "github:hyprwm/aquamarine";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.hyprutils.follows = "hyprutils";
inputs.hyprwayland-scanner.follows = "hyprwayland-scanner";
};
hyprcursor = {
url = "github:hyprwm/hyprcursor";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.hyprlang.follows = "hyprlang";
};
hyprgraphics = {
url = "github:hyprwm/hyprgraphics";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.hyprutils.follows = "hyprutils";
};
hyprland-protocols = {
url = "github:hyprwm/hyprland-protocols";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
};
hyprland-guiutils = {
url = "github:hyprwm/hyprland-guiutils";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.aquamarine.follows = "aquamarine";
inputs.hyprgraphics.follows = "hyprgraphics";
inputs.hyprutils.follows = "hyprutils";
inputs.hyprlang.follows = "hyprlang";
inputs.hyprwayland-scanner.follows = "hyprwayland-scanner";
};
hyprlang = {
url = "github:hyprwm/hyprlang";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.hyprutils.follows = "hyprutils";
};
hyprutils = {
url = "github:hyprwm/hyprutils";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
};
hyprwayland-scanner = {
url = "github:hyprwm/hyprwayland-scanner";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
};
hyprwire = {
url = "github:hyprwm/hyprwire";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.hyprutils.follows = "hyprutils";
};
xdph = {
url = "github:hyprwm/xdg-desktop-portal-hyprland";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.hyprland-protocols.follows = "hyprland-protocols";
inputs.hyprlang.follows = "hyprlang";
inputs.hyprutils.follows = "hyprutils";
inputs.hyprwayland-scanner.follows = "hyprwayland-scanner";
};
pre-commit-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
inputs@{
self,
nixpkgs,
systems,
...
}:
let
inherit (nixpkgs) lib;
eachSystem = lib.genAttrs (import systems);
pkgsFor = eachSystem (
system:
import nixpkgs {
localSystem = system;
overlays = with self.overlays; [
hyprland-packages
hyprland-extras
];
}
);
pkgsCrossFor = eachSystem (
system: crossSystem:
import nixpkgs {
localSystem = system;
inherit crossSystem;
overlays = with self.overlays; [
hyprland-packages
hyprland-extras
];
}
);
pkgsDebugFor = eachSystem (
system:
import nixpkgs {
localSystem = system;
overlays = with self.overlays; [
hyprland-debug
];
}
);
pkgsDebugCrossFor = eachSystem (
system: crossSystem:
import nixpkgs {
localSystem = system;
inherit crossSystem;
overlays = with self.overlays; [
hyprland-debug
];
}
);
in
{
overlays = import ./nix/overlays.nix { inherit self lib inputs; };
checks = eachSystem (
system:
(lib.filterAttrs (
n: _: (lib.hasPrefix "hyprland" n) && !(lib.hasSuffix "debug" n)
) self.packages.${system})
// {
inherit (self.packages.${system}) xdg-desktop-portal-hyprland;
pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
hyprland-treewide-formatter = {
enable = true;
entry = "${self.formatter.${system}}/bin/hyprland-treewide-formatter";
pass_filenames = false;
excludes = [ "subprojects" ];
always_run = true;
};
};
};
}
// (import ./nix/tests inputs pkgsFor.${system})
);
packages = eachSystem (system: {
default = self.packages.${system}.hyprland;
inherit (pkgsFor.${system})
# hyprland-packages
hyprland
hyprland-unwrapped
hyprland-with-tests
# hyprland-extras
xdg-desktop-portal-hyprland
;
inherit (pkgsDebugFor.${system}) hyprland-debug;
hyprland-cross = (pkgsCrossFor.${system} "aarch64-linux").hyprland;
hyprland-debug-cross = (pkgsDebugCrossFor.${system} "aarch64-linux").hyprland-debug;
});
devShells = eachSystem (system: {
default =
pkgsFor.${system}.mkShell.override
{
inherit (self.packages.${system}.default) stdenv;
}
{
name = "hyprland-shell";
hardeningDisable = [ "fortify" ];
inputsFrom = [ pkgsFor.${system}.hyprland ];
packages = [ pkgsFor.${system}.clang-tools ];
inherit (self.checks.${system}.pre-commit-check) shellHook;
};
});
formatter = eachSystem (system: pkgsFor.${system}.callPackage ./nix/formatter.nix { });
nixosModules.default = import ./nix/module.nix inputs;
homeManagerModules.default = import ./nix/hm-module.nix self;
# Hydra build jobs
# Recent versions of Hydra can aggregate jobsets from 'hydraJobs' instead of a release.nix
# or similar. Remember to filter large or incompatible attributes here. More eval jobs can
# be added by merging, e.g., self.packages // self.devShells.
hydraJobs = self.packages;
};
}
================================================
FILE: hyprctl/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.19)
project(
hyprctl
DESCRIPTION "Control utility for Hyprland"
)
pkg_check_modules(hyprctl_deps REQUIRED IMPORTED_TARGET hyprutils>=0.2.4 hyprwire re2)
file(GLOB_RECURSE HYPRCTL_SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "hw-protocols/*.cpp" "include/*.hpp")
add_executable(hyprctl ${HYPRCTL_SRCFILES})
target_link_libraries(hyprctl PUBLIC PkgConfig::hyprctl_deps)
target_include_directories(hyprctl PRIVATE "hw-protocols")
# Hyprwire
function(hyprprotocol protoPath protoName)
set(path ${CMAKE_CURRENT_SOURCE_DIR}/${protoPath})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/${protoName}-client.cpp
${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/${protoName}-client.hpp
${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/${protoName}-spec.hpp
COMMAND hyprwire-scanner --client ${path}/${protoName}.xml
${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
target_sources(hyprctl PRIVATE hw-protocols/${protoName}-client.cpp
hw-protocols/${protoName}-client.hpp
hw-protocols/${protoName}-spec.hpp)
endfunction()
hyprprotocol(hw-protocols hyprpaper_core)
# binary
install(TARGETS hyprctl)
# shell completions
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hyprctl.bash
DESTINATION ${CMAKE_INSTALL_DATADIR}/bash-completion/completions
RENAME hyprctl)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hyprctl.fish
DESTINATION ${CMAKE_INSTALL_DATADIR}/fish/vendor_completions.d)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hyprctl.zsh
DESTINATION ${CMAKE_INSTALL_DATADIR}/zsh/site-functions
RENAME _hyprctl)
================================================
FILE: hyprctl/hw-protocols/hyprpaper_core.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="hyprpaper_core" version="2">
<copyright>
BSD 3-Clause License
Copyright (c) 2025, Hypr Development
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</copyright>
<object name="hyprpaper_core_manager" version="2">
<description summary="manager object">
This is the core manager object for hyprpaper operations
</description>
<c2s name="get_wallpaper_object">
<description summary="Get a wallpaper object">
Creates a wallpaper object
</description>
<returns iface="hyprpaper_wallpaper"/>
</c2s>
<s2c name="add_monitor">
<description summary="New monitor added">
Emitted when a new monitor is added.
</description>
<arg name="monitor_name" type="varchar" summary="the monitor's name"/>
</s2c>
<s2c name="remove_monitor">
<description summary="A monitor was removed">
Emitted when a monitor is removed.
</description>
<arg name="monitor_name" type="varchar" summary="the monitor's name"/>
</s2c>
<c2s name="destroy" destructor="true">
<description summary="Destroy this object">
Destroys this object. Children remain alive until destroyed.
</description>
</c2s>
<c2s name="get_status_object" since="2">
<description summary="Get a status object">
Creates a status object
</description>
<returns iface="hyprpaper_status"/>
</c2s>
</object>
<enum name="wallpaper_fit_mode">
<value idx="0" name="stretch"/>
<value idx="1" name="cover"/>
<value idx="2" name="contain"/>
<value idx="3" name="tile"/>
</enum>
<enum name="wallpaper_errors">
<value idx="0" name="inert_wallpaper_object" description="attempted to use an inert wallpaper object"/>
</enum>
<enum name="applying_error">
<value idx="0" name="invalid_path" description="path provided was invalid"/>
<value idx="1" name="invalid_monitor" description="monitor provided was invalid"/>
<value idx="2" name="unknown_error" description="unknown error"/>
</enum>
<object name="hyprpaper_wallpaper" version="1">
<description summary="wallpaper object">
This is an object describing a wallpaper
</description>
<c2s name="path">
<description summary="Set a path">
Set a file path for the wallpaper. This has to be an absolute path from the fs root.
This is required.
</description>
<arg name="wallpaper" type="varchar" summary="path"/>
</c2s>
<c2s name="fit_mode">
<description summary="Set a fit mode">
Set a fit mode for the wallpaper. This is set to cover by default.
</description>
<arg name="fit_mode" type="enum" interface="wallpaper_fit_mode" summary="path"/>
</c2s>
<c2s name="monitor_name">
<description summary="Set the monitor name">
Set a monitor for the wallpaper. Setting this to empty (or not setting at all) will
treat this as a wildcard fallback.
See hyprpaper_core_manager.add_monitor and hyprpaper_core_manager.remove_monitor
for tracking monitor names.
</description>
<arg name="monitor_name" type="varchar" summary="monitor name"/>
</c2s>
<c2s name="apply">
<description summary="Apply this wallpaper">
Applies this object's state to the wallpaper state. Will emit .success on success,
and .failed on failure.
This object becomes inert after .succeess or .failed, the only valid operation
is to destroy it afterwards.
</description>
</c2s>
<s2c name="success">
<description summary="Operation succeeded">
Wallpaper was applied successfully.
</description>
</s2c>
<s2c name="failed">
<description summary="Operation failed">
Wallpaper was not applied. See the error field for more information.
</description>
<arg name="error" type="enum" interface="hyprpaper_wallpaper_application_error" summary="path"/>
</s2c>
<c2s name="destroy" destructor="true">
<description summary="Destroy this object">
Destroys this object.
</description>
</c2s>
</object>
<object name="hyprpaper_status" version="2">
<description summary="status object">
This is an object which will emit various status updates.
</description>
<s2c name="active_wallpaper">
<description summary="Active wallpaper state">
Sends the active wallpaper for a given monitor. This will be emitted
immediately after binding, and then every time the path changes.
</description>
<arg name="monitor" type="varchar" summary="monitor name"/>
<arg name="path" type="varchar" summary="wallpaper path"/>
</s2c>
<c2s name="destroy" destructor="true">
<description summary="Destroy this object">
Destroys this object.
</description>
</c2s>
</object>
</protocol>
================================================
FILE: hyprctl/hyprctl.bash
================================================
_hyprctl_cmd_1 () {
hyprctl monitors | awk '/Monitor/{ print $2 }'
}
_hyprctl_cmd_3 () {
hyprctl clients | awk '/class/{print $2}'
}
_hyprctl_cmd_2 () {
hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}'
}
_hyprctl_cmd_0 () {
hyprpm list | awk '/Plugin/{print $4}'
}
_hyprctl () {
if [[ $(type -t _get_comp_words_by_ref) != function ]]; then
echo _get_comp_words_by_ref: function not defined. Make sure the bash-completions system package is installed
return 1
fi
local words cword
_get_comp_words_by_ref -n "$COMP_WORDBREAKS" words cword
declare -a literals=(resizeactive 2 changegroupactive -r moveintogroup forceallowsinput 4 ::= systeminfo all layouts setprop animationstyle switchxkblayout create denywindowfromgroup headless activebordercolor exec setcursor wayland focusurgentorlast workspacerules movecurrentworkspacetomonitor movetoworkspacesilent hyprpaper alpha inactivebordercolor movegroupwindow movecursortocorner movewindowpixel prev movewindow globalshortcuts clients dimaround setignoregrouplock splash execr monitors 0 forcenoborder -q animations 1 nomaxsize splitratio moveactive pass swapnext devices layers rounding lockactivegroup 5 moveworkspacetomonitor -f -i --quiet forcenodim pin 0 1 forceopaque forcenoshadow setfloating minsize alphaoverride sendshortcut workspaces cyclenext alterzorder togglegroup lockgroups bordersize dpms focuscurrentorlast -1 --batch notify remove instances 1 3 moveoutofgroup killactive 2 movetoworkspace movecursor configerrors closewindow swapwindow tagwindow forcerendererreload centerwindow auto focuswindow seterror nofocus alphafullscreen binds version -h togglespecialworkspace fullscreen windowdancecompat 0 keyword toggleopaque 3 --instance togglefloating renameworkspace alphafullscreenoverride activeworkspace x11 kill forceopaqueoverriden output global dispatch reload forcenoblur -j event --help disable -1 activewindow keepaspectratio dismissnotify focusmonitor movefocus plugin exit workspace fullscreenstate getoption alphainactiveoverride alphainactive decorations settiled config-only descriptions resizewindowpixel fakefullscreen rollinglog swapactiveworkspaces submap next movewindoworgroup cursorpos forcenoanims focusworkspaceoncurrentmonitor maxsize sendkeystate)
declare -A literal_transitions
literal_transitions[0]="([120]=14 [43]=2 [125]=21 [81]=2 [3]=21 [51]=2 [50]=2 [128]=2 [89]=2 [58]=21 [8]=2 [10]=2 [11]=3 [130]=4 [13]=5 [97]=6 [101]=2 [102]=21 [133]=7 [100]=2 [137]=2 [22]=2 [19]=2 [140]=8 [25]=2 [143]=2 [107]=9 [146]=10 [69]=2 [33]=2 [34]=2 [78]=21 [114]=2 [37]=2 [151]=2 [116]=2 [121]=13 [123]=21 [39]=11 [42]=21 [79]=15 [118]=12)"
literal_transitions[1]="([81]=2 [51]=2 [50]=2 [128]=2 [8]=2 [89]=2 [10]=2 [11]=3 [130]=4 [13]=5 [97]=6 [101]=2 [133]=7 [100]=2 [22]=2 [19]=2 [137]=2 [140]=8 [25]=2 [143]=2 [107]=9 [146]=10 [69]=2 [33]=2 [34]=2 [114]=2 [37]=2 [151]=2 [116]=2 [39]=11 [118]=12 [121]=13 [120]=14 [79]=15 [43]=2)"
literal_transitions[3]="([139]=2 [63]=16 [64]=16 [45]=16 [105]=16 [27]=2 [26]=2 [52]=4 [5]=16 [66]=2 [67]=16 [129]=16 [113]=16 [12]=2 [74]=4 [99]=2 [35]=16 [152]=16 [98]=16 [59]=16 [117]=16 [41]=16 [17]=2 [138]=16 [154]=2 [122]=16)"
literal_transitions[6]="([126]=2)"
literal_transitions[10]="([56]=2)"
literal_transitions[11]="([9]=2)"
literal_transitions[12]="([14]=19 [80]=22)"
literal_transitions[13]="([142]=2)"
literal_transitions[14]="([0]=2 [84]=2 [2]=2 [85]=2 [4]=2 [87]=2 [88]=2 [90]=2 [91]=2 [92]=2 [93]=2 [94]=2 [96]=2 [15]=2 [18]=2 [103]=2 [21]=2 [104]=2 [23]=2 [24]=2 [28]=2 [29]=2 [30]=2 [108]=2 [111]=2 [32]=2 [112]=2 [36]=2 [38]=2 [119]=2 [124]=2 [46]=2 [47]=2 [48]=2 [49]=2 [53]=2 [55]=2 [131]=2 [132]=2 [134]=2 [135]=2 [60]=2 [136]=20 [141]=2 [65]=2 [144]=2 [145]=2 [68]=2 [147]=2 [70]=2 [71]=2 [72]=2 [73]=2 [148]=2 [75]=2 [76]=2 [150]=2 [153]=2)"
literal_transitions[15]="([86]=4 [6]=4 [109]=4 [61]=4 [77]=4 [54]=4 [62]=4)"
literal_transitions[16]="([40]=2 [44]=2)"
literal_transitions[17]="([7]=23)"
literal_transitions[18]="([31]=2 [149]=2)"
literal_transitions[19]="([95]=2 [16]=2 [115]=2 [20]=2)"
literal_transitions[20]="([106]=2 [82]=2 [127]=2 [1]=2 [83]=2)"
literal_transitions[23]="([57]=21 [110]=21)"
declare -A match_anything_transitions=([6]=17 [7]=2 [0]=1 [22]=2 [5]=18 [4]=2 [2]=17 [18]=2 [11]=17 [8]=2 [9]=2 [13]=17 [10]=17 [1]=1)
declare -A subword_transitions
local state=0
local word_index=1
while [[ $word_index -lt $cword ]]; do
local word=${words[$word_index]}
if [[ -v "literal_transitions[$state]" ]]; then
declare -A state_transitions
eval "state_transitions=${literal_transitions[$state]}"
local word_matched=0
for literal_id in $(seq 0 $((${#literals[@]} - 1))); do
if [[ ${literals[$literal_id]} = "$word" ]]; then
if [[ -v "state_transitions[$literal_id]" ]]; then
state=${state_transitions[$literal_id]}
word_index=$((word_index + 1))
word_matched=1
break
fi
fi
done
if [[ $word_matched -ne 0 ]]; then
continue
fi
fi
if [[ -v "match_anything_transitions[$state]" ]]; then
state=${match_anything_transitions[$state]}
word_index=$((word_index + 1))
continue
fi
return 1
done
local -a matches=()
local prefix="${words[$cword]}"
if [[ -v "literal_transitions[$state]" ]]; then
local state_transitions_initializer=${literal_transitions[$state]}
declare -A state_transitions
eval "state_transitions=$state_transitions_initializer"
for literal_id in "${!state_transitions[@]}"; do
local literal="${literals[$literal_id]}"
if [[ $literal = "${prefix}"* ]]; then
matches+=("$literal ")
fi
done
fi
declare -A commands
commands=([7]=0 [22]=1 [8]=3 [5]=2)
if [[ -v "commands[$state]" ]]; then
local command_id=${commands[$state]}
local completions=()
readarray -t completions < <(_hyprctl_cmd_${command_id} "$prefix" | cut -f1)
for item in "${completions[@]}"; do
if [[ $item = "${prefix}"* ]]; then
matches+=("$item")
fi
done
fi
local shortest_suffix="$prefix"
for ((i=0; i < ${#COMP_WORDBREAKS}; i++)); do
local char="${COMP_WORDBREAKS:$i:1}"
local candidate=${prefix##*$char}
if [[ ${#candidate} -lt ${#shortest_suffix} ]]; then
shortest_suffix=$candidate
fi
done
local superfluous_prefix=""
if [[ "$shortest_suffix" != "$prefix" ]]; then
local superfluous_prefix=${prefix%$shortest_suffix}
fi
COMPREPLY=("${matches[@]#$superfluous_prefix}")
return 0
}
complete -o nospace -F _hyprctl hyprctl
================================================
FILE: hyprctl/hyprctl.fish
================================================
function _hyprctl_2
set 1 $argv[1]
hyprctl monitors | awk '/Monitor/{ print $2 }'
end
function _hyprctl_4
set 1 $argv[1]
hyprctl clients | awk '/class/{print $2}'
end
function _hyprctl_3
set 1 $argv[1]
hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}'
end
function _hyprctl_1
set 1 $argv[1]
hyprpm list | awk '/Plugin/{print $4}'
end
function _hyprctl
set COMP_LINE (commandline --cut-at-cursor)
set COMP_WORDS
echo $COMP_LINE | read --tokenize --array COMP_WORDS
if string match --quiet --regex '.*\s$' $COMP_LINE
set COMP_CWORD (math (count $COMP_WORDS) + 1)
else
set COMP_CWORD (count $COMP_WORDS)
end
set literals "resizeactive" "2" "changegroupactive" "-r" "moveintogroup" "forceallowsinput" "4" "::=" "systeminfo" "all" "layouts" "setprop" "animationstyle" "switchxkblayout" "create" "denywindowfromgroup" "headless" "activebordercolor" "exec" "setcursor" "wayland" "focusurgentorlast" "workspacerules" "movecurrentworkspacetomonitor" "movetoworkspacesilent" "hyprpaper" "alpha" "inactivebordercolor" "movegroupwindow" "movecursortocorner" "movewindowpixel" "prev" "movewindow" "globalshortcuts" "clients" "dimaround" "setignoregrouplock" "splash" "execr" "monitors" "0" "forcenoborder" "-q" "animations" "1" "nomaxsize" "splitratio" "moveactive" "pass" "swapnext" "devices" "layers" "rounding" "lockactivegroup" "5" "moveworkspacetomonitor" "-f" "-i" "--quiet" "forcenodim" "pin" "0" "1" "forceopaque" "forcenoshadow" "setfloating" "minsize" "alphaoverride" "sendshortcut" "workspaces" "cyclenext" "alterzorder" "togglegroup" "lockgroups" "bordersize" "dpms" "focuscurrentorlast" "-1" "--batch" "notify" "remove" "instances" "1" "3" "moveoutofgroup" "killactive" "2" "movetoworkspace" "movecursor" "configerrors" "closewindow" "swapwindow" "tagwindow" "forcerendererreload" "centerwindow" "auto" "focuswindow" "seterror" "nofocus" "alphafullscreen" "binds" "version" "-h" "togglespecialworkspace" "fullscreen" "windowdancecompat" "0" "keyword" "toggleopaque" "3" "--instance" "togglefloating" "renameworkspace" "alphafullscreenoverride" "activeworkspace" "x11" "kill" "forceopaqueoverriden" "output" "global" "dispatch" "reload" "forcenoblur" "-j" "event" "--help" "disable" "-1" "activewindow" "keepaspectratio" "dismissnotify" "focusmonitor" "movefocus" "plugin" "exit" "workspace" "fullscreenstate" "getoption" "alphainactiveoverride" "alphainactive" "decorations" "settiled" "config-only" "descriptions" "resizewindowpixel" "fakefullscreen" "rollinglog" "swapactiveworkspaces" "submap" "next" "movewindoworgroup" "cursorpos" "forcenoanims" "focusworkspaceoncurrentmonitor" "maxsize" "sendkeystate"
set descriptions
set descriptions[1] "Resize the active window"
set descriptions[2] "Fullscreen"
set descriptions[3] "Switch to the next window in a group"
set descriptions[4] "Refresh state after issuing the command"
set descriptions[5] "Move the active window into a group"
set descriptions[7] "CONFUSED"
set descriptions[9] "Print system info"
set descriptions[11] "List all layouts available (including plugin ones)"
set descriptions[12] "Set a property of a window"
set descriptions[14] "Set the xkb layout index for a keyboard"
set descriptions[16] "Prohibit the active window from becoming or being inserted into group"
set descriptions[19] "Execute a shell command"
set descriptions[20] "Set the cursor theme and reloads the cursor manager"
set descriptions[22] "Focus the urgent window or the last window"
set descriptions[23] "Get the list of defined workspace rules"
set descriptions[24] "Move the active workspace to a monitor"
set descriptions[25] "Move window doesn't switch to the workspace"
set descriptions[26] "Interact with hyprpaper if present"
set descriptions[29] "Swap the active window with the next or previous in a group"
set descriptions[30] "Move the cursor to the corner of the active window"
set descriptions[31] "Move a selected window"
set descriptions[33] "Move the active window in a direction or to a monitor"
set descriptions[34] "Lists all global shortcuts"
set descriptions[35] "List all windows with their properties"
set descriptions[37] "Temporarily enable or disable binds:ignore_group_lock"
set descriptions[38] "Print the current random splash"
set descriptions[39] "Execute a raw shell command"
set descriptions[40] "List active outputs with their properties"
set descriptions[43] "Disable output"
set descriptions[44] "Gets the current config info about animations and beziers"
set descriptions[47] "Change the split ratio"
set descriptions[48] "Move the active window"
set descriptions[49] "Pass the key to a specified window"
set descriptions[50] "Swap the focused window with the next window"
set descriptions[51] "List all connected keyboards and mice"
set descriptions[52] "List the layers"
set descriptions[54] "Lock the focused group"
set descriptions[55] "OK"
set descriptions[56] "Move a workspace to a monitor"
set descriptions[58] "Specify the Hyprland instance"
set descriptions[59] "Disable output"
set descriptions[61] "Pin a window"
set descriptions[62] "WARNING"
set descriptions[63] "INFO"
set descriptions[66] "Set the current window's floating state to true"
set descriptions[69] "On shortcut X sends shortcut Y to a specified window"
set descriptions[70] "List all workspaces with their properties"
set descriptions[71] "Focus the next window on a workspace"
set descriptions[72] "Modify the window stack order of the active or specified window"
set descriptions[73] "Toggle the current active window into a group"
set descriptions[74] "Lock the groups"
set descriptions[76] "Set all monitors' DPMS status"
set descriptions[77] "Switch focus from current to previously focused window"
set descriptions[78] "No Icon"
set descriptions[79] "Execute a batch of commands separated by ;"
set descriptions[80] "Send a notification using the built-in Hyprland notification system"
set descriptions[82] "List all running Hyprland instances and their info"
set descriptions[83] "Maximize no fullscreen"
set descriptions[84] "Maximize and fullscreen"
set descriptions[85] "Move the active window out of a group"
set descriptions[86] "Close the active window"
set descriptions[87] "HINT"
set descriptions[88] "Move the focused window to a workspace"
set descriptions[89] "Move the cursor to a specified position"
set descriptions[90] "List all current config parsing errors"
set descriptions[91] "Close a specified window"
set descriptions[92] "Swap the active window with another window"
set descriptions[93] "Apply a tag to the window"
set descriptions[94] "Force the renderer to reload all resources and outputs"
set descriptions[95] "Center the active window"
set descriptions[97] "Focus the first window matching"
set descriptions[98] "Set the hyprctl error string"
set descriptions[101] "List all registered binds"
set descriptions[102] "Print the Hyprland version: flags, commit and branch of build"
set descriptions[103] "Prints the help message"
set descriptions[104] "Toggle a special workspace on/off"
set descriptions[105] "Toggle the focused window's fullscreen state"
set descriptions[107] "None"
set descriptions[108] "Issue a keyword to call a config keyword dynamically"
set descriptions[109] "Toggle the current window to always be opaque"
set descriptions[110] "ERROR"
set descriptions[111] "Specify the Hyprland instance"
set descriptions[112] "Toggle the current window's floating state"
set descriptions[113] "Rename a workspace"
set descriptions[115] "Get the active workspace name and its properties"
set descriptions[117] "Get into a kill mode, where you can kill an app by clicking on it"
set descriptions[119] "Allows adding/removing fake outputs to a specific backend"
set descriptions[120] "Execute a Global Shortcut using the GlobalShortcuts portal"
set descriptions[121] "Issue a dispatch to call a keybind dispatcher with an arg"
set descriptions[122] "Force reload the config"
set descriptions[124] "Output in JSON format"
set descriptions[125] "Emits a custom event to socket2"
set descriptions[126] "Prints the help message"
set descriptions[128] "Current"
set descriptions[129] "Get the active window name and its properties"
set descriptions[131] "Dismiss all or up to amount of notifications"
set descriptions[132] "Focus a monitor"
set descriptions[133] "Move the focus in a direction"
set descriptions[134] "Interact with a plugin"
set descriptions[135] "Exit the compositor with no questions asked"
set descriptions[136] "Change the workspace"
set descriptions[137] "Sets the focused window’s fullscreen mode and the one sent to the client"
set descriptions[138] "Get the config option status (values)"
set descriptions[141] "List all decorations and their info"
set descriptions[142] "Set the current window's floating state to false"
set descriptions[144] "Return a parsable JSON with all the config options, descriptions, value types and ranges"
set descriptions[145] "Resize a selected window"
set descriptions[146] "Toggle the focused window's internal fullscreen state"
set descriptions[147] "Print tail of the log"
set descriptions[148] "Swap the active workspaces between two monitors"
set descriptions[149] "Change the current mapping group"
set descriptions[151] "Behave as moveintogroup"
set descriptions[152] "Get the current cursor pos in global layout coordinates"
set descriptions[154] "Focus the requested workspace"
set literal_transitions
set literal_transitions[1] "set inputs 121 44 126 82 4 52 51 129 90 59 9 11 12 131 14 98 102 103 134 101 138 23 20 141 26 144 108 147 70 34 35 79 115 38 152 117 122 124 40 43 80 119; set tos 15 3 22 3 22 3 3 3 3 22 3 3 4 5 6 7 3 22 8 3 3 3 3 9 3 3 10 11 3 3 3 22 3 3 3 3 14 22 12 22 16 13"
set literal_transitions[2] "set inputs 82 52 51 129 9 90 11 12 131 14 98 102 134 101 23 20 138 141 26 144 108 147 70 34 35 115 38 152 117 40 119 122 121 80 44; set tos 3 3 3 3 3 3 3 4 5 6 7 3 8 3 3 3 3 9 3 3 10 11 3 3 3 3 3 3 3 12 13 14 15 16 3"
set literal_transitions[4] "set inputs 140 64 65 46 106 28 27 53 6 67 68 130 114 13 75 100 36 153 99 60 118 42 18 139 155 123; set tos 3 17 17 17 17 3 3 5 17 3 17 17 17 3 5 3 17 17 17 17 17 17 3 17 3 17"
set literal_transitions[7] "set inputs 127; set tos 3"
set literal_transitions[11] "set inputs 57; set tos 3"
set literal_transitions[12] "set inputs 10; set tos 3"
set literal_transitions[13] "set inputs 15 81; set tos 20 23"
set literal_transitions[14] "set inputs 143; set tos 3"
set literal_transitions[15] "set inputs 1 85 3 86 5 88 89 91 92 93 94 95 97 16 19 104 22 105 24 25 29 30 31 109 112 33 113 37 39 120 125 47 48 49 50 54 56 132 133 135 136 61 137 142 66 145 146 69 148 71 72 73 74 149 76 77 151 154; set tos 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 21 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3"
set literal_transitions[16] "set inputs 87 7 110 62 78 55 63; set tos 5 5 5 5 5 5 5"
set literal_transitions[17] "set inputs 41 45; set tos 3 3"
set literal_transitions[18] "set inputs 8; set tos 24"
set literal_transitions[19] "set inputs 32 150; set tos 3 3"
set literal_transitions[20] "set inputs 96 17 116 21; set tos 3 3 3 3"
set literal_transitions[21] "set inputs 107 83 128 2 84; set tos 3 3 3 3 3"
set literal_transitions[24] "set inputs 58 111; set tos 22 22"
set match_anything_transitions_from 7 8 1 23 6 5 3 19 12 9 10 14 11 2
set match_anything_transitions_to 18 3 2 3 19 3 18 3 18 3 3 18 18 2
set state 1
set word_index 2
while test $word_index -lt $COMP_CWORD
set -- word $COMP_WORDS[$word_index]
if set --query literal_transitions[$state] && test -n $literal_transitions[$state]
set --erase inputs
set --erase tos
eval $literal_transitions[$state]
if contains -- $word $literals
set literal_matched 0
for literal_id in (seq 1 (count $literals))
if test $literals[$literal_id] = $word
set index (contains --index -- $literal_id $inputs)
set state $tos[$index]
set word_index (math $word_index + 1)
set literal_matched 1
break
end
end
if test $literal_matched -ne 0
continue
end
end
end
if set --query match_anything_transitions_from[$state] && test -n $match_anything_transitions_from[$state]
set index (contains --index -- $state $match_anything_transitions_from)
set state $match_anything_transitions_to[$index]
set word_index (math $word_index + 1)
continue
end
return 1
end
if set --query literal_transitions[$state] && test -n $literal_transitions[$state]
set --erase inputs
set --erase tos
eval $literal_transitions[$state]
for literal_id in $inputs
if test -n $descriptions[$literal_id]
printf '%s\t%s\n' $literals[$literal_id] $descriptions[$literal_id]
else
printf '%s\n' $literals[$literal_id]
end
end
end
set command_states 8 23 9 6
set command_ids 1 2 4 3
if contains $state $command_states
set index (contains --index $state $command_states)
set function_id $command_ids[$index]
set function_name _hyprctl_$function_id
set --erase inputs
set --erase tos
$function_name "$COMP_WORDS[$COMP_CWORD]"
end
return 0
end
complete --command hyprctl --no-files --arguments "(_hyprctl)"
================================================
FILE: hyprctl/hyprctl.usage
================================================
# This is a file fed to complgen to generate bash/fish/zsh completions
# Repo: https://github.com/adaszko/complgen
# Generate completion scripts: "complgen aot --bash-script hyprctl.bash --fish-script hyprctl.fish --zsh-script hyprctl.zsh ./hyprctl.usage"
hyprctl [<OPTIONS>]... <ARGUMENTS>
<OPTIONS> ::= (-i | --instance) "Specify the Hyprland instance"
| (-j) "Output in JSON format"
| (-r) "Refresh state after issuing the command"
| (--batch) "Execute a batch of commands separated by ;"
| (-q | --quiet) "Disable output"
| (-h | --help) "Prints the help message"
;
<WINDOWS> ::= {{{ hyprctl clients | awk '/class/{print $2}' }}};
<AVAILABLE_PLUGINS> ::= {{{ hyprpm list | awk '/Plugin/{print $4}' }}};
<MONITORS> ::= {{{ hyprctl monitors | awk '/Monitor/{ print $2 }' }}};
<KEYBOARDS> ::= {{{ hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}' }}};
<NOTIFICATION_TYPES> ::= (0) "WARNING"
| (1) "INFO"
| (2) "HINT"
| (3) "ERROR"
| (4) "CONFUSED"
| (5) "OK"
| (-1) "No Icon"
;
<PROPS> ::= (animationstyle)
| (rounding <NUM>)
| (bordersize <NUM>)
| (forcenoblur (0 | 1))
| (forceopaque (0 | 1))
| (forceopaqueoverriden (0 | 1))
| (forceallowsinput (0 | 1))
| (forcenoanims (0 | 1))
| (forcenoborder (0 | 1))
| (forcenodim (0 | 1))
| (forcenoshadow (0 | 1))
| (nofocus (0 | 1))
| (windowdancecompat (0 | 1))
| (nomaxsize (0 | 1))
| (minsize)
| (maxsize)
| (dimaround (0 | 1))
| (keepaspectratio (0 | 1))
| (alphaoverride (0 | 1))
| (alpha)
| (alphainactiveoverride (0 | 1))
| (alphainactive)
| (alphafullscreenoverride (0 | 1))
| (alphafullscreen)
| (activebordercolor)
| (inactivebordercolor)
;
<ARGUMENTS> ::= (activewindow) "Get the active window name and its properties"
| (activeworkspace) "Get the active workspace name and its properties"
| (animations) "Gets the current config info about animations and beziers"
| (binds) "List all registered binds"
| (clients) "List all windows with their properties"
| (configerrors) "List all current config parsing errors"
| (cursorpos) "Get the current cursor pos in global layout coordinates"
| (decorations <WINDOWS>) "List all decorations and their info"
| (descriptions) "Return a parsable JSON with all the config options, descriptions, value types and ranges"
| (devices) "List all connected keyboards and mice"
| (dismissnotify <NUM>) "Dismiss all or up to amount of notifications"
| (dispatch <DISPATCHERS>) "Issue a dispatch to call a keybind dispatcher with an arg"
| (getoption) "Get the config option status (values)"
| (globalshortcuts) "Lists all global shortcuts"
| (hyprpaper) "Interact with hyprpaper if present"
| (instances) "List all running Hyprland instances and their info"
| (keyword <KEYWORDS>) "Issue a keyword to call a config keyword dynamically"
| (kill) "Get into a kill mode, where you can kill an app by clicking on it"
| (layers) "List the layers"
| (layouts) "List all layouts available (including plugin ones)"
| (monitors [all]) "List active outputs with their properties"
| (notify <NOTIFICATION_TYPES> <NUM>) "Send a notification using the built-in Hyprland notification system"
| (output (create (wayland | x11 | headless | auto) | remove <MONITORS>)) "Allows adding/removing fake outputs to a specific backend"
| (plugin <AVAILABLE_PLUGINS>) "Interact with a plugin"
| (reload [config-only]) "Force reload the config"
| (rollinglog [-f]) "Print tail of the log"
| (setcursor) "Set the cursor theme and reloads the cursor manager"
| (seterror [disable]) "Set the hyprctl error string"
| (setprop <PROPS>) "Set a property of a window"
| (splash) "Print the current random splash"
| (switchxkblayout <KEYBOARDS> (next | prev | <NUM>)) "Set the xkb layout index for a keyboard"
| (systeminfo) "Print system info"
| (version) "Print the Hyprland version: flags, commit and branch of build"
| (workspacerules) "Get the list of defined workspace rules"
| (workspaces) "List all workspaces with their properties"
;
<WINDOW_STATE> ::= (-1) "Current"
| (0) "None"
| (1) "Maximize no fullscreen"
| (2) "Fullscreen"
| (3) "Maximize and fullscreen"
;
<DISPATCHERS> ::= (exec) "Execute a shell command"
| (execr) "Execute a raw shell command"
| (pass) "Pass the key to a specified window"
| (sendshortcut) "On shortcut X sends shortcut Y to a specified window"
| (sendkeystate) "Send a key with specific state (down/repeat/up) to a specified window (window must keep focus for events to continue)"
| (killactive) "Close the active window"
| (closewindow) "Close a specified window"
| (workspace) "Change the workspace"
| (movetoworkspace) "Move the focused window to a workspace"
| (movetoworkspacesilent) "Move window doesn't switch to the workspace"
| (togglefloating) "Toggle the current window's floating state"
| (setfloating) "Set the current window's floating state to true"
| (settiled) "Set the current window's floating state to false"
| (fullscreen) "Toggle the focused window's fullscreen state"
| (fakefullscreen) "Toggle the focused window's internal fullscreen state"
| (fullscreenstate <WINDOW_STATE>) "Sets the focused window’s fullscreen mode and the one sent to the client"
| (dpms) "Set all monitors' DPMS status"
| (pin) "Pin a window"
| (movefocus) "Move the focus in a direction"
| (movewindow) "Move the active window in a direction or to a monitor"
| (swapwindow) "Swap the active window with another window"
| (centerwindow) "Center the active window"
| (resizeactive) "Resize the active window"
| (moveactive) "Move the active window"
| (resizewindowpixel) "Resize a selected window"
| (movewindowpixel) "Move a selected window"
| (cyclenext) "Focus the next window on a workspace"
| (swapnext) "Swap the focused window with the next window"
| (tagwindow) "Apply a tag to the window"
| (focuswindow) "Focus the first window matching"
| (focusmonitor) "Focus a monitor"
| (splitratio) "Change the split ratio"
| (toggleopaque) "Toggle the current window to always be opaque"
| (movecursortocorner) "Move the cursor to the corner of the active window"
| (movecursor) "Move the cursor to a specified position"
| (renameworkspace) "Rename a workspace"
| (exit) "Exit the compositor with no questions asked"
| (forcerendererreload) "Force the renderer to reload all resources and outputs"
| (movecurrentworkspacetomonitor) "Move the active workspace to a monitor"
| (focusworkspaceoncurrentmonitor) "Focus the requested workspace"
| (moveworkspacetomonitor) "Move a workspace to a monitor"
| (swapactiveworkspaces) "Swap the active workspaces between two monitors"
| (alterzorder) "Modify the window stack order of the active or specified window"
| (togglespecialworkspace) "Toggle a special workspace on/off"
| (focusurgentorlast) "Focus the urgent window or the last window"
| (togglegroup) "Toggle the current active window into a group"
| (changegroupactive) "Switch to the next window in a group"
| (focuscurrentorlast) "Switch focus from current to previously focused window"
| (lockgroups) "Lock the groups"
| (lockactivegroup) "Lock the focused group"
| (moveintogroup) "Move the active window into a group"
| (moveoutofgroup) "Move the active window out of a group"
| (movewindoworgroup) "Behave as moveintogroup"
| (movegroupwindow) "Swap the active window with the next or previous in a group"
| (denywindowfromgroup) "Prohibit the active window from becoming or being inserted into group"
| (setignoregrouplock) "Temporarily enable or disable binds:ignore_group_lock"
| (global) "Execute a Global Shortcut using the GlobalShortcuts portal"
| (submap) "Change the current mapping group"
| (event) "Emits a custom event to socket2"
;
================================================
FILE: hyprctl/hyprctl.zsh
================================================
#compdef hyprctl
_hyprctl_cmd_1 () {
hyprctl monitors | awk '/Monitor/{ print $2 }'
}
_hyprctl_cmd_3 () {
hyprctl clients | awk '/class/{print $2}'
}
_hyprctl_cmd_2 () {
hyprctl devices | sed -n '/Keyboard at/{n; s/^\s\+//; p}'
}
_hyprctl_cmd_0 () {
hyprpm list | awk '/Plugin/{print $4}'
}
_hyprctl () {
local -a literals=("resizeactive" "2" "changegroupactive" "-r" "moveintogroup" "forceallowsinput" "4" "::=" "systeminfo" "all" "layouts" "setprop" "animationstyle" "switchxkblayout" "create" "denywindowfromgroup" "headless" "activebordercolor" "exec" "setcursor" "wayland" "focusurgentorlast" "workspacerules" "movecurrentworkspacetomonitor" "movetoworkspacesilent" "hyprpaper" "alpha" "inactivebordercolor" "movegroupwindow" "movecursortocorner" "movewindowpixel" "prev" "movewindow" "globalshortcuts" "clients" "dimaround" "setignoregrouplock" "splash" "execr" "monitors" "0" "forcenoborder" "-q" "animations" "1" "nomaxsize" "splitratio" "moveactive" "pass" "swapnext" "devices" "layers" "rounding" "lockactivegroup" "5" "moveworkspacetomonitor" "-f" "-i" "--quiet" "forcenodim" "pin" "0" "1" "forceopaque" "forcenoshadow" "setfloating" "minsize" "alphaoverride" "sendshortcut" "workspaces" "cyclenext" "alterzorder" "togglegroup" "lockgroups" "bordersize" "dpms" "focuscurrentorlast" "-1" "--batch" "notify" "remove" "instances" "1" "3" "moveoutofgroup" "killactive" "2" "movetoworkspace" "movecursor" "configerrors" "closewindow" "swapwindow" "tagwindow" "forcerendererreload" "centerwindow" "auto" "focuswindow" "seterror" "nofocus" "alphafullscreen" "binds" "version" "-h" "togglespecialworkspace" "fullscreen" "windowdancecompat" "0" "keyword" "toggleopaque" "3" "--instance" "togglefloating" "renameworkspace" "alphafullscreenoverride" "activeworkspace" "x11" "kill" "forceopaqueoverriden" "output" "global" "dispatch" "reload" "forcenoblur" "-j" "event" "--help" "disable" "-1" "activewindow" "keepaspectratio" "dismissnotify" "focusmonitor" "movefocus" "plugin" "exit" "workspace" "fullscreenstate" "getoption" "alphainactiveoverride" "alphainactive" "decorations" "settiled" "config-only" "descriptions" "resizewindowpixel" "fakefullscreen" "rollinglog" "swapactiveworkspaces" "submap" "next" "movewindoworgroup" "cursorpos" "forcenoanims" "focusworkspaceoncurrentmonitor" "maxsize" "sendkeystate")
local -A descriptions
descriptions[1]="Resize the active window"
descriptions[2]="Fullscreen"
descriptions[3]="Switch to the next window in a group"
descriptions[4]="Refresh state after issuing the command"
descriptions[5]="Move the active window into a group"
descriptions[7]="CONFUSED"
descriptions[9]="Print system info"
descriptions[11]="List all layouts available (including plugin ones)"
descriptions[12]="Set a property of a window"
descriptions[14]="Set the xkb layout index for a keyboard"
descriptions[16]="Prohibit the active window from becoming or being inserted into group"
descriptions[19]="Execute a shell command"
descriptions[20]="Set the cursor theme and reloads the cursor manager"
descriptions[22]="Focus the urgent window or the last window"
descriptions[23]="Get the list of defined workspace rules"
descriptions[24]="Move the active workspace to a monitor"
descriptions[25]="Move window doesn't switch to the workspace"
descriptions[26]="Interact with hyprpaper if present"
descriptions[29]="Swap the active window with the next or previous in a group"
descriptions[30]="Move the cursor to the corner of the active window"
descriptions[31]="Move a selected window"
descriptions[33]="Move the active window in a direction or to a monitor"
descriptions[34]="Lists all global shortcuts"
descriptions[35]="List all windows with their properties"
descriptions[37]="Temporarily enable or disable binds:ignore_group_lock"
descriptions[38]="Print the current random splash"
descriptions[39]="Execute a raw shell command"
descriptions[40]="List active outputs with their properties"
descriptions[43]="Disable output"
descriptions[44]="Gets the current config info about animations and beziers"
descriptions[47]="Change the split ratio"
descriptions[48]="Move the active window"
descriptions[49]="Pass the key to a specified window"
descriptions[50]="Swap the focused window with the next window"
descriptions[51]="List all connected keyboards and mice"
descriptions[52]="List the layers"
descriptions[54]="Lock the focused group"
descriptions[55]="OK"
descriptions[56]="Move a workspace to a monitor"
descriptions[58]="Specify the Hyprland instance"
descriptions[59]="Disable output"
descriptions[61]="Pin a window"
descriptions[62]="WARNING"
descriptions[63]="INFO"
descriptions[66]="Set the current window's floating state to true"
descriptions[69]="On shortcut X sends shortcut Y to a specified window"
descriptions[70]="List all workspaces with their properties"
descriptions[71]="Focus the next window on a workspace"
descriptions[72]="Modify the window stack order of the active or specified window"
descriptions[73]="Toggle the current active window into a group"
descriptions[74]="Lock the groups"
descriptions[76]="Set all monitors' DPMS status"
descriptions[77]="Switch focus from current to previously focused window"
descriptions[78]="No Icon"
descriptions[79]="Execute a batch of commands separated by ;"
descriptions[80]="Send a notification using the built-in Hyprland notification system"
descriptions[82]="List all running Hyprland instances and their info"
descriptions[83]="Maximize no fullscreen"
descriptions[84]="Maximize and fullscreen"
descriptions[85]="Move the active window out of a group"
descriptions[86]="Close the active window"
descriptions[87]="HINT"
descriptions[88]="Move the focused window to a workspace"
descriptions[89]="Move the cursor to a specified position"
descriptions[90]="List all current config parsing errors"
descriptions[91]="Close a specified window"
descriptions[92]="Swap the active window with another window"
descriptions[93]="Apply a tag to the window"
descriptions[94]="Force the renderer to reload all resources and outputs"
descriptions[95]="Center the active window"
descriptions[97]="Focus the first window matching"
descriptions[98]="Set the hyprctl error string"
descriptions[101]="List all registered binds"
descriptions[102]="Print the Hyprland version: flags, commit and branch of build"
descriptions[103]="Prints the help message"
descriptions[104]="Toggle a special workspace on/off"
descriptions[105]="Toggle the focused window's fullscreen state"
descriptions[107]="None"
descriptions[108]="Issue a keyword to call a config keyword dynamically"
descriptions[109]="Toggle the current window to always be opaque"
descriptions[110]="ERROR"
descriptions[111]="Specify the Hyprland instance"
descriptions[112]="Toggle the current window's floating state"
descriptions[113]="Rename a workspace"
descriptions[115]="Get the active workspace name and its properties"
descriptions[117]="Get into a kill mode, where you can kill an app by clicking on it"
descriptions[119]="Allows adding/removing fake outputs to a specific backend"
descriptions[120]="Execute a Global Shortcut using the GlobalShortcuts portal"
descriptions[121]="Issue a dispatch to call a keybind dispatcher with an arg"
descriptions[122]="Force reload the config"
descriptions[124]="Output in JSON format"
descriptions[125]="Emits a custom event to socket2"
descriptions[126]="Prints the help message"
descriptions[128]="Current"
descriptions[129]="Get the active window name and its properties"
descriptions[131]="Dismiss all or up to amount of notifications"
descriptions[132]="Focus a monitor"
descriptions[133]="Move the focus in a direction"
descriptions[134]="Interact with a plugin"
descriptions[135]="Exit the compositor with no questions asked"
descriptions[136]="Change the workspace"
descriptions[137]="Sets the focused window’s fullscreen mode and the one sent to the client"
descriptions[138]="Get the config option status (values)"
descriptions[141]="List all decorations and their info"
descriptions[142]="Set the current window's floating state to false"
descriptions[144]="Return a parsable JSON with all the config options, descriptions, value types and ranges"
descriptions[145]="Resize a selected window"
descriptions[146]="Toggle the focused window's internal fullscreen state"
descriptions[147]="Print tail of the log"
descriptions[148]="Swap the active workspaces between two monitors"
descriptions[149]="Change the current mapping group"
descriptions[151]="Behave as moveintogroup"
descriptions[152]="Get the current cursor pos in global layout coordinates"
descriptions[154]="Focus the requested workspace"
local -A literal_transitions
literal_transitions[1]="([121]=15 [44]=3 [126]=22 [82]=3 [4]=22 [52]=3 [51]=3 [129]=3 [90]=3 [59]=22 [9]=3 [11]=3 [12]=4 [131]=5 [14]=6 [98]=7 [102]=3 [103]=22 [134]=8 [101]=3 [138]=3 [23]=3 [20]=3 [141]=9 [26]=3 [144]=3 [108]=10 [147]=11 [70]=3 [34]=3 [35]=3 [79]=22 [115]=3 [38]=3 [152]=3 [117]=3 [122]=14 [124]=22 [40]=12 [43]=22 [80]=16 [119]=13)"
literal_transitions[2]="([82]=3 [52]=3 [51]=3 [129]=3 [9]=3 [90]=3 [11]=3 [12]=4 [131]=5 [14]=6 [98]=7 [102]=3 [134]=8 [101]=3 [23]=3 [20]=3 [138]=3 [141]=9 [26]=3 [144]=3 [108]=10 [147]=11 [70]=3 [34]=3 [35]=3 [115]=3 [38]=3 [152]=3 [117]=3 [40]=12 [119]=13 [122]=14 [121]=15 [80]=16 [44]=3)"
literal_transitions[4]="([140]=3 [64]=17 [65]=17 [46]=17 [106]=17 [28]=3 [27]=3 [53]=5 [6]=17 [67]=3 [68]=17 [130]=17 [114]=17 [13]=3 [75]=5 [100]=3 [36]=17 [153]=17 [99]=17 [60]=17 [118]=17 [42]=17 [18]=3 [139]=17 [155]=3 [123]=17)"
literal_transitions[7]="([127]=3)"
literal_transitions[11]="([57]=3)"
literal_transitions[12]="([10]=3)"
literal_transitions[13]="([15]=20 [81]=23)"
literal_transitions[14]="([143]=3)"
literal_transitions[15]="([1]=3 [85]=3 [3]=3 [86]=3 [5]=3 [88]=3 [89]=3 [91]=3 [92]=3 [93]=3 [94]=3 [95]=3 [97]=3 [16]=3 [19]=3 [104]=3 [22]=3 [105]=3 [24]=3 [25]=3 [29]=3 [30]=3 [31]=3 [109]=3 [112]=3 [33]=3 [113]=3 [37]=3 [39]=3 [120]=3 [125]=3 [47]=3 [48]=3 [49]=3 [50]=3 [54]=3 [56]=3 [132]=3 [133]=3 [135]=3 [136]=3 [61]=3 [137]=21 [142]=3 [66]=3 [145]=3 [146]=3 [69]=3 [148]=3 [71]=3 [72]=3 [73]=3 [74]=3 [149]=3 [76]=3 [77]=3 [151]=3 [154]=3)"
literal_transitions[16]="([87]=5 [7]=5 [110]=5 [62]=5 [78]=5 [55]=5 [63]=5)"
literal_transitions[17]="([41]=3 [45]=3)"
literal_transitions[18]="([8]=24)"
literal_transitions[19]="([32]=3 [150]=3)"
literal_transitions[20]="([96]=3 [17]=3 [116]=3 [21]=3)"
literal_transitions[21]="([107]=3 [83]=3 [128]=3 [2]=3 [84]=3)"
literal_transitions[24]="([58]=22 [111]=22)"
local -A match_anything_transitions
match_anything_transitions=([7]=18 [8]=3 [1]=2 [23]=3 [6]=19 [5]=3 [3]=18 [19]=3 [12]=18 [9]=3 [10]=3 [14]=18 [11]=18 [2]=2)
declare -A subword_transitions
local state=1
local word_index=2
while [[ $word_index -lt $CURRENT ]]; do
if [[ -v "literal_transitions[$state]" ]]; then
local -A state_transitions
eval "state_transitions=${literal_transitions[$state]}"
local word=${words[$word_index]}
local word_matched=0
for ((literal_id = 1; literal_id <= $#literals; literal_id++)); do
if [[ ${literals[$literal_id]} = "$word" ]]; then
if [[ -v "state_transitions[$literal_id]" ]]; then
state=${state_transitions[$literal_id]}
word_index=$((word_index + 1))
word_matched=1
break
fi
fi
done
if [[ $word_matched -ne 0 ]]; then
continue
fi
fi
if [[ -v "match_anything_transitions[$state]" ]]; then
state=${match_anything_transitions[$state]}
word_index=$((word_index + 1))
continue
fi
return 1
done
completions_no_description_trailing_space=()
completions_no_description_no_trailing_space=()
completions_trailing_space=()
suffixes_trailing_space=()
descriptions_trailing_space=()
completions_no_trailing_space=()
suffixes_no_trailing_space=()
descriptions_no_trailing_space=()
if [[ -v "literal_transitions[$state]" ]]; then
local -A state_transitions
eval "state_transitions=${literal_transitions[$state]}"
for literal_id in ${(k)state_transitions}; do
if [[ -v "descriptions[$literal_id]" ]]; then
completions_trailing_space+=("${literals[$literal_id]}")
suffixes_trailing_space+=("${literals[$literal_id]}")
descriptions_trailing_space+=("${descriptions[$literal_id]}")
else
completions_no_description_trailing_space+=("${literals[$literal_id]}")
fi
done
fi
local -A commands=([8]=0 [23]=1 [9]=3 [6]=2)
if [[ -v "commands[$state]" ]]; then
local command_id=${commands[$state]}
local output=$(_hyprctl_cmd_${command_id} "${words[$CURRENT]}")
local -a command_completions=("${(@f)output}")
for line in ${command_completions[@]}; do
local parts=(${(@s: :)line})
if [[ -v "parts[2]" ]]; then
completions_trailing_space+=("${parts[1]}")
suffixes_trailing_space+=("${parts[1]}")
descriptions_trailing_space+=("${parts[2]}")
else
completions_no_description_trailing_space+=("${parts[1]}")
fi
done
fi
local maxlen=0
for suffix in ${suffixes_trailing_space[@]}; do
if [[ ${#suffix} -gt $maxlen ]]; then
maxlen=${#suffix}
fi
done
for suffix in ${suffixes_no_trailing_space[@]}; do
if [[ ${#suffix} -gt $maxlen ]]; then
maxlen=${#suffix}
fi
done
for ((i = 1; i <= $#suffixes_trailing_space; i++)); do
if [[ -z ${descriptions_trailing_space[$i]} ]]; then
descriptions_trailing_space[$i]="${(r($maxlen)( ))${suffixes_trailing_space[$i]}}"
else
descriptions_trailing_space[$i]="${(r($maxlen)( ))${suffixes_trailing_space[$i]}} -- ${descriptions_trailing_space[$i]}"
fi
done
for ((i = 1; i <= $#suffixes_no_trailing_space; i++)); do
if [[ -z ${descriptions_no_trailing_space[$i]} ]]; then
descriptions_no_trailing_space[$i]="${(r($maxlen)( ))${suffixes_no_trailing_space[$i]}}"
else
descriptions_no_trailing_space[$i]="${(r($maxlen)( ))${suffixes_no_trailing_space[$i]}} -- ${descriptions_no_trailing_space[$i]}"
fi
done
compadd -Q -a completions_no_description_trailing_space
compadd -Q -S ' ' -a completions_no_description_no_trailing_space
compadd -l -Q -a -d descriptions_trailing_space completions_trailing_space
compadd -l -Q -S '' -a -d descriptions_no_trailing_space completions_no_trailing_space
return 0
}
if [[ $ZSH_EVAL_CONTEXT =~ :file$ ]]; then
compdef _hyprctl hyprctl
else
_hyprctl
fi
================================================
FILE: hyprctl/src/Strings.hpp
================================================
#pragma once
#include <string_view>
const std::string_view USAGE = R"#(usage: hyprctl [flags] <command> [args...|--help]
commands:
activewindow → Gets the active window name and its properties
activeworkspace → Gets the active workspace and its properties
animations → Gets the current config'd info about animations
and beziers
binds → Lists all registered binds
clients → Lists all windows with their properties
configerrors → Lists all current config parsing errors
cursorpos → Gets the current cursor position in global layout
coordinates
decorations <window_regex> → Lists all decorations and their info
devices → Lists all connected keyboards and mice
dismissnotify [amount] → Dismisses all or up to AMOUNT notifications
dispatch <dispatcher> [args] → Issue a dispatch to call a keybind
dispatcher with arguments
getoption <option> → Gets the config option status (values)
globalshortcuts → Lists all global shortcuts
hyprpaper ... → Issue a hyprpaper request
hyprsunset ... → Issue a hyprsunset request
instances → Lists all running instances of Hyprland with
their info
keyword <name> <value> → Issue a keyword to call a config keyword
dynamically
kill → Issue a kill to get into a kill mode, where you can
kill an app by clicking on it. You can exit it
with ESCAPE
layers → Lists all the surface layers
layouts → Lists all layouts available (including plugin'd ones)
monitors → Lists active outputs with their properties,
'monitors all' lists active and inactive outputs
notify ... → Sends a notification using the built-in Hyprland
notification system
output ... → Allows you to add and remove fake outputs to your
preferred backend
plugin ... → Issue a plugin request
reload [config-only] → Issue a reload to force reload the config. Pass
'config-only' to disable monitor reload
rollinglog → Prints tail of the log. Also supports -f/--follow
option
setcursor <theme> <size> → Sets the cursor theme and reloads the cursor
manager
seterror <color> <message...> → Sets the hyprctl error string. Color has
the same format as in colors in config. Will reset
when Hyprland's config is reloaded
setprop ... → Sets a window property
getprop ... → Gets a window property
splash → Get the current splash
switchxkblayout ... → Sets the xkb layout index for a keyboard
systeminfo → Get system info
version → Prints the hyprland version, meaning flags, commit
and branch of build.
workspacerules → Lists all workspace rules
workspaces → Lists all workspaces with their properties
flags:
-j → Output in JSON
-r → Refresh state after issuing command (e.g. for
updating variables)
--batch → Execute a batch of commands, separated by ';'
--instance (-i) → use a specific instance. Can be either signature or
index in hyprctl instances (0, 1, etc)
--quiet (-q) → Disable the output of hyprctl
--help:
Can be used to print command's arguments that did not fit into this page
(three dots))#";
const std::string_view HYPRPAPER_HELP = R"#(usage: hyprctl [flags] hyprpaper <request>
requests:
wallpaper → Issue a wallpaper to call a config wallpaper dynamically.
Arguments are [mon],[path],[fit_mode]. Fit mode is optional.
flags:
See 'hyprctl --help')#";
const std::string_view HYPRSUNSET_HELP = R"#(usage: hyprctl [flags] hyprsunset <request>
requests:
temperature <temp> → Enable blue-light filter
identity → Disable blue-light filter
gamma <gamma> → Enable gamma filter
flags:
See 'hyprctl --help')#";
const std::string_view NOTIFY_HELP = R"#(usage: hyprctl [flags] notify <icon> <time_ms> <color> <message...>
icon:
Integer of value:
0 → Warning
1 → Info
2 → Hint
3 → Error
4 → Confused
5 → Ok
6 or -1 → No icon
time_ms:
Time to display notification in milliseconds
color:
Notification color. Format is the same as for colors in hyprland.conf. Use
0 for default color for icon
message:
Notification message
flags:
See 'hyprctl --help')#";
const std::string_view OUTPUT_HELP = R"#(usage: hyprctl [flags] output <create <backend> | remove <name>>
create <backend>:
Creates new virtual output. Possible values for backend: wayland, x11,
headless or auto.
remove <name>:
Removes virtual output. Pass the output's name, as found in
'hyprctl monitors'
flags:
See 'hyprctl --help')#";
const std::string_view PLUGIN_HELP = R"#(usage: hyprctl [flags] plugin <request>
requests:
load <path> → Loads a plugin. Path must be absolute
unload <path> → Unloads a plugin. Path must be absolute
list → Lists all loaded plugins
flags:
See 'hyprctl --help')#";
const std::string_view SETPROP_HELP = R"#(usage: hyprctl [flags] setprop <regex> <property> <value> [lock]
regex:
Regular expression by which a window will be searched
property:
See https://wiki.hypr.land/Configuring/Using-hyprctl/#setprop for list
of properties
value:
Property value
lock:
Optional argument. If lock is not added, will be unlocked. Locking means a
dynamic windowrule cannot override this setting.
flags:
See 'hyprctl --help')#";
const std::string_view GETPROP_HELP = R"#(usage: hyprctl [flags] getprop <regex> <property>
regex:
Regular expression by which a window will be searched
property:
See https://wiki.hypr.land/Configuring/Using-hyprctl/#setprop for list
of properties
flags:
See 'hyprctl --help')#";
const std::string_view SWITCHXKBLAYOUT_HELP = R"#(usage: [flags] switchxkblayout <device> <cmd>
device:
You can find the device using 'hyprctl devices' command
cmd:
'next' for next, 'prev' for previous, or ID for a specific one. IDs are
assigned based on their order in config file (keyboard_layout),
starting from 0
flags:
See 'hyprctl --help')#";
================================================
FILE: hyprctl/src/helpers/Memory.hpp
================================================
#pragma once
#include <hyprutils/memory/SharedPtr.hpp>
#include <hyprutils/memory/UniquePtr.hpp>
#include <hyprutils/memory/Atomic.hpp>
using namespace Hyprutils::Memory;
#define SP CSharedPointer
#define WP CWeakPointer
#define UP CUniquePointer
================================================
FILE: hyprctl/src/hyprpaper/Hyprpaper.cpp
================================================
#include "Hyprpaper.hpp"
#include "../helpers/Memory.hpp"
#include <optional>
#include <format>
#include <filesystem>
#include <print>
#include <hyprpaper_core-client.hpp>
#include <hyprutils/string/VarList2.hpp>
using namespace Hyprutils::String;
using namespace std::string_literals;
constexpr const char* SOCKET_NAME = ".hyprpaper.sock";
static SP<CCHyprpaperCoreImpl> g_coreImpl;
constexpr const uint32_t PROTOCOL_VERSION_SUPPORTED = 2;
//
static hyprpaperCoreWallpaperFitMode fitFromString(const std::string_view& sv) {
if (sv == "contain")
return HYPRPAPER_CORE_WALLPAPER_FIT_MODE_CONTAIN;
if (sv == "fit" || sv == "stretch")
return HYPRPAPER_CORE_WALLPAPER_FIT_MODE_STRETCH;
if (sv == "tile")
return HYPRPAPER_CORE_WALLPAPER_FIT_MODE_TILE;
return HYPRPAPER_CORE_WALLPAPER_FIT_MODE_COVER;
}
static std::expected<std::string, std::string> resolvePath(const std::string_view& sv) {
std::error_code ec;
auto can = std::filesystem::canonical(sv, ec);
if (ec)
return std::unexpected(std::format("invalid path: {}", ec.message()));
return can;
}
static std::expected<std::string, std::string> getFullPath(const std::string_view& sv) {
if (sv.empty())
return std::unexpected("empty path");
if (sv[0] == '~') {
static auto HOME = getenv("HOME");
if (!HOME || HOME[0] == '\0')
return std::unexpected("home path but no $HOME");
return resolvePath(std::string{HOME} + "/"s + std::string{sv.substr(1)});
}
return resolvePath(sv);
}
static std::expected<void, std::string> doWallpaper(const std::string_view& RHS) {
CVarList2 args(std::string{RHS}, 0, ',');
const std::string MONITOR = std::string{args[0]};
const auto& PATH_RAW = args[1];
const auto& FIT = args[2];
if (PATH_RAW.empty())
return std::unexpected("not enough args");
const auto RTDIR = getenv("XDG_RUNTIME_DIR");
if (!RTDIR || RTDIR[0] == '\0')
return std::unexpected("can't send: no XDG_RUNTIME_DIR");
const auto HIS = getenv("HYPRLAND_INSTANCE_SIGNATURE");
if (!HIS || HIS[0] == '\0')
return std::unexpected("can't send: no HYPRLAND_INSTANCE_SIGNATURE (not running under hyprland)");
const auto PATH = getFullPath(PATH_RAW);
if (!PATH)
return std::unexpected(std::format("bad path: {}", PATH_RAW));
auto socketPath = RTDIR + "/hypr/"s + HIS + "/"s + SOCKET_NAME;
auto socket = Hyprwire::IClientSocket::open(socketPath);
if (!socket)
return std::unexpected("can't send: failed to connect to hyprpaper (is it running?)");
g_coreImpl = makeShared<CCHyprpaperCoreImpl>(PROTOCOL_VERSION_SUPPORTED);
socket->addImplementation(g_coreImpl);
if (!socket->waitForHandshake())
return std::unexpected("can't send: wire handshake failed");
auto spec = socket->getSpec(g_coreImpl->protocol()->specName());
if (!spec)
return std::unexpected("can't send: hyprpaper doesn't have the spec?!");
auto manager = makeShared<CCHyprpaperCoreManagerObject>(socket->bindProtocol(g_coreImpl->protocol(), std::min(PROTOCOL_VERSION_SUPPORTED, spec->specVer())));
if (!manager)
return std::unexpected("wire error: couldn't create manager");
auto wallpaper = makeShared<CCHyprpaperWallpaperObject>(manager->sendGetWallpaperObject());
if (!wallpaper)
return std::unexpected("wire error: couldn't create wallpaper object");
bool canExit = false;
std::optional<std::string> err;
wallpaper->setFailed([&canExit, &err](uint32_t code) {
canExit = true;
switch (code) {
case HYPRPAPER_CORE_APPLYING_ERROR_INVALID_PATH: err = std::format("failed to set wallpaper: Invalid path", code); break;
case HYPRPAPER_CORE_APPLYING_ERROR_INVALID_MONITOR: err = std::format("failed to set wallpaper: Invalid monitor", code); break;
default: err = std::format("failed to set wallpaper: unknown error, code {}", code); break;
}
});
wallpaper->setSuccess([&canExit]() { canExit = true; });
wallpaper->sendPath(PATH->c_str());
wallpaper->sendMonitorName(MONITOR.c_str());
if (!FIT.empty())
wallpaper->sendFitMode(fitFromString(FIT));
wallpaper->sendApply();
while (!canExit) {
socket->dispatchEvents(true);
}
if (err)
return std::unexpected(*err);
return {};
}
static std::expected<void, std::string> doListActive() {
const auto RTDIR = getenv("XDG_RUNTIME_DIR");
if (!RTDIR || RTDIR[0] == '\0')
return std::unexpected("can't send: no XDG_RUNTIME_DIR");
const auto HIS = getenv("HYPRLAND_INSTANCE_SIGNATURE");
if (!HIS || HIS[0] == '\0')
return std::unexpected("can't send: no HYPRLAND_INSTANCE_SIGNATURE (not running under hyprland)");
auto socketPath = RTDIR + "/hypr/"s + HIS + "/"s + SOCKET_NAME;
auto socket = Hyprwire::IClientSocket::open(socketPath);
if (!socket)
return std::unexpected("can't send: failed to connect to hyprpaper (is it running?)");
g_coreImpl = makeShared<CCHyprpaperCoreImpl>(PROTOCOL_VERSION_SUPPORTED);
socket->addImplementation(g_coreImpl);
if (!socket->waitForHandshake())
return std::unexpected("can't send: wire handshake failed");
auto spec = socket->getSpec(g_coreImpl->protocol()->specName());
if (!spec)
return std::unexpected("can't send: hyprpaper doesn't have the spec?!");
if (spec->specVer() < 2)
return std::unexpected("can't send: hyprpaper protocol version too low (hyprpaper too old)");
auto manager = makeShared<CCHyprpaperCoreManagerObject>(socket->bindProtocol(g_coreImpl->protocol(), std::min(PROTOCOL_VERSION_SUPPORTED, spec->specVer())));
if (!manager)
return std::unexpected("wire error: couldn't create manager");
auto status = makeShared<CCHyprpaperStatusObject>(manager->sendGetStatusObject());
status->setActiveWallpaper([](const char* mon, const char* wp) { std::println("{}: {}", mon, wp); });
socket->roundtrip();
return {};
}
std::expected<void, std::string> Hyprpaper::makeHyprpaperRequest(const std::string_view& rq) {
if (!rq.contains(' '))
return std::unexpected("Invalid request");
if (!rq.starts_with("/hyprpaper "))
return std::unexpected("Invalid request");
std::string_view LHS, RHS;
auto spacePos = rq.find(' ', 12);
LHS = rq.substr(11, spacePos - 11);
RHS = rq.substr(spacePos + 1);
if (LHS == "wallpaper")
return doWallpaper(RHS);
else if (LHS == "listactive")
return doListActive();
else
return std::unexpected("invalid hyprpaper request");
return {};
}
================================================
FILE: hyprctl/src/hyprpaper/Hyprpaper.hpp
================================================
#pragma once
#include <expected>
#include <string>
namespace Hyprpaper {
std::expected<void, std::string> makeHyprpaperRequest(const std::string_view& rq);
};
================================================
FILE: hyprctl/src/main.cpp
================================================
#include <re2/re2.h>
#include <cctype>
#include <netdb.h>
#include <netinet/in.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/un.h>
#include <pwd.h>
#include <unistd.h>
#include <algorithm>
#include <csignal>
#include <ranges>
#include <optional>
#include <charconv>
#include <iostream>
#include <string>
#include <print>
#include <fstream>
#include <vector>
#include <filesystem>
#include <cstdarg>
#include <hyprutils/string/String.hpp>
#include <hyprutils/memory/Casts.hpp>
using namespace Hyprutils::String;
using namespace Hyprutils::Memory;
#include "Strings.hpp"
#include "hyprpaper/Hyprpaper.hpp"
std::string instanceSignature;
bool quiet = false;
struct SInstanceData {
std::string id;
uint64_t time;
uint64_t pid;
std::string wlSocket;
};
void log(const std::string_view str) {
if (quiet)
return;
std::println("{}", str);
}
static int getUID() {
const auto UID = getuid();
const auto PWUID = getpwuid(UID);
return PWUID ? PWUID->pw_uid : UID;
}
std::string getRuntimeDir() {
const auto XDG = getenv("XDG_RUNTIME_DIR");
if (!XDG) {
const std::string USERID = std::to_string(getUID());
return "/run/user/" + USERID + "/hypr";
}
return std::string{XDG} + "/hypr";
}
static std::optional<uint64_t> toUInt64(const std::string_view str) {
uint64_t value = 0;
const auto [ptr, ec] = std::from_chars(str.data(), str.data() + str.size(), value);
if (ec != std::errc() || ptr != str.data() + str.size())
return std::nullopt;
return value;
}
static std::optional<SInstanceData> parseInstance(const std::filesystem::directory_entry& entry) {
if (!entry.is_directory())
return std::nullopt;
const auto lockPath = entry.path() / "hyprland.lock";
std::ifstream ifs(lockPath);
if (!ifs.is_open())
return std::nullopt;
SInstanceData data;
data.id = entry.path().filename().string();
const auto first = std::string_view{data.id}.find_first_of('_');
const auto last = std::string_view{data.id}.find_last_of('_');
if (first == std::string_view::npos || last == std::string_view::npos || last <= first)
return std::nullopt;
auto time = toUInt64(std::string_view{data.id}.substr(first + 1, last - first - 1));
if (!time)
return std::nullopt;
data.time = *time;
std::string line;
if (!std::getline(ifs, line))
return std::nullopt;
auto pid = toUInt64(std::string_view{line});
if (!pid)
return std::nullopt;
data.pid = *pid;
if (!std::getline(ifs, data.wlSocket))
return std::nullopt;
if (std::getline(ifs, line) && !line.empty())
return std::nullopt; // more lines than expected
return data;
}
std::vector<SInstanceData> instances() {
std::vector<SInstanceData> result;
std::error_code ec;
const auto runtimeDir = getRuntimeDir();
if (!std::filesystem::exists(runtimeDir, ec) || ec)
return result;
std::filesystem::directory_iterator it(runtimeDir, std::filesystem::directory_options::skip_permission_denied, ec);
if (ec)
return result;
for (const auto& el : it) {
if (auto instance = parseInstance(el))
result.emplace_back(std::move(*instance));
}
std::erase_if(result, [](const auto& el) { return kill(el.pid, 0) != 0 && errno == ESRCH; });
std::ranges::sort(result, {}, &SInstanceData::time);
return result;
}
static volatile bool sigintReceived = false;
void intHandler(int sig) {
sigintReceived = true;
std::println("[hyprctl] SIGINT received, closing connection");
}
int rollingRead(const int socket) {
sigintReceived = false;
signal(SIGINT, intHandler);
constexpr size_t BUFFER_SIZE = 8192;
std::array<char, BUFFER_SIZE> buffer = {0};
long sizeWritten = 0;
std::println("[hyprctl] reading from socket following up log:");
while (!sigintReceived) {
sizeWritten = read(socket, buffer.data(), BUFFER_SIZE);
if (sizeWritten < 0 && errno != EAGAIN) {
if (errno != EINTR)
std::println("Couldn't read (5): {}: {}", strerror(errno), errno);
close(socket);
return 5;
}
if (sizeWritten == 0)
break;
if (sizeWritten > 0) {
std::println("{}", std::string(buffer.data(), sizeWritten));
buffer.fill('\0');
}
usleep(100000);
}
close(socket);
return 0;
}
int request(std::string_view arg, int minArgs = 0, bool needRoll = false) {
const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0);
if (SERVERSOCKET < 0) {
log("Couldn't open a socket (1)");
return 1;
}
auto t = timeval{.tv_sec = 5, .tv_usec = 0};
if (setsockopt(SERVERSOCKET, SOL_SOCKET, SO_RCVTIMEO, &t, sizeof(struct timeval)) < 0) {
log("Couldn't set socket timeout (2)");
return 2;
}
const auto ARGS = std::count(arg.begin(), arg.end(), ' ');
if (ARGS < minArgs) {
log(std::format("Not enough arguments in '{}', expected at least {}", arg, minArgs));
return -1;
}
if (instanceSignature.empty()) {
log("HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?) (3)");
return 3;
}
sockaddr_un serverAddress = {0};
serverAddress.sun_family = AF_UNIX;
std::string socketPath = getRuntimeDir() + "/" + instanceSignature + "/.socket.sock";
strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1);
if (connect(SERVERSOCKET, rc<sockaddr*>(&serverAddress), SUN_LEN(&serverAddress)) < 0) {
log("Couldn't connect to " + socketPath + ". (4)");
return 4;
}
auto sizeWritten = write(SERVERSOCKET, arg.data(), arg.size());
if (sizeWritten < 0) {
log("Couldn't write (5)");
return 5;
}
if (needRoll)
return rollingRead(SERVERSOCKET);
std::string reply = "";
constexpr size_t BUFFER_SIZE = 8192;
char buffer[BUFFER_SIZE] = {0};
// read all data until server closes the connection
// this handles partial writes on the server side under high load
while (true) {
sizeWritten = read(SERVERSOCKET, buffer, BUFFER_SIZE);
if (sizeWritten < 0) {
if (errno == EWOULDBLOCK)
log("Hyprland IPC didn't respond in time\n");
log("Couldn't read (6)");
return 6;
}
if (sizeWritten == 0) {
// server closed connection, we're done
break;
}
reply += std::string(buffer, sizeWritten);
}
close(SERVERSOCKET);
log(reply);
return 0;
}
int requestIPC(std::string_view filename, std::string_view arg) {
const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0);
if (SERVERSOCKET < 0) {
log("Couldn't open a socket (1)");
return 1;
}
if (instanceSignature.empty()) {
log("HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?)");
return 2;
}
sockaddr_un serverAddress = {0};
serverAddress.sun_family = AF_UNIX;
std::string socketPath = getRuntimeDir() + "/" + instanceSignature + "/" + filename;
strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1);
if (connect(SERVERSOCKET, rc<sockaddr*>(&serverAddress), SUN_LEN(&serverAddress)) < 0) {
log("Couldn't connect to " + socketPath + ". (3)");
return 3;
}
arg = arg.substr(arg.find_first_of('/') + 1); // strip flags
arg = arg.substr(arg.find_first_of(' ') + 1); // strip "hyprpaper"
auto sizeWritten = write(SERVERSOCKET, arg.data(), arg.size());
if (sizeWritten < 0) {
log("Couldn't write (4)");
return 4;
}
constexpr size_t BUFFER_SIZE = 8192;
char buffer[BUFFER_SIZE] = {0};
sizeWritten = read(SERVERSOCKET, buffer, BUFFER_SIZE);
if (sizeWritten < 0) {
log("Couldn't read (5)");
return 5;
}
close(SERVERSOCKET);
log(std::string(buffer));
return 0;
}
int requestHyprsunset(std::string_view arg) {
return requestIPC(".hyprsunset.sock", arg);
}
void batchRequest(std::string_view arg, bool json) {
std::string commands(arg.substr(arg.find_first_of(' ') + 1));
if (json) {
RE2::GlobalReplace(&commands, ";\\s*", ";j/");
commands.insert(0, "j/");
}
std::string rq = "[[BATCH]]" + commands;
request(rq);
}
void instancesRequest(bool json) {
std::string result = "";
// gather instance data
std::vector<SInstanceData> inst = instances();
if (!json) {
for (auto const& el : inst) {
result += std::format("instance {}:\n\ttime: {}\n\tpid: {}\n\twl socket: {}\n\n", el.id, el.time, el.pid, el.wlSocket);
}
} else {
result += '[';
for (auto const& el : inst) {
result += std::format(R"#(
{{
"instance": "{}",
"time": {},
"pid": {},
"wl_socket": "{}"
}},)#",
el.id, el.time, el.pid, el.wlSocket);
}
result.pop_back();
result += "\n]";
}
log(result + "\n");
}
std::vector<std::string> splitArgs(int argc, char** argv) {
std::vector<std::string> result;
for (auto i = 1 /* skip the executable */; i < argc; ++i)
result.emplace_back(argv[i]);
return result;
}
int main(int argc, char** argv) {
bool parseArgs = true;
if (argc < 2) {
std::println("{}", USAGE);
return 1;
}
std::string fullRequest = "";
std::string fullArgs = "";
const auto ARGS = splitArgs(argc, argv);
bool json = false;
bool needRoll = false;
std::string overrideInstance = "";
for (std::size_t i = 0; i < ARGS.size(); ++i) {
if (ARGS[i] == "--") {
// Stop parsing arguments after --
parseArgs = false;
continue;
}
if (parseArgs && (ARGS[i][0] == '-') && !(isNumber(ARGS[i], true) || isNumber(ARGS[i].substr(0, ARGS[i].length() - 1), true)) /* For stuff like -2 or -2, */) {
// parse
if (ARGS[i] == "-j" && !fullArgs.contains("j")) {
fullArgs += "j";
json = true;
} else if (ARGS[i] == "-r" && !fullArgs.contains("r")) {
fullArgs += "r";
} else if (ARGS[i] == "-a" && !fullArgs.contains("a")) {
fullArgs += "a";
} else if ((ARGS[i] == "-c" || ARGS[i] == "--config") && !fullArgs.contains("c")) {
fullArgs += "c";
} else if ((ARGS[i] == "-f" || ARGS[i] == "--follow") && !fullArgs.contains("f")) {
fullArgs += "f";
needRoll = true;
} else if (ARGS[i] == "--batch") {
fullRequest = "--batch ";
} else if (ARGS[i] == "--instance" || ARGS[i] == "-i") {
++i;
if (i >= ARGS.size()) {
std::println("{}
gitextract_i75a93nh/
├── .clang-format
├── .clang-format-ignore
├── .clang-tidy
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ └── bug.yml
│ ├── actions/
│ │ └── setup_base/
│ │ └── action.yml
│ ├── labeler.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yaml
│ ├── clang-format-check.sh
│ ├── clang-format.yml
│ ├── close-issues.yml
│ ├── labeler.yml
│ ├── man-update.yaml
│ ├── new-pr-comment.yml
│ ├── nix-ci.yml
│ ├── nix-test.yml
│ ├── nix-update-inputs.yml
│ ├── nix.yml
│ ├── release.yaml
│ ├── security-checks.yml
│ └── translation-ai-check.yml
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── VERSION
├── assets/
│ └── hyprland-portals.conf
├── docs/
│ ├── Hyprland.1
│ ├── Hyprland.1.rst
│ ├── ISSUE_GUIDELINES.md
│ ├── hyprctl.1
│ └── hyprctl.1.rst
├── example/
│ ├── hyprland.conf
│ ├── hyprland.desktop.in
│ ├── hyprland.service
│ ├── launch.json
│ ├── screenShader.frag
│ └── swaybg@.service
├── flake.nix
├── hyprctl/
│ ├── CMakeLists.txt
│ ├── hw-protocols/
│ │ └── hyprpaper_core.xml
│ ├── hyprctl.bash
│ ├── hyprctl.fish
│ ├── hyprctl.usage
│ ├── hyprctl.zsh
│ └── src/
│ ├── Strings.hpp
│ ├── helpers/
│ │ └── Memory.hpp
│ ├── hyprpaper/
│ │ ├── Hyprpaper.cpp
│ │ └── Hyprpaper.hpp
│ └── main.cpp
├── hyprland.pc.in
├── hyprpm/
│ ├── CMakeLists.txt
│ ├── hyprpm.bash
│ ├── hyprpm.fish
│ ├── hyprpm.usage
│ ├── hyprpm.zsh
│ └── src/
│ ├── core/
│ │ ├── DataState.cpp
│ │ ├── DataState.hpp
│ │ ├── HyprlandSocket.cpp
│ │ ├── HyprlandSocket.hpp
│ │ ├── Manifest.cpp
│ │ ├── Manifest.hpp
│ │ ├── Plugin.cpp
│ │ ├── Plugin.hpp
│ │ ├── PluginManager.cpp
│ │ └── PluginManager.hpp
│ ├── helpers/
│ │ ├── Colors.hpp
│ │ ├── Die.hpp
│ │ ├── StringUtils.hpp
│ │ ├── Sys.cpp
│ │ └── Sys.hpp
│ ├── main.cpp
│ └── progress/
│ ├── CProgressBar.cpp
│ └── CProgressBar.hpp
├── hyprtester/
│ ├── CMakeLists.txt
│ ├── clients/
│ │ ├── child-window.cpp
│ │ ├── pointer-scroll.cpp
│ │ ├── pointer-warp.cpp
│ │ └── shortcut-inhibitor.cpp
│ ├── plugin/
│ │ ├── Makefile
│ │ ├── build.sh
│ │ └── src/
│ │ ├── globals.hpp
│ │ └── main.cpp
│ ├── protocols/
│ │ └── .gitignore
│ ├── src/
│ │ ├── Log.hpp
│ │ ├── hyprctlCompat.cpp
│ │ ├── hyprctlCompat.hpp
│ │ ├── main.cpp
│ │ ├── shared.hpp
│ │ └── tests/
│ │ ├── clients/
│ │ │ ├── .gitignore
│ │ │ ├── child-window.cpp
│ │ │ ├── pointer-scroll.cpp
│ │ │ ├── pointer-warp.cpp
│ │ │ ├── shortcut-inhibitor.cpp
│ │ │ └── tests.hpp
│ │ ├── main/
│ │ │ ├── animations.cpp
│ │ │ ├── colors.cpp
│ │ │ ├── dwindle.cpp
│ │ │ ├── exec.cpp
│ │ │ ├── gestures.cpp
│ │ │ ├── groups.cpp
│ │ │ ├── hyprctl.cpp
│ │ │ ├── keybinds.cpp
│ │ │ ├── layer.cpp
│ │ │ ├── layout.cpp
│ │ │ ├── master.cpp
│ │ │ ├── misc.cpp
│ │ │ ├── persistent.cpp
│ │ │ ├── scroll.cpp
│ │ │ ├── snap.cpp
│ │ │ ├── solitary.cpp
│ │ │ ├── tags.cpp
│ │ │ ├── tests.hpp
│ │ │ ├── window.cpp
│ │ │ └── workspaces.cpp
│ │ ├── plugin/
│ │ │ ├── plugin.cpp
│ │ │ └── plugin.hpp
│ │ ├── shared.cpp
│ │ └── shared.hpp
│ └── test.conf
├── nix/
│ ├── default.nix
│ ├── formatter.nix
│ ├── hm-module.nix
│ ├── lib.nix
│ ├── module.nix
│ ├── overlays.nix
│ ├── tests/
│ │ └── default.nix
│ └── update-inputs.sh
├── protocols/
│ ├── input-method-unstable-v2.xml
│ ├── kde-server-decoration.xml
│ ├── virtual-keyboard-unstable-v1.xml
│ ├── wayland-drm.xml
│ ├── wlr-data-control-unstable-v1.xml
│ ├── wlr-foreign-toplevel-management-unstable-v1.xml
│ ├── wlr-gamma-control-unstable-v1.xml
│ ├── wlr-layer-shell-unstable-v1.xml
│ ├── wlr-output-management-unstable-v1.xml
│ ├── wlr-output-power-management-unstable-v1.xml
│ ├── wlr-screencopy-unstable-v1.xml
│ └── wlr-virtual-pointer-unstable-v1.xml
├── scripts/
│ ├── generateShaderIncludes.sh
│ ├── hyprlandStaticAsan.diff
│ └── waylandStatic.diff
├── src/
│ ├── Compositor.cpp
│ ├── Compositor.hpp
│ ├── SharedDefs.hpp
│ ├── config/
│ │ ├── ConfigDataValues.hpp
│ │ ├── ConfigDescriptions.hpp
│ │ ├── ConfigManager.cpp
│ │ ├── ConfigManager.hpp
│ │ ├── ConfigValue.cpp
│ │ ├── ConfigValue.hpp
│ │ ├── ConfigWatcher.cpp
│ │ ├── ConfigWatcher.hpp
│ │ └── defaultConfig.hpp
│ ├── debug/
│ │ ├── HyprCtl.cpp
│ │ ├── HyprCtl.hpp
│ │ ├── HyprDebugOverlay.cpp
│ │ ├── HyprDebugOverlay.hpp
│ │ ├── HyprNotificationOverlay.cpp
│ │ ├── HyprNotificationOverlay.hpp
│ │ ├── TracyDefines.hpp
│ │ ├── crash/
│ │ │ ├── CrashReporter.cpp
│ │ │ ├── CrashReporter.hpp
│ │ │ ├── SignalSafe.cpp
│ │ │ └── SignalSafe.hpp
│ │ └── log/
│ │ ├── Logger.cpp
│ │ ├── Logger.hpp
│ │ └── RollingLogFollow.hpp
│ ├── defines.hpp
│ ├── desktop/
│ │ ├── DesktopTypes.hpp
│ │ ├── Workspace.cpp
│ │ ├── Workspace.hpp
│ │ ├── history/
│ │ │ ├── WindowHistoryTracker.cpp
│ │ │ ├── WindowHistoryTracker.hpp
│ │ │ ├── WorkspaceHistoryTracker.cpp
│ │ │ └── WorkspaceHistoryTracker.hpp
│ │ ├── reserved/
│ │ │ ├── ReservedArea.cpp
│ │ │ └── ReservedArea.hpp
│ │ ├── rule/
│ │ │ ├── Engine.cpp
│ │ │ ├── Engine.hpp
│ │ │ ├── Rule.cpp
│ │ │ ├── Rule.hpp
│ │ │ ├── effect/
│ │ │ │ └── EffectContainer.hpp
│ │ │ ├── layerRule/
│ │ │ │ ├── LayerRule.cpp
│ │ │ │ ├── LayerRule.hpp
│ │ │ │ ├── LayerRuleApplicator.cpp
│ │ │ │ ├── LayerRuleApplicator.hpp
│ │ │ │ ├── LayerRuleEffectContainer.cpp
│ │ │ │ └── LayerRuleEffectContainer.hpp
│ │ │ ├── matchEngine/
│ │ │ │ ├── BoolMatchEngine.cpp
│ │ │ │ ├── BoolMatchEngine.hpp
│ │ │ │ ├── IntMatchEngine.cpp
│ │ │ │ ├── IntMatchEngine.hpp
│ │ │ │ ├── MatchEngine.cpp
│ │ │ │ ├── MatchEngine.hpp
│ │ │ │ ├── RegexMatchEngine.cpp
│ │ │ │ ├── RegexMatchEngine.hpp
│ │ │ │ ├── TagMatchEngine.cpp
│ │ │ │ ├── TagMatchEngine.hpp
│ │ │ │ ├── WorkspaceMatchEngine.cpp
│ │ │ │ └── WorkspaceMatchEngine.hpp
│ │ │ ├── utils/
│ │ │ │ └── SetUtils.hpp
│ │ │ └── windowRule/
│ │ │ ├── WindowRule.cpp
│ │ │ ├── WindowRule.hpp
│ │ │ ├── WindowRuleApplicator.cpp
│ │ │ ├── WindowRuleApplicator.hpp
│ │ │ ├── WindowRuleEffectContainer.cpp
│ │ │ └── WindowRuleEffectContainer.hpp
│ │ ├── state/
│ │ │ ├── FocusState.cpp
│ │ │ └── FocusState.hpp
│ │ ├── types/
│ │ │ └── OverridableVar.hpp
│ │ └── view/
│ │ ├── GlobalViewMethods.cpp
│ │ ├── GlobalViewMethods.hpp
│ │ ├── Group.cpp
│ │ ├── Group.hpp
│ │ ├── LayerSurface.cpp
│ │ ├── LayerSurface.hpp
│ │ ├── Popup.cpp
│ │ ├── Popup.hpp
│ │ ├── SessionLock.cpp
│ │ ├── SessionLock.hpp
│ │ ├── Subsurface.cpp
│ │ ├── Subsurface.hpp
│ │ ├── View.cpp
│ │ ├── View.hpp
│ │ ├── WLSurface.cpp
│ │ ├── WLSurface.hpp
│ │ ├── Window.cpp
│ │ └── Window.hpp
│ ├── devices/
│ │ ├── IHID.cpp
│ │ ├── IHID.hpp
│ │ ├── IKeyboard.cpp
│ │ ├── IKeyboard.hpp
│ │ ├── IPointer.cpp
│ │ ├── IPointer.hpp
│ │ ├── ITouch.cpp
│ │ ├── ITouch.hpp
│ │ ├── Keyboard.cpp
│ │ ├── Keyboard.hpp
│ │ ├── Mouse.cpp
│ │ ├── Mouse.hpp
│ │ ├── Tablet.cpp
│ │ ├── Tablet.hpp
│ │ ├── TouchDevice.cpp
│ │ ├── TouchDevice.hpp
│ │ ├── VirtualKeyboard.cpp
│ │ ├── VirtualKeyboard.hpp
│ │ ├── VirtualPointer.cpp
│ │ └── VirtualPointer.hpp
│ ├── event/
│ │ ├── EventBus.cpp
│ │ └── EventBus.hpp
│ ├── helpers/
│ │ ├── AnimatedVariable.hpp
│ │ ├── AsyncDialogBox.cpp
│ │ ├── AsyncDialogBox.hpp
│ │ ├── ByteOperations.hpp
│ │ ├── CMType.cpp
│ │ ├── CMType.hpp
│ │ ├── Color.cpp
│ │ ├── Color.hpp
│ │ ├── CursorShapes.hpp
│ │ ├── DamageRing.cpp
│ │ ├── DamageRing.hpp
│ │ ├── Drm.cpp
│ │ ├── Drm.hpp
│ │ ├── Format.cpp
│ │ ├── Format.hpp
│ │ ├── MainLoopExecutor.cpp
│ │ ├── MainLoopExecutor.hpp
│ │ ├── MiscFunctions.cpp
│ │ ├── MiscFunctions.hpp
│ │ ├── Monitor.cpp
│ │ ├── Monitor.hpp
│ │ ├── MonitorFrameScheduler.cpp
│ │ ├── MonitorFrameScheduler.hpp
│ │ ├── MonitorZoomController.cpp
│ │ ├── MonitorZoomController.hpp
│ │ ├── SdDaemon.cpp
│ │ ├── SdDaemon.hpp
│ │ ├── Splashes.hpp
│ │ ├── TagKeeper.cpp
│ │ ├── TagKeeper.hpp
│ │ ├── TransferFunction.cpp
│ │ ├── TransferFunction.hpp
│ │ ├── WLClasses.cpp
│ │ ├── WLClasses.hpp
│ │ ├── cm/
│ │ │ ├── ColorManagement.cpp
│ │ │ ├── ColorManagement.hpp
│ │ │ └── ICC.cpp
│ │ ├── defer/
│ │ │ └── Promise.hpp
│ │ ├── env/
│ │ │ ├── Env.cpp
│ │ │ └── Env.hpp
│ │ ├── fs/
│ │ │ ├── FsUtils.cpp
│ │ │ └── FsUtils.hpp
│ │ ├── math/
│ │ │ ├── Direction.cpp
│ │ │ ├── Direction.hpp
│ │ │ ├── Expression.cpp
│ │ │ ├── Expression.hpp
│ │ │ ├── Math.cpp
│ │ │ └── Math.hpp
│ │ ├── memory/
│ │ │ └── Memory.hpp
│ │ ├── signal/
│ │ │ └── Signal.hpp
│ │ ├── sync/
│ │ │ ├── SyncReleaser.cpp
│ │ │ ├── SyncReleaser.hpp
│ │ │ ├── SyncTimeline.cpp
│ │ │ └── SyncTimeline.hpp
│ │ ├── time/
│ │ │ ├── Time.cpp
│ │ │ ├── Time.hpp
│ │ │ ├── Timer.cpp
│ │ │ └── Timer.hpp
│ │ └── varlist/
│ │ └── VarList.hpp
│ ├── hyprerror/
│ │ ├── HyprError.cpp
│ │ └── HyprError.hpp
│ ├── i18n/
│ │ ├── Engine.cpp
│ │ └── Engine.hpp
│ ├── includes.hpp
│ ├── init/
│ │ ├── initHelpers.cpp
│ │ └── initHelpers.hpp
│ ├── layout/
│ │ ├── LayoutManager.cpp
│ │ ├── LayoutManager.hpp
│ │ ├── algorithm/
│ │ │ ├── Algorithm.cpp
│ │ │ ├── Algorithm.hpp
│ │ │ ├── FloatingAlgorithm.cpp
│ │ │ ├── FloatingAlgorithm.hpp
│ │ │ ├── ModeAlgorithm.cpp
│ │ │ ├── ModeAlgorithm.hpp
│ │ │ ├── TiledAlgorithm.hpp
│ │ │ ├── floating/
│ │ │ │ └── default/
│ │ │ │ ├── DefaultFloatingAlgorithm.cpp
│ │ │ │ └── DefaultFloatingAlgorithm.hpp
│ │ │ └── tiled/
│ │ │ ├── dwindle/
│ │ │ │ ├── DwindleAlgorithm.cpp
│ │ │ │ └── DwindleAlgorithm.hpp
│ │ │ ├── master/
│ │ │ │ ├── MasterAlgorithm.cpp
│ │ │ │ └── MasterAlgorithm.hpp
│ │ │ ├── monocle/
│ │ │ │ ├── MonocleAlgorithm.cpp
│ │ │ │ └── MonocleAlgorithm.hpp
│ │ │ └── scrolling/
│ │ │ ├── ScrollTapeController.cpp
│ │ │ ├── ScrollTapeController.hpp
│ │ │ ├── ScrollingAlgorithm.cpp
│ │ │ └── ScrollingAlgorithm.hpp
│ │ ├── space/
│ │ │ ├── Space.cpp
│ │ │ └── Space.hpp
│ │ ├── supplementary/
│ │ │ ├── DragController.cpp
│ │ │ ├── DragController.hpp
│ │ │ ├── WorkspaceAlgoMatcher.cpp
│ │ │ └── WorkspaceAlgoMatcher.hpp
│ │ └── target/
│ │ ├── Target.cpp
│ │ ├── Target.hpp
│ │ ├── WindowGroupTarget.cpp
│ │ ├── WindowGroupTarget.hpp
│ │ ├── WindowTarget.cpp
│ │ └── WindowTarget.hpp
│ ├── macros.hpp
│ ├── main.cpp
│ ├── managers/
│ │ ├── ANRManager.cpp
│ │ ├── ANRManager.hpp
│ │ ├── CursorManager.cpp
│ │ ├── CursorManager.hpp
│ │ ├── DonationNagManager.cpp
│ │ ├── DonationNagManager.hpp
│ │ ├── EventManager.cpp
│ │ ├── EventManager.hpp
│ │ ├── KeybindManager.cpp
│ │ ├── KeybindManager.hpp
│ │ ├── PointerManager.cpp
│ │ ├── PointerManager.hpp
│ │ ├── ProtocolManager.cpp
│ │ ├── ProtocolManager.hpp
│ │ ├── SeatManager.cpp
│ │ ├── SeatManager.hpp
│ │ ├── SessionLockManager.cpp
│ │ ├── SessionLockManager.hpp
│ │ ├── TokenManager.cpp
│ │ ├── TokenManager.hpp
│ │ ├── VersionKeeperManager.cpp
│ │ ├── VersionKeeperManager.hpp
│ │ ├── WelcomeManager.cpp
│ │ ├── WelcomeManager.hpp
│ │ ├── XCursorManager.cpp
│ │ ├── XCursorManager.hpp
│ │ ├── XWaylandManager.cpp
│ │ ├── XWaylandManager.hpp
│ │ ├── animation/
│ │ │ ├── AnimationManager.cpp
│ │ │ ├── AnimationManager.hpp
│ │ │ ├── DesktopAnimationManager.cpp
│ │ │ └── DesktopAnimationManager.hpp
│ │ ├── cursor/
│ │ │ ├── CursorShapeOverrideController.cpp
│ │ │ └── CursorShapeOverrideController.hpp
│ │ ├── eventLoop/
│ │ │ ├── EventLoopManager.cpp
│ │ │ ├── EventLoopManager.hpp
│ │ │ ├── EventLoopTimer.cpp
│ │ │ └── EventLoopTimer.hpp
│ │ ├── input/
│ │ │ ├── IdleInhibitor.cpp
│ │ │ ├── InputManager.cpp
│ │ │ ├── InputManager.hpp
│ │ │ ├── InputMethodPopup.cpp
│ │ │ ├── InputMethodPopup.hpp
│ │ │ ├── InputMethodRelay.cpp
│ │ │ ├── InputMethodRelay.hpp
│ │ │ ├── Tablets.cpp
│ │ │ ├── TextInput.cpp
│ │ │ ├── TextInput.hpp
│ │ │ ├── Touch.cpp
│ │ │ ├── UnifiedWorkspaceSwipeGesture.cpp
│ │ │ ├── UnifiedWorkspaceSwipeGesture.hpp
│ │ │ └── trackpad/
│ │ │ ├── GestureTypes.hpp
│ │ │ ├── TrackpadGestures.cpp
│ │ │ ├── TrackpadGestures.hpp
│ │ │ └── gestures/
│ │ │ ├── CloseGesture.cpp
│ │ │ ├── CloseGesture.hpp
│ │ │ ├── CursorZoomGesture.cpp
│ │ │ ├── CursorZoomGesture.hpp
│ │ │ ├── DispatcherGesture.cpp
│ │ │ ├── DispatcherGesture.hpp
│ │ │ ├── FloatGesture.cpp
│ │ │ ├── FloatGesture.hpp
│ │ │ ├── FullscreenGesture.cpp
│ │ │ ├── FullscreenGesture.hpp
│ │ │ ├── ITrackpadGesture.cpp
│ │ │ ├── ITrackpadGesture.hpp
│ │ │ ├── MoveGesture.cpp
│ │ │ ├── MoveGesture.hpp
│ │ │ ├── ResizeGesture.cpp
│ │ │ ├── ResizeGesture.hpp
│ │ │ ├── SpecialWorkspaceGesture.cpp
│ │ │ ├── SpecialWorkspaceGesture.hpp
│ │ │ ├── WorkspaceSwipeGesture.cpp
│ │ │ └── WorkspaceSwipeGesture.hpp
│ │ ├── permissions/
│ │ │ ├── DynamicPermissionManager.cpp
│ │ │ └── DynamicPermissionManager.hpp
│ │ └── screenshare/
│ │ ├── CursorshareSession.cpp
│ │ ├── ScreenshareFrame.cpp
│ │ ├── ScreenshareManager.cpp
│ │ ├── ScreenshareManager.hpp
│ │ └── ScreenshareSession.cpp
│ ├── pch/
│ │ └── pch.hpp
│ ├── plugins/
│ │ ├── HookSystem.cpp
│ │ ├── HookSystem.hpp
│ │ ├── PluginAPI.cpp
│ │ ├── PluginAPI.hpp
│ │ ├── PluginSystem.cpp
│ │ └── PluginSystem.hpp
│ ├── protocols/
│ │ ├── AlphaModifier.cpp
│ │ ├── AlphaModifier.hpp
│ │ ├── CTMControl.cpp
│ │ ├── CTMControl.hpp
│ │ ├── ColorManagement.cpp
│ │ ├── ColorManagement.hpp
│ │ ├── CommitTiming.cpp
│ │ ├── CommitTiming.hpp
│ │ ├── ContentType.cpp
│ │ ├── ContentType.hpp
│ │ ├── CursorShape.cpp
│ │ ├── CursorShape.hpp
│ │ ├── DRMLease.cpp
│ │ ├── DRMLease.hpp
│ │ ├── DRMSyncobj.cpp
│ │ ├── DRMSyncobj.hpp
│ │ ├── DataDeviceWlr.cpp
│ │ ├── DataDeviceWlr.hpp
│ │ ├── ExtDataDevice.cpp
│ │ ├── ExtDataDevice.hpp
│ │ ├── ExtWorkspace.cpp
│ │ ├── ExtWorkspace.hpp
│ │ ├── Fifo.cpp
│ │ ├── Fifo.hpp
│ │ ├── FocusGrab.cpp
│ │ ├── FocusGrab.hpp
│ │ ├── ForeignToplevel.cpp
│ │ ├── ForeignToplevel.hpp
│ │ ├── ForeignToplevelWlr.cpp
│ │ ├── ForeignToplevelWlr.hpp
│ │ ├── FractionalScale.cpp
│ │ ├── FractionalScale.hpp
│ │ ├── GammaControl.cpp
│ │ ├── GammaControl.hpp
│ │ ├── GlobalShortcuts.cpp
│ │ ├── GlobalShortcuts.hpp
│ │ ├── HyprlandSurface.cpp
│ │ ├── HyprlandSurface.hpp
│ │ ├── IdleInhibit.cpp
│ │ ├── IdleInhibit.hpp
│ │ ├── IdleNotify.cpp
│ │ ├── IdleNotify.hpp
│ │ ├── ImageCaptureSource.cpp
│ │ ├── ImageCaptureSource.hpp
│ │ ├── ImageCopyCapture.cpp
│ │ ├── ImageCopyCapture.hpp
│ │ ├── InputMethodV2.cpp
│ │ ├── InputMethodV2.hpp
│ │ ├── LayerShell.cpp
│ │ ├── LayerShell.hpp
│ │ ├── LinuxDMABUF.cpp
│ │ ├── LinuxDMABUF.hpp
│ │ ├── LockNotify.cpp
│ │ ├── LockNotify.hpp
│ │ ├── MesaDRM.cpp
│ │ ├── MesaDRM.hpp
│ │ ├── OutputManagement.cpp
│ │ ├── OutputManagement.hpp
│ │ ├── OutputPower.cpp
│ │ ├── OutputPower.hpp
│ │ ├── PointerConstraints.cpp
│ │ ├── PointerConstraints.hpp
│ │ ├── PointerGestures.cpp
│ │ ├── PointerGestures.hpp
│ │ ├── PointerWarp.cpp
│ │ ├── PointerWarp.hpp
│ │ ├── PresentationTime.cpp
│ │ ├── PresentationTime.hpp
│ │ ├── PrimarySelection.cpp
│ │ ├── PrimarySelection.hpp
│ │ ├── RelativePointer.cpp
│ │ ├── RelativePointer.hpp
│ │ ├── Screencopy.cpp
│ │ ├── Screencopy.hpp
│ │ ├── SecurityContext.cpp
│ │ ├── SecurityContext.hpp
│ │ ├── ServerDecorationKDE.cpp
│ │ ├── ServerDecorationKDE.hpp
│ │ ├── SessionLock.cpp
│ │ ├── SessionLock.hpp
│ │ ├── ShortcutsInhibit.cpp
│ │ ├── ShortcutsInhibit.hpp
│ │ ├── SinglePixel.cpp
│ │ ├── SinglePixel.hpp
│ │ ├── Tablet.cpp
│ │ ├── Tablet.hpp
│ │ ├── TearingControl.cpp
│ │ ├── TearingControl.hpp
│ │ ├── TextInputV1.cpp
│ │ ├── TextInputV1.hpp
│ │ ├── TextInputV3.cpp
│ │ ├── TextInputV3.hpp
│ │ ├── ToplevelExport.cpp
│ │ ├── ToplevelExport.hpp
│ │ ├── ToplevelMapping.cpp
│ │ ├── ToplevelMapping.hpp
│ │ ├── Viewporter.cpp
│ │ ├── Viewporter.hpp
│ │ ├── VirtualKeyboard.cpp
│ │ ├── VirtualKeyboard.hpp
│ │ ├── VirtualPointer.cpp
│ │ ├── VirtualPointer.hpp
│ │ ├── WaylandProtocol.cpp
│ │ ├── WaylandProtocol.hpp
│ │ ├── XDGActivation.cpp
│ │ ├── XDGActivation.hpp
│ │ ├── XDGBell.cpp
│ │ ├── XDGBell.hpp
│ │ ├── XDGDecoration.cpp
│ │ ├── XDGDecoration.hpp
│ │ ├── XDGDialog.cpp
│ │ ├── XDGDialog.hpp
│ │ ├── XDGOutput.cpp
│ │ ├── XDGOutput.hpp
│ │ ├── XDGShell.cpp
│ │ ├── XDGShell.hpp
│ │ ├── XDGTag.cpp
│ │ ├── XDGTag.hpp
│ │ ├── XWaylandShell.cpp
│ │ ├── XWaylandShell.hpp
│ │ ├── core/
│ │ │ ├── Compositor.cpp
│ │ │ ├── Compositor.hpp
│ │ │ ├── DataDevice.cpp
│ │ │ ├── DataDevice.hpp
│ │ │ ├── Output.cpp
│ │ │ ├── Output.hpp
│ │ │ ├── Seat.cpp
│ │ │ ├── Seat.hpp
│ │ │ ├── Shm.cpp
│ │ │ ├── Shm.hpp
│ │ │ ├── Subcompositor.cpp
│ │ │ └── Subcompositor.hpp
│ │ └── types/
│ │ ├── Buffer.cpp
│ │ ├── Buffer.hpp
│ │ ├── ContentType.cpp
│ │ ├── ContentType.hpp
│ │ ├── DMABuffer.cpp
│ │ ├── DMABuffer.hpp
│ │ ├── DataDevice.cpp
│ │ ├── DataDevice.hpp
│ │ ├── SurfaceRole.hpp
│ │ ├── SurfaceState.cpp
│ │ ├── SurfaceState.hpp
│ │ ├── SurfaceStateQueue.cpp
│ │ ├── SurfaceStateQueue.hpp
│ │ ├── WLBuffer.cpp
│ │ └── WLBuffer.hpp
│ ├── render/
│ │ ├── AsyncResourceGatherer.hpp
│ │ ├── Framebuffer.cpp
│ │ ├── Framebuffer.hpp
│ │ ├── GLRenderer.cpp
│ │ ├── GLRenderer.hpp
│ │ ├── OpenGL.cpp
│ │ ├── OpenGL.hpp
│ │ ├── Renderbuffer.cpp
│ │ ├── Renderbuffer.hpp
│ │ ├── Renderer.cpp
│ │ ├── Renderer.hpp
│ │ ├── Shader.cpp
│ │ ├── Shader.hpp
│ │ ├── ShaderLoader.cpp
│ │ ├── ShaderLoader.hpp
│ │ ├── Texture.cpp
│ │ ├── Texture.hpp
│ │ ├── Transformer.cpp
│ │ ├── Transformer.hpp
│ │ ├── decorations/
│ │ │ ├── CHyprBorderDecoration.cpp
│ │ │ ├── CHyprBorderDecoration.hpp
│ │ │ ├── CHyprDropShadowDecoration.cpp
│ │ │ ├── CHyprDropShadowDecoration.hpp
│ │ │ ├── CHyprGroupBarDecoration.cpp
│ │ │ ├── CHyprGroupBarDecoration.hpp
│ │ │ ├── DecorationPositioner.cpp
│ │ │ ├── DecorationPositioner.hpp
│ │ │ ├── IHyprWindowDecoration.cpp
│ │ │ └── IHyprWindowDecoration.hpp
│ │ ├── gl/
│ │ │ ├── GLFramebuffer.cpp
│ │ │ ├── GLFramebuffer.hpp
│ │ │ ├── GLRenderbuffer.cpp
│ │ │ ├── GLRenderbuffer.hpp
│ │ │ ├── GLTexture.cpp
│ │ │ └── GLTexture.hpp
│ │ ├── pass/
│ │ │ ├── BorderPassElement.cpp
│ │ │ ├── BorderPassElement.hpp
│ │ │ ├── ClearPassElement.cpp
│ │ │ ├── ClearPassElement.hpp
│ │ │ ├── FramebufferElement.cpp
│ │ │ ├── FramebufferElement.hpp
│ │ │ ├── Pass.cpp
│ │ │ ├── Pass.hpp
│ │ │ ├── PassElement.cpp
│ │ │ ├── PassElement.hpp
│ │ │ ├── PreBlurElement.cpp
│ │ │ ├── PreBlurElement.hpp
│ │ │ ├── RectPassElement.cpp
│ │ │ ├── RectPassElement.hpp
│ │ │ ├── RendererHintsPassElement.cpp
│ │ │ ├── RendererHintsPassElement.hpp
│ │ │ ├── ShadowPassElement.cpp
│ │ │ ├── ShadowPassElement.hpp
│ │ │ ├── SurfacePassElement.cpp
│ │ │ ├── SurfacePassElement.hpp
│ │ │ ├── TexPassElement.cpp
│ │ │ ├── TexPassElement.hpp
│ │ │ ├── TextureMatteElement.cpp
│ │ │ └── TextureMatteElement.hpp
│ │ └── shaders/
│ │ └── glsl/
│ │ ├── CM.glsl
│ │ ├── blur1.frag
│ │ ├── blur1.glsl
│ │ ├── blur2.frag
│ │ ├── blur2.glsl
│ │ ├── blurFinish.glsl
│ │ ├── blurfinish.frag
│ │ ├── blurprepare.frag
│ │ ├── blurprepare.glsl
│ │ ├── border.frag
│ │ ├── border.glsl
│ │ ├── cm_helpers.glsl
│ │ ├── constants.h
│ │ ├── defines.h
│ │ ├── ext.frag
│ │ ├── gain.glsl
│ │ ├── glitch.frag
│ │ ├── passthru.frag
│ │ ├── quad.frag
│ │ ├── rgbamatte.frag
│ │ ├── rounding.glsl
│ │ ├── shadow.frag
│ │ ├── shadow.glsl
│ │ ├── surface.frag
│ │ ├── tex300.vert
│ │ ├── tex320.vert
│ │ └── tonemap.glsl
│ ├── version.h.in
│ └── xwayland/
│ ├── Dnd.cpp
│ ├── Dnd.hpp
│ ├── Server.cpp
│ ├── Server.hpp
│ ├── XDataSource.cpp
│ ├── XDataSource.hpp
│ ├── XSurface.cpp
│ ├── XSurface.hpp
│ ├── XWM.cpp
│ ├── XWM.hpp
│ ├── XWayland.cpp
│ └── XWayland.hpp
├── start/
│ ├── CMakeLists.txt
│ └── src/
│ ├── core/
│ │ ├── Instance.cpp
│ │ ├── Instance.hpp
│ │ └── State.hpp
│ ├── helpers/
│ │ ├── Logger.hpp
│ │ ├── Memory.hpp
│ │ ├── Nix.cpp
│ │ └── Nix.hpp
│ └── main.cpp
├── systemd/
│ └── hyprland-uwsm.desktop
└── tests/
└── desktop/
└── Reserved.cpp
Showing preview only (204K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2382 symbols across 457 files)
FILE: hyprctl/src/hyprpaper/Hyprpaper.cpp
function hyprpaperCoreWallpaperFitMode (line 22) | static hyprpaperCoreWallpaperFitMode fitFromString(const std::string_vie...
function resolvePath (line 32) | static std::expected<std::string, std::string> resolvePath(const std::st...
function getFullPath (line 42) | static std::expected<std::string, std::string> getFullPath(const std::st...
function doWallpaper (line 57) | static std::expected<void, std::string> doWallpaper(const std::string_vi...
function doListActive (line 141) | static std::expected<void, std::string> doListActive() {
FILE: hyprctl/src/hyprpaper/Hyprpaper.hpp
type Hyprpaper (line 6) | namespace Hyprpaper {
FILE: hyprctl/src/main.cpp
type SInstanceData (line 39) | struct SInstanceData {
function log (line 46) | void log(const std::string_view str) {
function getUID (line 53) | static int getUID() {
function getRuntimeDir (line 59) | std::string getRuntimeDir() {
function toUInt64 (line 70) | static std::optional<uint64_t> toUInt64(const std::string_view str) {
function parseInstance (line 78) | static std::optional<SInstanceData> parseInstance(const std::filesystem:...
function instances (line 118) | std::vector<SInstanceData> instances() {
function intHandler (line 143) | void intHandler(int sig) {
function rollingRead (line 148) | int rollingRead(const int socket) {
function request (line 179) | int request(std::string_view arg, int minArgs = 0, bool needRoll = false) {
function requestIPC (line 258) | int requestIPC(std::string_view filename, std::string_view arg) {
function requestHyprsunset (line 309) | int requestHyprsunset(std::string_view arg) {
function batchRequest (line 313) | void batchRequest(std::string_view arg, bool json) {
function instancesRequest (line 325) | void instancesRequest(bool json) {
function splitArgs (line 355) | std::vector<std::string> splitArgs(int argc, char** argv) {
function main (line 364) | int main(int argc, char** argv) {
FILE: hyprpm/src/core/DataState.cpp
function getTempRoot (line 12) | static std::string getTempRoot() {
function writeState (line 28) | static bool writeState(const std::string& str, const std::string& to) {
function SGlobalState (line 199) | SGlobalState DataState::getGlobalState() {
FILE: hyprpm/src/core/DataState.hpp
type SGlobalState (line 7) | struct SGlobalState {
type DataState (line 12) | namespace DataState {
FILE: hyprpm/src/core/HyprlandSocket.cpp
function getUID (line 13) | static int getUID() {
function getRuntimeDir (line 19) | static std::string getRuntimeDir() {
FILE: hyprpm/src/core/HyprlandSocket.hpp
type NHyprlandSocket (line 5) | namespace NHyprlandSocket {
FILE: hyprpm/src/core/Manifest.cpp
function validManifestName (line 7) | static bool validManifestName(const std::string_view& n) {
FILE: hyprpm/src/core/Manifest.hpp
type eManifestType (line 6) | enum eManifestType {
class CManifest (line 11) | class CManifest {
type SManifestPlugin (line 15) | struct SManifestPlugin {
FILE: hyprpm/src/core/Plugin.cpp
function SPluginRepoIdentifier (line 3) | SPluginRepoIdentifier SPluginRepoIdentifier::fromUrl(const std::string& ...
function SPluginRepoIdentifier (line 7) | SPluginRepoIdentifier SPluginRepoIdentifier::fromName(const std::string&...
function SPluginRepoIdentifier (line 11) | SPluginRepoIdentifier SPluginRepoIdentifier::fromAuthorName(const std::s...
function SPluginRepoIdentifier (line 15) | SPluginRepoIdentifier SPluginRepoIdentifier::fromString(const std::strin...
FILE: hyprpm/src/core/Plugin.hpp
type SPlugin (line 6) | struct SPlugin {
type SPluginRepository (line 13) | struct SPluginRepository {
type ePluginRepoIdentifierType (line 22) | enum ePluginRepoIdentifierType {
type SPluginRepoIdentifier (line 28) | struct SPluginRepoIdentifier {
FILE: hyprpm/src/core/PluginManager.cpp
function execAndGet (line 35) | static std::string execAndGet(std::string cmd) {
function getTempRoot (line 46) | static std::string getTempRoot() {
function SHyprlandVersion (line 65) | SHyprlandVersion CPluginManager::getHyprlandVersion(bool running) {
function eHeadersErrors (line 402) | eHeadersErrors CPluginManager::headersValid() {
function ePluginLoadStateReturn (line 855) | ePluginLoadStateReturn CPluginManager::ensurePluginsLoadState(bool force...
function getNixDevelopFromPath (line 1043) | static std::expected<std::string, std::string> getNixDevelopFromPath(con...
function getNixDevelopFromProfile (line 1078) | static std::expected<std::string, std::string> getNixDevelopFromProfile() {
FILE: hyprpm/src/core/PluginManager.hpp
type eHeadersErrors (line 10) | enum eHeadersErrors {
type eNotifyIcons (line 20) | enum eNotifyIcons {
type ePluginLoadStateReturn (line 30) | enum ePluginLoadStateReturn {
type SHyprlandVersion (line 38) | struct SHyprlandVersion {
class CPluginManager (line 47) | class CPluginManager {
FILE: hyprpm/src/helpers/Colors.hpp
type Colors (line 3) | namespace Colors {
FILE: hyprpm/src/helpers/Die.hpp
type Debug (line 7) | namespace Debug {
function die (line 9) | void die(std::format_string<Args...> fmt, Args&&... args) {
FILE: hyprpm/src/helpers/StringUtils.hpp
function statusString (line 8) | std::string statusString(const std::string_view emoji, const std::string...
function successString (line 15) | std::string successString(const std::string_view fmt, Args&&... args) {
function failureString (line 20) | std::string failureString(const std::string_view fmt, Args&&... args) {
function verboseString (line 25) | std::string verboseString(const std::string_view fmt, Args&&... args) {
function infoString (line 30) | std::string infoString(const std::string_view fmt, Args&&... args) {
FILE: hyprpm/src/helpers/Sys.cpp
function validSubinsAsStr (line 25) | static std::string validSubinsAsStr() {
function executableExistsInPath (line 37) | static bool executableExistsInPath(const std::string& exe) {
function subin (line 65) | static std::string subin() {
function verifyStringValid (line 87) | static bool verifyStringValid(const std::string& s) {
FILE: hyprpm/src/helpers/Sys.hpp
type NSys (line 6) | namespace NSys {
type root (line 13) | namespace root {
FILE: hyprpm/src/main.cpp
function main (line 39) | int main(int argc, char** argv, char** envp) {
FILE: hyprpm/src/progress/CProgressBar.cpp
function winsize (line 17) | static winsize getTerminalSize() {
function clearCurrentLine (line 23) | static void clearCurrentLine() {
FILE: hyprpm/src/progress/CProgressBar.hpp
class CProgressBar (line 5) | class CProgressBar {
FILE: hyprtester/clients/child-window.cpp
type SWlState (line 18) | struct SWlState {
function clientLog (line 51) | static void clientLog(std::format_string<Args...> fmt, Args&&... args) {
function debugLog (line 59) | static void debugLog(std::format_string<Args...> fmt, Args&&... args) {
function bindRegistry (line 67) | static bool bindRegistry(SWlState& state) {
function createShm (line 98) | static bool createShm(SWlState& state, Vector2D geom) {
function setupToplevel (line 148) | static bool setupToplevel(SWlState& state) {
function setupSeat (line 202) | static bool setupSeat(SWlState& state) {
type SChildWindow (line 219) | struct SChildWindow {
function parseRequest (line 225) | static void parseRequest(SWlState& state, std::string str, SChildWindow&...
function main (line 277) | int main(int argc, char** argv) {
FILE: hyprtester/clients/pointer-scroll.cpp
type SWlState (line 23) | struct SWlState {
function clientLog (line 61) | static void clientLog(std::format_string<Args...> fmt, Args&&... args) {
function debugLog (line 70) | static void debugLog(std::format_string<Args...> fmt, Args&&... args) {
function bindRegistry (line 79) | static bool bindRegistry(SWlState& state) {
function createShm (line 110) | static bool createShm(SWlState& state, Vector2D geom) {
function setupToplevel (line 161) | static bool setupToplevel(SWlState& state) {
function setupSeat (line 215) | static bool setupSeat(SWlState& state) {
function parseRequest (line 247) | static void parseRequest(SWlState& state, std::string req) {
function main (line 258) | int main(int argc, char** argv) {
FILE: hyprtester/clients/pointer-warp.cpp
type SWlState (line 22) | struct SWlState {
function clientLog (line 55) | static void clientLog(std::format_string<Args...> fmt, Args&&... args) {
function debugLog (line 62) | static void debugLog(std::format_string<Args...> fmt, Args&&... args) {
function bindRegistry (line 69) | static bool bindRegistry(SWlState& state) {
function createShm (line 103) | static bool createShm(SWlState& state, Vector2D geom) {
function setupToplevel (line 154) | static bool setupToplevel(SWlState& state) {
function setupSeat (line 208) | static bool setupSeat(SWlState& state) {
function parseRequest (line 227) | static void parseRequest(SWlState& state, std::string req) {
function main (line 261) | int main(int argc, char** argv) {
FILE: hyprtester/clients/shortcut-inhibitor.cpp
type SWlState (line 17) | struct SWlState {
function clientLog (line 53) | static void clientLog(std::format_string<Args...> fmt, Args&&... args) {
function debugLog (line 61) | static void debugLog(std::format_string<Args...> fmt, Args&&... args) {
function bindRegistry (line 69) | static bool bindRegistry(SWlState& state) {
function createShm (line 104) | static bool createShm(SWlState& state, Vector2D geom) {
function setupToplevel (line 155) | static bool setupToplevel(SWlState& state) {
function setupSeat (line 209) | static bool setupSeat(SWlState& state) {
function parseRequest (line 226) | static void parseRequest(SWlState& state, std::string req) {
function main (line 240) | int main(int argc, char** argv) {
FILE: hyprtester/plugin/src/main.cpp
function APICALL (line 29) | APICALL EXPORT std::string PLUGIN_API_VERSION() {
function SDispatchResult (line 33) | static SDispatchResult test(std::string in) {
function SDispatchResult (line 49) | static SDispatchResult snapMove(std::string in) {
class CTestKeyboard (line 64) | class CTestKeyboard : public IKeyboard {
method create (line 66) | static SP<CTestKeyboard> create(bool isVirtual) {
method isVirtual (line 76) | virtual bool isVirtual() {
method aq (line 80) | virtual SP<Aquamarine::IKeyboard> aq() {
method sendKey (line 84) | void sendKey(uint32_t key, bool pressed) {
method destroy (line 94) | void destroy() {
class CTestMouse (line 102) | class CTestMouse : public IPointer {
method create (line 104) | static SP<CTestMouse> create(bool isVirtual) {
method isVirtual (line 113) | virtual bool isVirtual() {
method aq (line 117) | virtual SP<Aquamarine::IPointer> aq() {
method destroy (line 121) | void destroy() {
function SDispatchResult (line 132) | static SDispatchResult pressAlt(std::string in) {
function SDispatchResult (line 138) | static SDispatchResult simulateGesture(std::string in) {
function SDispatchResult (line 167) | static SDispatchResult vkb(std::string in) {
function SDispatchResult (line 214) | static SDispatchResult scroll(std::string in) {
function SDispatchResult (line 231) | static SDispatchResult click(std::string in) {
function SDispatchResult (line 253) | static SDispatchResult keybind(std::string in) {
function SDispatchResult (line 280) | static SDispatchResult addWindowRule(std::string in) {
function SDispatchResult (line 288) | static SDispatchResult checkWindowRule(std::string in) {
function SDispatchResult (line 305) | static SDispatchResult addLayerRul...
function SDispatchResult (line 313) | static SDispatchResult checkLayerRule(std::string in) {
function SDispatchResult (line 338) | static SDispatchResult floatingFocusOnFullscreen(std::string in) {
function APICALL (line 356) | APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
function APICALL (line 384) | APICALL EXPORT void PLUGIN_EXIT() {
FILE: hyprtester/src/Log.hpp
type NLog (line 6) | namespace NLog {
function log (line 9) | void log(std::format_string<Args...> fmt, Args&&... args) {
FILE: hyprtester/src/hyprctlCompat.cpp
function getUID (line 20) | static int getUID() {
function getRuntimeDir (line 26) | static std::string getRuntimeDir() {
function instances (line 37) | std::vector<SInstanceData> instances() {
function getFromSocket (line 82) | std::string getFromSocket(const std::string& cmd) {
FILE: hyprtester/src/hyprctlCompat.hpp
type SInstanceData (line 7) | struct SInstanceData {
FILE: hyprtester/src/main.cpp
function launchHyprland (line 49) | static bool launchHyprland(std::string configPath, std::string binaryPat...
function hyprlandAlive (line 79) | static bool hyprlandAlive() {
function help (line 85) | static void help() {
function main (line 94) | int main(int argc, char** argv, char** envp) {
FILE: hyprtester/src/shared.hpp
type Colors (line 11) | namespace Colors {
FILE: hyprtester/src/tests/clients/child-window.cpp
type SClient (line 20) | struct SClient {
type pollfd (line 24) | struct pollfd
function waitForWindow (line 29) | static bool waitForWindow(SP<CProcess> proc, int windowsBefore) {
function startClient (line 43) | static bool startClient(SClient& client) {
function stopClient (line 79) | static void stopClient(SClient& client) {
function createChild (line 87) | static bool createChild(SClient& client) {
function test (line 103) | static bool test() {
FILE: hyprtester/src/tests/clients/pointer-scroll.cpp
type SClient (line 20) | struct SClient {
type pollfd (line 24) | struct pollfd
function startClient (line 29) | static bool startClient(SClient& client) {
function stopClient (line 93) | static void stopClient(SClient& client) {
function getLastDelta (line 101) | static int getLastDelta(SClient& client) {
function sendScroll (line 121) | static bool sendScroll(int delta) {
function test (line 125) | static bool test() {
FILE: hyprtester/src/tests/clients/pointer-warp.cpp
type SClient (line 20) | struct SClient {
type pollfd (line 24) | struct pollfd
function startClient (line 29) | static bool startClient(SClient& client) {
function stopClient (line 93) | static void stopClient(SClient& client) {
function sendWarp (line 103) | static bool sendWarp(SClient& client, int x, int y) {
function isCursorPos (line 121) | static bool isCursorPos(int x, int y) {
function test (line 150) | static bool test() {
FILE: hyprtester/src/tests/clients/shortcut-inhibitor.cpp
type SClient (line 20) | struct SClient {
type pollfd (line 24) | struct pollfd
function startClient (line 29) | static bool startClient(SClient& client) {
function stopClient (line 114) | static void stopClient(SClient& client) {
function checkFlag (line 124) | static bool checkFlag() {
function attemptCheckFlag (line 130) | static bool attemptCheckFlag(int attempts, int intervalMs) {
function test (line 141) | static bool test() {
FILE: hyprtester/src/tests/main/colors.cpp
function test (line 8) | static bool test() {
FILE: hyprtester/src/tests/main/dwindle.cpp
function testFloatClamp (line 8) | static void testFloatClamp() {
function test13349 (line 41) | static void test13349() {
function testSplit (line 84) | static void testSplit() {
function testRotatesplit (line 138) | static void testRotatesplit() {
function testForceSplitOnMoveToWorkspace (line 230) | static void testForceSplitOnMoveToWorkspace() {
function test (line 252) | static bool test() {
FILE: hyprtester/src/tests/main/exec.cpp
function test (line 21) | static bool test() {
FILE: hyprtester/src/tests/main/gestures.cpp
function waitForWindowCount (line 21) | static bool waitForWindowCount(int expectedWindowCnt, std::string_view e...
function test (line 35) | static bool test() {
FILE: hyprtester/src/tests/main/groups.cpp
function test (line 21) | static bool test() {
FILE: hyprtester/src/tests/main/hyprctl.cpp
function getCommandStdOut (line 23) | static std::string getCommandStdOut(std::string command) {
function testDevicesActiveLayoutIndex (line 34) | static bool testDevicesActiveLayoutIndex() {
function testGetprop (line 52) | static bool testGetprop() {
function test (line 176) | static bool test() {
FILE: hyprtester/src/tests/main/keybinds.cpp
type eKeyboardModifierIndex (line 16) | enum eKeyboardModifierIndex : uint8_t {
function clearFlag (line 27) | static void clearFlag() {
function checkFlag (line 31) | static bool checkFlag() {
function attemptCheckFlag (line 37) | static bool attemptCheckFlag(int attempts, int intervalMs) {
function readKittyOutput (line 48) | static std::string readKittyOutput() {
function awaitKittyPrompt (line 61) | static void awaitKittyPrompt() {
function spawnRemoteControlKitty (line 74) | static CUniquePointer<CProcess> spawnRemoteControlKitty() {
function testBind (line 83) | static void testBind() {
function testBindKey (line 95) | static void testBindKey() {
function testLongPress (line 107) | static void testLongPress() {
function testKeyLongPress (line 124) | static void testKeyLongPress() {
function testLongPressRelease (line 141) | static void testLongPressRelease() {
function testLongPressOnlyKeyRelease (line 158) | static void testLongPressOnlyKeyRelease() {
function testRepeat (line 176) | static void testRepeat() {
function testKeyRepeat (line 196) | static void testKeyRepeat() {
function testRepeatRelease (line 216) | static void testRepeatRelease() {
function testRepeatOnlyKeyRelease (line 238) | static void testRepeatOnlyKeyRelease() {
function testShortcutBind (line 261) | static void testShortcutBind() {
function testShortcutBindKey (line 283) | static void testShortcutBindKey() {
function testShortcutLongPress (line 306) | static void testShortcutLongPress() {
function testShortcutLongPressKeyRelease (line 335) | static void testShortcutLongPressKeyRelease() {
function testShortcutRepeat (line 362) | static void testShortcutRepeat() {
function testShortcutRepeatKeyRelease (line 392) | static void testShortcutRepeatKeyRelease() {
function testSubmap (line 424) | static void testSubmap() {
function testBindsAfterScroll (line 459) | static void testBindsAfterScroll() {
function testSubmapUniversal (line 488) | static void testSubmapUniversal() {
function testPerDeviceKeybind (line 516) | static void testPerDeviceKeybind() {
function test (line 544) | static bool test() {
FILE: hyprtester/src/tests/main/layer.cpp
function spawnLayer (line 14) | static bool spawnLayer(const std::string& namespace_) {
function test (line 23) | static bool test() {
FILE: hyprtester/src/tests/main/layout.cpp
function swar (line 8) | static void swar() {
function testCrashOnGeomUpdate (line 46) | static void testCrashOnGeomUpdate() {
function testPosPreserve (line 64) | static void testPosPreserve() {
function test (line 106) | static bool test() {
FILE: hyprtester/src/tests/main/master.cpp
function testOrientations (line 9) | static void testOrientations() {
function focusMasterPrevious (line 54) | static void focusMasterPrevious() {
function testFsBehavior (line 100) | static void testFsBehavior() {
function test (line 161) | static bool test() {
FILE: hyprtester/src/tests/main/misc.cpp
function test (line 136) | static bool test() {
FILE: hyprtester/src/tests/main/persistent.cpp
function test (line 21) | static bool test() {
FILE: hyprtester/src/tests/main/scroll.cpp
function testFocusCycling (line 8) | static void testFocusCycling() {
function testFocusWrapping (line 60) | static void testFocusWrapping() {
function testSwapcolWrapping (line 115) | static void testSwapcolWrapping() {
function testWindowRule (line 201) | static bool testWindowRule() {
function test (line 229) | static bool test() {
FILE: hyprtester/src/tests/main/snap.cpp
function spawnFloatingKitty (line 14) | static bool spawnFloatingKitty() {
function expectSocket (line 24) | static void expectSocket(const std::string& CMD) {
function expectSnapMove (line 35) | static void expectSnapMove(const Vector2D FROM, const Vector2D* TO) {
function testWindowSnap (line 48) | static void testWindowSnap(const bool RESPECTGAPS) {
function testMonitorSnap (line 73) | static void testMonitorSnap(const bool RESPECTGAPS, const bool OVERLAP) {
function test (line 112) | static bool test() {
FILE: hyprtester/src/tests/main/solitary.cpp
function test (line 18) | static bool test() {
FILE: hyprtester/src/tests/main/tags.cpp
function testTags (line 8) | static bool testTags() {
FILE: hyprtester/src/tests/main/window.cpp
function spawnKitty (line 19) | static bool spawnKitty(const std::string& class_, const std::vector<std:...
function spawnKittyActivating (line 32) | static std::string spawnKittyActivating(const std::string& class_ = "kit...
function getWindowAddress (line 50) | static std::string getWindowAddress(const std::string& winInfo) {
function testSwapWindow (line 61) | static void testSwapWindow() {
function testGroupRules (line 150) | static void testGroupRules() {
function isActiveWindow (line 212) | static bool isActiveWindow(const std::string& class_, char fullscreen = ...
function waitForActiveWindow (line 225) | static bool waitForActiveWindow(const std::string& class_, char fullscre...
function testWindowFocusOnFullscreenConflict (line 239) | static bool testWindowFocusOnFullscreenConflict() {
function testMaximizeSize (line 341) | static void testMaximizeSize() {
function testFloatingFocusOnFullscreen (line 370) | static void testFloatingFocusOnFullscreen() {
function testGroupFallbackFocus (line 390) | static void testGroupFallbackFocus() {
function testBringActiveToTopMouseMovement (line 425) | static void testBringActiveToTopMouseMovement() {
function testInitialFloatSize (line 464) | static void testInitialFloatSize() {
function testWindowRuleFocusOnActivate (line 499) | static bool testWindowRuleFocusOnActivate() {
function testPinnedWorkspacesValid (line 559) | static bool testPinnedWorkspacesValid() {
function testWindowRuleWorkspaceEmpty (line 605) | static bool testWindowRuleWorkspaceEmpty() {
function testContentRules (line 650) | static bool testContentRules() {
function test (line 682) | static bool test() {
FILE: hyprtester/src/tests/main/workspaces.cpp
function testSpecialWorkspaceFullscreen (line 23) | static bool testSpecialWorkspaceFullscreen() {
function testAsymmetricGaps (line 108) | static bool testAsymmetricGaps() {
function testMultimonBAF (line 196) | static void testMultimonBAF() {
function testMultimonFocus (line 258) | static void testMultimonFocus() {
function testDynamicWsEffects (line 378) | static void testDynamicWsEffects() {
function test (line 396) | static bool test() {
FILE: hyprtester/src/tests/plugin/plugin.cpp
function testPlugin (line 13) | bool testPlugin() {
function testVkb (line 23) | bool testVkb() {
FILE: hyprtester/src/tests/shared.hpp
type Tests (line 10) | namespace Tests {
FILE: src/Compositor.cpp
function handleCritSignal (line 97) | static int handleCritSignal(int signo, void* data) {
function handleUnrecoverableSignal (line 106) | static void handleUnrecoverableSignal(int sig) {
function handleUserSignal (line 125) | static void handleUserSignal(int sig) {
function filterGlobals (line 277) | static bool filterGlobals(const wl_client* client, const wl_global* glob...
function PHLMONITOR (line 806) | PHLMONITOR CCompositor::getMonitorFromID(const MONITORID& id) {
function PHLMONITOR (line 816) | PHLMONITOR CCompositor::getMonitorFromName(const std::string& name) {
function PHLMONITOR (line 825) | PHLMONITOR CCompositor::getMonitorFromDesc(const std::string& desc) {
function PHLMONITOR (line 833) | PHLMONITOR CCompositor::getMonitorFromCursor() {
function PHLMONITOR (line 837) | PHLMONITOR CCompositor::getMonitorFromVector(const Vector2D& point) {
function PHLWINDOW (line 888) | PHLWINDOW CCompositor::vectorToWindowUnified(const Vector2D& pos, uint8_...
function Vector2D (line 1088) | Vector2D CCompositor::vectorToSurfaceLocal(const Vector2D& vec, PHLWINDO...
function PHLMONITOR (line 1117) | PHLMONITOR CCompositor::getMonitorFromOutput(SP<Aquamarine::IOutput> out) {
function PHLMONITOR (line 1127) | PHLMONITOR CCompositor::getRealMonitorFromOutput(SP<Aquamarine::IOutput>...
function PHLWINDOW (line 1180) | PHLWINDOW CCompositor::getWindowFromSurface(SP<CWLSurfaceResource> pSurf...
function PHLWINDOW (line 1192) | PHLWINDOW CCompositor::getWindowFromHandle(uint32_t handle) {
function PHLWORKSPACE (line 1202) | PHLWORKSPACE CCompositor::getWorkspaceByID(const WORKSPACEID& id) {
function PHLWINDOW (line 1211) | PHLWINDOW CCompositor::getUrgentWindow() {
function PHLWINDOW (line 1381) | PHLWINDOW CCompositor::getWindowInDirection(PHLWINDOW pWindow, Math::eDi...
function PHLWINDOW (line 1399) | PHLWINDOW CCompositor::getWindowInDirection(const CBox& box, PHLWORKSPAC...
function isWorkspaceMatches (line 1559) | static bool isWorkspaceMatches(WINDOWPTR pWindow, const WINDOWPTR w, boo...
function isFloatingMatches (line 1564) | static bool isFloatingMatches(WINDOWPTR w, std::optional<bool> floating) {
function isWindowAvailableForCycle (line 1569) | static bool isWindowAvailableForCycle(WINDOWPTR pWindow, WINDOWPTR w, bo...
function PHLWINDOW (line 1575) | static PHLWINDOW getWindowPred(Iterator cur, Iterator end, Iterator begi...
function PHLWINDOW (line 1584) | static PHLWINDOW getWeakWindowPred(Iterator cur, Iterator end, Iterator ...
function PHLWINDOW (line 1592) | PHLWINDOW CCompositor::getWindowCycleHist(PHLWINDOWREF cur, bool focusab...
function PHLWINDOW (line 1600) | PHLWINDOW CCompositor::getWindowCycle(PHLWINDOW cur, bool focusableOnly,...
function WORKSPACEID (line 1606) | WORKSPACEID CCompositor::getNextAvailableNamedWorkspace() {
function PHLWORKSPACE (line 1624) | PHLWORKSPACE CCompositor::getWorkspaceByName(const std::string& name) {
function PHLWORKSPACE (line 1633) | PHLWORKSPACE CCompositor::getWorkspaceByString(const std::string& str) {
function PHLMONITOR (line 1679) | PHLMONITOR CCompositor::getMonitorInDirection(Math::eDirection dir) {
function PHLMONITOR (line 1683) | PHLMONITOR CCompositor::getMonitorInDirection(PHLMONITOR pSourceMonitor,...
function MONITORID (line 1755) | MONITORID CCompositor::getNextAvailableMonitorID(std::string const& name) {
function PHLMONITOR (line 1866) | PHLMONITOR CCompositor::getMonitorFromString(const std::string& name) {
function PHLWINDOW (line 2219) | PHLWINDOW CCompositor::getX11Parent(PHLWINDOW pWindow) {
function PHLWINDOW (line 2247) | PHLWINDOW CCompositor::getWindowByRegex(const std::string& regexp_) {
function PHLLS (line 2381) | PHLLS CCompositor::getLayerSurfaceFromSurface(SP<CWLSurfaceResource> pSu...
function Vector2D (line 2408) | Vector2D CCompositor::parseWindowVectorArgsRelative(const std::string& a...
function PHLWORKSPACE (line 2457) | PHLWORKSPACE CCompositor::createNewWorkspace(const WORKSPACEID& id, cons...
function WORKSPACEID (line 2484) | WORKSPACEID CCompositor::getNewSpecialID() {
function PHLWINDOW (line 2640) | PHLWINDOW CCompositor::getForceFocus() {
function checkDefaultCursorWarp (line 2882) | static void checkDefaultCursorWarp(PHLMONITOR monitor) {
function PImageDescription (line 2966) | PImageDescription CCompositor::getPreferredImageDescription() {
function PImageDescription (line 2976) | PImageDescription CCompositor::getHDRImageDescription() {
type vt_stat (line 3118) | struct vt_stat
FILE: src/Compositor.hpp
class CWLSurfaceResource (line 17) | class CWLSurfaceResource
type SWorkspaceRule (line 18) | struct SWorkspaceRule
type eManagersInitStage (line 20) | enum eManagersInitStage : uint8_t {
class CCompositor (line 26) | class CCompositor {
method getWorkspaces (line 86) | auto getWorkspaces() {
FILE: src/SharedDefs.hpp
type eIcons (line 10) | enum eIcons : uint8_t {
type eRenderStage (line 20) | enum eRenderStage : uint8_t {
type eInputType (line 33) | enum eInputType : uint8_t {
type eHyprCtlOutputFormat (line 41) | enum eHyprCtlOutputFormat : uint8_t {
type SHyprCtlCommand (line 46) | struct SHyprCtlCommand {
type SDispatchResult (line 52) | struct SDispatchResult {
FILE: src/config/ConfigDataValues.hpp
type eConfigValueDataTypes (line 7) | enum eConfigValueDataTypes : int8_t {
class ICustomConfigValueData (line 14) | class ICustomConfigValueData {
class CGradientValueData (line 23) | class CGradientValueData : public ICustomConfigValueData {
method CGradientValueData (line 25) | CGradientValueData() = default;
method CGradientValueData (line 26) | CGradientValueData(CHyprColor col) {
method eConfigValueDataTypes (line 32) | virtual eConfigValueDataTypes getDataType() {
method reset (line 36) | void reset(CHyprColor col) {
method updateColorsOk (line 43) | void updateColorsOk() {
method toString (line 75) | virtual std::string toString() {
class CCssGapData (line 86) | class CCssGapData : public ICustomConfigValueData {
method CCssGapData (line 88) | CCssGapData() : m_top(0), m_right(0), m_bottom(0), m_left(0) {}
method CCssGapData (line 89) | CCssGapData(int64_t global) : m_top(global), m_right(global), m_bottom...
method CCssGapData (line 90) | CCssGapData(int64_t vertical, int64_t horizontal) : m_top(vertical), m...
method CCssGapData (line 91) | CCssGapData(int64_t top, int64_t horizontal, int64_t bottom) : m_top(t...
method CCssGapData (line 92) | CCssGapData(int64_t top, int64_t right, int64_t bottom, int64_t left) ...
method parseGapData (line 100) | void parseGapData(CVarList2 varlist) {
method reset (line 128) | void reset(int64_t global) {
method eConfigValueDataTypes (line 135) | virtual eConfigValueDataTypes getDataType() {
method toString (line 139) | virtual std::string toString() {
class CFontWeightConfigValueData (line 144) | class CFontWeightConfigValueData : public ICustomConfigValueData {
method CFontWeightConfigValueData (line 146) | CFontWeightConfigValueData() = default;
method CFontWeightConfigValueData (line 147) | CFontWeightConfigValueData(const char* weight) {
method eConfigValueDataTypes (line 153) | virtual eConfigValueDataTypes getDataType() {
method toString (line 157) | virtual std::string toString() {
method parseWeight (line 161) | void parseWeight(const std::string& strWeight) {
FILE: src/config/ConfigManager.cpp
function configHandleGradientSet (line 77) | static Hyprlang::CParseResult configHandleGradientSet(const char* VALUE,...
function configHandleGradientDestroy (line 137) | static void configHandleGradientDestroy(void** data) {
function configHandleGapSet (line 142) | static Hyprlang::CParseResult configHandleGapSet(const char* VALUE, void...
function configHandleGapDestroy (line 162) | static void configHandleGapDestroy(void** data) {
function configHandleFontWeightSet (line 167) | static Hyprlang::CParseResult configHandleFontWeightSet(const char* VALU...
function configHandleFontWeightDestroy (line 184) | static void configHandleFontWeightDestroy(void** data) {
function handleExec (line 189) | static Hyprlang::CParseResult handleExec(const char* c, const char* v) {
function handleRawExec (line 201) | static Hyprlang::CParseResult handleRawExec(const char* c, const char* v) {
function handleExecOnce (line 213) | static Hyprlang::CParseResult handleExecOnce(const char* c, const char* ...
function handleExecRawOnce (line 225) | static Hyprlang::CParseResult handleExecRawOnce(const char* c, const cha...
function handleExecShutdown (line 237) | static Hyprlang::CParseResult handleExecShutdown(const char* c, const ch...
function handleMonitor (line 249) | static Hyprlang::CParseResult handleMonitor(const char* c, const char* v) {
function handleBezier (line 261) | static Hyprlang::CParseResult handleBezier(const char* c, const char* v) {
function handleAnimation (line 273) | static Hyprlang::CParseResult handleAnimation(const char* c, const char*...
function handleBind (line 285) | static Hyprlang::CParseResult handleBind(const char* c, const char* v) {
function handleUnbind (line 297) | static Hyprlang::CParseResult handleUnbind(const char* c, const char* v) {
function handleWorkspaceRules (line 309) | static Hyprlang::CParseResult handleWorkspaceRules(const char* c, const ...
function handleSubmap (line 321) | static Hyprlang::CParseResult handleSubmap(const char* c, const char* v) {
function handleSource (line 333) | static Hyprlang::CParseResult handleSource(const char* c, const char* v) {
function handleEnv (line 345) | static Hyprlang::CParseResult handleEnv(const char* c, const char* v) {
function handlePlugin (line 357) | static Hyprlang::CParseResult handlePlugin(const char* c, const char* v) {
function handlePermission (line 369) | static Hyprlang::CParseResult handlePermission(const char* c, const char...
function handleGesture (line 381) | static Hyprlang::CParseResult handleGesture(const char* c, const char* v) {
function handleWindowrule (line 393) | static Hyprlang::CParseResult handleWindowrule(const char* c, const char...
function handleWindowrulev2 (line 405) | static Hyprlang::CParseResult handleWindowrulev2(const char* c, const ch...
function handleLayerrule (line 411) | static Hyprlang::CParseResult handleLayerrule(const char* c, const char*...
function handleLayerrulev2 (line 423) | static Hyprlang::CParseResult handleLayerrulev2(const char* c, const cha...
function exportHlVersionVars (line 1062) | static void exportHlVersionVars() {
function clearHlVersionVars (line 1068) | static void clearHlVersionVars() {
function Vector2D (line 1550) | Vector2D CConfigManager::getDeviceVec(const std::string& dev, const std:...
function SMonitorRule (line 1564) | SMonitorRule CConfigManager::getMonitorRuleFor(const PHLMONITOR PMONITOR) {
function SWorkspaceRule (line 1629) | SWorkspaceRule CConfigManager::getWorkspaceRuleFor(PHLWORKSPACE pWorkspa...
function SWorkspaceRule (line 1641) | SWorkspaceRule CConfigManager::mergeWorkspaceRules(const SWorkspaceRule&...
function PHLMONITOR (line 1915) | PHLMONITOR CConfigManager::getBoundMonitorForWS(const std::string& wsnam...
function parseModeLine (line 2046) | static bool parseModeLine(const std::string& modeline, drmModeModeInfo& ...
function SMonitorRule (line 2114) | SMonitorRule& CMonitorRuleParser::rule() {
function SParsedKey (line 2516) | SParsedKey parseKey(const std::string& key) {
FILE: src/config/ConfigManager.hpp
class CConfigManager (line 30) | class CConfigManager
type SWorkspaceRule (line 32) | struct SWorkspaceRule {
type SPluginKeyword (line 54) | struct SPluginKeyword {
type SPluginVariable (line 60) | struct SPluginVariable {
type eConfigOptionType (line 65) | enum eConfigOptionType : uint8_t {
type eConfigOptionFlags (line 77) | enum eConfigOptionFlags : uint8_t {
type SConfigOptionDescription (line 81) | struct SConfigOptionDescription {
type SBoolData (line 83) | struct SBoolData {
type SRangeData (line 87) | struct SRangeData {
type SFloatData (line 91) | struct SFloatData {
type SStringData (line 95) | struct SStringData {
type SColorData (line 99) | struct SColorData {
type SChoiceData (line 103) | struct SChoiceData {
type SGradientData (line 108) | struct SGradientData {
type SVectorData (line 112) | struct SVectorData {
type SFirstExecRequest (line 129) | struct SFirstExecRequest {
type SFloatCache (line 134) | struct SFloatCache {
method SFloatCache (line 137) | SFloatCache(PHLWINDOW window, bool initial) {
type std (line 156) | namespace std {
type hash<SFloatCache> (line 158) | struct hash<SFloatCache> {
class CMonitorRuleParser (line 165) | class CMonitorRuleParser {
class CConfigManager (line 192) | class CConfigManager {
FILE: src/config/ConfigValue.cpp
function local__configValuePopulate (line 5) | void local__configValuePopulate(void* const** p, const std::string& val) {
function local__configValueTypeIdx (line 11) | std::type_index local__configValueTypeIdx(const std::string& val) {
FILE: src/config/ConfigValue.hpp
class CConfigValue (line 14) | class CConfigValue {
method CConfigValue (line 16) | CConfigValue(const std::string& val) {
method T (line 31) | T* ptr() const {
method T (line 35) | T operator*() const {
FILE: src/config/ConfigWatcher.cpp
function CFileDescriptor (line 29) | CFileDescriptor& CConfigWatcher::getInotifyFD() {
FILE: src/config/ConfigWatcher.hpp
class CConfigWatcher (line 8) | class CConfigWatcher {
type SConfigWatchEvent (line 13) | struct SConfigWatchEvent {
type SInotifyWatch (line 23) | struct SInotifyWatch {
FILE: src/debug/HyprCtl.cpp
function trimTrailingComma (line 88) | static void trimTrailingComma(std::string& str) {
function formatToString (line 93) | static std::string formatToString(uint32_t drmFormat) {
function availableModesForOutput (line 105) | static std::string availableModesForOutput(PHLMONITOR pMonitor, eHyprCtl...
function monitorsRequest (line 292) | static std::string monitorsRequest(eHyprCtlOutputFormat format, std::str...
function getTagsData (line 325) | static std::string getTagsData(PHLWINDOW w, eHyprCtlOutputFormat format) {
function getGroupedData (line 335) | static std::string getGroupedData(PHLWINDOW w, eHyprCtlOutputFormat form...
function clientsRequest (line 424) | static std::string clientsRequest(eHyprCtlOutputFormat format, std::stri...
function getWorkspaceRuleData (line 487) | static std::string getWorkspaceRuleData(const SWorkspaceRule& r, eHyprCt...
function activeWorkspaceRequest (line 538) | static std::string activeWorkspaceRequest(eHyprCtlOutputFormat format, s...
function workspacesRequest (line 551) | static std::string workspacesRequest(eHyprCtlOutputFormat format, std::s...
function workspaceRulesRequest (line 572) | static std::string workspaceRulesRequest(eHyprCtlOutputFormat format, st...
function activeWindowRequest (line 592) | static std::string activeWindowRequest(eHyprCtlOutputFormat format, std:...
function layersRequest (line 606) | static std::string layersRequest(eHyprCtlOutputFormat format, std::strin...
function configErrorsRequest (line 682) | static std::string configErrorsRequest(eHyprCtlOutputFormat format, std:...
function devicesRequest (line 705) | static std::string devicesRequest(eHyprCtlOutputFormat format, std::stri...
function animationsRequest (line 884) | static std::string animationsRequest(eHyprCtlOutputFormat format, std::s...
function rollinglogRequest (line 944) | static std::string rollinglogRequest(eHyprCtlOutputFormat format, std::s...
function globalShortcutsRequest (line 957) | static std::string globalShortcutsRequest(eHyprCtlOutputFormat format, s...
function bindsRequest (line 983) | static std::string bindsRequest(eHyprCtlOutputFormat format, std::string...
function versionRequest (line 1040) | std::string versionRequest(eHyprCtlOutputFormat format, std::string requ...
function systemInfoRequest (line 1121) | std::string systemInfoRequest(eHyprCtlOutputFormat format, std::string r...
function dispatchRequest (line 1235) | static std::string dispatchRequest(eHyprCtlOutputFormat format, std::str...
function dispatchKeyword (line 1256) | static std::string dispatchKeyword(eHyprCtlOutputFormat format, std::str...
function reloadRequest (line 1352) | static std::string reloadRequest(eHyprCtlOutputFormat format, std::strin...
function killRequest (line 1364) | static std::string killRequest(eHyprCtlOutputFormat format, std::string ...
function splashRequest (line 1370) | static std::string splashRequest(eHyprCtlOutputFormat format, std::strin...
function cursorPosRequest (line 1374) | static std::string cursorPosRequest(eHyprCtlOutputFormat format, std::st...
function dispatchBatch (line 1392) | static std::string dispatchBatch(eHyprCtlOutputFormat format, std::strin...
function dispatchSetCursor (line 1418) | static std::string dispatchSetCursor(eHyprCtlOutputFormat format, std::s...
function switchXKBLayoutRequest (line 1442) | static std::string switchXKBLayoutRequest(eHyprCtlOutputFormat format, s...
function dispatchSeterror (line 1517) | static std::string dispatchSeterror(eHyprCtlOutputFormat format, std::st...
function dispatchGetProp (line 1546) | static std::string dispatchGetProp(eHyprCtlOutputFormat format, std::str...
function dispatchGetOption (line 1728) | static std::string dispatchGetOption(eHyprCtlOutputFormat format, std::s...
function decorationRequest (line 1784) | static std::string decorationRequest(eHyprCtlOutputFormat format, std::s...
function dispatchOutput (line 1810) | static std::string dispatchOutput(eHyprCtlOutputFormat format, std::stri...
function dispatchPlugin (line 1865) | static std::string dispatchPlugin(eHyprCtlOutputFormat format, std::stri...
function dispatchNotify (line 1942) | static std::string dispatchNotify(eHyprCtlOutputFormat format, std::stri...
function dispatchDismissNotify (line 1997) | static std::string dispatchDismissNotify(eHyprCtlOutputFormat format, st...
function getIsLocked (line 2017) | static std::string getIsLocked(eHyprCtlOutputFormat format, std::string ...
function getDescriptions (line 2029) | static std::string getDescriptions(eHyprCtlOutputFormat format, std::str...
function submapRequest (line 2044) | static std::string submapRequest(eHyprCtlOutputFormat format, std::strin...
function reloadShaders (line 2052) | static std::string reloadShaders(eHyprCtlOutputFormat format, std::strin...
function successWrite (line 2228) | static bool successWrite(int fd, const std::string& data, bool needLog =...
function runWritingDebugLogThread (line 2263) | static void runWritingDebugLogThread(const int conn) {
function isFollowUpRollingLogRequest (line 2286) | static bool isFollowUpRollingLogRequest(const std::string& request) {
function hyprCtlFDTick (line 2290) | static int hyprCtlFDTick(int fd, uint32_t mask, void* data) {
FILE: src/debug/HyprCtl.hpp
class CHyprCtl (line 15) | class CHyprCtl {
FILE: src/debug/HyprDebugOverlay.hpp
class IHyprRenderer (line 9) | class IHyprRenderer
class CHyprMonitorDebugOverlay (line 11) | class CHyprMonitorDebugOverlay {
class CHyprDebugOverlay (line 31) | class CHyprDebugOverlay {
FILE: src/debug/HyprNotificationOverlay.cpp
function iconBackendFromLayout (line 12) | static inline auto iconBackendFromLayout(PangoLayout* layout) {
function CBox (line 67) | CBox CHyprNotificationOverlay::drawNotifications(PHLMONITOR pMonitor) {
FILE: src/debug/HyprNotificationOverlay.hpp
type eIconBackend (line 12) | enum eIconBackend : uint8_t {
type SNotification (line 29) | struct SNotification {
class CHyprNotificationOverlay (line 38) | class CHyprNotificationOverlay {
FILE: src/debug/crash/CrashReporter.cpp
function exitWithError (line 45) | [[noreturn]] static inline void exitWithError(char const* err) {
type utsname (line 149) | struct utsname
type link_map (line 217) | struct link_map
FILE: src/debug/crash/CrashReporter.hpp
type CrashReporter (line 3) | namespace CrashReporter {
FILE: src/debug/crash/SignalSafe.hpp
type SignalSafe (line 6) | namespace SignalSafe {
class CMaxLengthCString (line 8) | class CMaxLengthCString {
method CMaxLengthCString (line 10) | CMaxLengthCString() {
method write (line 18) | void write(char const* data, size_t len) {
method write (line 28) | void write(char c) {
method writeNum (line 37) | void writeNum(size_t num) {
method boundsExceeded (line 56) | bool boundsExceeded() {
class CBufFileWriter (line 67) | class CBufFileWriter {
method CBufFileWriter (line 69) | CBufFileWriter(int fd_) : m_fd(fd_) {
method write (line 77) | void write(char const* data, size_t len) {
method write (line 89) | void write(char c) {
method writeNum (line 108) | void writeNum(size_t num) {
method writeCmdOutput (line 123) | void writeCmdOutput(const char* cmd) {
method flush (line 183) | void flush() {
FILE: src/debug/log/Logger.hpp
type Log (line 8) | namespace Log {
class CLogger (line 9) | class CLogger {
method log (line 21) | void log(Hyprutils::CLI::eLogLevel level, std::format_string<Args......
FILE: src/debug/log/RollingLogFollow.hpp
type Log (line 8) | namespace Log {
type SRollingLogFollow (line 9) | struct SRollingLogFollow {
method isEmpty (line 16) | bool isEmpty(int socket) {
method debugInfo (line 21) | std::string debugInfo() {
method getLog (line 26) | std::string getLog(int socket) {
method addLog (line 35) | void addLog(const std::string_view& log) {
method isRunning (line 45) | bool isRunning() {
method stopFor (line 50) | void stopFor(int socket) {
method startFor (line 57) | void startFor(int socket) {
method SRollingLogFollow (line 63) | static SRollingLogFollow& get() {
FILE: src/desktop/DesktopTypes.hpp
class CWorkspace (line 4) | class CWorkspace
class CMonitor (line 5) | class CMonitor
type Desktop::View (line 7) | namespace Desktop::View {
class CWindow (line 8) | class CWindow
class CLayerSurface (line 9) | class CLayerSurface
FILE: src/desktop/Workspace.cpp
function PHLWORKSPACE (line 16) | PHLWORKSPACE CWorkspace::create(WORKSPACEID id, PHLMONITOR monitor, std:...
function PHLWINDOW (line 77) | PHLWINDOW CWorkspace::getLastFocusedWindow() {
function MONITORID (line 385) | MONITORID CWorkspace::monitorID() {
function PHLWINDOW (line 389) | PHLWINDOW CWorkspace::getFullscreenWindow() {
function PHLWINDOW (line 450) | PHLWINDOW CWorkspace::getFirstWindow() {
function PHLWINDOW (line 459) | PHLWINDOW CWorkspace::getTopLeftWindow() {
FILE: src/desktop/Workspace.hpp
type Layout (line 9) | namespace Layout {
class CSpace (line 10) | class CSpace
type eFullscreenMode (line 13) | enum eFullscreenMode : int8_t {
class CWorkspace (line 20) | class CWorkspace {
function valid (line 106) | inline bool valid(const PHLWORKSPACE& ref) {
FILE: src/desktop/history/WindowHistoryTracker.hpp
type Desktop::History (line 7) | namespace Desktop::History {
class CWindowHistoryTracker (line 8) | class CWindowHistoryTracker {
method CWindowHistoryTracker (line 13) | CWindowHistoryTracker(const CWindowHistoryTracker&) = delete;
method CWindowHistoryTracker (line 14) | CWindowHistoryTracker(CWindowHistoryTracker&) = delete;
method CWindowHistoryTracker (line 15) | CWindowHistoryTracker(CWindowHistoryTracker&&) = delete;
FILE: src/desktop/history/WorkspaceHistoryTracker.cpp
function SWorkspaceIDName (line 88) | SWorkspaceIDName CWorkspaceHistoryTracker::previousWorkspaceIDName(PHLWO...
function SWorkspaceIDName (line 133) | SWorkspaceIDName CWorkspaceHistoryTracker::previousWorkspaceIDName(PHLWO...
FILE: src/desktop/history/WorkspaceHistoryTracker.hpp
type Desktop::History (line 10) | namespace Desktop::History {
class CWorkspaceHistoryTracker (line 11) | class CWorkspaceHistoryTracker {
method CWorkspaceHistoryTracker (line 16) | CWorkspaceHistoryTracker(const CWorkspaceHistoryTracker&) = delete;
method CWorkspaceHistoryTracker (line 17) | CWorkspaceHistoryTracker(CWorkspaceHistoryTracker&) = delete;
method CWorkspaceHistoryTracker (line 18) | CWorkspaceHistoryTracker(CWorkspaceHistoryTracker&&) = delete;
type SWorkspacePreviousData (line 20) | struct SWorkspacePreviousData {
type SLastWorkspaceData (line 35) | struct SLastWorkspaceData {
FILE: src/desktop/reserved/ReservedArea.cpp
function CBox (line 41) | CBox CReservedArea::apply(const CBox& other) const {
FILE: src/desktop/reserved/ReservedArea.hpp
type Desktop (line 6) | namespace Desktop {
type eReservedDynamicType (line 7) | enum eReservedDynamicType : uint8_t {
class CReservedArea (line 14) | class CReservedArea {
method CReservedArea (line 16) | CReservedArea() = default;
type SDynamicData (line 42) | struct SDynamicData {
FILE: src/desktop/rule/Engine.hpp
type Desktop::Rule (line 5) | namespace Desktop::Rule {
class CRuleEngine (line 6) | class CRuleEngine {
method CRuleEngine (line 8) | CRuleEngine() = default;
FILE: src/desktop/rule/Rule.hpp
type Desktop::Rule (line 11) | namespace Desktop::Rule {
type eRuleProperty (line 12) | enum eRuleProperty : uint32_t {
type eRuleType (line 38) | enum eRuleType : uint8_t {
class IRule (line 47) | class IRule {
FILE: src/desktop/rule/effect/EffectContainer.hpp
type Desktop::Rule (line 10) | namespace Desktop::Rule {
class IEffectContainer (line 12) | class IEffectContainer {
method IEffectContainer (line 23) | IEffectContainer(std::vector<std::string>&& defaultKeys) : m_keys(st...
method storageType (line 28) | virtual storageType registerEffect(std::string&& name) {
method unregisterEffect (line 37) | virtual void unregisterEffect(storageType id) {
method unregisterEffect (line 44) | virtual void unregisterEffect(const std::string& name) {
method get (line 60) | virtual std::optional<storageType> get(const std::string_view& s) {
method isEffectDynamic (line 74) | virtual bool isEffectDynamic(storageType i) {
FILE: src/desktop/rule/layerRule/LayerRule.cpp
function eRuleType (line 12) | eRuleType CLayerRule::type() {
FILE: src/desktop/rule/layerRule/LayerRule.hpp
type Desktop::Rule (line 7) | namespace Desktop::Rule {
class CLayerRule (line 8) | class CLayerRule : public IRule {
FILE: src/desktop/rule/layerRule/LayerRuleApplicator.hpp
type Desktop::Rule (line 10) | namespace Desktop::Rule {
class CLayerRule (line 11) | class CLayerRule
class CLayerRuleApplicator (line 13) | class CLayerRuleApplicator {
method CLayerRuleApplicator (line 18) | CLayerRuleApplicator(const CLayerRuleApplicator&) = delete;
method CLayerRuleApplicator (line 19) | CLayerRuleApplicator(CLayerRuleApplicator&) = delete;
method CLayerRuleApplicator (line 20) | CLayerRuleApplicator(CLayerRuleApplicator&&) = delete;
type SCustomPropContainer (line 25) | struct SCustomPropContainer {
FILE: src/desktop/rule/layerRule/LayerRuleEffectContainer.hpp
type Desktop::Rule (line 8) | namespace Desktop::Rule {
type eLayerRuleEffect (line 9) | enum eLayerRuleEffect : uint8_t {
class CLayerRuleEffectContainer (line 26) | class CLayerRuleEffectContainer : public IEffectContainer<eLayerRuleEf...
FILE: src/desktop/rule/matchEngine/BoolMatchEngine.hpp
type Desktop::Rule (line 5) | namespace Desktop::Rule {
class CBoolMatchEngine (line 6) | class CBoolMatchEngine : public IMatchEngine {
FILE: src/desktop/rule/matchEngine/IntMatchEngine.hpp
type Desktop::Rule (line 5) | namespace Desktop::Rule {
class CIntMatchEngine (line 6) | class CIntMatchEngine : public IMatchEngine {
FILE: src/desktop/rule/matchEngine/MatchEngine.hpp
class CTagKeeper (line 5) | class CTagKeeper
type Desktop::Rule (line 7) | namespace Desktop::Rule {
type eRuleMatchEngine (line 8) | enum eRuleMatchEngine : uint8_t {
class IMatchEngine (line 16) | class IMatchEngine {
method IMatchEngine (line 26) | IMatchEngine() = default;
FILE: src/desktop/rule/matchEngine/RegexMatchEngine.hpp
type re2 (line 7) | namespace re2 {
class RE2 (line 8) | class RE2
type Desktop::Rule (line 11) | namespace Desktop::Rule {
class CRegexMatchEngine (line 12) | class CRegexMatchEngine : public IMatchEngine {
FILE: src/desktop/rule/matchEngine/TagMatchEngine.hpp
type Desktop::Rule (line 6) | namespace Desktop::Rule {
class CTagMatchEngine (line 7) | class CTagMatchEngine : public IMatchEngine {
FILE: src/desktop/rule/matchEngine/WorkspaceMatchEngine.hpp
type Desktop::Rule (line 6) | namespace Desktop::Rule {
class CWorkspaceMatchEngine (line 7) | class CWorkspaceMatchEngine : public IMatchEngine {
FILE: src/desktop/rule/utils/SetUtils.hpp
type Desktop::Rule (line 5) | namespace Desktop::Rule {
function setsIntersect (line 7) | bool setsIntersect(const std::unordered_set<T>& A, const std::unordere...
FILE: src/desktop/rule/windowRule/WindowRule.cpp
function eRuleType (line 15) | eRuleType CWindowRule::type() {
FILE: src/desktop/rule/windowRule/WindowRule.hpp
type Desktop::Rule (line 10) | namespace Desktop::Rule {
class CWindowRule (line 13) | class CWindowRule : public IRule {
FILE: src/desktop/rule/windowRule/WindowRuleApplicator.hpp
type Desktop::Rule (line 14) | namespace Desktop::Rule {
class CWindowRule (line 15) | class CWindowRule
type eIdleInhibitMode (line 17) | enum eIdleInhibitMode : uint8_t {
class CWindowRuleApplicator (line 24) | class CWindowRuleApplicator {
method CWindowRuleApplicator (line 29) | CWindowRuleApplicator(const CWindowRuleApplicator&) = delete;
method CWindowRuleApplicator (line 30) | CWindowRuleApplicator(CWindowRuleApplicator&) = delete;
method CWindowRuleApplicator (line 31) | CWindowRuleApplicator(CWindowRuleApplicator&&) = delete;
type SCustomPropContainer (line 62) | struct SCustomPropContainer {
method DEFINE_PROP (line 90) | DEFINE_PROP(Types::SAlphaValue, alpha, Types::SAlphaValue{}
type SRuleResult (line 146) | struct SRuleResult {
FILE: src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp
type Desktop::Rule (line 8) | namespace Desktop::Rule {
type eWindowRuleEffect (line 9) | enum eWindowRuleEffect : uint8_t {
class CWindowRuleEffectContainer (line 73) | class CWindowRuleEffectContainer : public IEffectContainer<eWindowRule...
FILE: src/desktop/state/FocusState.cpp
type SFullscreenWorkspaceFocusResult (line 26) | struct SFullscreenWorkspaceFocusResult {
function SFullscreenWorkspaceFocusResult (line 30) | static SFullscreenWorkspaceFocusResult onFullscreenWorkspaceFocusWindow(...
function PHLWINDOW (line 289) | PHLWINDOW CFocusState::window() {
function PHLMONITOR (line 293) | PHLMONITOR CFocusState::monitor() {
FILE: src/desktop/state/FocusState.hpp
class CWLSurfaceResource (line 6) | class CWLSurfaceResource
type Desktop (line 8) | namespace Desktop {
type eFocusReason (line 9) | enum eFocusReason : uint8_t {
class CFocusState (line 22) | class CFocusState {
method CFocusState (line 27) | CFocusState(CFocusState&&) = delete;
method CFocusState (line 28) | CFocusState(CFocusState&) = delete;
method CFocusState (line 29) | CFocusState(const CFocusState&) = delete;
FILE: src/desktop/types/OverridableVar.hpp
type Desktop::Types (line 10) | namespace Desktop::Types {
type SAlphaValue (line 12) | struct SAlphaValue {
method applyAlpha (line 16) | float applyAlpha(float a) const {
type eOverridePriority (line 24) | enum eOverridePriority : uint8_t {
function T (line 34) | T clampOptional(T const& value, std::optional<T> const& min, std::opti...
class COverridableVar (line 39) | class COverridableVar {
method COverridableVar (line 41) | COverridableVar(T const& value, eOverridePriority priority) {
method COverridableVar (line 45) | COverridableVar(T const& value) : m_defaultValue{value} {}
method COverridableVar (line 46) | COverridableVar(T const& value, std::optional<T> const& min, std::op...
method COverridableVar (line 47) | COverridableVar(std::string const& value)
method COverridableVar (line 50) | COverridableVar(std::string const& value, std::optional<T> const& mi...
method COverridableVar (line 54) | COverridableVar() = default;
method COverridableVar (line 57) | COverridableVar& operator=(COverridableVar<T> const& other) {
method set (line 72) | void set(T value, eOverridePriority priority) {
method unset (line 76) | void unset(eOverridePriority priority) {
method hasValue (line 80) | bool hasValue() const {
method T (line 84) | T value() const {
method T (line 92) | T valueOr(T const& other) const {
method T (line 99) | T valueOrDefault() const
method T (line 110) | T valueOrDefault() const
method eOverridePriority (line 121) | eOverridePriority getPriority() const {
method increment (line 130) | void increment(T const& other, eOverridePriority priority) {
method matchOptional (line 137) | void matchOptional(std::optional<T> const& optValue, eOverridePriori...
FILE: src/desktop/view/GlobalViewMethods.hpp
type Desktop::View (line 9) | namespace Desktop::View {
FILE: src/desktop/view/Group.cpp
function PHLWINDOW (line 236) | PHLWINDOW CGroup::head() const {
function PHLWINDOW (line 240) | PHLWINDOW CGroup::tail() const {
function PHLWINDOW (line 244) | PHLWINDOW CGroup::current() const {
function PHLWINDOW (line 248) | PHLWINDOW CGroup::next() const {
function PHLWINDOW (line 252) | PHLWINDOW CGroup::fromIndex(size_t idx) const {
FILE: src/desktop/view/Group.hpp
type Layout (line 8) | namespace Layout {
class CWindowGroupTarget (line 9) | class CWindowGroupTarget
type Desktop::View (line 12) | namespace Desktop::View {
class CGroup (line 13) | class CGroup {
FILE: src/desktop/view/LayerSurface.cpp
function PHLLS (line 19) | PHLLS CLayerSurface::create(SP<CLayerShellResource> resource) {
function PHLLS (line 59) | PHLLS CLayerSurface::fromView(SP<IView> v) {
function eViewType (line 90) | eViewType CLayerSurface::type() const {
function MONITORID (line 434) | MONITORID CLayerSurface::monitorID() {
function pid_t (line 438) | pid_t CLayerSurface::getPID() {
FILE: src/desktop/view/LayerSurface.hpp
class CLayerShellResource (line 11) | class CLayerShellResource
type Desktop::View (line 13) | namespace Desktop::View {
class CLayerSurface (line 15) | class CLayerSurface : public IView {
function valid (line 89) | inline bool valid(PHLLS l) {
function valid (line 93) | inline bool valid(PHLLSREF l) {
function validMapped (line 97) | inline bool validMapped(PHLLS l) {
function validMapped (line 103) | inline bool validMapped(PHLLSREF l) {
FILE: src/desktop/view/Popup.cpp
function eViewType (line 67) | eViewType CPopup::type() const {
function Vector2D (line 355) | Vector2D CPopup::coordsRelativeToParent() const {
function Vector2D (line 375) | Vector2D CPopup::coordsGlobal() const {
function Vector2D (line 379) | Vector2D CPopup::localToGlobal(const Vector2D& rel) const {
function Vector2D (line 383) | Vector2D CPopup::t1ParentCoords() const {
function Vector2D (line 420) | Vector2D CPopup::size() const {
function PHLMONITOR (line 497) | PHLMONITOR CPopup::getMonitor() const {
FILE: src/desktop/view/Popup.hpp
class CXDGPopupResource (line 11) | class CXDGPopupResource
type Desktop::View (line 13) | namespace Desktop::View {
class CPopup (line 15) | class CPopup : public IView {
FILE: src/desktop/view/SessionLock.cpp
function eViewType (line 42) | eViewType View::CSessionLock::type() const {
function PHLMONITOR (line 70) | PHLMONITOR View::CSessionLock::monitor() const {
FILE: src/desktop/view/SessionLock.hpp
class CSessionLockSurface (line 8) | class CSessionLockSurface
type Desktop::View (line 10) | namespace Desktop::View {
class CSessionLock (line 11) | class CSessionLock : public IView {
FILE: src/desktop/view/Subsurface.cpp
function eViewType (line 66) | eViewType CSubsurface::type() const {
function Vector2D (line 235) | Vector2D CSubsurface::coordsRelativeToParent() const {
function Vector2D (line 241) | Vector2D CSubsurface::coordsGlobal() const {
function Vector2D (line 260) | Vector2D CSubsurface::size() {
FILE: src/desktop/view/Subsurface.hpp
class CWLSubsurfaceResource (line 8) | class CWLSubsurfaceResource
type Desktop::View (line 10) | namespace Desktop::View {
class CPopup (line 11) | class CPopup
class CSubsurface (line 12) | class CSubsurface : public IView {
FILE: src/desktop/view/View.hpp
type Desktop::View (line 6) | namespace Desktop::View {
type eViewType (line 7) | enum eViewType : uint8_t {
class IView (line 15) | class IView {
FILE: src/desktop/view/WLSurface.cpp
function Vector2D (line 53) | Vector2D CWLSurface::correctSmallVec() const {
function Vector2D (line 64) | Vector2D CWLSurface::correctSmallVecBuf() const {
function Vector2D (line 74) | Vector2D CWLSurface::getViewporterCorrectedSize() const {
function CRegion (line 81) | CRegion CWLSurface::computeDamage() const {
FILE: src/desktop/view/WLSurface.hpp
class CPointerConstraint (line 7) | class CPointerConstraint
class CWLSurfaceResource (line 8) | class CWLSurfaceResource
type Desktop::View (line 10) | namespace Desktop::View {
class CSubsurface (line 11) | class CSubsurface
class CPopup (line 12) | class CPopup
class IView (line 13) | class IView
class CWLSurface (line 15) | class CWLSurface {
method create (line 17) | static SP<Desktop::View::CWLSurface> create() {
method CWLSurface (line 29) | CWLSurface(const CWLSurface&) = delete;
method CWLSurface (line 30) | CWLSurface(CWLSurface&&) = delete;
method CWLSurface (line 31) | CWLSurface& operator=(const CWLSurface&) = delete;
method CWLSurface (line 32) | CWLSurface& operator=(CWLSurface&&) = delete;
method CWLSurface (line 59) | CWLSurface& operator=(SP<CWLSurfaceResource> pSurface) {
method CWLSurface (line 95) | CWLSurface() = default;
FILE: src/desktop/view/Window.cpp
function PHLWINDOW (line 68) | PHLWINDOW CWindow::create(SP<CXWaylandSurface> surface) {
function PHLWINDOW (line 95) | PHLWINDOW CWindow::create(SP<CXDGSurfaceResource> resource) {
function eViewType (line 164) | eViewType CWindow::type() const {
function SBoxExtents (line 184) | SBoxExtents CWindow::getFullWindowExtents() const {
function CBox (line 242) | CBox CWindow::getFullWindowBoundingBox() const {
function CBox (line 256) | CBox CWindow::getWindowIdealBoundingBoxIgnoreReserved() {
function SBoxExtents (line 295) | SBoxExtents CWindow::getWindowExtentsUnified(uint64_t properties) {
function CBox (line 307) | CBox CWindow::getWindowBoxUnified(uint64_t properties) {
function SBoxExtents (line 323) | SBoxExtents CWindow::getFullWindowReservedArea() {
function pid_t (line 405) | pid_t CWindow::getPID() {
function IHyprWindowDecoration (line 422) | IHyprWindowDecoration* CWindow::getDecorationByType(eDecorationType type) {
function PHLWINDOW (line 528) | PHLWINDOW CWindow::x11TransientFor() {
function Vector2D (line 744) | Vector2D CWindow::middle() {
function WORKSPACEID (line 953) | WORKSPACEID CWindow::workspaceID() {
function MONITORID (line 957) | MONITORID CWindow::monitorID() {
function PHLWINDOW (line 1262) | PHLWINDOW CWindow::getSwallower() {
function Vector2D (line 1325) | Vector2D CWindow::realToReportSize() {
function Vector2D (line 1341) | Vector2D CWindow::realToReportPosition() {
function Vector2D (line 1348) | Vector2D CWindow::xwaylandSizeToReal(Vector2D size) {
function Vector2D (line 1358) | Vector2D CWindow::xwaylandPositionToReal(Vector2D pos) {
function PHLWINDOW (line 1445) | PHLWINDOW CWindow::parent() {
function Vector2D (line 1501) | Vector2D CWindow::getReportedSize() {
function setVector2DAnimToMove (line 1625) | static void setVector2DAnimToMove(WP<CBaseAnimatedVariable> pav) {
FILE: src/desktop/view/Window.hpp
class CXDGSurfaceResource (line 24) | class CXDGSurfaceResource
class CXWaylandSurface (line 25) | class CXWaylandSurface
type SWorkspaceRule (line 26) | struct SWorkspaceRule
class IWindowTransformer (line 28) | class IWindowTransformer
type Layout (line 30) | namespace Layout {
class ITarget (line 31) | class ITarget
class CWindowTarget (line 32) | class CWindowTarget
type Desktop (line 35) | namespace Desktop {
type eFocusReason (line 36) | enum eFocusReason : uint8_t
type Desktop::View (line 39) | namespace Desktop::View {
class CGroup (line 41) | class CGroup
type eGroupRules (line 43) | enum eGroupRules : uint8_t {
type eGetWindowProperties (line 56) | enum eGetWindowProperties : uint8_t {
type eSuppressEvents (line 68) | enum eSuppressEvents : uint8_t {
type SWindowActiveEvent (line 77) | struct SWindowActiveEvent {
type SInitialWorkspaceToken (line 82) | struct SInitialWorkspaceToken {
type SFullscreenState (line 87) | struct SFullscreenState {
class CWindow (line 92) | class CWindow : public IView {
method CBox (line 354) | CBox getWindowMainSurfaceBox() const {
function valid (line 397) | inline bool valid(PHLWINDOW w) {
function valid (line 401) | inline bool valid(PHLWINDOWREF w) {
function validMapped (line 405) | inline bool validMapped(PHLWINDOW w) {
function validMapped (line 411) | inline bool validMapped(PHLWINDOWREF w) {
type std::formatter<PHLWINDOW, CharT> (line 427) | struct std::formatter<PHLWINDOW, CharT> : std::formatter<CharT> {
method format (line 440) | auto format(PHLWINDOW const& w, FormatContext& ctx) const {
FILE: src/devices/IHID.cpp
function eHIDType (line 3) | eHIDType IHID::getType() {
FILE: src/devices/IHID.hpp
type eHIDCapabilityType (line 7) | enum eHIDCapabilityType : uint8_t {
type eHIDType (line 14) | enum eHIDType : uint8_t {
class IHID (line 28) | class IHID {
FILE: src/devices/IKeyboard.cpp
function eHIDType (line 26) | eHIDType IKeyboard::getType() {
FILE: src/devices/IKeyboard.hpp
type eKeyboardModifiers (line 13) | enum eKeyboardModifiers {
class IKeyboard (line 24) | class IKeyboard : public IHID {
method wl_client (line 30) | virtual wl_client* getClient() {
type SKeyEvent (line 35) | struct SKeyEvent {
type SKeymapEvent (line 42) | struct SKeymapEvent {
type SModifiersEvent (line 46) | struct SModifiersEvent {
type SStringRuleNames (line 60) | struct SStringRuleNames {
FILE: src/devices/IPointer.cpp
function eHIDType (line 7) | eHIDType IPointer::getType() {
FILE: src/devices/IPointer.hpp
class IPointer (line 12) | class IPointer : public IHID {
type SMotionEvent (line 19) | struct SMotionEvent {
type SMotionAbsoluteEvent (line 26) | struct SMotionAbsoluteEvent {
type SButtonEvent (line 32) | struct SButtonEvent {
type SAxisEvent (line 39) | struct SAxisEvent {
type SSwipeBeginEvent (line 49) | struct SSwipeBeginEvent {
type SSwipeUpdateEvent (line 54) | struct SSwipeUpdateEvent {
type SSwipeEndEvent (line 60) | struct SSwipeEndEvent {
type SPinchBeginEvent (line 65) | struct SPinchBeginEvent {
type SPinchUpdateEvent (line 70) | struct SPinchUpdateEvent {
type SPinchEndEvent (line 77) | struct SPinchEndEvent {
type SHoldBeginEvent (line 82) | struct SHoldBeginEvent {
type SHoldEndEvent (line 87) | struct SHoldEndEvent {
FILE: src/devices/ITouch.cpp
function eHIDType (line 7) | eHIDType ITouch::getType() {
FILE: src/devices/ITouch.hpp
class ITouch (line 9) | class ITouch : public IHID {
type SDownEvent (line 16) | struct SDownEvent {
type SUpEvent (line 23) | struct SUpEvent {
type SMotionEvent (line 28) | struct SMotionEvent {
type SCancelEvent (line 34) | struct SCancelEvent {
FILE: src/devices/Keyboard.hpp
class CKeyboard (line 5) | class CKeyboard : public IKeyboard {
FILE: src/devices/Mouse.hpp
class CMouse (line 5) | class CMouse : public IPointer {
FILE: src/devices/Tablet.cpp
function aqUpdateToHl (line 37) | static uint32_t aqUpdateToHl(uint32_t aq) {
function eHIDType (line 131) | eHIDType CTablet::getType() {
function eHIDType (line 143) | eHIDType CTabletPad::getType() {
function eHIDType (line 205) | eHIDType CTabletTool::getType() {
FILE: src/devices/Tablet.hpp
class CTabletTool (line 11) | class CTabletTool
type eTabletToolType (line 175) | enum eTabletToolType : uint8_t {
type eTabletToolCapabilities (line 186) | enum eTabletToolCapabilities : uint8_t {
class CTabletPad (line 12) | class CTabletPad
type SButtonEvent (line 122) | struct SButtonEvent {
type SRingEvent (line 130) | struct SRingEvent {
type SStripEvent (line 138) | struct SStripEvent {
class CWLSurfaceResource (line 13) | class CWLSurfaceResource
class CTablet (line 20) | class CTablet : public IHID {
type eTabletToolAxes (line 29) | enum eTabletToolAxes : uint16_t {
type SAxisEvent (line 41) | struct SAxisEvent {
type SProximityEvent (line 57) | struct SProximityEvent {
type STipEvent (line 66) | struct STipEvent {
type SButtonEvent (line 75) | struct SButtonEvent {
class CTabletPad (line 113) | class CTabletPad : public IHID {
type SButtonEvent (line 122) | struct SButtonEvent {
type SRingEvent (line 130) | struct SRingEvent {
type SStripEvent (line 138) | struct SStripEvent {
class CTabletTool (line 170) | class CTabletTool : public IHID {
type eTabletToolType (line 175) | enum eTabletToolType : uint8_t {
type eTabletToolCapabilities (line 186) | enum eTabletToolCapabilities : uint8_t {
FILE: src/devices/TouchDevice.hpp
class CTouchDevice (line 5) | class CTouchDevice : public ITouch {
FILE: src/devices/VirtualKeyboard.cpp
function wl_client (line 62) | wl_client* CVirtualKeyboard::getClient() {
FILE: src/devices/VirtualKeyboard.hpp
class CVirtualKeyboardV1Resource (line 5) | class CVirtualKeyboardV1Resource
class CVirtualKeyboard (line 7) | class CVirtualKeyboard : public IKeyboard {
FILE: src/devices/VirtualPointer.hpp
class CVirtualPointerV1Resource (line 5) | class CVirtualPointerV1Resource
class CVirtualPointer (line 7) | class CVirtualPointer : public IPointer {
FILE: src/event/EventBus.hpp
type Desktop (line 16) | namespace Desktop {
type eFocusReason (line 17) | enum eFocusReason : uint8_t
type Event (line 19) | namespace Event {
type SCallbackInfo (line 20) | struct SCallbackInfo {
class CEventBus (line 24) | class CEventBus {
method CEventBus (line 26) | CEventBus() = default;
FILE: src/helpers/AnimatedVariable.hpp
type eAVarDamagePolicy (line 9) | enum eAVarDamagePolicy : int8_t {
type eAnimatedVarType (line 16) | enum eAnimatedVarType : int8_t {
type STypeToAnimatedVarType_t (line 26) | struct STypeToAnimatedVarType_t {
type STypeToAnimatedVarType_t<float> (line 31) | struct STypeToAnimatedVarType_t<float> {
type STypeToAnimatedVarType_t<Vector2D> (line 36) | struct STypeToAnimatedVarType_t<Vector2D> {
type STypeToAnimatedVarType_t<CHyprColor> (line 41) | struct STypeToAnimatedVarType_t<CHyprColor> {
type SAnimationContext (line 58) | struct SAnimationContext {
FILE: src/helpers/AsyncDialogBox.cpp
function onFdWrite (line 48) | static int onFdWrite(int fd, uint32_t mask, void* data) {
function pid_t (line 155) | pid_t CAsyncDialogBox::getPID() const {
FILE: src/helpers/AsyncDialogBox.hpp
type wl_event_source (line 13) | struct wl_event_source
class CAsyncDialogBox (line 15) | class CAsyncDialogBox {
method CAsyncDialogBox (line 21) | CAsyncDialogBox(const CAsyncDialogBox&) = delete;
method CAsyncDialogBox (line 22) | CAsyncDialogBox(CAsyncDialogBox&&) = delete;
method CAsyncDialogBox (line 23) | CAsyncDialogBox& operator=(const CAsyncDialogBox&) = delete;
method CAsyncDialogBox (line 24) | CAsyncDialogBox& operator=(CAsyncDialogBox&&) = delete;
FILE: src/helpers/ByteOperations.hpp
function ULL (line 8) | constexpr ULL operator""_kB(const ULL BYTES) {
function ULL (line 11) | constexpr ULL operator""_MB(const ULL BYTES) {
function ULL (line 14) | constexpr ULL operator""_GB(const ULL BYTES) {
function ULL (line 17) | constexpr ULL operator""_TB(const ULL BYTES) {
function LD (line 20) | constexpr LD operator""_kB(const LD BYTES) {
function LD (line 23) | constexpr LD operator""_MB(const LD BYTES) {
function LD (line 26) | constexpr LD operator""_GB(const LD BYTES) {
function LD (line 29) | constexpr LD operator""_TB(const LD BYTES) {
function X (line 38) | constexpr X kBtoBytes(const X kB) {
function X (line 42) | constexpr X MBtoBytes(const X MB) {
function X (line 46) | constexpr X GBtoBytes(const X GB) {
function X (line 50) | constexpr X TBtoBytes(const X TB) {
FILE: src/helpers/CMType.hpp
type NCMType (line 5) | namespace NCMType {
type eCMType (line 6) | enum eCMType : uint8_t {
FILE: src/helpers/Color.cpp
function CHyprColor (line 43) | CHyprColor CHyprColor::stripA() const {
function CHyprColor (line 47) | CHyprColor CHyprColor::modifyA(float newa) const {
FILE: src/helpers/Color.hpp
class CHyprColor (line 7) | class CHyprColor {
method CHyprColor (line 28) | CHyprColor operator-(const CHyprColor& c2) const {
method CHyprColor (line 33) | CHyprColor operator+(const CHyprColor& c2) const {
method CHyprColor (line 38) | CHyprColor operator*(const float& c2) const {
type Colors (line 50) | namespace Colors {
FILE: src/helpers/DamageRing.cpp
function CRegion (line 32) | CRegion CDamageRing::getBufferDamage(int age) {
FILE: src/helpers/DamageRing.hpp
class CDamageRing (line 8) | class CDamageRing {
FILE: src/helpers/Drm.hpp
type DRM (line 3) | namespace DRM {
FILE: src/helpers/Format.cpp
function SHMFormat (line 226) | SHMFormat NFormatUtils::drmToShm(DRMFormat drm) {
function DRMFormat (line 236) | DRMFormat NFormatUtils::shmToDRM(SHMFormat shm) {
function SPixelFormat (line 246) | const SPixelFormat* NFormatUtils::getPixelFormatFromDRM(DRMFormat drm) {
function SPixelFormat (line 255) | const SPixelFormat* NFormatUtils::getPixelFormatFromGL(uint32_t glFormat...
function DRMFormat (line 322) | DRMFormat NFormatUtils::alphaFormat(DRMFormat prevFormat) {
FILE: src/helpers/Format.hpp
type SPixelFormat (line 32) | struct SPixelFormat {
type NFormatUtils (line 46) | namespace NFormatUtils {
FILE: src/helpers/MainLoopExecutor.cpp
function onDataRead (line 6) | static int onDataRead(int fd, uint32_t mask, void* data) {
FILE: src/helpers/MainLoopExecutor.hpp
class CMainLoopExecutor (line 7) | class CMainLoopExecutor {
FILE: src/helpers/MiscFunctions.cpp
function absolutePath (line 58) | std::string absolutePath(const std::string& rawpath, const std::string& ...
function escapeJSONStrings (line 82) | std::string escapeJSONStrings(const std::string& str) {
function getPlusMinusKeywordResult (line 104) | std::optional<float> getPlusMinusKeywordResult(std::string source, float...
function isDirection (line 113) | bool isDirection(const std::string& arg) {
function isDirection (line 117) | bool isDirection(const char& arg) {
function isAutoIDdWorkspace (line 121) | static bool isAutoIDdWorkspace(WORKSPACEID id) {
function SWorkspaceIDName (line 125) | SWorkspaceIDName getWorkspaceIDNameFromString(const std::string& in) {
function cleanCmdForWorkspace (line 471) | std::optional<std::string> cleanCmdForWorkspace(const std::string& inWor...
function vecToRectDistanceSquared (line 508) | float vecToRectDistanceSquared(const Vector2D& vec, const Vector2D& p1, ...
function execAndGet (line 515) | std::string execAndGet(const char* cmd) {
function logSystemInfo (line 524) | void logSystemInfo() {
function getPPIDof (line 572) | int64_t getPPIDof(int64_t pid) {
function configStringToInt (line 621) | std::expected<int64_t, std::string> configStringToInt(const std::string&...
function Vector2D (line 708) | Vector2D configStringToVector2D(const std::string& VALUE) {
function normalizeAngleRad (line 734) | double normalizeAngleRad(double ang) {
function getBacktrace (line 750) | std::vector<SCallstackFrameInfo> getBacktrace() {
function throwError (line 771) | void throwError(const std::string& err) {
function openExclusiveShm (line 776) | std::pair<CFileDescriptor, std::string> openExclusiveShm() {
function CFileDescriptor (line 789) | CFileDescriptor allocateSHMFile(size_t len) {
function allocateSHMFilePair (line 808) | bool allocateSHMFilePair(size_t size, CFileDescriptor& rw_fd_ptr, CFileD...
function stringToPercentage (line 842) | float stringToPercentage(const std::string& VALUE, const float REL) {
function isNvidiaDriverVersionAtLeast (line 852) | bool isNvidiaDriverVersionAtLeast(int threshold) {
function binaryNameForWlClient (line 884) | std::expected<std::string, std::string> binaryNameForWlClient(wl_client*...
function binaryNameForPid (line 894) | std::expected<std::string, std::string> binaryNameForPid(pid_t pid) {
function deviceNameToInternalString (line 929) | std::string deviceNameToInternalString(std::string in) {
function getSystemLibraryVersion (line 940) | std::string getSystemLibraryVersion(const std::string& name) {
function getBuiltSystemLibraryNames (line 965) | std::string getBuiltSystemLibraryNames() {
function truthy (line 975) | bool truthy(const std::string& str) {
FILE: src/helpers/MiscFunctions.hpp
type SCallstackFrameInfo (line 12) | struct SCallstackFrameInfo {
type SWorkspaceIDName (line 17) | struct SWorkspaceIDName {
function getFormat (line 51) | [[deprecated("use std::format instead")]] std::string getFormat(std::for...
FILE: src/helpers/Monitor.cpp
function chooseTF (line 500) | static NColorManagement::eTransferFunction chooseTF(NTransferFunction::e...
function WORKSPACEID (line 1150) | WORKSPACEID CMonitor::findAvailableDefaultWS() {
function shouldWraparound (line 1322) | static bool shouldWraparound(const WORKSPACEID id1, const WORKSPACEID id...
function Vector2D (line 1589) | Vector2D CMonitor::middle() {
function Mat3x3 (line 1593) | const Mat3x3& CMonitor::getTransformMatrix() {
function Mat3x3 (line 1597) | const Mat3x3& CMonitor::getScaleMatrix() {
function WORKSPACEID (line 1609) | WORKSPACEID CMonitor::activeWorkspaceID() {
function WORKSPACEID (line 1613) | WORKSPACEID CMonitor::activeSpecialWorkspaceID() {
function CBox (line 1617) | CBox CMonitor::logicalBox() {
function CBox (line 1621) | CBox CMonitor::logicalBoxMinusReserved() {
function PHLWINDOW (line 2170) | PHLWINDOW CMonitor::getFullscreenWindow() {
function resampleInterleavedToKms (line 2263) | static std::vector<uint16_t> resampleInterleavedToKms(const SVCGTTable16...
FILE: src/helpers/Monitor.hpp
class CMonitorFrameScheduler (line 30) | class CMonitorFrameScheduler
type eAutoDirs (line 33) | enum eAutoDirs : uint8_t {
type SMonitorRule (line 45) | struct SMonitorRule {
class CMonitor (line 77) | class CMonitor
type eDSBlockReason (line 240) | enum eDSBlockReason : uint16_t {
type eSolitaryCheck (line 261) | enum eSolitaryCheck : uint32_t {
type eTearingCheck (line 286) | enum eTearingCheck : uint8_t {
class CSyncTimeline (line 78) | class CSyncTimeline
class CEGLSync (line 79) | class CEGLSync
class CEventLoopTimer (line 80) | class CEventLoopTimer
class CMonitorState (line 82) | class CMonitorState {
class CMonitor (line 97) | class CMonitor {
type eDSBlockReason (line 240) | enum eDSBlockReason : uint16_t {
type eSolitaryCheck (line 261) | enum eSolitaryCheck : uint32_t {
type eTearingCheck (line 286) | enum eTearingCheck : uint8_t {
FILE: src/helpers/MonitorFrameScheduler.hpp
class CEGLSync (line 7) | class CEGLSync
class CMonitorFrameScheduler (line 9) | class CMonitorFrameScheduler {
method CMonitorFrameScheduler (line 15) | CMonitorFrameScheduler(const CMonitorFrameScheduler&) = del...
method CMonitorFrameScheduler (line 16) | CMonitorFrameScheduler(CMonitorFrameScheduler&&) = del...
method CMonitorFrameScheduler (line 17) | CMonitorFrameScheduler& operator=(const CMonitorFrameScheduler&) = del...
method CMonitorFrameScheduler (line 18) | CMonitorFrameScheduler& operator=(CMonitorFrameScheduler&&) = del...
FILE: src/helpers/MonitorZoomController.hpp
type SRenderData (line 5) | struct SRenderData
class CMonitorZoomController (line 7) | class CMonitorZoomController {
FILE: src/helpers/SdDaemon.cpp
type sockaddr_un (line 41) | struct sockaddr_un
type sockaddr_un (line 50) | struct sockaddr_un
FILE: src/helpers/SdDaemon.hpp
type NSystemd (line 3) | namespace NSystemd {
FILE: src/helpers/Splashes.hpp
type NSplashes (line 6) | namespace NSplashes {
FILE: src/helpers/TagKeeper.hpp
class CTagKeeper (line 6) | class CTagKeeper {
FILE: src/helpers/TransferFunction.cpp
function eTF (line 14) | eTF NTransferFunction::fro...
function eTF (line 29) | eTF NTransferFunction::fromConfig(bool useICC) {
FILE: src/helpers/TransferFunction.hpp
type NTransferFunction (line 6) | namespace NTransferFunction {
type eTF (line 7) | enum eTF : uint8_t {
FILE: src/helpers/WLClasses.hpp
class CMonitor (line 12) | class CMonitor
class IPointer (line 13) | class IPointer
class IKeyboard (line 14) | class IKeyboard
class CWLSurfaceResource (line 15) | class CWLSurfaceResource
type SSwitchDevice (line 19) | struct SSwitchDevice {
FILE: src/helpers/cm/ColorManagement.cpp
type NColorManagement (line 9) | namespace NColorManagement {
function SPCPRimaries (line 16) | const SPCPRimaries& NColorManagement::getPrimaries(ePrimaries name) {
function SPCPRimaries (line 55) | const SPCPRimaries& CPrimaries::value() const {
function uint (line 59) | uint CPrimaries::id() const {
function PImageDescription (line 80) | PImageDescription CImageDescription::from(const SImageDescription& image...
function PImageDescription (line 90) | PImageDescription CImageDescription::from(const uint32_t imageDescriptio...
function PImageDescription (line 95) | PImageDescription CImageDescription::with(const SImageDescription::SPCLu...
function SImageDescription (line 101) | const SImageDescription& CImageDescription::value() const {
function uint (line 105) | uint CImageDescription::id() const {
function Mat3x3 (line 113) | static Mat3x3 diag3(const std::array<float, 3>& s) {
function invertMat3 (line 117) | static std::optional<Mat3x3> invertMat3(const Mat3x3& m) {
function matByVec (line 152) | static std::array<float, 3> matByVec(const Mat3x3& M, const std::array<f...
function Mat3x3 (line 177) | Mat3x3 NColorManagement::adaptBradford(Hyprgraphics::CColor::xy srcW, Hy...
FILE: src/helpers/cm/ColorManagement.hpp
class ITexture (line 20) | class ITexture
type NColorManagement (line 22) | namespace NColorManagement {
type eNoShader (line 23) | enum eNoShader : uint8_t {
type ePrimaries (line 30) | enum ePrimaries : uint8_t {
type eTransferFunction (line 43) | enum eTransferFunction : uint8_t {
function wpColorManagerV1Primaries (line 61) | inline wpColorManagerV1Primaries convertPrimaries(ePrimaries primaries) {
function ePrimaries (line 64) | inline ePrimaries convertPrimaries(wpColorManagerV1Primaries primaries) {
function wpColorManagerV1TransferFunction (line 67) | inline wpColorManagerV1TransferFunction convertTransferFunction(eTrans...
function eTransferFunction (line 70) | inline eTransferFunction convertTransferFunction(wpColorManagerV1Trans...
type NColorPrimaries (line 76) | namespace NColorPrimaries {
type SVCGTTable16 (line 151) | struct SVCGTTable16 {
class CPrimaries (line 162) | class CPrimaries {
type SImageDescription (line 182) | struct SImageDescription {
type SPCLuminances (line 201) | struct SPCLuminances {
type SPCMasteringLuminances (line 209) | struct SPCMasteringLuminances {
type SICCData (line 218) | struct SICCData {
method SPCPRimaries (line 239) | const SPCPRimaries& getPrimaries() const {
method getTFMinLuminance (line 245) | float getTFMinLuminance(float sdrMinLuminance = -1.0f) const {
method getTFMaxLuminance (line 264) | float getTFMaxLuminance(int sdrMaxLuminance = -1) const {
method getTFRefLuminance (line 284) | float getTFRefLuminance(int sdrRefLuminance = -1) const {
class CImageDescription (line 304) | class CImageDescription {
FILE: src/helpers/cm/ICC.cpp
function readBinary (line 17) | static std::vector<uint8_t> readBinary(const std::filesystem::path& file) {
function bigEndianU16 (line 36) | static uint16_t bigEndianU16(const uint8_t* p) {
function bigEndianU32 (line 40) | static uint32_t bigEndianU32(const uint8_t* p) {
function cmsTagSignature (line 44) | static constexpr cmsTagSignature makeSig(char a, char b, char c, char d) {
function readVCGT16 (line 52) | static std::expected<std::optional<SVCGTTable16>, std::string> readVCGT1...
type CmsProfileDeleter (line 136) | struct CmsProfileDeleter {
type CmsTransformDeleter (line 142) | struct CmsTransformDeleter {
function UniqueProfile (line 152) | static UniqueProfile createLinearSRGBProfile() {
function buildIcc3DLut (line 179) | static std::expected<void, std::string> buildIcc3DLut(cmsHPROFILE profil...
FILE: src/helpers/defer/Promise.hpp
class CPromise (line 10) | class CPromise
method CPromise (line 93) | CPromise(const CPromise&) = delete;
method CPromise (line 94) | CPromise(CPromise&&) = delete;
method CPromise (line 95) | CPromise& operator=(const CPromise&) = delete;
method CPromise (line 96) | CPromise& operator=(CPromise&&) = delete;
method make (line 98) | static SP<CPromise> make(const std::function<void(SP<CPromiseResolver<...
method then (line 104) | void then(std::function<void(SP<CPromiseResult<T>>)>&& fn) {
method CPromise (line 111) | CPromise() = default;
class CPromiseResult (line 12) | class CPromiseResult
method hasError (line 57) | bool hasError() {
method T (line 61) | T result() {
method error (line 65) | std::string error() {
method result (line 70) | static SP<CPromiseResult<T>> result(T result) {
method err (line 76) | static SP<CPromiseResult<T>> err(std::string reason) {
class CPromiseResolver (line 15) | class CPromiseResolver {
method CPromiseResolver (line 17) | CPromiseResolver(const CPromiseResolver&) = delete;
method CPromiseResolver (line 18) | CPromiseResolver(CPromiseResolver&&) = delete;
method CPromiseResolver (line 19) | CPromiseResolver& operator=(const CPromiseResolver&) = delete;
method CPromiseResolver (line 20) | CPromiseResolver& operator=(CPromiseResolver&&) = delete;
method resolve (line 22) | void resolve(T value) {
method reject (line 34) | void reject(const std::string& reason) {
method CPromiseResolver (line 47) | CPromiseResolver(SP<CPromise<T>> promise) : m_promise(promise) {}
class CPromiseResult (line 55) | class CPromiseResult {
method hasError (line 57) | bool hasError() {
method T (line 61) | T result() {
method error (line 65) | std::string error() {
method result (line 70) | static SP<CPromiseResult<T>> result(T result) {
method err (line 76) | static SP<CPromiseResult<T>> err(std::string reason) {
class CPromise (line 91) | class CPromise {
method CPromise (line 93) | CPromise(const CPromise&) = delete;
method CPromise (line 94) | CPromise(CPromise&&) = delete;
method CPromise (line 95) | CPromise& operator=(const CPromise&) = delete;
method CPromise (line 96) | CPromise& operator=(CPromise&&) = delete;
method make (line 98) | static SP<CPromise> make(const std::function<void(SP<CPromiseResolver<...
method then (line 104) | void then(std::function<void(SP<CPromiseResult<T>>)>&& fn) {
method CPromise (line 111) | CPromise() = default;
FILE: src/helpers/env/Env.hpp
type Env (line 5) | namespace Env {
FILE: src/helpers/fs/FsUtils.hpp
type NFsUtils (line 5) | namespace NFsUtils {
FILE: src/helpers/math/Direction.hpp
type Math (line 5) | namespace Math {
type eDirection (line 6) | enum eDirection : int8_t {
function eDirection (line 14) | inline eDirection fromChar(char x) {
FILE: src/helpers/math/Expression.hpp
type mu (line 7) | namespace mu {
class Parser (line 8) | class Parser
type Math (line 11) | namespace Math {
class CExpression (line 12) | class CExpression {
method CExpression (line 17) | CExpression(const CExpression&) = delete;
method CExpression (line 18) | CExpression(CExpression&) = delete;
method CExpression (line 19) | CExpression(CExpression&&) = delete;
FILE: src/helpers/math/Math.cpp
function eTransform (line 22) | eTransform Math::wlTransformToHyprutils(wl_output_transform t) {
function wl_output_transform (line 37) | wl_output_transform Math::invertTransform(wl_output_transform tr) {
function matEq (line 44) | static bool matEq(const Mat3x3& a, const Mat3x3& b) {
function eTransform (line 53) | static eTransform composeInternal(eTransform a, eTransform b) {
function eTransform (line 66) | eTransform Math::composeTransform(eTransform a, eTransform b) {
FILE: src/helpers/math/Math.hpp
type Math (line 12) | namespace Math {
FILE: src/helpers/sync/SyncReleaser.cpp
type sync_merge_data (line 9) | struct sync_merge_data {
function CFileDescriptor (line 38) | static CFileDescriptor mergeSyncFds(const CFileDescriptor& fd1, const CF...
FILE: src/helpers/sync/SyncReleaser.hpp
class CSyncTimeline (line 14) | class CSyncTimeline
class CSyncReleaser (line 16) | class CSyncReleaser {
FILE: src/helpers/sync/SyncTimeline.cpp
function CFileDescriptor (line 85) | CFileDescriptor CSyncTimeline::exportAsSyncFileFD(uint64_t src) {
FILE: src/helpers/sync/SyncTimeline.hpp
type wl_event_source (line 15) | struct wl_event_source
class CSyncTimeline (line 17) | class CSyncTimeline {
method CSyncTimeline (line 40) | CSyncTimeline() = default;
FILE: src/helpers/time/Time.cpp
function s_ns (line 8) | static s_ns timediff(const s_ns& a, const s_ns& b) {
function s_ns (line 22) | static s_ns timeadd(const s_ns& a, const s_ns& b) {
function s_ns (line 47) | s_ns Time::secNsec(const steady_tp& tp) {
function s_ns (line 57) | s_ns Time::secNsec(const system_tp& tp) {
type timespec (line 105) | struct timespec
FILE: src/helpers/time/Time.hpp
type Time (line 9) | namespace Time {
type timespec (line 19) | struct timespec
FILE: src/helpers/time/Timer.hpp
class CTimer (line 5) | class CTimer {
FILE: src/hyprerror/HyprError.hpp
class CHyprError (line 9) | class CHyprError {
FILE: src/i18n/Engine.hpp
type I18n (line 8) | namespace I18n {
type eI18nKeys (line 10) | enum eI18nKeys : uint8_t {
class CI18nEngine (line 49) | class CI18nEngine {
FILE: src/init/initHelpers.cpp
type sched_param (line 10) | struct sched_param
type sched_param (line 25) | struct sched_param
FILE: src/init/initHelpers.hpp
type NInit (line 5) | namespace NInit {
FILE: src/layout/LayoutManager.cpp
function canSnap (line 168) | static inline bool canSnap(const double SIDEA, const double SIDEB, const...
function snapMove (line 172) | static void snapMove(double& start, double& end, const double P) {
function snapResize (line 177) | static void snapResize(double& start, double& end, const double P) {
type SRange (line 202) | struct SRange {
FILE: src/layout/LayoutManager.hpp
type eFullscreenMode (line 12) | enum eFullscreenMode : int8_t
type Layout (line 14) | namespace Layout {
class ITarget (line 15) | class ITarget
class CSpace (line 16) | class CSpace
type eRectCorner (line 18) | enum eRectCorner : uint8_t {
function eRectCorner (line 26) | inline eRectCorner cornerFromBox(const CBox& box, const Vector2D& pos) {
type eSnapEdge (line 34) | enum eSnapEdge : uint8_t {
class CLayoutManager (line 42) | class CLayoutManager {
FILE: src/layout/algorithm/Algorithm.hpp
type Layout (line 12) | namespace Layout {
class ITarget (line 13) | class ITarget
class IFloatingAlgorithm (line 14) | class IFloatingAlgorithm
class ITiledAlgorithm (line 15) | class ITiledAlgorithm
class CSpace (line 16) | class CSpace
class CAlgorithm (line 18) | class CAlgorithm {
FILE: src/layout/algorithm/FloatingAlgorithm.hpp
type Layout (line 8) | namespace Layout {
class ITarget (line 10) | class ITarget
class CAlgorithm (line 11) | class CAlgorithm
class IFloatingAlgorithm (line 13) | class IFloatingAlgorithm : public IModeAlgorithm {
method IFloatingAlgorithm (line 28) | IFloatingAlgorithm() = default;
FILE: src/layout/algorithm/ModeAlgorithm.hpp
type Layout (line 11) | namespace Layout {
class ITarget (line 13) | class ITarget
class CAlgorithm (line 14) | class CAlgorithm
class IModeAlgorithm (line 16) | class IModeAlgorithm {
method IModeAlgorithm (line 51) | IModeAlgorithm() = default;
FILE: src/layout/algorithm/TiledAlgorithm.hpp
type Layout (line 8) | namespace Layout {
class ITarget (line 10) | class ITarget
class CAlgorithm (line 11) | class CAlgorithm
class ITiledAlgorithm (line 13) | class ITiledAlgorithm : public IModeAlgorithm {
method ITiledAlgorithm (line 20) | ITiledAlgorithm() = default;
FILE: src/layout/algorithm/floating/default/DefaultFloatingAlgorithm.cpp
function CBox (line 161) | CBox CDefaultFloatingAlgorithm::fitBoxInWorkArea(const CBox& box, SP<ITa...
FILE: src/layout/algorithm/floating/default/DefaultFloatingAlgorithm.hpp
type Layout (line 5) | namespace Layout {
class CAlgorithm (line 6) | class CAlgorithm
type Layout::Floating (line 9) | namespace Layout::Floating {
class CDefaultFloatingAlgorithm (line 10) | class CDefaultFloatingAlgorithm : public IFloatingAlgorithm {
method CDefaultFloatingAlgorithm (line 12) | CDefaultFloatingAlgorithm() = default;
type SWindowData (line 34) | struct SWindowData {
FILE: src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp
type Layout::Tiled::SDwindleNodeData (line 18) | struct Layout::Tiled::SDwindleNodeData {
method recalcSizePosRecursive (line 35) | void recalcSizePosRecursive(bool force = false, bool horizontalOverrid...
FILE: src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.hpp
type Layout (line 3) | namespace Layout {
class CAlgorithm (line 4) | class CAlgorithm
type Layout::Tiled (line 7) | namespace Layout::Tiled {
type SDwindleNodeData (line 8) | struct SDwindleNodeData
class CDwindleAlgorithm (line 10) | class CDwindleAlgorithm : public ITiledAlgorithm {
method CDwindleAlgorithm (line 12) | CDwindleAlgorithm() = default;
FILE: src/layout/algorithm/tiled/master/MasterAlgorithm.cpp
type Layout::Tiled::SMasterNodeData (line 19) | struct Layout::Tiled::SMasterNodeData {
function eOrientation (line 845) | eOrientation CMasterAlgorithm::defaultOrientation() {
function eOrientation (line 905) | eOrientation CMasterAlgorithm::getDynamicOrientation() {
FILE: src/layout/algorithm/tiled/master/MasterAlgorithm.hpp
type Layout (line 5) | namespace Layout {
class CAlgorithm (line 6) | class CAlgorithm
type Layout::Tiled (line 9) | namespace Layout::Tiled {
type SMasterNodeData (line 10) | struct SMasterNodeData
type eOrientation (line 13) | enum eOrientation : uint8_t {
type SMasterWorkspaceData (line 21) | struct SMasterWorkspaceData {
class CMasterAlgorithm (line 33) | class CMasterAlgorithm : public ITiledAlgorithm {
method CMasterAlgorithm (line 35) | CMasterAlgorithm() = default;
FILE: src/layout/algorithm/tiled/monocle/MonocleAlgorithm.hpp
type Layout::Tiled (line 8) | namespace Layout::Tiled {
type SMonocleTargetData (line 10) | struct SMonocleTargetData {
method SMonocleTargetData (line 11) | SMonocleTargetData(SP<ITarget> t) : target(t) {
class CMonocleAlgorithm (line 19) | class CMonocleAlgorithm : public ITiledAlgorithm {
FILE: src/layout/algorithm/tiled/scrolling/ScrollTapeController.cpp
function eScrollDirection (line 16) | eScrollDirection CScrollTapeController::getDirection() const {
function SStripData (line 32) | SStripData& CScrollTapeController::getStrip(size_t index) {
function SStripData (line 36) | const SStripData& CScrollTapeController::getStrip(size_t index) const {
function Vector2D (line 98) | Vector2D CScrollTapeController::makeVector(double primary, double second...
function CBox (line 149) | CBox CScrollTapeController::calculateTargetBox(size_t stripIndex, size_t...
function Vector2D (line 215) | Vector2D CScrollTapeController::getCameraTranslation(const CBox& usableA...
FILE: src/layout/algorithm/tiled/scrolling/ScrollTapeController.hpp
type Layout::Tiled (line 7) | namespace Layout::Tiled {
type SColumnData (line 9) | struct SColumnData
type eScrollDirection (line 11) | enum eScrollDirection : uint8_t {
type SStripData (line 18) | struct SStripData {
method SStripData (line 23) | SStripData() = default;
type STapeLayoutResult (line 26) | struct STapeLayoutResult {
class CScrollTapeController (line 32) | class CScrollTapeController {
FILE: src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
function eScrollDirection (line 1490) | eScrollDirection CScrollingAlgorithm::getDynamicDirection() {
function CBox (line 1514) | CBox CScrollingAlgorithm::usableArea() {
FILE: src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
type Layout::Tiled (line 10) | namespace Layout::Tiled {
class CScrollingAlgorithm (line 11) | class CScrollingAlgorithm
type eInputMode (line 114) | enum eInputMode : uint8_t {
type SColumnData (line 12) | struct SColumnData
method SColumnData (line 28) | SColumnData(SP<SScrollingData> data) : scrollingData(data) {
type SScrollingData (line 13) | struct SScrollingData
type SScrollingTargetData (line 15) | struct SScrollingTargetData {
method SScrollingTargetData (line 16) | SScrollingTargetData(SP<ITarget> t, SP<SColumnData> col) : target(t)...
type SColumnData (line 27) | struct SColumnData {
method SColumnData (line 28) | SColumnData(SP<SScrollingData> data) : scrollingData(data) {
type SScrollingData (line 64) | struct SScrollingData {
class CScrollingAlgorithm (line 92) | class CScrollingAlgorithm : public ITiledAlgorithm {
type eInputMode (line 114) | enum eInputMode : uint8_t {
FILE: src/layout/space/Space.cpp
function CBox (line 107) | const CBox& CSpace::workArea(bool floating) const {
function PHLWORKSPACE (line 111) | PHLWORKSPACE CSpace::workspace() const {
function CBox (line 125) | CBox CSpace::targetPositionLocal(SP<ITarget> t) const {
FILE: src/layout/space/Space.hpp
type Layout (line 14) | namespace Layout {
class ITarget (line 15) | class ITarget
class CAlgorithm (line 16) | class CAlgorithm
class CSpace (line 18) | class CSpace {
FILE: src/layout/supplementary/DragController.cpp
function eMouseBindMode (line 18) | eMouseBindMode CDragStateController::mode() const {
FILE: src/layout/supplementary/DragController.hpp
type Layout (line 6) | namespace Layout {
type eRectCorner (line 7) | enum eRectCorner : uint8_t
type Layout::Supplementary (line 10) | namespace Layout::Supplementary {
class CDragStateController (line 14) | class CDragStateController {
method CDragStateController (line 16) | CDragStateController() = default;
FILE: src/layout/supplementary/WorkspaceAlgoMatcher.hpp
type Layout (line 10) | namespace Layout {
class CAlgorithm (line 11) | class CAlgorithm
class ITiledAlgorithm (line 12) | class ITiledAlgorithm
class IFloatingAlgorithm (line 13) | class IFloatingAlgorithm
type Layout::Supplementary (line 16) | namespace Layout::Supplementary {
class CWorkspaceAlgoMatcher (line 17) | class CWorkspaceAlgoMatcher {
FILE: src/layout/target/Target.cpp
function PHLWORKSPACE (line 57) | PHLWORKSPACE ITarget::workspace() const {
function CBox (line 64) | CBox ITarget::position() const {
function Vector2D (line 72) | Vector2D ITarget::lastFloatingSize() const {
function Vector2D (line 99) | Vector2D ITarget::pseudoSize() {
FILE: src/layout/target/Target.hpp
type Layout (line 10) | namespace Layout {
type eTargetType (line 11) | enum eTargetType : uint8_t {
type eGeometryFailure (line 16) | enum eGeometryFailure : uint8_t {
class CSpace (line 21) | class CSpace
type SGeometryRequested (line 23) | struct SGeometryRequested {
type STargetBox (line 28) | struct STargetBox {
class ITarget (line 33) | class ITarget {
method ITarget (line 74) | ITarget() = default;
FILE: src/layout/target/WindowGroupTarget.cpp
function eTargetType (line 22) | eTargetType CWindowGroupTarget::type() {
function PHLWINDOW (line 59) | PHLWINDOW CWindowGroupTarget::window() const {
function eFullscreenMode (line 63) | eFullscreenMode CWindowGroupTarget::fullscreenMode() {
FILE: src/layout/target/WindowGroupTarget.hpp
type Layout (line 8) | namespace Layout {
class CWindowGroupTarget (line 10) | class CWindowGroupTarget : public ITarget {
FILE: src/layout/target/WindowTarget.cpp
function eTargetType (line 28) | eTargetType CWindowTarget::type() {
function Vector2D (line 241) | Vector2D CWindowTarget::clampSizeForDesired(const Vector2D& size) const {
function PHLWINDOW (line 341) | PHLWINDOW CWindowTarget::window() const {
function eFullscreenMode (line 345) | eFullscreenMode CWindowTarget::fullscreenMode() {
FILE: src/layout/target/WindowTarget.hpp
type Layout (line 7) | namespace Layout {
class CWindowTarget (line 9) | class CWindowTarget : public ITarget {
FILE: src/main.cpp
function help (line 27) | static void help() {
function reapZombieChildrenAutomatically (line 43) | static void reapZombieChildrenAutomatically() {
function main (line 54) | int main(int argc, char** argv) {
FILE: src/managers/ANRManager.cpp
function pid_t (line 249) | pid_t CANRManager::SANRData::getPID() const {
FILE: src/managers/ANRManager.hpp
class CXDGWMBase (line 13) | class CXDGWMBase
class CXWaylandSurface (line 14) | class CXWaylandSurface
class CANRManager (line 16) | class CANRManager {
type SANRData (line 30) | struct SANRData {
FILE: src/managers/CursorManager.cpp
function cursorAnimTimer (line 9) | static int cursorAnimTimer(SP<CEventLoopTimer> self, void* data) {
function hcLogger (line 15) | static void hcLogger(enum eHyprcursorLogLevel level, char* message) {
function SCursorImageData (line 261) | SCursorImageData CCursorManager::dataFor(const std::string& name) {
FILE: src/managers/CursorManager.hpp
class CCursorBuffer (line 16) | class CCursorBuffer : public Aquamarine::IBuffer {
class CCursorManager (line 37) | class CCursorManager {
FILE: src/managers/DonationNagManager.cpp
type SNagDatePoint (line 21) | struct SNagDatePoint {
FILE: src/managers/DonationNagManager.hpp
class CDonationNagManager (line 5) | class CDonationNagManager {
type SStateData (line 13) | struct SStateData {
FILE: src/managers/EventManager.hpp
type SHyprIPCEvent (line 7) | struct SHyprIPCEvent {
class CEventManager (line 12) | class CEventManager {
type SClient (line 28) | struct SClient {
FILE: src/managers/KeybindManager.cpp
function getHyprlandLaunchEnv (line 59) | static std::vector<std::pair<std::string, std::string>> getHyprlandLaunc...
function updateRelativeCursorCoords (line 338) | static void updateRelativeCursorCoords() {
function eMultiKeyCase (line 615) | eMultiKeyCase CKeybindManager::mkKeysymSetMatches(const std::set<xkb_key...
function eMultiKeyCase (line 634) | eMultiKeyCase CKeybindManager::mkBindMatches(const SP<SKeybind> keybind) {
function SSubmap (line 641) | SSubmap CKeybindManager::getCurrentSubmap() {
function SDispatchResult (line 645) | SDispatchResult CKeybindManager::handleKeybinds(const uint32_t modmask, ...
function SDispatchResult (line 919) | SDispatchResult CKeybindManager::spawn(std::string args) {
function SDispatchResult (line 962) | SDispatchResult CKeybindManager::spawnRaw(std::string args) {
function SDispatchResult (line 1011) | SDispatchResult CKeybindManager::killActive(std::string args) {
function SDispatchResult (line 1024) | SDispatchResult CKeybindManager::closeActive(std::string args) {
function SDispatchResult (line 1033) | SDispatchResult CKeybindManager::closeWindow(std::string args) {
function SDispatchResult (line 1049) | SDispatchResult CKeybindManager::killWindow(std::string args) {
function SDispatchResult (line 1062) | SDispatchResult CKeybindManager::signalActive(std::string args) {
function SDispatchResult (line 1083) | SDispatchResult CKeybindManager::signalWindow(std::string args) {
function SDispatchResult (line 1116) | static SDispatchResult toggleActiveFloatingCore(std::string args, std::o...
function SDispatchResult (line 1146) | SDispatchResult CKeybindManager::toggleActiveFloating(std::string args) {
function SDispatchResult (line 1150) | SDispatchResult CKeybindManager::setActiveFloating(std::string args) {
function SDispatchResult (line 1154) | SDispatchResult CKeybindManager::setActiveTiled(std::string args) {
function SDispatchResult (line 1158) | SDispatchResult CKeybindManager::centerWindow(std::string args) {
function SDispatchResult (line 1171) | SDispatchResult CKeybindManager::toggleActivePseudo(std::string args) {
function SWorkspaceIDName (line 1187) | static SWorkspaceIDName getWorkspaceToChangeFromArgs(std::string args, P...
function SDispatchResult (line 1208) | SDispatchResult CKeybindManager::changeworkspace(std::string args) {
function SDispatchResult (line 1302) | SDispatchResult CKeybindManager::fullscreenActive(std::string args) {
function SDispatchResult (line 1326) | SDispatchResult CKeybindManager::fullscreenStateActive(std::string args) {
function SDispatchResult (line 1366) | SDispatchResult CKeybindManager::moveActiveToWorkspace(std::string args) {
function SDispatchResult (line 1426) | SDispatchResult CKeybindManager::moveActiveToWorkspaceSilent(std::string...
function SDispatchResult (line 1472) | SDispatchResult CKeybindManager::moveFocusTo(std::string args) {
function SDispatchResult (line 1565) | SDispatchResult CKeybindManager::focusUrgentOrLast(std::string args) {
function SDispatchResult (line 1578) | SDispatchResult CKeybindManager::focusCurrentOrLast(std::string args) {
function SDispatchResult (line 1594) | SDispatchResult CKeybindManager::swapActive(std::string args) {
function SDispatchResult (line 1623) | SDispatchResult CKeybindManager::moveActiveTo(std::string args) {
function SDispatchResult (line 1664) | SDispatchResult CKeybindManager::toggleGroup(std::string args) {
function SDispatchResult (line 1681) | SDispatchResult CKeybindManager::changeGroupActive(std::string args) {
function SDispatchResult (line 1714) | SDispatchResult CKeybindManager::focusMonitor(std::string arg) {
function SDispatchResult (line 1721) | SDispatchResult CKeybindManager::moveCursorToCorner(std::string arg) {
function SDispatchResult (line 1762) | SDispatchResult CKeybindManager::moveCursor(std::string args) {
function SDispatchResult (line 1793) | SDispatchResult CKeybindManager::workspaceOpt(std::string args) {
function SDispatchResult (line 1797) | SDispatchResult CKeybindManager::renameWorkspace(std::string args) {
function SDispatchResult (line 1819) | SDispatchResult CKeybindManager::exitHyprland(std::string argz) {
function SDispatchResult (line 1829) | SDispatchResult CKeybindManager::moveCurrentWorkspaceToMonitor(std::stri...
function SDispatchResult (line 1849) | SDispatchResult CKeybindManager::moveWorkspaceToMonitor(std::string args) {
function SDispatchResult (line 1882) | SDispatchResult CKeybindManager::focusWorkspaceOnCurrentMonitor(std::str...
function SDispatchResult (line 1936) | SDispatchResult CKeybindManager::toggleSpecialWorkspace(std::string args) {
function SDispatchResult (line 1989) | SDispatchResult CKeybindManager::forceRendererReload(std::string args) {
function SDispatchResult (line 2009) | SDispatchResult CKeybindManager::resizeActive(std::string args) {
function SDispatchResult (line 2031) | SDispatchResult CKeybindManager::moveActive(std::string args) {
function SDispatchResult (line 2047) | SDispatchResult CKeybindManager::moveWindow(std::string args) {
function SDispatchResult (line 2069) | SDispatchResult CKeybindManager::resizeWindow(std::string args) {
function SDispatchResult (line 2097) | SDispatchResult CKeybindManager::circleNext(std::string arg) {
function SDispatchResult (line 2147) | SDispatchResult CKeybindManager::focusWindow(std::string regexp) {
function SDispatchResult (line 2176) | SDispatchResult CKeybindManager::tagWindow(std::string args) {
function SDispatchResult (line 2195) | SDispatchResult CKeybindManager::toggleSwallow(std::string args) {
function SDispatchResult (line 2216) | SDispatchResult CKeybindManager::setSubmap(std::string submap) {
function SDispatchResult (line 2239) | SDispatchResult CKeybindManager::pass(std::string regexp) {
function SDispatchResult (line 2315) | SDispatchResult CKeybindManager::sendshortcut(std::string args) {
function SDispatchResult (line 2470) | SDispatchResult CKeybindManager::layoutmsg(std::string msg) {
function SDispatchResult (line 2477) | SDispatchResult CKeybindManager::dpms(std::string arg) {
function SDispatchResult (line 2506) | SDispatchResult CKeybindManager::swapnext(std::string arg) {
function SDispatchResult (line 2536) | SDispatchResult CKeybindManager::swapActiveWorkspaces(std::string args) {
function SDispatchResult (line 2554) | SDispatchResult CKeybindManager::pinActive(std::string args) {
function SDispatchResult (line 2597) | SDispatchResult CKeybindManager::mouse(std::string args) {
function SDispatchResult (line 2618) | SDispatchResult CKeybindManager::changeMouseBindMode(const eMouseBindMod...
function SDispatchResult (line 2645) | SDispatchResult CKeybindManager::bringActiveToTop(std::string args) {
function SDispatchResult (line 2654) | SDispatchResult CKeybindManager::alterZOrder(std::string args) {
function SDispatchResult (line 2681) | SDispatchResult CKeybindManager::lockGroups(std::string args) {
function SDispatchResult (line 2695) | SDispatchResult CKeybindManager::lockActiveGroup(std::string args) {
function SDispatchResult (line 2760) | SDispatchResult CKeybindManager::moveIntoGroup(std::string args) {
function SDispatchResult (line 2793) | SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
function SDispatchResult (line 2817) | SDispatchResult CKeybindManager::moveWindowOrGroup(std::string args) {
function SDispatchResult (line 2872) | SDispatchResult CKeybindManager::setIgnoreGroupLock(std::string args) {
function SDispatchResult (line 2885) | SDispatchResult CKeybindManager::denyWindowFromGroup(std::string args) {
function SDispatchResult (line 2900) | SDispatchResult CKeybindManager::global(std::string args) {
function SDispatchResult (line 2915) | SDispatchResult CKeybindManager::moveGroupWindow(std::string args) {
function SDispatchResult (line 2936) | SDispatchResult CKeybindManager::event(std::string args) {
function parsePropTrivial (line 2945) | static void parsePropTrivial(Desktop::Types::COverridableVar<T>& prop, c...
function SDispatchResult (line 2977) | SDispatchResult CKeybindManager::setProp(std::string args) {
function SDispatchResult (line 3146) | SDispatchResult CKeybindManager::forceIdle(std::string args) {
function SDispatchResult (line 3159) | SDispatchResult CKeybindManager::sendkeystate(std::string args) {
FILE: src/managers/KeybindManager.hpp
class CInputManager (line 14) | class CInputManager
class CConfigManager (line 15) | class CConfigManager
class CPluginSystem (line 16) | class CPluginSystem
class IKeyboard (line 17) | class IKeyboard
type eMouseBindMode (line 19) | enum eMouseBindMode : int8_t
type SSubmap (line 21) | struct SSubmap {
type SKeybind (line 29) | struct SKeybind {
type eFocusWindowMode (line 61) | enum eFocusWindowMode : uint8_t {
type SPressedKeyWithMods (line 72) | struct SPressedKeyWithMods {
type SParsedKey (line 82) | struct SParsedKey {
type eMultiKeyCase (line 88) | enum eMultiKeyCase : uint8_t {
class CKeybindManager (line 94) | class CKeybindManager {
FILE: src/managers/PointerManager.cpp
function Vector2D (line 97) | Vector2D CPointerManager::position() {
function Vector2D (line 101) | Vector2D CPointerManager::hotspot() {
function Vector2D (line 660) | Vector2D CPointerManager::getCursorPosForMonitor(PHLMONITOR pMonitor) {
function Vector2D (line 668) | Vector2D CPointerManager::transformedHotspot(PHLMONITOR pMonitor) {
function CBox (line 678) | CBox CPointerManager::getCursorBoxLogicalForMonitor(PHLMONITOR pMonitor) {
function CBox (line 682) | CBox CPointerManager::getCursorBoxGlobal() {
function Vector2D (line 686) | Vector2D CPointerManager::closestValid(const Vector2D& pos) {
function Vector2D (line 1131) | Vector2D CPointerManager::cursorSizeLogical() {
FILE: src/managers/PointerManager.hpp
class CMonitor (line 13) | class CMonitor
class IHID (line 14) | class IHID
class ITexture (line 15) | class ITexture
class CPointerManager (line 26) | class CPointerManager {
type SCursorImage (line 72) | struct SCursorImage {
type SPointerListener (line 111) | struct SPointerListener {
type STouchListener (line 134) | struct STouchListener {
type STabletListener (line 146) | struct STabletListener {
type SMonitorPointerState (line 165) | struct SMonitorPointerState {
method SMonitorPointerState (line 166) | SMonitorPointerState(const PHLMONITOR& m) : monitor(m) {}
FILE: src/managers/ProtocolManager.hpp
class CProtocolManager (line 8) | class CProtocolManager {
FILE: src/managers/SeatManager.hpp
class CWLSurfaceResource (line 12) | class CWLSurfaceResource
class CWLSeatResource (line 13) | class CWLSeatResource
class IPointer (line 14) | class IPointer
class IKeyboard (line 15) | class IKeyboard
class CSeatGrab (line 28) | class CSeatGrab {
class CSeatManager (line 45) | class CSeatManager {
type SSetCursorEvent (line 98) | struct SSetCursorEvent {
type SSeatResourceContainer (line 131) | struct SSeatResourceContainer {
FILE: src/managers/SessionLockManager.hpp
class CSessionLockSurface (line 11) | class CSessionLockSurface
class CSessionLock (line 12) | class CSessionLock
class CWLSurfaceResource (line 13) | class CWLSurfaceResource
type SSessionLockSurface (line 15) | struct SSessionLockSurface {
type SSessionLock (line 31) | struct SSessionLock {
class CSessionLockManager (line 49) | class CSessionLockManager {
FILE: src/managers/TokenManager.hpp
class CUUIDToken (line 10) | class CUUIDToken {
class CTokenManager (line 25) | class CTokenManager {
FILE: src/managers/VersionKeeperManager.hpp
class CVersionKeeperManager (line 5) | class CVersionKeeperManager {
FILE: src/managers/WelcomeManager.hpp
class CWelcomeManager (line 5) | class CWelcomeManager {
FILE: src/managers/XCursorManager.hpp
type SXCursorImage (line 11) | struct SXCursorImage {
type SXCursors (line 18) | struct SXCursors {
class CXCursorManager (line 23) | class CXCursorManager {
FILE: src/managers/XWaylandManager.cpp
function CBox (line 80) | CBox CHyprXWaylandManager::getGeometryForWindow(PHLWINDOW pWindow) {
function Vector2D (line 176) | Vector2D CHyprXWaylandManager::waylandToXWaylandCoords(const Vector2D& c...
function Vector2D (line 206) | Vector2D CHyprXWaylandManager::xwaylandToWaylandCoords(const Vector2D& c...
FILE: src/managers/XWaylandManager.hpp
class CWLSurfaceResource (line 7) | class CWLSurfaceResource
class CHyprXWaylandManager (line 9) | class CHyprXWaylandManager {
FILE: src/managers/animation/AnimationManager.cpp
function wlTick (line 19) | static int wlTick(SP<CEventLoopTimer> self, void* data) {
function updateVariable (line 35) | static void updateVariable(CAnimatedVariable<VarType>& av, const float P...
function updateColorVariable (line 45) | static void updateColorVariable(CAnimatedVariable<CHyprColor>& av, const...
function handleUpdate (line 70) | static void handleUpdate(CAnimatedVariable<VarType>& av, bool warp) {
FILE: src/managers/animation/AnimationManager.hpp
class CHyprAnimationManager (line 12) | class CHyprAnimationManager : public Hyprutils::Animation::CAnimationMan...
method createAnimation (line 26) | void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SA...
method createAnimation (line 36) | void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SA...
method createAnimation (line 41) | void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SA...
method createAnimation (line 46) | void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SA...
FILE: src/managers/animation/DesktopAnimationManager.hpp
class CDesktopAnimationManager (line 8) | class CDesktopAnimationManager {
type eAnimationType (line 10) | enum eAnimationType : uint8_t {
FILE: src/managers/cursor/CursorShapeOverrideController.hpp
type Cursor (line 9) | namespace Cursor {
type eCursorShapeOverrideGroup (line 10) | enum eCursorShapeOverrideGroup : uint8_t {
class CShapeOverrideController (line 24) | class CShapeOverrideController {
method CShapeOverrideController (line 26) | CShapeOverrideController() = default;
method CShapeOverrideController (line 29) | CShapeOverrideController(const CShapeOverrideController&) = delete;
method CShapeOverrideController (line 30) | CShapeOverrideController(CShapeOverrideController&) = delete;
method CShapeOverrideController (line 31) | CShapeOverrideController(CShapeOverrideController&&) = delete;
FILE: src/managers/eventLoop/EventLoopManager.cpp
function timerWrite (line 39) | static int timerWrite(int fd, uint32_t mask, void* data) {
function aquamarineFDWrite (line 51) | static int aquamarineFDWrite(int fd, uint32_t mask, void* data) {
function configWatcherWrite (line 57) | static int configWatcherWrite(int fd, uint32_t mask, void* data) {
function handleWaiterFD (line 62) | static int handleWaiterFD(int fd, uint32_t mask, void* data) {
function timespecAddNs (line 153) | static void timespecAddNs(timespec* pTimespec, int64_t delta) {
FILE: src/managers/eventLoop/EventLoopManager.hpp
type Aquamarine (line 13) | namespace Aquamarine {
type SPollFD (line 14) | struct SPollFD
class CEventLoopManager (line 17) | class CEventLoopManager {
type SIdleData (line 36) | struct SIdleData {
type SReadableWaiter (line 41) | struct SReadableWaiter {
method SReadableWaiter (line 46) | SReadableWaiter(wl_event_source* src, Hyprutils::OS::CFileDescriptor...
method SReadableWaiter (line 56) | SReadableWaiter(const SReadableWaiter&) = delete;
method SReadableWaiter (line 57) | SReadableWaiter& operator=(const SReadableWaiter&) = delete;
method SReadableWaiter (line 60) | SReadableWaiter(SReadableWaiter&& other) noexcept = default;
method SReadableWaiter (line 61) | SReadableWaiter& operator=(SReadableWaiter&& other) noexcept = default;
type SEventSourceData (line 75) | struct SEventSourceData {
FILE: src/managers/eventLoop/EventLoopTimer.hpp
class CEventLoopTimer (line 10) | class CEventLoopTimer {
FILE: src/managers/input/InputManager.cpp
function eClickBehaviorMode (line 734) | eClickBehaviorMode CInputManager::getClickMode() {
function Vector2D (line 991) | Vector2D CInputManager::getMouseCoordsInternal() {
type libinput_config_dwt_state (line 1330) | enum libinput_config_dwt_state
function removeFromHIDs (line 1401) | static void removeFromHIDs(WP<IHID> hid) {
FILE: src/managers/input/InputManager.hpp
class CPointerConstraint (line 18) | class CPointerConstraint
class CIdleInhibitor (line 19) | class CIdleInhibitor
class CVirtualKeyboardV1Resource (line 20) | class CVirtualKeyboardV1Resource
class CVirtualPointerV1Resource (line 21) | class CVirtualPointerV1Resource
class IKeyboard (line 22) | class IKeyboard
type eClickBehaviorMode (line 32) | enum eClickBehaviorMode : uint8_t {
type eMouseBindMode (line 37) | enum eMouseBindMode : int8_t {
type eBorderIconDirection (line 45) | enum eBorderIconDirection : uint8_t {
type STouchData (line 57) | struct STouchData {
class CKeybindManager (line 83) | class CKeybindManager
class CInputManager (line 85) | class CInputManager {
type SIdleInhibitor (line 270) | struct SIdleInhibitor {
FILE: src/managers/input/InputMethodPopup.cpp
function CBox (line 149) | CBox CInputPopup::globalBox() {
FILE: src/managers/input/InputMethodPopup.hpp
class CInputMethodPopupV2 (line 8) | class CInputMethodPopupV2
class CInputPopup (line 10) | class CInputPopup {
FILE: src/managers/input/InputMethodRelay.cpp
function CTextInput (line 73) | CTextInput* CInputMethodRelay::getFocusedTextInput() {
function CInputPopup (line 163) | CInputPopup* CInputMethodRelay::popupFromCoords(const Vector2D& point) {
function CInputPopup (line 172) | CInputPopup* CInputMethodRelay::popupFromSurface(const SP<CWLSurfaceReso...
FILE: src/managers/input/InputMethodRelay.hpp
class CInputManager (line 11) | class CInputManager
class IHyprRenderer (line 12) | class IHyprRenderer
class CTextInputV1 (line 13) | class CTextInputV1
class CInputMethodV2 (line 14) | class CInputMethodV2
class CInputMethodRelay (line 16) | class CInputMethodRelay {
FILE: src/managers/input/Tablets.cpp
function unfocusTool (line 11) | static void unfocusTool(SP<CTabletTool> tool) {
function focusTool (line 24) | static void focusTool(SP<CTabletTool> tool, SP<CTablet> tablet, SP<CWLSu...
function refocusTablet (line 40) | static void refocusTablet(SP<CTablet> tab, SP<CTabletTool> tool, bool mo...
function Vector2D (line 95) | static Vector2D transformToActiveRegion(const Vector2D pos, const CBox a...
FILE: src/managers/input/TextInput.cpp
function wl_client (line 227) | wl_client* CTextInput::client() {
function CBox (line 303) | CBox CTextInput::cursorBox() {
FILE: src/managers/input/TextInput.hpp
type wl_client (line 7) | struct wl_client
class CTextInputV1 (line 9) | class CTextInputV1
class CTextInputV3 (line 10) | class CTextInputV3
class CInputMethodV2 (line 11) | class CInputMethodV2
class CWLSurfaceResource (line 12) | class CWLSurfaceResource
class CTextInput (line 14) | class CTextInput {
FILE: src/managers/input/UnifiedWorkspaceSwipeGesture.hpp
class CUnifiedWorkspaceSwipeGesture (line 6) | class CUnifiedWorkspaceSwipeGesture {
FILE: src/managers/input/trackpad/GestureTypes.hpp
type eTrackpadGestureDirection (line 5) | enum eTrackpadGestureDirection : uint8_t {
FILE: src/managers/input/trackpad/TrackpadGestures.cpp
function eTrackpadGestureDirection (line 13) | eTrackpadGestureDirection CTrackpadGestures::dirForString(const std::str...
FILE: src/managers/input/trackpad/TrackpadGestures.hpp
class CTrackpadGestures (line 11) | class CTrackpadGestures {
type SGestureData (line 30) | struct SGestureData {
FILE: src/managers/input/trackpad/gestures/CloseGesture.cpp
function Vector2D (line 17) | static Vector2D lerpVal(const Vector2D& from, const Vector2D& to, const ...
function lerpVal (line 24) | static float lerpVal(const float& from, const float& to, const float& t) {
FILE: src/managers/input/trackpad/gestures/CloseGesture.hpp
class CCloseTrackpadGesture (line 7) | class CCloseTrackpadGesture : public ITrackpadGesture {
method CCloseTrackpadGesture (line 9) | CCloseTrackpadGesture() = default;
FILE: src/managers/input/trackpad/gestures/CursorZoomGesture.hpp
class CCursorZoomTrackpadGesture (line 5) | class CCursorZoomTrackpadGesture : public ITrackpadGesture {
type eMode (line 18) | enum eMode : uint8_t {
FILE: src/managers/input/trackpad/gestures/DispatcherGesture.hpp
class CDispatcherTrackpadGesture (line 5) | class CDispatcherTrackpadGesture : public ITrackpadGesture {
FILE: src/managers/input/trackpad/gestures/FloatGesture.cpp
function Vector2D (line 12) | static Vector2D lerpVal(const Vector2D& from, const Vector2D& to, const ...
FILE: src/managers/input/trackpad/gestures/FloatGesture.hpp
class CFloatTrackpadGesture (line 7) | class CFloatTrackpadGesture : public ITrackpadGesture {
type eMode (line 23) | enum eMode : uint8_t {
FILE: src/managers/input/trackpad/gestures/FullscreenGesture.cpp
function Vector2D (line 11) | static Vector2D lerpVal(const Vector2D& from, const Vector2D& to, const ...
function eFullscreenMode (line 90) | eFullscreenMode CFullscreenTrackpadGesture::fsModeForMode(eMode mode) {
FILE: src/managers/input/trackpad/gestures/FullscreenGesture.hpp
class CFullscreenTrackpadGesture (line 8) | class CFullscreenTrackpadGesture : public ITrackpadGesture {
type eMode (line 24) | enum eMode : uint8_t {
FILE: src/managers/input/trackpad/gestures/ITrackpadGesture.hpp
class ITrackpadGesture (line 6) | class ITrackpadGesture {
type STrackpadGestureBegin (line 10) | struct STrackpadGestureBegin {
type STrackpadGestureUpdate (line 18) | struct STrackpadGestureUpdate {
type STrackpadGestureEnd (line 25) | struct STrackpadGestureEnd {
FILE: src/managers/input/trackpad/gestures/MoveGesture.hpp
class CMoveTrackpadGesture (line 7) | class CMoveTrackpadGesture : public ITrackpadGesture {
method CMoveTrackpadGesture (line 9) | CMoveTrackpadGesture() = default;
FILE: src/managers/input/trackpad/gestures/ResizeGesture.hpp
class CResizeTrackpadGesture (line 7) | class CResizeTrackpadGesture : public ITrackpadGesture {
method CResizeTrackpadGesture (line 9) | CResizeTrackpadGesture() = default;
FILE: src/managers/input/trackpad/gestures/SpecialWorkspaceGesture.cpp
function Vector2D (line 13) | static Vector2D lerpVal(const Vector2D& from, const Vector2D& to, const ...
function lerpVal (line 20) | static float lerpVal(const float& from, const float& to, const float& t) {
FILE: src/managers/input/trackpad/gestures/SpecialWorkspaceGesture.hpp
class CSpecialWorkspaceGesture (line 7) | class CSpecialWorkspaceGesture : public ITrackpadGesture {
FILE: src/managers/input/trackpad/gestures/WorkspaceSwipeGesture.hpp
class CWorkspaceSwipeGesture (line 6) | class CWorkspaceSwipeGesture : public ITrackpadGesture {
method CWorkspaceSwipeGesture (line 8) | CWorkspaceSwipeGesture() = default;
FILE: src/managers/permissions/DynamicPermissionManager.cpp
function clientDestroyInternal (line 17) | static void clientDestroyInternal(struct wl_listener* listener, void* da...
function wl_client (line 46) | wl_client* CDynamicPermissionRule::client() const {
function eDynamicPermissionAllowMode (line 77) | eDynamicPermissionAllowMode CDynamicPermissionManager::clientPermissionM...
function eDynamicPermissionAllowMode (line 150) | eDynamicPermissionAllowMode CDynamicPermissionManager::clientPermissionM...
FILE: src/managers/permissions/DynamicPermissionManager.hpp
type re2 (line 12) | namespace re2 {
class RE2 (line 13) | class RE2
type eDynamicPermissionType (line 16) | enum eDynamicPermissionType : uint8_t {
type eDynamicPermissionRuleSource (line 24) | enum eDynamicPermissionRuleSource : uint8_t {
type eDynamicPermissionAllowMode (line 30) | enum eDynamicPermissionAllowMode : uint8_t {
type eSpecialPidTypes (line 39) | enum eSpecialPidTypes : int {
class CDynamicPermissionRule (line 44) | class CDynamicPermissionRule
type SDynamicPermissionRuleDestroyWrapper (line 46) | struct SDynamicPermissionRuleDestroyWrapper {
class CDynamicPermissionRule (line 51) | class CDynamicPermissionRule {
class CDynamicPermissionManager (line 81) | class CDynamicPermissionManager {
FILE: src/managers/screenshare/CursorshareSession.cpp
function eScreenshareError (line 63) | eScreenshareError CCursorshareSession::share(PHLMONITOR monitor, SP<IHLB...
function DRMFormat (line 222) | DRMFormat CCursorshareSession::format() const {
function Vector2D (line 226) | Vector2D CCursorshareSession::bufferSize() const {
function Vector2D (line 230) | Vector2D CCursorshareSession::hotspot() const {
FILE: src/managers/screenshare/ScreenshareFrame.cpp
function eScreenshareError (line 62) | eScreenshareError CScreenshareFrame::share(SP<IHLBuffer> buffer, const C...
function Vector2D (line 466) | Vector2D CScreenshareFrame::bufferSize() const {
function wl_output_transform (line 470) | wl_output_transform CScreenshareFrame::transform() const {
function CRegion (line 479) | const CRegion& CScreenshareFrame::damage() const {
FILE: src/managers/screenshare/ScreenshareManager.hpp
class CWLPointerResource (line 12) | class CWLPointerResource
type Screenshare (line 14) | namespace Screenshare {
type eScreenshareType (line 15) | enum eScreenshareType : uint8_t {
type eScreenshareError (line 22) | enum eScreenshareError : uint8_t {
type eScreenshareResult (line 31) | enum eScreenshareResult : uint8_t {
class CScreenshareSession (line 40) | class CScreenshareSession {
method CScreenshareSession (line 42) | CScreenshareSession(const CScreenshareSession&) = delete;
method CScreenshareSession (line 43) | CScreenshareSession(CScreenshareSession&&) = delete;
class CCursorshareSession (line 99) | class CCursorshareSession {
method CCursorshareSession (line 101) | CCursorshareSession(const CCursorshareSession&) = delete;
method CCursorshareSession (line 102) | CCursorshareSession(CCursorshareSession&&) = delete;
class CScreenshareFrame (line 154) | class CScreenshareFrame {
method CScreenshareFrame (line 156) | CScreenshareFrame(const CScreenshareFrame&) = delete;
method CScreenshareFrame (line 157) | CScreenshareFrame(CScreenshareFrame&&) = delete;
class CScreenshareManager (line 195) | class CScreenshareManager {
type SManagedSession (line 217) | struct SManagedSession {
type std::formatter<Screenshare::eScreenshareType> (line 241) | struct std::formatter<Screenshare::eScreenshareType> : std::formatter<st...
method format (line 242) | auto format(const Screenshare::eScreenshareType& res, std::format_cont...
FILE: src/managers/screenshare/ScreenshareSession.cpp
function Vector2D (line 154) | Vector2D CScreenshareSession::bufferSize() const {
function PHLMONITOR (line 158) | PHLMONITOR CScreenshareSession::monitor() const {
FILE: src/plugins/HookSystem.cpp
function CFunctionHook (line 276) | CFunctionHook* CHookSystem::initHook(HANDLE owner, void* source, void* d...
function seekNewPageAddr (line 289) | static uintptr_t seekNewPageAddr() {
FILE: src/plugins/HookSystem.hpp
class CFunctionHook (line 12) | class CFunctionHook {
method CFunctionHook (line 20) | CFunctionHook(const CFunctionHook&) = delete;
method CFunctionHook (line 21) | CFunctionHook(CFunctionHook&&) = delete;
method CFunctionHook (line 22) | CFunctionHook& operator=(const CFunctionHook&) = delete;
method CFunctionHook (line 23) | CFunctionHook& operator=(CFunctionHook&&) = delete;
type SInstructionProbe (line 38) | struct SInstructionProbe {
type SAssembly (line 44) | struct SAssembly {
class CHookSystem (line 56) | class CHookSystem {
type SAllocatedPage (line 68) | struct SAllocatedPage {
FILE: src/plugins/PluginAPI.cpp
function APICALL (line 19) | APICALL const char* __hyprland_api_get_hash() {
function APICALL (line 34) | APICALL SP<HOOK_CALLBACK_FN> HyprlandAPI::registerCallbackDynamic(HANDLE...
function APICALL (line 45) | APICALL bool HyprlandAPI::unregisterCallback(HANDLE handle, SP<HOOK_CALL...
function APICALL (line 57) | APICALL std::string HyprlandAPI::invokeHyprctlCommand(const std::string&...
function APICALL (line 64) | APICALL bool HyprlandAPI::addLayout(HANDLE handle, const std::string& na...
function APICALL (line 68) | APICALL bool HyprlandAPI::removeLayout(HANDLE handle, IHyprLayout* layou...
function APICALL (line 72) | APICALL bool HyprlandAPI::addTiledAlgo(HANDLE handle, const std::string&...
function APICALL (line 83) | APICALL bool HyprlandAPI::addFloatingAlgo(HANDLE handle, const std::stri...
function APICALL (line 94) | APICALL bool HyprlandAPI::removeAlgo(HANDLE handle, const std::string& n...
function APICALL (line 105) | APICALL bool HyprlandAPI::reloadConfig() {
function APICALL (line 110) | APICALL bool HyprlandAPI::addNotification(HANDLE handle, const std::stri...
function APICALL (line 121) | APICALL CFunctionHook* HyprlandAPI::createFunctionHook(HANDLE handle, co...
function APICALL (line 130) | APICALL bool HyprlandAPI::removeFunctionHook(HANDLE handle, CFunctionHoo...
function APICALL (line 139) | APICALL bool HyprlandAPI::addWindowDecoration(HANDLE handle, PHLWINDOW p...
function APICALL (line 157) | APICALL bool HyprlandAPI::removeWindowDecoration(HANDLE handle, IHyprWin...
function APICALL (line 175) | APICALL bool HyprlandAPI::addConfigValue(HANDLE handle, const std::strin...
function APICALL (line 191) | APICALL bool HyprlandAPI::addConfigKeyword(HANDLE handle, const std::str...
function APICALL (line 204) | APICALL Hyprlang::CConfigValue* HyprlandAPI::getConfigValue(HANDLE handl...
function APICALL (line 216) | APICALL void* HyprlandAPI::getFunctionAddressFromSignature(HANDLE handle...
function APICALL (line 225) | APICALL bool HyprlandAPI::addDispatcher(HANDLE handle, const std::string...
function APICALL (line 241) | APICALL bool HyprlandAPI::addDispatcherV2(HANDLE handle, const std::stri...
function APICALL (line 254) | APICALL bool HyprlandAPI::removeDispatcher(HANDLE handle, const std::str...
function APICALL (line 266) | APICALL bool addNotificationV2(HANDLE handle, const std::unordered_map<s...
function APICALL (line 314) | APICALL std::vector<SFunctionMatch> HyprlandAPI::findFunctionsByName(HAN...
function APICALL (line 402) | APICALL SVersionInfo HyprlandAPI::getHyprlandVersion(HANDLE handle) {
function APICALL (line 411) | APICALL SP<SHyprCtlCommand> HyprlandAPI::registerHyprCtlCommand(HANDLE h...
function APICALL (line 422) | APICALL bool HyprlandAPI::unregisterHyprCtlCommand(HANDLE handle, SP<SHy...
FILE: src/plugins/PluginAPI.hpp
type SFunctionMatch (line 42) | struct SFunctionMatch {
type SVersionInfo (line 48) | struct SVersionInfo {
class IHyprLayout (line 70) | class IHyprLayout
class IHyprWindowDecoration (line 71) | class IHyprWindowDecoration
type SConfigValue (line 72) | struct SConfigValue
class Hypr_dummyClass (line 73) | class Hypr_dummyClass {}
type Layout (line 75) | namespace Layout {
class ITiledAlgorithm (line 76) | class ITiledAlgorithm
class IFloatingAlgorithm (line 77) | class IFloatingAlgorithm
type HyprlandAPI (line 122) | namespace HyprlandAPI {
function APICALL (line 341) | APICALL inline EXPORT const char* __hyprland_api_get_client_hash() {
FILE: src/plugins/PluginSystem.cpp
function CPlugin (line 241) | CPlugin* CPluginSystem::getPluginByPath(const std::string& path) {
function CPlugin (line 250) | CPlugin* CPluginSystem::getPluginByHandle(HANDLE handle) {
FILE: src/plugins/PluginSystem.hpp
class IHyprWindowDecoration (line 11) | class IHyprWindowDecoration
class CPlugin (line 13) | class CPlugin {
class CPluginSystem (line 33) | class CPluginSystem {
FILE: src/protocols/AlphaModifier.hpp
class CWLSurfaceResource (line 9) | class CWLSurfaceResource
class CAlphaModifierProtocol (line 10) | class CAlphaModifierProtocol
class CAlphaModifier (line 12) | class CAlphaModifier {
class CAlphaModifierProtocol (line 34) | class CAlphaModifierProtocol : public IWaylandProtocol {
type PROTO (line 52) | namespace PROTO {
FILE: src/protocols/CTMControl.hpp
class CMonitor (line 11) | class CMonitor
class CHyprlandCTMControlResource (line 13) | class CHyprlandCTMControlResource {
class CHyprlandCTMControlProtocol (line 28) | class CHyprlandCTMControlProtocol : public IWaylandProtocol {
type SCTMData (line 45) | struct SCTMData {
type PROTO (line 55) | namespace PROTO {
FILE: src/protocols/ColorManagement.cpp
function wl_client (line 186) | wl_client* CColorManager::client() {
function wl_client (line 228) | wl_client* CColorManagementOutput::client() {
function wl_client (line 282) | wl_client* CColorManagementSurface::client() {
function SImageDescription (line 286) | const SImageDescription& CColorManagementSurface::imageDescription() {
function hdr_output_metadata (line 302) | const hdr_output_metadata& CColorManagementSurface::hdrMetadata() {
function wl_client (line 410) | wl_client* CColorManagementFeedbackSurface::client() {
function wl_client (line 466) | wl_client* CColorManagementIccCreator::client() {
function wl_client (line 676) | wl_client* CColorManagementParametricCreator::client() {
function wl_client (line 711) | wl_client* CColorManagementImageDescription::client() {
function wl_client (line 777) | wl_client* CColorManagementImageDescriptionInfo::client() {
FILE: src/protocols/ColorManagement.hpp
class CColorManager (line 12) | class CColorManager
class CColorManagementOutput (line 13) | class CColorManagementOutput
class CColorManagementImageDescription (line 14) | class CColorManagementImageDescription
class CColorManagementProtocol (line 15) | class CColorManagementProtocol
class CColorManager (line 17) | class CColorManager {
class CColorManagementOutput (line 28) | class CColorManagementOutput {
class CColorManagementSurface (line 47) | class CColorManagementSurface {
class CColorManagementFeedbackSurface (line 76) | class CColorManagementFeedbackSurface {
class CColorManagementIccCreator (line 102) | class CColorManagementIccCreator {
type SIccFile (line 112) | struct SIccFile {
class CColorManagementParametricCreator (line 126) | class CColorManagementParametricCreator {
type eValuesSet (line 138) | enum eValuesSet : uint32_t { // NOLINT
class CColorManagementImageDescription (line 154) | class CColorManagementImageDescription {
class CColorManagementImageDescriptionInfo (line 174) | class CColorManagementImageDescriptionInfo {
class CColorManagementProtocol (line 187) | class CColorManagementProtocol : public IWaylandProtocol {
type PROTO (line 225) | namespace PROTO {
FILE: src/protocols/CommitTiming.hpp
class CWLSurfaceResource (line 10) | class CWLSurfaceResource
class CEventLoopTimer (line 11) | class CEventLoopTimer
class CCommitTimerResource (line 13) | class CCommitTimerResource {
class CCommitTimingManagerResource (line 31) | class CCommitTimingManagerResource {
class CCommitTimingProtocol (line 42) | class CCommitTimingProtocol : public IWaylandProtocol {
type PROTO (line 60) | namespace PROTO {
FILE: src/protocols/ContentType.cpp
function wl_client (line 64) | wl_client* CContentType::client() {
FILE: src/protocols/ContentType.hpp
class CContentTypeManager (line 8) | class CContentTypeManager {
class CContentType (line 18) | class CContentType {
class CContentTypeProtocol (line 38) | class CContentTypeProtocol : public IWaylandProtocol {
type PROTO (line 57) | namespace PROTO {
FILE: src/protocols/CursorShape.hpp
class CCursorShapeProtocol (line 8) | class CCursorShapeProtocol : public IWaylandProtocol {
type SSetShapeEvent (line 14) | struct SSetShapeEvent {
type PROTO (line 39) | namespace PROTO {
FILE: src/protocols/DRMLease.hpp
class CDRMLeaseDeviceResource (line 17) | class CDRMLeaseDeviceResource
class CMonitor (line 18) | class CMonitor
class CDRMLeaseProtocol (line 19) | class CDRMLeaseProtocol
class CDRMLeaseConnectorResource (line 20) | class CDRMLeaseConnectorResource
class CDRMLeaseRequestResource (line 21) | class CDRMLeaseRequestResource
class CDRMLeaseResource (line 23) | class CDRMLeaseResource {
class CDRMLeaseRequestResource (line 42) | class CDRMLeaseRequestResource {
class CDRMLeaseConnectorResource (line 56) | class CDRMLeaseConnectorResource {
class CDRMLeaseDeviceResource (line 79) | class CDRMLeaseDeviceResource {
class CDRMLeaseProtocol (line 97) | class CDRMLeaseProtocol : public IWaylandProtocol {
type PROTO (line 132) | namespace PROTO {
FILE: src/protocols/DRMSyncobj.cpp
function CFileDescriptor (line 39) | CFileDescriptor CDRMSyncPointState::exportAsFD() {
FILE: src/protocols/DRMSyncobj.hpp
class CWLSurfaceResource (line 10) | class CWLSurfaceResource
class CDRMSyncobjTimelineResource (line 11) | class CDRMSyncobjTimelineResource
class CSyncTimeline (line 12) | class CSyncTimeline
class CDRMSyncPointState (line 14) | class CDRMSyncPointState {
method CDRMSyncPointState (line 16) | CDRMSyncPointState() = default;
class CDRMSyncobjSurfaceResource (line 40) | class CDRMSyncobjSurfaceResource {
class CDRMSyncobjTimelineResource (line 58) | class CDRMSyncobjTimelineResource {
class CDRMSyncobjManagerResource (line 73) | class CDRMSyncobjManagerResource {
class CDRMSyncobjProtocol (line 84) | class CDRMSyncobjProtocol : public IWaylandProtocol {
type PROTO (line 109) | namespace PROTO {
FILE: src/protocols/DataDeviceWlr.cpp
function wl_client (line 152) | wl_client* CWLRDataDevice::client() {
FILE: src/protocols/DataDeviceWlr.hpp
class CWLRDataControlManagerResource (line 10) | class CWLRDataControlManagerResource
class CWLRDataSource (line 11) | class CWLRDataSource
class CWLRDataDevice (line 12) | class CWLRDataDevice
class CWLRDataOffer (line 13) | class CWLRDataOffer
class CWLRDataOffer (line 15) | class CWLRDataOffer {
class CWLRDataSource (line 33) | class CWLRDataSource : public IDataSource {
class CWLRDataDevice (line 55) | class CWLRDataDevice {
class CWLRDataControlManagerResource (line 76) | class CWLRDataControlManagerResource {
class CDataDeviceWLRProtocol (line 89) | class CDataDeviceWLRProtocol : public IWaylandProtocol {
type PROTO (line 121) | namespace PROTO {
FILE: src/protocols/ExtDataDevice.cpp
function wl_client (line 152) | wl_client* CExtDataDevice::client() {
FILE: src/protocols/ExtDataDevice.hpp
class CExtDataControlManagerResource (line 10) | class CExtDataControlManagerResource
class CExtDataSource (line 11) | class CExtDataSource
class CExtDataDevice (line 12) | class CExtDataDevice
class CExtDataOffer (line 13) | class CExtDataOffer
class CExtDataOffer (line 15) | class CExtDataOffer {
class CExtDataSource (line 33) | class CExtDataSource : public IDataSource {
class CExtDataDevice (line 55) | class CExtDataDevice {
class CExtDataControlManagerResource (line 76) | class CExtDataControlManagerResource {
class CExtDataDeviceProtocol (line 89) | class CExtDataDeviceProtocol : public IWaylandProtocol {
type PROTO (line 121) | namespace PROTO {
FILE: src/protocols/ExtWorkspace.hpp
class CExtWorkspaceManagerResource (line 11) | class CExtWorkspaceManagerResource
class CExtWorkspaceGroupResource (line 13) | class CExtWorkspaceGroupResource {
class CExtWorkspaceResource (line 41) | class CExtWorkspaceResource {
class CExtWorkspaceManagerResource (line 78) | class CExtWorkspaceManagerResource {
class CExtWorkspaceProtocol (line 99) | class CExtWorkspaceProtocol : public IWaylandProtocol {
type PROTO (line 117) | namespace PROTO {
FILE: src/protocols/Fifo.hpp
class CWLSurfaceResource (line 10) | class CWLSurfaceResource
class CFifoResource (line 12) | class CFifoResource {
class CFifoManagerResource (line 35) | class CFifoManagerResource {
class CFifoProtocol (line 46) | class CFifoProtocol : public IWaylandProtocol {
type PROTO (line 66) | namespace PROTO {
FILE: src/protocols/FocusGrab.hpp
class CFocusGrab (line 11) | class CFocusGrab
class CSeatGrab (line 12) | class CSeatGrab
class CWLSurfaceResource (line 13) | class CWLSurfaceResource
class CFocusGrabSurfaceState (line 15) | class CFocusGrabSurfaceState {
type State (line 20) | enum State {
class CFocusGrab (line 32) | class CFocusGrab {
class CFocusGrabProtocol (line 59) | class CFocusGrabProtocol : public IWaylandProtocol {
type PROTO (line 76) | namespace PROTO {
FILE: src/protocols/ForeignToplevel.cpp
function PHLWINDOW (line 19) | PHLWINDOW CForeignToplevelHandle::window() {
function PHLWINDOW (line 177) | PHLWINDOW CForeignToplevelProtocol::windowFromHandleResource(wl_resource...
FILE: src/protocols/ForeignToplevel.hpp
class CForeignToplevelHandle (line 9) | class CForeignToplevelHandle {
class CForeignToplevelList (line 25) | class CForeignToplevelList {
class CForeignToplevelProtocol (line 45) | class CForeignToplevelProtocol : public IWaylandProtocol {
type PROTO (line 65) | namespace PROTO {
FILE: src/protocols/ForeignToplevelWlr.cpp
function PHLWINDOW (line 142) | PHLWINDOW CForeignToplevelHandleWlr::window() {
function wl_resource (line 146) | wl_resource* CForeignToplevelHandleWlr::res() {
function PHLWINDOW (line 420) | PHLWINDOW CForeignToplevelWlrProtocol::windowFromHandleResource(wl_resou...
FILE: src/protocols/ForeignToplevelWlr.hpp
class CMonitor (line 7) | class CMonitor
class CForeignToplevelHandleWlr (line 9) | class CForeignToplevelHandleWlr {
class CForeignToplevelWlrManager (line 29) | class CForeignToplevelWlrManager {
class CForeignToplevelWlrProtocol (line 53) | class CForeignToplevelWlrProtocol : public IWaylandProtocol {
type PROTO (line 74) | namespace PROTO {
FILE: src/protocols/FractionalScale.hpp
class CFractionalScaleProtocol (line 7) | class CFractionalScaleProtocol
class CWLSurfaceResource (line 8) | class CWLSurfaceResource
class CFractionalScaleAddon (line 10) | class CFractionalScaleAddon {
class CFractionalScaleProtocol (line 36) | class CFractionalScaleProtocol : public IWaylandProtocol {
type PROTO (line 59) | namespace PROTO {
FILE: src/protocols/GammaControl.cpp
function PHLMONITOR (line 162) | PHLMONITOR CGammaControl::getMonitor() {
FILE: src/protocols/GammaControl.hpp
class CMonitor (line 9) | class CMonitor
class CGammaControl (line 11) | class CGammaControl {
class CGammaControlProtocol (line 35) | class CGammaControlProtocol : public IWaylandProtocol {
type PROTO (line 55) | namespace PROTO {
FILE: src/protocols/GlobalShortcuts.hpp
type SShortcut (line 7) | struct SShortcut {
class CShortcutClient (line 13) | class CShortcutClient {
class CGlobalShortcutsProtocol (line 26) | class CGlobalShortcutsProtocol : IWaylandProtocol {
type PROTO (line 41) | namespace PROTO {
FILE: src/protocols/HyprlandSurface.hpp
class CWLSurfaceResource (line 10) | class CWLSurfaceResource
class CHyprlandSurfaceProtocol (line 11) | class CHyprlandSurfaceProtocol
class CHyprlandSurface (line 13) | class CHyprlandSurface {
class CHyprlandSurfaceProtocol (line 37) | class CHyprlandSurfaceProtocol : public IWaylandProtocol {
type PROTO (line 54) | namespace PROTO {
FILE: src/protocols/IdleInhibit.hpp
class CIdleInhibitorResource (line 8) | class CIdleInhibitorResource
class CWLSurfaceResource (line 9) | class CWLSurfaceResource
class CIdleInhibitor (line 11) | class CIdleInhibitor {
class CIdleInhibitorResource (line 23) | class CIdleInhibitorResource {
class CIdleInhibitProtocol (line 44) | class CIdleInhibitProtocol : public IWaylandProtocol {
type PROTO (line 67) | namespace PROTO {
FILE: src/protocols/IdleNotify.cpp
function onTimer (line 4) | static int onTimer(SP<CEventLoopTimer> self, void* data) {
FILE: src/protocols/IdleNotify.hpp
class CEventLoopTimer (line 8) | class CEventLoopTimer
class CExtIdleNotification (line 10) | class CExtIdleNotification {
class CIdleNotifyProtocol (line 35) | class CIdleNotifyProtocol : public IWaylandProtocol {
type PROTO (line 59) | namespace PROTO {
FILE: src/protocols/ImageCaptureSource.cpp
function CBox (line 47) | CBox CImageCaptureSource::logicalBox() {
FILE: src/protocols/ImageCaptureSource.hpp
class CImageCopyCaptureSession (line 10) | class CImageCopyCaptureSession
class CImageCaptureSource (line 12) | class CImageCaptureSource {
class COutputImageCaptureSourceProtocol (line 34) | class COutputImageCaptureSourceProtocol : public IWaylandProtocol {
class CToplevelImageCaptureSourceProtocol (line 41) | class CToplevelImageCaptureSourceProtocol : public IWaylandProtocol {
class CImageCaptureSourceProtocol (line 48) | class CImageCaptureSourceProtocol {
type PROTO (line 71) | namespace PROTO {
FILE: src/protocols/ImageCopyCapture.cpp
type wl_array (line 87) | struct wl_array
type wl_array (line 299) | struct wl_array
FILE: src/protocols/ImageCopyCapture.hpp
class IHLBuffer (line 12) | class IHLBuffer
class CWLPointerResource (line 13) | class CWLPointerResource
type Screenshare (line 14) | namespace Screenshare {
class CCursorshareSession (line 15) | class CCursorshareSession
class CScreenshareSession (line 16) | class CScreenshareSession
class CScreenshareFrame (line 17) | class CScreenshareFrame
class CImageCopyCaptureFrame (line 20) | class CImageCopyCaptureFrame {
class CImageCopyCaptureSession (line 39) | class CImageCopyCaptureSession {
class CImageCopyCaptureCursorSession (line 70) | class CImageCopyCaptureCursorSession {
class CImageCopyCaptureProtocol (line 110) | class CImageCopyCaptureProtocol : public IWaylandProtocol {
type PROTO (line 131) | namespace PROTO {
FILE: src/protocols/InputMethodV2.cpp
function wl_client (line 79) | wl_client* CInputMethodKeyboardGrabV2::client() {
function wl_client (line 266) | wl_client* CInputMethodV2::grabClient() {
function wl_client (line 327) | wl_client* CInputMethodV2::client() {
FILE: src/protocols/InputMethodV2.hpp
class CInputMethodKeyboardGrabV2 (line 11) | class CInputMethodKeyboardGrabV2
class CInputMethodPopupV2 (line 12) | class CInputMethodPopupV2
class IKeyboard (line 13) | class IKeyboard
class CInputMethodV2 (line 15) | class CInputMethodV2 {
type SState (line 26) | struct SState {
class CInputMethodKeyboardGrabV2 (line 83) | class CInputMethodKeyboardGrabV2 {
class CInputMethodPopupV2 (line 103) | class CInputMethodPopupV2 {
class CInputMethodV2Protocol (line 132) | class CInputMethodV2Protocol : public IWaylandProtocol {
type PROTO (line 161) | namespace PROTO {
FILE: src/protocols/LayerShell.hpp
class CMonitor (line 12) | class CMonitor
class CXDGPopupResource (line 13) | class CXDGPopupResource
class CWLSurfaceResource (line 14) | class CWLSurfaceResource
class CLayerShellResource (line 15) | class CLayerShellResource
type eCommittedState (line 37) | enum eCommittedState : uint8_t {
type SState (line 55) | struct SState {
class CLayerShellRole (line 17) | class CLayerShellRole : public ISurfaceRole {
method eSurfaceRole (line 21) | virtual eSurfaceRole role() {
class CLayerShellResource (line 28) | class CLayerShellResource {
type eCommittedState (line 37) | enum eCommittedState : uint8_t {
type SState (line 55) | struct SState {
class CLayerShellProtocol (line 92) | class CLayerShellProtocol : public IWaylandProtocol {
type PROTO (line 110) | namespace PROTO {
FILE: src/protocols/LinuxDMABUF.cpp
function devIDFromFD (line 20) | static std::optional<dev_t> devIDFromFD(int fd) {
type wl_array (line 343) | struct wl_array
type wl_array (line 364) | struct wl_array
type wl_array (line 630) | struct wl_array
function dev_t (line 646) | dev_t CLinuxDMABufV1Protocol::getMainDevice() {
FILE: src/protocols/LinuxDMABUF.hpp
class CDMABuffer (line 14) | class CDMABuffer
class CWLSurfaceResource (line 15) | class CWLSurfaceResource
class CLinuxDMABuffer (line 17) | class CLinuxDMABuffer {
type SDMABUFFormatTableEntry (line 35) | struct SDMABUFFormatTableEntry {
type SDMABUFTranche (line 42) | struct SDMABUFTranche {
class CDMABUFFormatTable (line 49) | class CDMABUFFormatTable {
class CLinuxDMABUFParamsResource (line 60) | class CLinuxDMABUFParamsResource {
class CLinuxDMABUFFeedbackResource (line 79) | class CLinuxDMABUFFeedbackResource {
class CLinuxDMABUFResource (line 97) | class CLinuxDMABUFResource {
class CLinuxDMABufV1Protocol (line 109) | class CLinuxDMABufV1Protocol : public IWaylandProtocol {
type PROTO (line 142) | namespace PROTO {
FILE: src/protocols/LockNotify.cpp
function UNLIKELY (line 65) | UNLIKELY (m_isLocked) {
FILE: src/protocols/LockNotify.hpp
class CEventLoopTimer (line 9) | class CEventLoopTimer
class CHyprlandLockNotification (line 11) | class CHyprlandLockNotification {
class CLockNotifyProtocol (line 25) | class CLockNotifyProtocol : public IWaylandProtocol {
type PROTO (line 48) | namespace PROTO {
FILE: src/protocols/MesaDRM.hpp
class CMesaDRMBufferResource (line 10) | class CMesaDRMBufferResource {
class CMesaDRMResource (line 27) | class CMesaDRMResource {
class CMesaDRMProtocol (line 37) | class CMesaDRMProtocol : public IWaylandProtocol {
type PROTO (line 57) | namespace PROTO {
FILE: src/protocols/OutputManagement.cpp
function PHLMONITOR (line 230) | PHLMONITOR COutputHead::monitor() {
FILE: src/protocols/OutputManagement.hpp
class CMonitor (line 11) | class CMonitor
class COutputHead (line 13) | class COutputHead
class COutputMode (line 14) | class COutputMode
type SMonitorRule (line 16) | struct SMonitorRule
type eWlrOutputCommittedProperties (line 18) | enum eWlrOutputCommittedProperties : uint32_t {
type SWlrManagerOutputState (line 27) | struct SWlrManagerOutputState {
type SWlrManagerSavedOutputState (line 42) | struct SWlrManagerSavedOutputState {
class COutputManager (line 53) | class COutputManager {
class COutputMode (line 76) | class COutputMode {
class COutputHead (line 92) | class COutputHead {
class COutputConfigurationHead (line 119) | class COutputConfigurationHead {
class COutputConfiguration (line 134) | class COutputConfiguration {
class COutputManagementProtocol (line 152) | class COutputManagementProtocol : public IWaylandProtocol {
type PROTO (line 190) | namespace PROTO {
FILE: src/protocols/OutputPower.hpp
class CMonitor (line 9) | class CMonitor
class COutputPower (line 11) | class COutputPower {
class COutputPowerProtocol (line 29) | class COutputPowerProtocol : public IWaylandProtocol {
type PROTO (line 47) | namespace PROTO {
FILE: src/protocols/PointerConstraints.cpp
function CRegion (line 166) | CRegion CPointerConstraint::logicConstraintRegion() {
function Vector2D (line 185) | Vector2D CPointerConstraint::logicPositionHint() {
FILE: src/protocols/PointerConstraints.hpp
class CWLSurfaceResource (line 13) | class CWLSurfaceResource
class CPointerConstraint (line 15) | class CPointerConstraint {
class CPointerConstraintsProtocol (line 56) | class CPointerConstraintsProtocol : public IWaylandProtocol {
type PROTO (line 76) | namespace PROTO {
FILE: src/protocols/PointerGestures.hpp
class CPointerGestureSwipe (line 8) | class CPointerGestureSwipe {
class CPointerGesturePinch (line 20) | class CPointerGesturePinch {
class CPointerGestureHold (line 32) | class CPointerGestureHold {
class CPointerGesturesProtocol (line 44) | class CPointerGesturesProtocol : public IWaylandProtocol {
type PROTO (line 81) | namespace PROTO {
FILE: src/protocols/PointerWarp.hpp
class CPointerWarpProtocol (line 6) | class CPointerWarpProtocol : public IWaylandProtocol {
type PROTO (line 19) | namespace PROTO {
FILE: src/protocols/PresentationTime.hpp
class CMonitor (line 10) | class CMonitor
class CWLSurfaceResource (line 11) | class CWLSurfaceResource
class CQueuedPresentationData (line 13) | class CQueuedPresentationData {
class CPresentationFeedback (line 35) | class CPresentationFeedback {
class CPresentationProtocol (line 51) | class CPresentationProtocol : public IWaylandProtocol {
type PROTO (line 73) | namespace PROTO {
FILE: src/protocols/PrimarySelection.cpp
function wl_client (line 144) | wl_client* CPrimarySelectionDevice::client() {
FILE: src/protocols/PrimarySelection.hpp
class CPrimarySelectionOffer (line 10) | class CPrimarySelectionOffer
class CPrimarySelectionSource (line 11) | class CPrimarySelectionSource
class CPrimarySelectionDevice (line 12) | class CPrimarySelectionDevice
class CPrimarySelectionManager (line 13) | class CPrimarySelectionManager
class CPrimarySelectionOffer (line 15) | class CPrimarySelectionOffer {
class CPrimarySelectionSource (line 32) | class CPrimarySelectionSource : public IDataSource {
class CPrimarySelectionDevice (line 55) | class CPrimarySelectionDevice {
class CPrimarySelectionManager (line 74) | class CPrimarySelectionManager {
class CPrimarySelectionProtocol (line 87) | class CPrimarySelectionProtocol : public IWaylandProtocol {
type PROTO (line 125) | namespace PROTO {
FILE: src/protocols/RelativePointer.cpp
function wl_client (line 20) | wl_client* CRelativePointer::client() {
FILE: src/protocols/RelativePointer.hpp
class CRelativePointer (line 9) | class CRelativePointer {
class CRelativePointerProtocol (line 23) | class CRelativePointerProtocol : public IWaylandProtocol {
type PROTO (line 43) | namespace PROTO {
FILE: src/protocols/Screencopy.cpp
function UNLIKELY (line 108) | UNLIKELY (m_buffer) {
FILE: src/protocols/Screencopy.hpp
class CMonitor (line 12) | class CMonitor
class IHLBuffer (line 13) | class IHLBuffer
type Screenshare (line 14) | namespace Screenshare {
class CScreenshareSession (line 15) | class CScreenshareSession
class CScreenshareFrame (line 16) | class CScreenshareFrame
class CScreencopyClient (line 19) | class CScreencopyClient {
class CScreencopyFrame (line 36) | class CScreencopyFrame {
class CScreencopyProtocol (line 61) | class CScreencopyProtocol : public IWaylandProtocol {
type PROTO (line 77) | namespace PROTO {
FILE: src/protocols/SecurityContext.cpp
function onListenFdEvent (line 6) | static int onListenFdEvent(int fd, uint32_t mask, void* data) {
function onCloseFdEvent (line 12) | static int onCloseFdEvent(int fd, uint32_t mask, void* data) {
function onSecurityContextClientDestroy (line 25) | static void onSecurityContextClientDestroy(wl_listener* l, void* d) {
function UNLIKELY (line 72) | UNLIKELY (m_committed) {
function UNLIKELY (line 87) | UNLIKELY (m_committed) {
function UNLIKELY (line 102) | UNLIKELY (m_committed) {
FILE: src/protocols/SecurityContext.hpp
class CSecurityContext (line 9) | class CSecurityContext {
class CSecurityContextManagerResource (line 35) | class CSecurityContextManagerResource {
class CSecurityContextSandboxedClient (line 45) | class CSecurityContextSandboxedClient
type SCSecurityContextSandboxedClientDestroyWrapper (line 46) | struct SCSecurityContextSandboxedClientDestroyWrapper {
class CSecurityContextSandboxedClient (line 51) | class CSecurityContextSandboxedClient {
class CSecurityContextProtocol (line 70) | class CSecurityContextProtocol : public IWaylandProtocol {
type PROTO (line 93) | namespace PROTO {
FILE: src/protocols/ServerDecorationKDE.hpp
class CWLSurfaceResource (line 8) | class CWLSurfaceResource
class CServerDecorationKDE (line 10) | class CServerDecorationKDE {
class CServerDecorationKDEProtocol (line 31) | class CServerDecorationKDEProtocol : public IWaylandProtocol {
type PROTO (line 52) | namespace PROTO {
FILE: src/protocols/SessionLock.cpp
function PHLMONITOR (line 98) | PHLMONITOR CSessionLockSurface::monitor() {
FILE: src/protocols/SessionLock.hpp
class CMonitor (line 9) | class CMonitor
class CSessionLock (line 10) | class CSessionLock
class CWLSurfaceResource (line 11) | class CWLSurfaceResource
class CSessionLockSurface (line 13) | class CSessionLockSurface {
class CSessionLock (line 47) | class CSessionLock {
class CSessionLockProtocol (line 70) | class CSessionLockProtocol : public IWaylandProtocol {
type PROTO (line 100) | namespace PROTO {
FILE: src/protocols/ShortcutsInhibit.hpp
class CWLSurfaceResource (line 8) | class CWLSurfaceResource
class CKeyboardShortcutsInhibitor (line 10) | class CKeyboardShortcutsInhibitor {
class CKeyboardShortcutsInhibitProtocol (line 23) | class CKeyboardShortcutsInhibitProtocol : public IWaylandProtocol {
type PROTO (line 43) | namespace PROTO {
FILE: src/protocols/SinglePixel.hpp
class CSinglePixelBuffer (line 9) | class CSinglePixelBuffer : public IHLBuffer {
class CSinglePixelBufferResource (line 29) | class CSinglePixelBufferResource {
class CSinglePixelBufferManagerResource (line 44) | class CSinglePixelBufferManagerResource {
class CSinglePixelProtocol (line 54) | class CSinglePixelProtocol : public IWaylandProtocol {
type PROTO (line 72) | namespace PROTO {
FILE: src/protocols/Tablet.hpp
class CTablet (line 10) | class CTablet
class CTabletTool (line 11) | class CTabletTool
class CTabletPad (line 12) | class CTabletPad
class CEventLoopTimer (line 13) | class CEventLoopTimer
class CTabletSeat (line 14) | class CTabletSeat
class CWLSurfaceResource (line 15) | class CWLSurfaceResource
class CTabletPadStripV2Resource (line 17) | class CTabletPadStripV2Resource {
class CTabletPadRingV2Resource (line 33) | class CTabletPadRingV2Resource {
class CTabletPadGroupV2Resource (line 49) | class CTabletPadGroupV2Resource {
class CTabletPadV2Resource (line 66) | class CTabletPadV2Resource {
class CTabletV2Resource (line 89) | class CTabletV2Resource {
class CTabletToolV2Resource (line 108) | class CTabletToolV2Resource {
class CTabletSeat (line 134) | class CTabletSeat {
class CTabletV2Protocol (line 156) | class CTabletV2Protocol : public IWaylandProtocol {
type PROTO (line 232) | namespace PROTO {
FILE: src/protocols/TearingControl.hpp
class CTearingControlProtocol (line 6) | class CTearingControlProtocol
class CWLSurfaceResource (line 7) | class CWLSurfaceResource
class CTearingControl (line 9) | class CTearingControl {
class CTearingControlProtocol (line 35) | class CTearingControlProtocol : public IWaylandProtocol {
type PROTO (line 54) | namespace PROTO {
FILE: src/protocols/TextInputV1.cpp
function wl_client (line 62) | wl_client* CTextInputV1::client() {
FILE: src/protocols/TextInputV1.hpp
class CTextInput (line 10) | class CTextInput
class CTextInputV1 (line 12) | class CTextInputV1 {
type SPendingSurr (line 43) | struct SPendingSurr {
type SPendingCT (line 50) | struct SPendingCT {
class CTextInputV1Protocol (line 62) | class CTextInputV1Protocol : public IWaylandProtocol {
type PROTO (line 81) | namespace PROTO {
FILE: src/protocols/TextInputV3.cpp
function wl_client (line 104) | wl_client* CTextInputV3::client() {
FILE: src/protocols/TextInputV3.hpp
class CWLSurfaceResource (line 11) | class CWLSurfaceResource
class CTextInputV3 (line 13) | class CTextInputV3 {
type SState (line 37) | struct SState {
class CTextInputV3Protocol (line 76) | class CTextInputV3Protocol : public IWaylandProtocol {
type PROTO (line 98) | namespace PROTO {
FILE: src/protocols/ToplevelExport.cpp
function UNLIKELY (line 102) | UNLIKELY (m_buffer) {
FILE: src/protocols/ToplevelExport.hpp
class CMonitor (line 12) | class CMonitor
type Screenshare (line 13) | namespace Screenshare {
class CScreenshareSession (line 14) | class CScreenshareSession
class CScreenshareFrame (line 15) | class CScreenshareFrame
class CToplevelExportClient (line 18) | class CToplevelExportClient {
class CToplevelExportFrame (line 35) | class CToplevelExportFrame {
class CToplevelExportProtocol (line 59) | class CToplevelExportProtocol : IWaylandProtocol {
type PROTO (line 79) | namespace PROTO {
FILE: src/protocols/ToplevelMapping.hpp
class CToplevelWindowMappingHandle (line 7) | class CToplevelWindowMappingHandle {
class CToplevelMappingManager (line 18) | class CToplevelMappingManager {
class CToplevelMappingProtocol (line 28) | class CToplevelMappingProtocol : IWaylandProtocol {
type PROTO (line 44) | namespace PROTO {
FILE: src/protocols/Viewporter.hpp
class CWLSurfaceResource (line 9) | class CWLSurfaceResource
class CViewportResource (line 11) | class CViewportResource {
class CViewporterResource (line 27) | class CViewporterResource {
class CViewporterProtocol (line 37) | class CViewporterProtocol : public IWaylandProtocol {
type PROTO (line 55) | namespace PROTO {
FILE: src/protocols/VirtualKeyboard.cpp
function virtualKeyboardNameForWlClient (line 11) | static std::string virtualKeyboardNameForWlClient(wl_client* client) {
function wl_client (line 121) | wl_client* CVirtualKeyboardV1Resource::client() {
FILE: src/protocols/VirtualKeyboard.hpp
class CVirtualKeyboardV1Resource (line 12) | class CVirtualKeyboardV1Resource {
class CVirtualKeyboardProtocol (line 40) | class CVirtualKeyboardProtocol : public IWaylandProtocol {
type PROTO (line 62) | namespace PROTO {
FILE: src/protocols/VirtualPointer.cpp
function wl_client (line 102) | wl_client* CVirtualPointerV1Resource::client() {
FILE: src/protocols/VirtualPointer.hpp
class CVirtualPointerV1Resource (line 12) | class CVirtualPointerV1Resource {
class CVirtualPointerProtocol (line 52) | class CVirtualPointerProtocol : public IWaylandProtocol {
type PROTO (line 74) | namespace PROTO {
FILE: src/protocols/WaylandProtocol.cpp
function bindManagerInternal (line 4) | static void bindManagerInternal(wl_client* client, void* data, uint32_t ...
function displayDestroyInternal (line 8) | static void displayDestroyInternal(struct wl_listener* listener, void* d...
function wl_global (line 48) | wl_global* IWaylandProtocol::getGlobal() {
FILE: src/protocols/WaylandProtocol.hpp
class IWaylandProtocol (line 45) | class IWaylandProtocol
type SIWaylandProtocolDestroyWrapper (line 46) | struct SIWaylandProtocolDestroyWrapper {
class IWaylandProtocol (line 51) | class IWaylandProtocol {
FILE: src/protocols/XDGActivation.cpp
function UNLIKELY (line 21) | UNLIKELY (m_committed) {
FILE: src/protocols/XDGActivation.hpp
class CXDGActivationToken (line 8) | class CXDGActivationToken {
class CXDGActivationProtocol (line 27) | class CXDGActivationProtocol : public IWaylandProtocol {
type SSentToken (line 38) | struct SSentToken {
type PROTO (line 51) | namespace PROTO {
FILE: src/protocols/XDGBell.hpp
class CXDGSystemBellManagerResource (line 7) | class CXDGSystemBellManagerResource {
class CXDGSystemBellProtocol (line 17) | class CXDGSystemBellProtocol : public IWaylandProtocol {
type PROTO (line 32) | namespace PROTO {
FILE: src/protocols/XDGDecoration.cpp
function zxdgToplevelDecorationV1Mode (line 39) | zxdgToplevelDecorationV1Mode CXDGDecoration::xdgDefaultModeCSD() {
function zxdgToplevelDecorationV1Mode (line 43) | zxdgToplevelDecorationV1Mode CXDGDecoration::xdgModeOnRequestCSD(uint32_...
function zxdgToplevelDecorationV1Mode (line 47) | zxdgToplevelDecorationV1Mode CXDGDecoration::xdgModeOnReleaseCSD() {
function wl_resource (line 55) | wl_resource* CXDGDecoration::toplevelResource() {
FILE: src/protocols/XDGDecoration.hpp
class CXDGDecoration (line 8) | class CXDGDecoration {
class CXDGDecorationProtocol (line 27) | class CXDGDecorationProtocol : public IWaylandProtocol {
type PROTO (line 45) | namespace PROTO {
FILE: src/protocols/XDGDialog.hpp
class CXDGToplevelResource (line 8) | class CXDGToplevelResource
class CXDGDialogV1Resource (line 10) | class CXDGDialogV1Resource {
class CXDGWmDialogManagerResource (line 25) | class CXDGWmDialogManagerResource {
class CXDGDialogProtocol (line 35) | class CXDGDialogProtocol : public IWaylandProtocol {
type PROTO (line 54) | namespace PROTO {
FILE: src/protocols/XDGOutput.hpp
class CMonitor (line 7) | class CMonitor
class CXDGOutputProtocol (line 8) | class CXDGOutputProtocol
class CWLOutputProtocol (line 9) | class CWLOutputProtocol
class CXDGOutput (line 11) | class CXDGOutput {
class CXDGOutputProtocol (line 28) | class CXDGOutputProtocol : public IWaylandProtocol {
type PROTO (line 47) | namespace PROTO {
FILE: src/protocols/XDGShell.cpp
function Vector2D (line 90) | Vector2D CXDGPopupResource::accumulateParentOffset() {
function Vector2D (line 373) | Vector2D CXDGToplevelResource::layoutMinSize() {
function Vector2D (line 382) | Vector2D CXDGToplevelResource::layoutMaxSize() {
function onConfigure (line 537) | static void onConfigure(void* data) {
function CBox (line 608) | CBox CXDGPositionerRules::getPosition(CBox constraint, const Vector2D& p...
function wl_client (line 799) | wl_client* CXDGWMBase::client() {
FILE: src/protocols/XDGShell.hpp
class CXDGWMBase (line 13) | class CXDGWMBase
class CXDGPositionerResource (line 14) | class CXDGPositionerResource
class CXDGSurfaceResource (line 15) | class CXDGSurfaceResource
class CXDGToplevelResource (line 16) | class CXDGToplevelResource
class CXDGPopupResource (line 17) | class CXDGPopupResource
class CSeatGrab (line 18) | class CSeatGrab
class CWLSurfaceResource (line 19) | class CWLSurfaceResource
class CXDGDialogV1Resource (line 20) | class CXDGDialogV1Resource
type SXDGPositionerState (line 22) | struct SXDGPositionerState {
class CXDGPositionerRules (line 36) | class CXDGPositionerRules {
class CXDGPopupResource (line 46) | class CXDGPopupResource {
class CXDGToplevelResource (line 87) | class CXDGToplevelResource {
class CXDGSurfaceRole (line 156) | class CXDGSurfaceRole : public ISurfaceRole {
method eSurfaceRole (line 160) | virtual eSurfaceRole role() {
class CXDGSurfaceResource (line 167) | class CXDGSurfaceResource {
class CXDGPositionerResource (line 224) | class CXDGPositionerResource {
class CXDGWMBase (line 241) | class CXDGWMBase {
class CXDGShellProtocol (line 263) | class CXDGShellProtocol : public IWaylandProtocol {
type PROTO (line 298) | namespace PROTO {
FILE: src/protocols/XDGTag.hpp
class CXDGToplevelResource (line 7) | class CXDGToplevelResource
class CXDGToplevelTagManagerResource (line 9) | class CXDGToplevelTagManagerResource {
class CXDGToplevelTagProtocol (line 19) | class CXDGToplevelTagProtocol : public IWaylandProtocol {
type PROTO (line 34) | namespace PROTO {
FILE: src/protocols/XWaylandShell.cpp
function wl_client (line 34) | wl_client* CXWaylandSurfaceResource::client() {
FILE: src/protocols/XWaylandShell.hpp
class CWLSurfaceResource (line 9) | class CWLSurfaceResource
class CXWaylandSurfaceResource (line 11) | class CXWaylandSurfaceResource {
class CXWaylandShellResource (line 33) | class CXWaylandShellResource {
class CXWaylandShellProtocol (line 43) | class CXWaylandShellProtocol : public IWaylandProtocol {
type PROTO (line 65) | namespace PROTO {
FILE: src/protocols/core/Compositor.cpp
class CDefaultSurfaceRole (line 23) | class CDefaultSurfaceRole : public ISurfaceRole {
method eSurfaceRole (line 25) | virtual eSurfaceRole role() {
function wl_client (line 270) | wl_client* CWLSurfaceResource::client() {
function CBox (line 488) | CBox CWLSurfaceResource::extends() {
function PImageDescription (line 579) | PImageDescription CWLSurfaceResource::getPreferredImageDescription() {
FILE: src/protocols/core/Compositor.hpp
class CWLOutputResource (line 27) | class CWLOutputResource
class CMonitor (line 28) | class CMonitor
class CWLSurfaceResource (line 29) | class CWLSurfaceResource
class CWLSubsurfaceResource (line 30) | class CWLSubsurfaceResource
class CViewportResource (line 31) | class CViewportResource
class CDRMSyncobjSurfaceResource (line 32) | class CDRMSyncobjSurfaceResource
class CFifoResource (line 33) | class CFifoResource
class CCommitTimerResource (line 34) | class CCommitTimerResource
class CColorManagementSurface (line 35) | class CColorManagementSurface
class CContentType (line 36) | class CContentType
class CWLCallbackResource (line 38) | class CWLCallbackResource {
method CWLCallbackResource (line 43) | CWLCallbackResource(const CWLCallbackResource&) = delete;
method CWLCallbackResource (line 44) | CWLCallbackResource& operator=(const CWLCallbackResource&) = delete;
method CWLCallbackResource (line 47) | CWLCallbackResource(CWLCallbackResource&&) noexcept = default;
method CWLCallbackResource (line 48) | CWLCallbackResource& operator=(CWLCallbackResource&&) noexcept = default;
class CWLRegionResource (line 57) | class CWLRegionResource {
class CWLSurfaceResource (line 71) | class CWLSurfaceResource {
class CWLCompositorResource (line 152) | class CWLCompositorResource {
class CWLCompositorProtocol (line 162) | class CWLCompositorProtocol : public IWaylandProtocol {
type PROTO (line 190) | namespace PROTO {
FILE: src/protocols/core/DataDevice.cpp
function eDataSourceType (line 115) | eDataSourceType CWLDataOfferResource::type() {
function eDataSourceType (line 235) | eDataSourceType CWLDataSourceResource::type() {
function wl_client (line 286) | wl_client* CWLDataDeviceResource::client() {
function eDataSourceType (line 330) | eDataSourceType CWLDataDeviceResource::type() {
FILE: src/protocols/core/DataDevice.hpp
class CWLDataDeviceResource (line 22) | class CWLDataDeviceResource
class CWLDataDeviceManagerResource (line 23) | class CWLDataDeviceManagerResource
class CWLDataSourceResource (line 24) | class CWLDataSourceResource
class CWLDataOfferResource (line 25) | class CWLDataOfferResource
class CWLSurfaceResource (line 27) | class CWLSurfaceResource
class CMonitor (line 28) | class CMonitor
class CWLDataOfferResource (line 30) | class CWLDataOfferResource : public IDataOffer {
class CWLDataSourceResource (line 56) | class CWLDataSourceResource : public IDataSource {
class CWLDataDeviceResource (line 94) | class CWLDataDeviceResource : public IDataDevice {
class CWLDataDeviceManagerResource (line 122) | class CWLDataDeviceManagerResource {
class CWLDataDeviceProtocol (line 135) | class CWLDataDeviceProtocol : public IWaylandProtocol {
type PROTO (line 211) | namespace PROTO {
FILE: src/protocols/core/Output.cpp
function wl_client (line 62) | wl_client* CWLOutputResource::client() {
FILE: src/protocols/core/Output.hpp
class CMonitor (line 9) | class CMonitor
class CWLOutputProtocol (line 10) | class CWLOutputProtocol
class CWLOutputResource (line 12) | class CWLOutputResource {
class CWLOutputProtocol (line 33) | class CWLOutputProtocol : public IWaylandProtocol {
type PROTO (line 68) | namespace PROTO {
FILE: src/protocols/core/Seat.cpp
function Vector2D (line 310) | Vector2D CWLPointerResource::fixPosWithWlFixed(const Vector2D& pos) {
function wl_client (line 519) | wl_client* CWLSeatResource::client() {
FILE: src/protocols/core/Seat.hpp
class IKeyboard (line 23) | class IKeyboard
class CWLSurfaceResource (line 24) | class CWLSurfaceResource
class CWLPointerResource (line 26) | class CWLPointerResource
class CWLKeyboardResource (line 27) | class CWLKeyboardResource
class CWLTouchResource (line 28) | class CWLTouchResource
class CWLSeatResource (line 29) | class CWLSeatResource
class CCursorSurfaceRole (line 31) | class CCursorSurfaceRole : public ISurfaceRole {
method eSurfaceRole (line 33) | virtual eSurfaceRole role() {
class CWLTouchResource (line 45) | class CWLTouchResource {
class CWLPointerResource (line 71) | class CWLPointerResource {
class CWLKeyboardResource (line 115) | class CWLKeyboardResource {
class CWLSeatResource (line 142) | class CWLSeatResource {
class CWLSeatProtocol (line 167) | class CWLSeatProtocol : public IWaylandProtocol {
type PROTO (line 205) | namespace PROTO {
FILE: src/protocols/core/Shm.cpp
function shmIsSizeValid (line 100) | static int shmIsSizeValid(CFileDescriptor& fd, size_t size) {
FILE: src/protocols/core/Shm.hpp
class CWLSHMPoolResource (line 19) | class CWLSHMPoolResource
class CSHMPool (line 21) | class CSHMPool {
method CSHMPool (line 23) | CSHMPool() = delete;
class CWLSHMBuffer (line 34) | class CWLSHMBuffer : public IHLBuffer {
class CWLSHMPoolResource (line 60) | class CWLSHMPoolResource {
class CWLSHMResource (line 76) | class CWLSHMResource {
class CWLSHMProtocol (line 86) | class CWLSHMProtocol : public IWaylandProtocol {
type PROTO (line 110) | namespace PROTO {
FILE: src/protocols/core/Subcompositor.cpp
function Vector2D (line 108) | Vector2D CWLSubsurfaceResource::posRelativeToParent() {
FILE: src/protocols/core/Subcompositor.hpp
class CWLSurfaceResource (line 17) | class CWLSurfaceResource
class CWLSubsurfaceResource (line 18) | class CWLSubsurfaceResource
class CSubsurfaceRole (line 20) | class CSubsurfaceRole : public ISurfaceRole {
method eSurfaceRole (line 24) | virtual eSurfaceRole role() {
class CWLSubsurfaceResource (line 31) | class CWLSubsurfaceResource {
class CWLSubcompositorResource (line 64) | class CWLSubcompositorResource {
class CWLSubcompositorProtocol (line 74) | class CWLSubcompositorProtocol : public IWaylandProtocol {
type PROTO (line 92) | namespace PROTO {
FILE: src/protocols/types/Buffer.cpp
function CHLBufferReference (line 76) | CHLBufferReference& CHLBufferReference::operator=(const CHLBufferReferen...
function CHLBufferReference (line 88) | CHLBufferReference& CHLBufferReference::operator=(CHLBufferReference&& o...
FILE: src/protocols/types/Buffer.hpp
class CSyncReleaser (line 10) | class CSyncReleaser
class CHLBufferReference (line 11) | class CHLBufferReference
class IHLBuffer (line 13) | class IHLBuffer : public Aquamarine::IBuffer {
class CHLBufferReference (line 48) | class CHLBufferReference {
FILE: src/protocols/types/ContentType.cpp
type NContentType (line 7) | namespace NContentType {
function eContentType (line 11) | eContentType fromString(const std::string name) {
function toString (line 26) | std::string toString(eContentType type) {
function eContentType (line 34) | eContentType fromWP(wpContentTypeV1Type contentType) {
function toDRM (line 44) | uint16_t toDRM(eContentType contentType) {
FILE: src/protocols/types/ContentType.hpp
type NContentType (line 6) | namespace NContentType {
type eContentType (line 8) | enum eContentType : uint8_t {
FILE: src/protocols/types/DMABuffer.cpp
function doIoctl (line 93) | static int doIoctl(int fd, unsigned long request, void* arg) {
function CFileDescriptor (line 104) | CFileDescriptor CDMABuffer::exportSyncFile() {
FILE: src/protocols/types/DMABuffer.hpp
class CDMABuffer (line 6) | class CDMABuffer : public IHLBuffer {
FILE: src/protocols/types/DataDevice.cpp
function eDataSourceType (line 19) | eDataSourceType IDataSource::type() {
FILE: src/protocols/types/DataDevice.hpp
class CWLDataOfferResource (line 12) | class CWLDataOfferResource
class CX11DataOffer (line 13) | class CX11DataOffer
class CX11DataDevice (line 14) | class CX11DataDevice
class CWLDataDeviceResource (line 15) | class CWLDataDeviceResource
class CWLSurfaceResource (line 16) | class CWLSurfaceResource
type eDataSourceType (line 18) | enum eDataSourceType : uint8_t {
class IDataSource (line 23) | class IDataSource {
method IDataSource (line 25) | IDataSource() = default;
class IDataOffer (line 51) | class IDataOffer {
method IDataOffer (line 53) | IDataOffer() = default;
class IDataDevice (line 63) | class IDataDevice {
method IDataDevice (line 65) | IDataDevice() = default;
FILE: src/protocols/types/SurfaceRole.hpp
type eSurfaceRole (line 3) | enum eSurfaceRole : uint8_t {
class ISurfaceRole (line 12) | class ISurfaceRole {
FILE: src/protocols/types/SurfaceState.cpp
function Vector2D (line 7) | Vector2D SSurfaceState::sourceSize() {
function CRegion (line 18) | CRegion SSurfaceState::accumulateBufferDamage() {
FILE: src/protocols/types/SurfaceState.hpp
class ITexture (line 9) | class ITexture
class CDRMSyncPointState (line 10) | class CDRMSyncPointState
class CWLCallbackResource (line 11) | class CWLCallbackResource
type eLockReason (line 13) | enum eLockReason : uint8_t {
function eLockReason (line 20) | inline eLockReason operator|(eLockReason a, eLockReason b) {
function eLockReason (line 23) | inline eLockReason operator&(eLockReason a, eLockReason b) {
function eLockReason (line 26) | inline eLockReason& operator|=(eLockReason& a, eLockReason b) {
function eLockReason (line 30) | inline eLockReason& operator&=(eLockReason& a, eLockReason b) {
function eLockReason (line 34) | inline eLockReason operator~(eLockReason a) {
type SSurfaceState (line 38) | struct SSurfaceState {
FILE: src/protocols/types/SurfaceStateQueue.hpp
class CWLSurfaceResource (line 7) | class CWLSurfaceResource
class CSurfaceStateQueue (line 9) | class CSurfaceStateQueue {
method CSurfaceStateQueue (line 11) | CSurfaceStateQueue() = default;
FILE: src/protocols/types/WLBuffer.cpp
function wl_resource (line 34) | wl_resource* CWLBufferResource::getResource() {
FILE: src/protocols/types/WLBuffer.hpp
class IHLBuffer (line 9) | class IHLBuffer
class CWLSurfaceResource (line 10) | class CWLSurfaceResource
class CWLBufferResource (line 12) | class CWLBufferResource {
FILE: src/render/Framebuffer.hpp
class CHLBufferReference (line 9) | class CHLBufferReference
class IFramebuffer (line 11) | class IFramebuffer {
method IFramebuffer (line 13) | IFramebuffer() = default;
FILE: src/render/GLRenderer.hpp
class CHyprGLRenderer (line 5) | class CHyprGLRenderer : public IHyprRenderer {
FILE: src/render/OpenGL.cpp
function loadGLProc (line 64) | static inline void loadGLProc(void* pProc, const char* name) {
function eglLogToLevel (line 73) | static enum Hyprutils::CLI::eLogLevel eglLogToLevel(EGLint type) {
function eglLog (line 105) | static void eglLog(EGLenum error, const char* command, EGLint type, EGLL...
function openRenderNode (line 109) | static int openRenderNode(int drmFd) {
function drmDeviceHasName (line 225) | static bool drmDeviceHasName(const drmDevice* device, const std::string&...
function EGLDeviceEXT (line 236) | EGLDeviceEXT CHyprOpenGLImpl::eglDeviceFromDRMFD(int drmFD) {
function EGLImageKHR (line 593) | EGLImageKHR CHyprOpenGLImpl::createEGLImage(const Aquamarine::SDMABUFAtt...
function LIKELY (line 760) | LIKELY (m_offloadedFramebuffer) {
function isSDR2HDR (line 1135) | static bool isSDR2HDR(const NColorManagement::SImageDescription& imageDe...
function isHDR2SDR (line 1143) | static bool isHDR2SDR(const NColorManagement::SImageDescription& imageDe...
function CFileDescriptor (line 2507) | CFileDescriptor& CEGLSync::fd() {
function CFileDescriptor (line 2511) | CFileDescriptor&& CEGLSync::takeFd() {
FILE: src/render/OpenGL.hpp
type gbm_device (line 42) | struct gbm_device
class IHyprRenderer (line 43) | class IHyprRenderer
type SVertex (line 45) | struct SVertex {
type SRenderModifData (line 59) | struct SRenderModifData {
type eRenderModifType (line 60) | enum eRenderModifType : uint8_t {
type eMonitorRenderFBs (line 77) | enum eMonitorRenderFBs : uint8_t {
type eMonitorExtraRenderFBs (line 83) | enum eMonitorExtraRenderFBs : uint8_t {
type SFragShaderDesc (line 92) | struct SFragShaderDesc {
type SPreparedShaders (line 97) | struct SPreparedShaders {
type SCurrentRenderData (line 111) | struct SCurrentRenderData {
class CEGLSync (line 147) | class CEGLSync {
method CEGLSync (line 158) | CEGLSync() = default;
class CGradientValueData (line 167) | class CGradientValueData
class CHyprOpenGLImpl (line 169) | class CHyprOpenGLImpl {
type SRectRenderData (line 174) | struct SRectRenderData {
type STextureRenderData (line 183) | struct STextureRenderData {
type SBorderRenderData (line 213) | struct SBorderRenderData {
type eEGLContextVersion (line 305) | enum eEGLContextVersion : uint8_t {
type eCachedCapStatus (line 313) | enum eCachedCapStatus : uint8_t {
FILE: src/render/Renderbuffer.hpp
class IRenderbuffer (line 8) | class IRenderbuffer {
FILE: src/render/Renderer.cpp
function cursorTicker (line 73) | static int cursorTicker(void* data) {
function getSurfaceExpectedSize (line 1895) | static std::optional<Vector2D> getSurfaceExpectedSize(PHLWINDOW pWindow,...
function Mat3x3 (line 2105) | static Mat3x3 getMirrorProjection(PHLMONITORREF monitor) {
function Mat3x3 (line 2113) | static Mat3x3 getFBProjection(PHLMONITORREF pMonitor, const Vector2D& si...
function Mat3x3 (line 2137) | Mat3x3 IHyprRenderer::getBoxProjection(const CBox& box, std::optional<eT...
function Mat3x3 (line 2143) | Mat3x3 IHyprRenderer::projectBoxToTarget(const CBox& box, std::optional<...
function isSDR2HDR (line 2184) | static bool isSDR2HDR(const NColorManagement::SImageDescription& imageDe...
function isHDR2SDR (line 2192) | static bool isHDR2SDR(const NColorManagement::SImageDescription& imageDe...
function SCMSettings (line 2200) | SCMSettings IHyprRenderer::getCMSettings(const NColorManagement::PImageD...
function hdr_output_metadata (line 2541) | static hdr_output_metadata createHDRMetadata(SImageDescription set...
function applyExclusive (line 2760) | static void applyExclusive(CBox& usableArea, uint32_t anchor, int32_t ex...
function handleCrashLoop (line 3235) | static int handleCrashLoop(void* data) {
function SRenderData (line 3266) | const SRenderData& IHyprRenderer::renderData() {
FILE: src/render/Renderer.hpp
type SMonitorRule (line 30) | struct SMonitorRule
class CWorkspace (line 31) | class CWorkspace
class CInputPopup (line 32) | class CInputPopup
class IHLBuffer (line 33) | class IHLBuffer
class CEventLoopTimer (line 34) | class CEventLoopTimer
class CRenderPass (line 35) | class CRenderPass
class CToplevelExportProtocolManager (line 44) | class CToplevelExportProtocolManager
class CInputManager (line 45) | class CInputManager
type SSessionLockSurface (line 46) | struct SSessionLockSurface
type Screenshare (line 47) | namespace Screenshare {
class CScreenshareFrame (line 48) | class CScreenshareFrame
type eDamageTrackingModes (line 51) | enum eDamageTrackingModes : int8_t {
type eRenderPassMode (line 58) | enum eRenderPassMode : uint8_t {
type eRenderMode (line 64) | enum eRenderMode : uint8_t {
type SRenderWorkspaceUntilData (line 71) | struct SRenderWorkspaceUntilData {
type eRenderProjectionType (line 76) | enum eRenderProjectionType : uint8_t {
type SRenderData (line 83) | struct SRenderData {
type STFRange (line 120) | struct STFRange {
type SCMSettings (line 125) | struct SCMSettings {
class IHyprRenderer (line 143) | class IHyprRenderer {
method beginRenderInternal (line 279) | virtual bool beginRenderInternal(PHLMONITOR pMonitor, CRegion& damage,...
method beginFullFakeRenderInternal (line 282) | virtual bool beginFullFakeRenderInternal(PHLMONITOR pMonitor, CRegion&...
method initRenderBuffer (line 286) | virtual bool initRenderBuffer(SP<Aquamarine::IBuffer> buffer, uint32_t...
FILE: src/render/Shader.cpp
function compareFloat (line 7) | static bool compareFloat(auto a, auto b) {
function GLuint (line 48) | GLuint CShader::compileShader(const GLuint& type, std::string src, bool ...
function GLint (line 409) | GLint CShader::getUniformLocation(eShaderUniform location) const {
function GLuint (line 413) | GLuint CShader::program() const {
FILE: src/render/Shader.hpp
type eShaderUniform (line 7) | enum eShaderUniform : uint8_t {
class CShader (line 86) | class CShader {
type SUniformMatrix3Data (line 113) | struct SUniformMatrix3Data {
type SUniformMatrix4Data (line 119) | struct SUniformMatrix4Data {
type SUniformVData (line 125) | struct SUniformVData {
FILE: src/render/ShaderLoader.hpp
type Render (line 10) | namespace Render {
type ePreparedFragmentShaderFeature (line 11) | enum ePreparedFragmentShaderFeature : uint16_t {
type ePreparedFragmentShader (line 29) | enum ePreparedFragmentShader : uint8_t {
class CShaderLoader (line 46) | class CShaderLoader {
FILE: src/render/Texture.hpp
class IHLBuffer (line 8) | class IHLBuffer
type eTextureType (line 11) | enum eTextureType : int8_t {
class ITexture (line 19) | class ITexture {
method ITexture (line 21) | ITexture(ITexture&) = delete;
method ITexture (line 22) | ITexture(ITexture&&) = delete;
method ITexture (line 23) | ITexture(const ITexture&&) = delete;
method ITexture (line 24) | ITexture(const ITexture&) = delete;
method ITexture (line 52) | ITexture() = default;
FILE: src/render/Transformer.hpp
class IWindowTransformer (line 11) | class IWindowTransformer {
FILE: src/render/decorations/CHyprBorderDecoration.cpp
function SDecorationPositioningInfo (line 12) | SDecorationPositioningInfo CHyprBorderDecoration::getPositioningInfo() {
function CBox (line 34) | CBox CHyprBorderDecoration::assignedBoxGlobal() {
function eDecorationType (line 99) | eDecorationType CHyprBorderDecoration::getDecorationType() {
function eDecorationLayer (line 139) | eDecorationLayer CHyprBorderDecoration::getDecorationLayer() {
FILE: src/render/decorations/CHyprBorderDecoration.hpp
class CHyprBorderDecoration (line 5) | class CHyprBorderDecoration : public IHyprWindowDecoration {
FILE: src/render/decorations/CHyprDropShadowDecoration.cpp
function eDecorationType (line 13) | eDecorationType CHyprDropShadowDecoration::getDecorationType() {
function SDecorationPositioningInfo (line 17) | SDecorationPositioningInfo CHyprDropShadowDecoration::getPositioningInfo...
function SShadowRenderData (line 121) | SShadowRenderData CHyprDropShadowDecoration::getRenderData(PHLMONITOR pM...
function eDecorationLayer (line 291) | eDecorationLayer CHyprDropShadowDecoration::getDecorationLayer() {
FILE: src/render/decorations/CHyprDropShadowDecoration.hpp
type SShadowRenderData (line 5) | struct SShadowRenderData {
class CHyprDropShadowDecoration (line 16) | class CHyprDropShadowDecoration : public IHyprWindowDecoration {
FILE: src/render/decorations/CHyprGroupBarDecoration.cpp
function SDecorationPositioningInfo (line 40) | SDecorationPositioningInfo CHyprGroupBarDecoration::getPositioningInfo() {
function eDecorationType (line 72) | eDecorationType CHyprGroupBarDecoration::getDecorationType() {
function CTitleTex (line 276) | CTitleTex* CHyprGroupBarDecoration::textureFromTitle(const std::string& ...
function renderGradientTo (line 319) | static void renderGradientTo(SP<ITexture> tex, CGradientValueData* grad) {
function refreshGroupBarGradients (line 358) | void refreshGroupBarGradients() {
function eDecorationLayer (line 512) | eDecorationLayer CHyprGroupBarDecoration::getDecorationLayer() {
function CBox (line 524) | CBox CHyprGroupBarDecoration::assignedBoxGlobal() {
FILE: src/render/decorations/CHyprGroupBarDecoration.hpp
class CTitleTex (line 10) | class CTitleTex {
class CHyprGroupBarDecoration (line 26) | class CHyprGroupBarDecoration : public IHyprWindowDecoration {
type STitleTexs (line 74) | struct STitleTexs {
FILE: src/render/decorations/DecorationPositioner.cpp
function Vector2D (line 11) | Vector2D CDecorationPositioner::getEdgeDefinedPoint(uint32_t edges, PHLW...
function SBoxExtents (line 287) | SBoxExtents CDecorationPositioner::getWindowDecorationReserved(PHLWINDOW...
function SBoxExtents (line 294) | SBoxExtents CDecorationPositioner::getWindowDecorationExtents(PHLWINDOWR...
function CBox (line 343) | CBox CDecorationPositioner::getBoxWithIncludedDecos(PHLWINDOW pWindow) {
function CBox (line 381) | CBox CDecorationPositioner::getWindowDecorationBox(IHyprWindowDecoration...
FILE: src/render/decorations/DecorationPositioner.hpp
class IHyprWindowDecoration (line 9) | class IHyprWindowDecoration
type eDecorationPositioningPolicy (line 11) | enum eDecorationPositioningPolicy : uint8_t {
type eDecorationEdges (line 16) | enum eDecorationEdges : uint8_t {
type SDecorationPositioningInfo (line 35) | struct SDecorationPositioningInfo {
type SDecorationPositioningReply (line 52) | struct SDecorationPositioningReply {
class CDecorationPositioner (line 57) | class CDecorationPositioner {
type SWindowPositioningData (line 74) | struct SWindowPositioningData {
type SWindowData (line 82) | struct SWindowData {
FILE: src/render/decorations/IHyprWindowDecoration.cpp
function eDecorationLayer (line 11) | eDecorationLayer IHyprWindowDecoration::getDecorationLayer() {
FILE: src/render/decorations/IHyprWindowDecoration.hpp
type eDecorationType (line 8) | enum eDecorationType : int8_t {
type eDecorationLayer (line 16) | enum eDecorationLayer : uint8_t {
type eDecorationFlags (line 23) | enum eDecorationFlags : uint8_t {
class CMonitor (line 29) | class CMonitor
class CDecorationPositioner (line 30) | class CDecorationPositioner
class IHyprWindowDecoration (line 32) | class IHyprWindowDecoration {
FILE: src/render/gl/GLFramebuffer.cpp
function GLuint (line 162) | GLuint CGLFramebuffer::getFBID() {
FILE: src/render/gl/GLFramebuffer.hpp
class CGLFramebuffer (line 8) | class CGLFramebuffer : public IFramebuffer {
FILE: src/render/gl/GLRenderbuffer.hpp
class CMonitor (line 7) | class CMonitor
class CGLRenderbuffer (line 9) | class CGLRenderbuffer : public IRenderbuffer {
FILE: src/render/gl/GLTexture.hpp
class CGLTexture (line 7) | class CGLTexture : public ITexture {
method CGLTexture (line 11) | CGLTexture(CGLTexture&) = delete;
method CGLTexture (line 12) | CGLTexture(CGLTexture&&) = delete;
method CGLTexture (line 13) | CGLTexture(const CGLTexture&&) = delete;
method CGLTexture (line 14) | CGLTexture(const CGLTexture&) = delete;
type eTextureParam (line 33) | enum eTextureParam : uint8_t {
FILE: src/render/pass/BorderPassElement.hpp
class CGradientValueData (line 5) | class CGradientValueData
class CBorderPassElement (line 7) | class CBorderPassElement : public IPassElement {
type SBorderData (line 9) | struct SBorderData {
method ePassElementType (line 29) | virtual ePassElementType type() {
FILE: src/render/pass/ClearPassElement.cpp
function CRegion (line 19) | CRegion CClearPassElement::opaqueRegion() {
FILE: src/render/pass/ClearPassElement.hpp
class CClearPassElement (line 4) | class CClearPassElement : public IPassElement {
type SClearData (line 6) | struct SClearData {
method ePassElementType (line 22) | virtual ePassElementType type() {
FILE: src/render/pass/FramebufferElement.hpp
class CFramebufferElement (line 4) | class CFramebufferElement : public IPassElement {
type SFramebufferElementData (line 6) | struct SFramebufferElementData {
method ePassElementType (line 22) | virtual ePassElementType type() {
FILE: src/render/pass/Pass.cpp
function CRegion (line 121) | CRegion CRenderPass::render(const CRegion& damage_) {
FILE: src/render/pass/Pass.hpp
class CGradientValueData (line 6) | class CGradientValueData
class ITexture (line 7) | class ITexture
class CRenderPass (line 9) | class CRenderPass {
type SPassElementData (line 25) | struct SPassElementData {
FILE: src/render/pass/PassElement.cpp
function CRegion (line 7) | CRegion IPassElement::opaqueRegion() {
FILE: src/render/pass/PassElement.hpp
type ePassElementType (line 5) | enum ePassElementType : uint8_t {
class IPassElement (line 19) | class IPassElement {
FILE: src/render/pass/PreBlurElement.hpp
class CPreBlurElement (line 4) | class CPreBlurElement : public IPassElement {
method ePassElementType (line 18) | virtual ePassElementType type() {
FILE: src/render/pass/RectPassElement.cpp
function CRegion (line 20) | CRegion CRectPassElement::opaqueRegion() {
FILE: src/render/pass/RectPassElement.hpp
class CRectPassElement (line 5) | class CRectPassElement : public IPassElement {
type SRectData (line 7) | struct SRectData {
method ePassElementType (line 35) | virtual ePassElementType type() {
FILE: src/render/pass/RendererHintsPassElement.hpp
class CRendererHintsPassElement (line 6) | class CRendererHintsPassElement : public IPassElement {
type SData (line 8) | struct SData {
method ePassElementType (line 23) | virtual ePassElementType type() {
FILE: src/render/pass/ShadowPassElement.hpp
class CHyprDropShadowDecoration (line 4) | class CHyprDropShadowDecoration
class CShadowPassElement (line 6) | class CShadowPassElement : public IPassElement {
type SShadowData (line 8) | struct SShadowData {
method ePassElementType (line 23) | virtual ePassElementType type() {
FILE: src/render/pass/SurfacePassElement.cpp
function CBox (line 20) | CBox CSurfacePassElement::getTexBox() {
function CRegion (line 113) | CRegion CSurfacePassElement::opaqueRegion() {
function CRegion (line 131) | CRegion CSurfacePassElement::visibleRegion(bool& cancel) {
FILE: src/render/pass/SurfacePassElement.hpp
class CWLSurfaceResource (line 7) | class CWLSurfaceResource
class ITexture (line 8) | class ITexture
class CSyncTimeline (line 9) | class CSyncTimeline
class CSurfacePassElement (line 11) | class CSurfacePassElement : public IPassElement {
type SRenderData (line 13) | struct SRenderData {
method ePassElementType (line 67) | virtual ePassElementType type() {
FILE: src/render/pass/TexPassElement.cpp
function CRegion (line 24) | CRegion CTexPassElement::opaqueRegion() {
FILE: src/render/pass/TexPassElement.hpp
class CWLSurfaceResource (line 5) | class CWLSurfaceResource
class ITexture (line 6) | class ITexture
class CSyncTimeline (line 7) | class CSyncTimeline
type eDiscardMode (line 9) | enum eDiscardMode : uint8_t {
class CTexPassElement (line 14) | class CTexPassElement : public IPassElement {
type SRenderData (line 16) | struct SRenderData {
method ePassElementType (line 61) | virtual ePassElementType type() {
FILE: src/render/pass/TextureMatteElement.hpp
class ITexture (line 5) | class ITexture
class CTextureMatteElement (line 7) | class CTextureMatteElement : public IPassElement {
type STextureMatteData (line 9) | struct STextureMatteData {
method ePassElementType (line 26) | virtual ePassElementType type() {
FILE: src/xwayland/Dnd.cpp
function xcb_atom_t (line 18) | static xcb_atom_t dndActionToAtom(uint32_t actions) {
function xcb_window_t (line 43) | xcb_window_t CX11DataDevice::getProxyWindow(xcb_window_t window) {
function eDataSourceType (line 75) | eDataSourceType CX11DataOffer::type() {
function eDataSourceType (line 221) | eDataSourceType CX11DataDevice::type() {
function eDataSourceType (line 272) | eDataSourceType CX11DataSource::type() {
FILE: src/xwayland/Dnd.hpp
class CXWaylandSurface (line 14) | class CXWaylandSurface
class CX11DataOffer (line 16) | class CX11DataOffer : public IDataOffer {
method CX11DataOffer (line 18) | CX11DataOffer() = default;
class CX11DataSource (line 32) | class CX11DataSource : public IDataSource {
method CX11DataSource (line 34) | CX11DataSource() = default;
class CX11DataDevice (line 58) | class CX11DataDevice : public IDataDevice {
method CX11DataDevice (line 60) | CX11DataDevice() = default;
FILE: src/xwayland/Server.cpp
function CFileDescriptor (line 36) | static CFileDescriptor createSocket(struct sockaddr_un* addr, size_t pat...
function checkPermissionsForSocketDir (line 82) | static bool checkPermissionsForSocketDir() {
function ensureSocketDirExis
Condensed preview — 704 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,867K chars).
[
{
"path": ".clang-format",
"chars": 1806,
"preview": "---\nLanguage: Cpp\nBasedOnStyle: LLVM\n\nAccessModifierOffset: -2\nAlignAfterOpenBracket: Align\nAlignConsecutiveMacros: true"
},
{
"path": ".clang-format-ignore",
"chars": 17,
"preview": "subprojects/**/*\n"
},
{
"path": ".clang-tidy",
"chars": 7571,
"preview": "WarningsAsErrors: >\n -*,\n bugprone-*,\n -bugprone-multi-level-implicit-pointer-conversion,\n -bugprone-empty-catch,\n "
},
{
"path": ".gitattributes",
"chars": 66,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 13,
"preview": "ko_fi: vaxry\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug.yml",
"chars": 409,
"preview": "name: Do not open issues, go to discussions please!\ndescription: Do not open an issue\nbody:\n - type: checkboxes\n att"
},
{
"path": ".github/actions/setup_base/action.yml",
"chars": 3842,
"preview": "name: \"Setup base\"\n\ninputs:\n INSTALL_XORG_PKGS:\n description: 'Install xorg dependencies'\n required: false\n de"
},
{
"path": ".github/labeler.yml",
"chars": 1618,
"preview": "assets:\n - changed-files:\n - any-glob-to-any-file: \"assets/**\"\n\ndocs:\n - changed-files:\n - any-glob-to-any-f"
},
{
"path": ".github/pull_request_template.md",
"chars": 514,
"preview": "<!--\nBEFORE you submit your PR, please check out the PR guidelines\non our wiki: https://wiki.hyprland.org/Contributing-a"
},
{
"path": ".github/workflows/ci.yaml",
"chars": 2630,
"preview": "name: Build Hyprland\n\non: [push, pull_request, workflow_dispatch]\njobs:\n gcc:\n if: github.event_name != 'pull_reques"
},
{
"path": ".github/workflows/clang-format-check.sh",
"chars": 2944,
"preview": "#!/usr/bin/env bash\n#\n# Adapted from https://github.com/jidicula/clang-format-action\n\n##################################"
},
{
"path": ".github/workflows/clang-format.yml",
"chars": 946,
"preview": "name: clang-format\non: pull_request_target\njobs:\n clang-format:\n permissions: write-all\n if: github.event_name !="
},
{
"path": ".github/workflows/close-issues.yml",
"chars": 4068,
"preview": "name: Close Unauthorized Issues\n\non:\n workflow_dispatch:\n issues:\n types: [opened]\n\njobs:\n close-unauthorized-issu"
},
{
"path": ".github/workflows/labeler.yml",
"chars": 211,
"preview": "name: \"Pull Request Labeler\"\non:\n - pull_request_target\n\njobs:\n labeler:\n permissions:\n contents: read\n p"
},
{
"path": ".github/workflows/man-update.yaml",
"chars": 540,
"preview": "name: Build man pages\n\non:\n workflow_dispatch:\n push:\n paths:\n - docs/**\n branches:\n - 'main'\n\njobs:\n "
},
{
"path": ".github/workflows/new-pr-comment.yml",
"chars": 1505,
"preview": "name: \"New MR welcome comment\"\n\non:\n pull_request_target:\n types:\n - opened\n\njobs:\n comment:\n if: >\n g"
},
{
"path": ".github/workflows/nix-ci.yml",
"chars": 1055,
"preview": "name: Nix\n\non: [push, pull_request, workflow_dispatch]\n\njobs:\n update-inputs:\n if: (github.event_name == 'push' || g"
},
{
"path": ".github/workflows/nix-test.yml",
"chars": 1414,
"preview": "name: Nix (Test)\n\non:\n workflow_call:\n secrets:\n CACHIX_AUTH_TOKEN:\n required: false\n\njobs:\n build:\n "
},
{
"path": ".github/workflows/nix-update-inputs.yml",
"chars": 1250,
"preview": "name: Nix (Update Inputs)\n\non:\n workflow_call:\n secrets:\n PAT:\n required: true\n\njobs:\n update:\n if: "
},
{
"path": ".github/workflows/nix.yml",
"chars": 1142,
"preview": "name: Build\n\non:\n workflow_call:\n inputs:\n command:\n required: true\n type: string\n descrip"
},
{
"path": ".github/workflows/release.yaml",
"chars": 2109,
"preview": "name: Release artifacts\n\non:\n release:\n types: [published]\n workflow_dispatch:\n\njobs:\n source-tarball:\n runs-on"
},
{
"path": ".github/workflows/security-checks.yml",
"chars": 779,
"preview": "name: Security Checks\n\non: [push, pull_request]\n\njobs:\n flawfinder:\n if: github.event_name != 'pull_request' || gith"
},
{
"path": ".github/workflows/translation-ai-check.yml",
"chars": 5820,
"preview": "name: AI Translation Check\n\non:\n # pull_request_target:\n # types:\n # - opened\n issue_comment:\n types:\n "
},
{
"path": ".gitignore",
"chars": 616,
"preview": "CMakeLists.txt.user\nCMakeCache.txt\nCMakeFiles\nCMakeScripts\nTesting\ncmake_install.cmake\ninstall_manifest.txt\ncompile_comm"
},
{
"path": ".gitmodules",
"chars": 346,
"preview": "[submodule \"subprojects/hyprland-protocols\"]\n\tpath = subprojects/hyprland-protocols\n\turl = https://github.com/hyprwm/hyp"
},
{
"path": "CMakeLists.txt",
"chars": 22856,
"preview": "cmake_minimum_required(VERSION 3.30)\n\n# Get version\nfile(READ \"${CMAKE_SOURCE_DIR}/VERSION\" VER_RAW)\nstring(STRIP ${VER_"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3357,
"preview": "## Goal\n\nOur goal is to provide a space where it is safe for everyone to contribute to,\nand get support for, open-source"
},
{
"path": "LICENSE",
"chars": 1521,
"preview": "BSD 3-Clause License\n\nCopyright (c) 2022-2026, vaxerski\nAll rights reserved.\n\nRedistribution and use in source and binar"
},
{
"path": "Makefile",
"chars": 3804,
"preview": "PREFIX = /usr/local\n\nstub:\n\t@echo \"Do not run $(MAKE) directly without any arguments. Please refer to the wiki on how to"
},
{
"path": "README.md",
"chars": 4130,
"preview": "<div align = center>\n\n<img src=\"https://raw.githubusercontent.com/hyprwm/Hyprland/main/assets/header.svg\" width=\"750\" he"
},
{
"path": "SECURITY.md",
"chars": 1134,
"preview": "# Hyprland Development Security Policy\n\nIf you have a bug that affects the security of your system, you may\nwant to priv"
},
{
"path": "VERSION",
"chars": 7,
"preview": "0.54.0\n"
},
{
"path": "assets/hyprland-portals.conf",
"chars": 32,
"preview": "[preferred]\ndefault=hyprland;gtk"
},
{
"path": "docs/Hyprland.1",
"chars": 1625,
"preview": ".\\\" Automatically generated by Pandoc 3.1.3\n.\\\"\n.\\\" Define V font for inline verbatim, using C font in formats\n.\\\" that "
},
{
"path": "docs/Hyprland.1.rst",
"chars": 1230,
"preview": ":title: Hyprland\n:author: Vaxerski <*https://github.com/vaxerski*>\n\nNAME\n====\n\nHyprland - Dynamic tiling Wayland composi"
},
{
"path": "docs/ISSUE_GUIDELINES.md",
"chars": 3139,
"preview": "# Issue Guidelines\n\nFirst of all, please remember to:\n- Check that your issue is not a duplicate\n- Read the [FAQ](https:"
},
{
"path": "docs/hyprctl.1",
"chars": 2722,
"preview": ".\\\" Automatically generated by Pandoc 3.1.3\n.\\\"\n.\\\" Define V font for inline verbatim, using C font in formats\n.\\\" that "
},
{
"path": "docs/hyprctl.1.rst",
"chars": 2090,
"preview": ":title: hyprctl(1)\n:author: Vaxerski <*https://github.com/vaxerski*>\n\nNAME\n====\n\nhyprctl - Utility for controlling parts"
},
{
"path": "example/hyprland.conf",
"chars": 9962,
"preview": "# This is an example Hyprland config file.\n# Refer to the wiki for more information.\n# https://wiki.hypr.land/Configurin"
},
{
"path": "example/hyprland.desktop.in",
"chars": 214,
"preview": "[Desktop Entry]\nName=Hyprland\nComment=An intelligent dynamic tiling Wayland compositor\nExec=@PREFIX@/@CMAKE_INSTALL_BIND"
},
{
"path": "example/hyprland.service",
"chars": 245,
"preview": "; a primitive systemd --user example\n[Unit]\nDescription = %p\nBindsTo = graphical-session.target\nUpholds = swaybg"
},
{
"path": "example/launch.json",
"chars": 857,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n"
},
{
"path": "example/screenShader.frag",
"chars": 286,
"preview": "//\n// Example blue light filter shader.\n//\n\n#version 300 es\n\nprecision mediump float;\nin vec2 v_texcoord;\nlayout(locatio"
},
{
"path": "example/swaybg@.service",
"chars": 290,
"preview": "; a primitive systemd --user example\n; see example/hyprland.service for more details\n[Unit]\nDescription = %p\nBindsTo "
},
{
"path": "flake.nix",
"chars": 6394,
"preview": "{\n description = \"Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on its looks\";\n\n inputs = {\n "
},
{
"path": "hyprctl/CMakeLists.txt",
"chars": 1740,
"preview": "cmake_minimum_required(VERSION 3.19)\n\nproject(\n hyprctl\n DESCRIPTION \"Control utility for Hyprland\"\n)\n\npkg_check_m"
},
{
"path": "hyprctl/hw-protocols/hyprpaper_core.xml",
"chars": 6453,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"hyprpaper_core\" version=\"2\">\n <copyright>\n BSD 3-Clause Licen"
},
{
"path": "hyprctl/hyprctl.bash",
"chars": 7059,
"preview": "_hyprctl_cmd_1 () {\n hyprctl monitors | awk '/Monitor/{ print $2 }'\n}\n\n_hyprctl_cmd_3 () {\n hyprctl clients | awk "
},
{
"path": "hyprctl/hyprctl.fish",
"chars": 14201,
"preview": "function _hyprctl_2\n set 1 $argv[1]\n hyprctl monitors | awk '/Monitor/{ print $2 }'\nend\n\nfunction _hyprctl_4\n s"
},
{
"path": "hyprctl/hyprctl.usage",
"chars": 13180,
"preview": "# This is a file fed to complgen to generate bash/fish/zsh completions\n# Repo: https://github.com/adaszko/complgen\n# Gen"
},
{
"path": "hyprctl/hyprctl.zsh",
"chars": 15525,
"preview": "#compdef hyprctl\n\n_hyprctl_cmd_1 () {\n hyprctl monitors | awk '/Monitor/{ print $2 }'\n}\n\n_hyprctl_cmd_3 () {\n hypr"
},
{
"path": "hyprctl/src/Strings.hpp",
"chars": 6797,
"preview": "#pragma once\n\n#include <string_view>\n\nconst std::string_view USAGE = R\"#(usage: hyprctl [flags] <command> [args...|--hel"
},
{
"path": "hyprctl/src/helpers/Memory.hpp",
"chars": 250,
"preview": "#pragma once\n\n#include <hyprutils/memory/SharedPtr.hpp>\n#include <hyprutils/memory/UniquePtr.hpp>\n#include <hyprutils/me"
},
{
"path": "hyprctl/src/hyprpaper/Hyprpaper.cpp",
"chars": 6866,
"preview": "#include \"Hyprpaper.hpp\"\n#include \"../helpers/Memory.hpp\"\n\n#include <optional>\n#include <format>\n#include <filesystem>\n#"
},
{
"path": "hyprctl/src/hyprpaper/Hyprpaper.hpp",
"chars": 164,
"preview": "#pragma once\n\n#include <expected>\n#include <string>\n\nnamespace Hyprpaper {\n std::expected<void, std::string> makeHypr"
},
{
"path": "hyprctl/src/main.cpp",
"chars": 15867,
"preview": "#include <re2/re2.h>\n\n#include <cctype>\n#include <netdb.h>\n#include <netinet/in.h>\n#include <cstdio>\n#include <cstdlib>\n"
},
{
"path": "hyprland.pc.in",
"chars": 659,
"preview": "prefix=@PREFIX@/@INCLUDEDIR@\n\nName: Hyprland\nURL: https://github.com/hyprwm/Hyprland\nDescription: Hyprland header files\n"
},
{
"path": "hyprpm/CMakeLists.txt",
"chars": 1315,
"preview": "cmake_minimum_required(VERSION 3.19)\n\nproject(\n hyprpm\n DESCRIPTION \"A Hyprland Plugin Manager\"\n)\n\nfile(GLOB_RECUR"
},
{
"path": "hyprpm/hyprpm.bash",
"chars": 3610,
"preview": "_hyprpm_cmd_0 () {\n hyprpm list | awk '/Plugin/{print $4}'\n}\n\n_hyprpm_cmd_1 () {\n hyprpm list | awk '/Repository/{"
},
{
"path": "hyprpm/hyprpm.fish",
"chars": 4389,
"preview": "function _hyprpm_1\n set 1 $argv[1]\n hyprpm list | awk '/Plugin/{print $4}'\nend\n\nfunction _hyprpm_2\n set 1 $argv"
},
{
"path": "hyprpm/hyprpm.usage",
"chars": 1149,
"preview": "hyprpm [<FLAGS>]... <ARGUMENT>\n\n\n<FLAGS> ::= (--notify | -n) \"Send a hyprland notification for important eve"
},
{
"path": "hyprpm/hyprpm.zsh",
"chars": 6053,
"preview": "#compdef hyprpm\n\n_hyprpm_cmd_0 () {\n hyprpm list | awk '/Plugin/{print $4}'\n}\n\n_hyprpm_cmd_1 () {\n hyprpm list | a"
},
{
"path": "hyprpm/src/core/DataState.cpp",
"chars": 10047,
"preview": "#include \"DataState.hpp\"\n#include <sys/stat.h>\n#include <toml++/toml.hpp>\n#include <print>\n#include <sstream>\n#include <"
},
{
"path": "hyprpm/src/core/DataState.hpp",
"chars": 1121,
"preview": "#pragma once\n#include <filesystem>\n#include <string>\n#include <vector>\n#include \"Plugin.hpp\"\n\nstruct SGlobalState {\n "
},
{
"path": "hyprpm/src/core/HyprlandSocket.cpp",
"chars": 2483,
"preview": "#include \"HyprlandSocket.hpp\"\n#include <pwd.h>\n#include <sys/socket.h>\n#include \"../helpers/StringUtils.hpp\"\n#include <p"
},
{
"path": "hyprpm/src/core/HyprlandSocket.hpp",
"chars": 109,
"preview": "#pragma once\n\n#include <string>\n\nnamespace NHyprlandSocket {\n std::string send(const std::string& cmd);\n};"
},
{
"path": "hyprpm/src/core/Manifest.cpp",
"chars": 4633,
"preview": "#include \"Manifest.hpp\"\n#include <toml++/toml.hpp>\n#include <algorithm>\n\n// Alphanumerics and -_ allowed for plugin name"
},
{
"path": "hyprpm/src/core/Manifest.hpp",
"chars": 926,
"preview": "#pragma once\n\n#include <string>\n#include <vector>\n\nenum eManifestType {\n MANIFEST_HYPRLOAD,\n MANIFEST_HYPRPM\n};\n\nc"
},
{
"path": "hyprpm/src/core/Plugin.cpp",
"chars": 1852,
"preview": "#include \"Plugin.hpp\"\n\nSPluginRepoIdentifier SPluginRepoIdentifier::fromUrl(const std::string& url) {\n return SPlugin"
},
{
"path": "hyprpm/src/core/Plugin.hpp",
"chars": 1205,
"preview": "#pragma once\n\n#include <string>\n#include <vector>\n\nstruct SPlugin {\n std::string name;\n std::string filename;\n "
},
{
"path": "hyprpm/src/core/PluginManager.cpp",
"chars": 43645,
"preview": "#include \"PluginManager.hpp\"\n#include \"../helpers/Colors.hpp\"\n#include \"../helpers/StringUtils.hpp\"\n#include \"../progres"
},
{
"path": "hyprpm/src/core/PluginManager.hpp",
"chars": 2686,
"preview": "#pragma once\n\n#include <cstdint>\n#include <memory>\n#include <optional>\n#include <string>\n#include <expected>\n#include \"P"
},
{
"path": "hyprpm/src/helpers/Colors.hpp",
"chars": 370,
"preview": "#pragma once\n\nnamespace Colors {\n constexpr const char* RED = \"\\x1b[31m\";\n constexpr const char* GREEN = \"\\x"
},
{
"path": "hyprpm/src/helpers/Die.hpp",
"chars": 354,
"preview": "#pragma once\n\n#include <format>\n#include <iostream>\n\n// NOLINTNEXTLINE\nnamespace Debug {\n template <typename... Args>"
},
{
"path": "hyprpm/src/helpers/StringUtils.hpp",
"chars": 1031,
"preview": "#pragma once\n\n#include <format>\n#include <string>\n#include \"Colors.hpp\"\n\ntemplate <typename... Args>\nstd::string statusS"
},
{
"path": "hyprpm/src/helpers/Sys.cpp",
"chars": 4632,
"preview": "#include \"Sys.hpp\"\n#include \"Die.hpp\"\n#include \"StringUtils.hpp\"\n\n#include <pwd.h>\n#include <unistd.h>\n#include <sstream"
},
{
"path": "hyprpm/src/helpers/Sys.hpp",
"chars": 940,
"preview": "#pragma once\n\n#include <string>\n#include <optional>\n\nnamespace NSys {\n bool isSuperuser();\n "
},
{
"path": "hyprpm/src/main.cpp",
"chars": 9178,
"preview": "#include \"helpers/Colors.hpp\"\n#include \"helpers/StringUtils.hpp\"\n#include \"core/PluginManager.hpp\"\n#include \"core/DataSt"
},
{
"path": "hyprpm/src/progress/CProgressBar.cpp",
"chars": 1946,
"preview": "#include \"CProgressBar.hpp\"\n\n#include <sys/ioctl.h>\n#include <unistd.h>\n#include <cmath>\n#include <format>\n#include <pri"
},
{
"path": "hyprpm/src/progress/CProgressBar.hpp",
"chars": 385,
"preview": "#pragma once\n\n#include <string>\n\nclass CProgressBar {\n public:\n void print();\n void printMessageAbo"
},
{
"path": "hyprtester/CMakeLists.txt",
"chars": 3756,
"preview": "cmake_minimum_required(VERSION 3.19)\n\nproject(hyprtester DESCRIPTION \"Hyprland test suite\")\n\ninclude(GNUInstallDirs)\n\nse"
},
{
"path": "hyprtester/clients/child-window.cpp",
"chars": 11585,
"preview": "#include <print>\n#include <poll.h>\n#include <sys/mman.h>\n#include <fcntl.h>\n#include <stdio.h>\n#include <unistd.h>\n\n#inc"
},
{
"path": "hyprtester/clients/pointer-scroll.cpp",
"chars": 10559,
"preview": "#include <cstring>\n#include <sys/poll.h>\n#include <sys/mman.h>\n#include <fcntl.h>\n#include <unistd.h>\n#include <print>\n#"
},
{
"path": "hyprtester/clients/pointer-warp.cpp",
"chars": 10737,
"preview": "#include <cstring>\n#include <sys/poll.h>\n#include <sys/mman.h>\n#include <fcntl.h>\n#include <unistd.h>\n#include <print>\n#"
},
{
"path": "hyprtester/clients/shortcut-inhibitor.cpp",
"chars": 10781,
"preview": "#include <sys/poll.h>\n#include <sys/mman.h>\n#include <fcntl.h>\n#include <print>\n\n#include <wayland-client.h>\n#include <w"
},
{
"path": "hyprtester/plugin/Makefile",
"chars": 410,
"preview": "CXXFLAGS = -shared -fPIC -g -std=c++2b -Wno-c++11-narrowing\nINCLUDES = `pkg-config --cflags pixman-1 libdrm pangocairo l"
},
{
"path": "hyprtester/plugin/build.sh",
"chars": 31,
"preview": "#!/bin/sh\n\nmake clean\nmake all\n"
},
{
"path": "hyprtester/plugin/src/globals.hpp",
"chars": 84,
"preview": "#pragma once\n\n#include <src/plugins/PluginAPI.hpp>\n\ninline HANDLE PHANDLE = nullptr;"
},
{
"path": "hyprtester/plugin/src/main.cpp",
"chars": 13042,
"preview": "#include <unistd.h>\n#include <src/includes.hpp>\n#include <sstream>\n#include <any>\n\n#define private public\n#include <src/"
},
{
"path": "hyprtester/protocols/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "hyprtester/src/Log.hpp",
"chars": 383,
"preview": "#pragma once\n#include <string>\n#include <format>\n#include <print>\n\nnamespace NLog {\n template <typename... Args>\n "
},
{
"path": "hyprtester/src/hyprctlCompat.cpp",
"chars": 3905,
"preview": "#include \"hyprctlCompat.hpp\"\n#include \"shared.hpp\"\n\n#include <pwd.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#incl"
},
{
"path": "hyprtester/src/hyprctlCompat.hpp",
"chars": 321,
"preview": "#pragma once\n\n#include <vector>\n#include <string>\n#include <cstdint>\n\nstruct SInstanceData {\n std::string id;\n uin"
},
{
"path": "hyprtester/src/main.cpp",
"chars": 7870,
"preview": "\n// This is a tester for Hyprland. It will launch the built binary in ./build/Hyprland\n// in headless mode and test vari"
},
{
"path": "hyprtester/src/shared.hpp",
"chars": 14059,
"preview": "// Stolen from hyprutils\n\n#pragma once\n#include <iostream>\n\ninline std::string HIS = \"\";\ninline std::string WLD"
},
{
"path": "hyprtester/src/tests/clients/.gitignore",
"chars": 10,
"preview": "build.hpp\n"
},
{
"path": "hyprtester/src/tests/clients/child-window.cpp",
"chars": 4324,
"preview": "#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"../shared.hpp\"\n#include \"tests.hpp\"\n#include \"b"
},
{
"path": "hyprtester/src/tests/clients/pointer-scroll.cpp",
"chars": 4519,
"preview": "#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"../shared.hpp\"\n#include \"tests.hpp\"\n#include \"b"
},
{
"path": "hyprtester/src/tests/clients/pointer-warp.cpp",
"chars": 5666,
"preview": "#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"../shared.hpp\"\n#include \"tests.hpp\"\n#include \"b"
},
{
"path": "hyprtester/src/tests/clients/shortcut-inhibitor.cpp",
"chars": 5549,
"preview": "#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"../shared.hpp\"\n#include \"tests.hpp\"\n#include \"b"
},
{
"path": "hyprtester/src/tests/clients/tests.hpp",
"chars": 846,
"preview": "#pragma once\n\n#include <vector>\n#include <functional>\n\ninline std::vector<std::function<bool()>> clientTestFns;\n\n#define"
},
{
"path": "hyprtester/src/tests/main/animations.cpp",
"chars": 654,
"preview": "#include \"../../Log.hpp\"\n#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <h"
},
{
"path": "hyprtester/src/tests/main/colors.cpp",
"chars": 1036,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"../shared.hpp\"\n\nstatic int"
},
{
"path": "hyprtester/src/tests/main/dwindle.cpp",
"chars": 8260,
"preview": "#include \"../shared.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"tests.hpp\"\n\nstatic int"
},
{
"path": "hyprtester/src/tests/main/exec.cpp",
"chars": 1888,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <chrono>\n#include <format>\n"
},
{
"path": "hyprtester/src/tests/main/gestures.cpp",
"chars": 6220,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <print>\n#include <thread>\n#"
},
{
"path": "hyprtester/src/tests/main/groups.cpp",
"chars": 12798,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <print>\n#include <thread>\n#"
},
{
"path": "hyprtester/src/tests/main/hyprctl.cpp",
"chars": 9897,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <cstdint>\n#include <print>\n"
},
{
"path": "hyprtester/src/tests/main/keybinds.cpp",
"chars": 22273,
"preview": "#include <filesystem>\n#include <linux/input-event-codes.h>\n#include <thread>\n#include \"../../shared.hpp\"\n#include \"../.."
},
{
"path": "hyprtester/src/tests/main/layer.cpp",
"chars": 1371,
"preview": "#include \"../../Log.hpp\"\n#include \"../shared.hpp\"\n#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprc"
},
{
"path": "hyprtester/src/tests/main/layout.cpp",
"chars": 3215,
"preview": "#include \"../shared.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"tests.hpp\"\n\nstatic int"
},
{
"path": "hyprtester/src/tests/main/master.cpp",
"chars": 5643,
"preview": "#include \"../shared.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"tests.hpp\"\n\nstatic int"
},
{
"path": "hyprtester/src/tests/main/misc.cpp",
"chars": 10285,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <print>\n#include <thread>\n#"
},
{
"path": "hyprtester/src/tests/main/persistent.cpp",
"chars": 2595,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <print>\n#include <thread>\n#"
},
{
"path": "hyprtester/src/tests/main/scroll.cpp",
"chars": 6849,
"preview": "#include \"../shared.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"tests.hpp\"\n\nstatic int"
},
{
"path": "hyprtester/src/tests/main/snap.cpp",
"chars": 5948,
"preview": "#include <hyprutils/math/Vector2D.hpp>\n#include <hyprutils/memory/WeakPtr.hpp>\n#include <hyprutils/os/Process.hpp>\n\n#inc"
},
{
"path": "hyprtester/src/tests/main/solitary.cpp",
"chars": 2966,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <thread>\n#include <chrono>\n"
},
{
"path": "hyprtester/src/tests/main/tags.cpp",
"chars": 1982,
"preview": "#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include \"../shared.hpp\"\n#include \"tests.hpp\"\n\nstatic int"
},
{
"path": "hyprtester/src/tests/main/tests.hpp",
"chars": 840,
"preview": "#pragma once\n\n#include <vector>\n#include <functional>\n\ninline std::vector<std::function<bool()>> testFns;\n\n#define REGIS"
},
{
"path": "hyprtester/src/tests/main/window.cpp",
"chars": 39657,
"preview": "#include <unistd.h>\n#include <cmath>\n#include <chrono>\n#include <cstdlib>\n#include <cstring>\n#include <filesystem>\n#incl"
},
{
"path": "hyprtester/src/tests/main/workspaces.cpp",
"chars": 22741,
"preview": "#include \"tests.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <print>\n#include <thread>\n#"
},
{
"path": "hyprtester/src/tests/plugin/plugin.cpp",
"chars": 816,
"preview": "#include \"plugin.hpp\"\n#include \"../../shared.hpp\"\n#include \"../../hyprctlCompat.hpp\"\n#include <print>\n#include <thread>\n"
},
{
"path": "hyprtester/src/tests/plugin/plugin.hpp",
"chars": 49,
"preview": "#pragma once\n\nbool testPlugin();\nbool testVkb();\n"
},
{
"path": "hyprtester/src/tests/shared.cpp",
"chars": 5470,
"preview": "#include \"shared.hpp\"\n#include <csignal>\n#include <cerrno>\n#include <thread>\n#include <print>\n#include <fstream>\n#includ"
},
{
"path": "hyprtester/src/tests/shared.hpp",
"chars": 1467,
"preview": "#pragma once\n\n#include <hyprutils/os/Process.hpp>\n#include <hyprutils/memory/WeakPtr.hpp>\n#include <sys/types.h>\n\n#inclu"
},
{
"path": "hyprtester/test.conf",
"chars": 11044,
"preview": "# This is an example Hyprland config file.\n# Refer to the wiki for more information.\n# https://wiki.hyprland.org/Configu"
},
{
"path": "nix/default.nix",
"chars": 6174,
"preview": "{\n lib,\n stdenv,\n stdenvAdapters,\n pkg-config,\n pkgconf,\n makeWrapper,\n cmake,\n aquamarine,\n binutils,\n cairo,"
},
{
"path": "nix/formatter.nix",
"chars": 1373,
"preview": "{\n writeShellApplication,\n deadnix,\n statix,\n nixfmt,\n llvmPackages_19,\n fd,\n}:\nwriteShellApplication {\n name = \""
},
{
"path": "nix/hm-module.nix",
"chars": 220,
"preview": "self:\n{\n lib,\n pkgs,\n ...\n}:\nlet\n inherit (pkgs.stdenv.hostPlatform) system;\n\n package = self.packages.${system}.de"
},
{
"path": "nix/lib.nix",
"chars": 5860,
"preview": "lib:\nlet\n inherit (lib)\n attrNames\n filterAttrs\n foldl\n generators\n partition\n ;\n\n inherit (lib.stri"
},
{
"path": "nix/module.nix",
"chars": 4667,
"preview": "inputs:\n{\n config,\n lib,\n pkgs,\n ...\n}:\nlet\n inherit (pkgs.stdenv.hostPlatform) system;\n selflib = import ./lib.ni"
},
{
"path": "nix/overlays.nix",
"chars": 4014,
"preview": "{\n self,\n lib,\n inputs,\n}:\nlet\n mkDate =\n longDate:\n (lib.concatStringsSep \"-\" [\n (builtins.substring 0 4"
},
{
"path": "nix/tests/default.nix",
"chars": 3106,
"preview": "inputs: pkgs:\nlet\n flake = inputs.self.packages.${pkgs.stdenv.hostPlatform.system};\n hyprland = flake.hyprland-with-te"
},
{
"path": "nix/update-inputs.sh",
"chars": 853,
"preview": "#!/usr/bin/env -S nix shell nixpkgs#jq -c bash\n\n# Update inputs when the Mesa or QT version is outdated. We don't want\n#"
},
{
"path": "protocols/input-method-unstable-v2.xml",
"chars": 21346,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"input_method_unstable_v2\">\n\n <copyright>\n Copyright © 2008-20"
},
{
"path": "protocols/kde-server-decoration.xml",
"chars": 5118,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"server_decoration\">\n <copyright><![CDATA[\n SPDX-FileCopyright"
},
{
"path": "protocols/virtual-keyboard-unstable-v1.xml",
"chars": 4881,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"virtual_keyboard_unstable_v1\">\n <copyright>\n Copyright © 2008"
},
{
"path": "protocols/wayland-drm.xml",
"chars": 7972,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"drm\">\n\n <copyright>\n Copyright © 2008-2011 Kristian Høgsberg\n"
},
{
"path": "protocols/wlr-data-control-unstable-v1.xml",
"chars": 12044,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_data_control_unstable_v1\">\n <copyright>\n Copyright © 2018"
},
{
"path": "protocols/wlr-foreign-toplevel-management-unstable-v1.xml",
"chars": 11555,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_foreign_toplevel_management_unstable_v1\">\n <copyright>\n C"
},
{
"path": "protocols/wlr-gamma-control-unstable-v1.xml",
"chars": 5505,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_gamma_control_unstable_v1\">\n <copyright>\n Copyright © 201"
},
{
"path": "protocols/wlr-layer-shell-unstable-v1.xml",
"chars": 19325,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_layer_shell_unstable_v1\">\n <copyright>\n Copyright © 2017 "
},
{
"path": "protocols/wlr-output-management-unstable-v1.xml",
"chars": 25781,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_output_management_unstable_v1\">\n <copyright>\n Copyright ©"
},
{
"path": "protocols/wlr-output-power-management-unstable-v1.xml",
"chars": 5594,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_output_power_management_unstable_v1\">\n <copyright>\n Copyr"
},
{
"path": "protocols/wlr-screencopy-unstable-v1.xml",
"chars": 10164,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_screencopy_unstable_v1\">\n <copyright>\n Copyright © 2018 S"
},
{
"path": "protocols/wlr-virtual-pointer-unstable-v1.xml",
"chars": 6894,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<protocol name=\"wlr_virtual_pointer_unstable_v1\">\n <copyright>\n Copyright © 2"
},
{
"path": "scripts/generateShaderIncludes.sh",
"chars": 783,
"preview": "#!/bin/sh\n\nSHADERS_SRC=\"./src/render/shaders/glsl\"\n\necho \"-- Generating shader includes\"\n\nif [ ! -d ./src/render/shaders"
},
{
"path": "scripts/hyprlandStaticAsan.diff",
"chars": 524,
"preview": "diff --git a/CMakeLists.txt b/CMakeLists.txt\nindex f26a5c3c..3dfef333 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@"
},
{
"path": "scripts/waylandStatic.diff",
"chars": 700,
"preview": "diff --git a/src/meson.build b/src/meson.build\nindex 5d04334..6645eec 100644\n--- a/src/meson.build\n+++ b/src/meson.build"
},
{
"path": "src/Compositor.cpp",
"chars": 117869,
"preview": "#include <ranges>\n#include <re2/re2.h>\n\n#include \"Compositor.hpp\"\n#include \"debug/log/Logger.hpp\"\n#include \"desktop/Desk"
},
{
"path": "src/Compositor.hpp",
"chars": 11271,
"preview": "#pragma once\n\n#include <sys/resource.h>\n\n#include <ranges>\n\n#include \"helpers/math/Direction.hpp\"\n#include \"managers/XWa"
},
{
"path": "src/SharedDefs.hpp",
"chars": 1915,
"preview": "#pragma once\n\n#include \"helpers/math/Math.hpp\"\n#include <functional>\n#include <any>\n#include <string>\n#include <algorith"
},
{
"path": "src/config/ConfigDataValues.hpp",
"chars": 5622,
"preview": "#pragma once\n#include \"../defines.hpp\"\n#include \"../helpers/varlist/VarList.hpp\"\n#include <vector>\n#include <map>\n\nenum "
},
{
"path": "src/config/ConfigDescriptions.hpp",
"chars": 105631,
"preview": "#pragma once\n\n#include <climits>\n#include \"ConfigManager.hpp\"\n\ninline static const std::vector<SConfigOptionDescription>"
},
{
"path": "src/config/ConfigManager.cpp",
"chars": 139471,
"preview": "#include <re2/re2.h>\n\n#include \"ConfigManager.hpp\"\n#include \"ConfigWatcher.hpp\"\n#include \"../managers/KeybindManager.hpp"
},
{
"path": "src/config/ConfigManager.hpp",
"chars": 15110,
"preview": "#pragma once\n\n#include <hyprutils/animation/AnimationConfig.hpp>\n#define CONFIG_MANAGER_H\n\n#include <map>\n#include <unor"
},
{
"path": "src/config/ConfigValue.cpp",
"chars": 519,
"preview": "#include \"ConfigValue.hpp\"\n#include \"ConfigManager.hpp\"\n#include \"../macros.hpp\"\n\nvoid local__configValuePopulate(void* "
},
{
"path": "src/config/ConfigValue.hpp",
"chars": 2141,
"preview": "#pragma once\n\n#include <string>\n#include <typeindex>\n#include <hyprlang.hpp>\n#include \"../macros.hpp\"\n\n// giga hack to a"
},
{
"path": "src/config/ConfigWatcher.cpp",
"chars": 3593,
"preview": "#include \"ConfigWatcher.hpp\"\n#if defined(__linux__)\n#include <linux/limits.h>\n#endif\n#include <sys/inotify.h>\n#include \""
},
{
"path": "src/config/ConfigWatcher.hpp",
"chars": 982,
"preview": "#pragma once\n#include \"../helpers/memory/Memory.hpp\"\n#include <vector>\n#include <string>\n#include <functional>\n#include "
},
{
"path": "src/config/defaultConfig.hpp",
"chars": 638,
"preview": "#pragma once\n\n#include <string>\n\ninline constexpr std::string_view AUTOGENERATED_PREFIX = R\"#(\n# #####################"
},
{
"path": "src/debug/HyprCtl.cpp",
"chars": 96127,
"preview": "#include \"HyprCtl.hpp\"\n#include \"helpers/Monitor.hpp\"\n\n#include <algorithm>\n#include <format>\n#include <fstream>\n#includ"
},
{
"path": "src/debug/HyprCtl.hpp",
"chars": 2078,
"preview": "#pragma once\n\n#include <fstream>\n#include \"../helpers/MiscFunctions.hpp\"\n#include \"../helpers/defer/Promise.hpp\"\n#includ"
},
{
"path": "src/debug/HyprDebugOverlay.cpp",
"chars": 9462,
"preview": "#include <pango/pangocairo.h>\n#include \"HyprDebugOverlay.hpp\"\n#include \"config/ConfigValue.hpp\"\n#include \"../Compositor."
},
{
"path": "src/debug/HyprDebugOverlay.hpp",
"chars": 1586,
"preview": "#pragma once\n\n#include \"../defines.hpp\"\n#include \"../render/Texture.hpp\"\n#include <cairo/cairo.h>\n#include <map>\n#includ"
},
{
"path": "src/debug/HyprNotificationOverlay.cpp",
"chars": 10299,
"preview": "#include <numeric>\n#include <pango/pangocairo.h>\n#include \"HyprNotificationOverlay.hpp\"\n#include \"../Compositor.hpp\"\n#in"
},
{
"path": "src/debug/HyprNotificationOverlay.hpp",
"chars": 2571,
"preview": "#pragma once\n\n#include \"../defines.hpp\"\n#include \"../helpers/time/Timer.hpp\"\n#include \"../render/Texture.hpp\"\n#include \""
},
{
"path": "src/debug/TracyDefines.hpp",
"chars": 570,
"preview": "#pragma once\n\n#ifdef USE_TRACY_GPU\n\n#include \"log/Logger.hpp\"\n\n#include <GL/gl.h>\n#include <GLES2/gl2ext.h>\n\ninline PFNG"
},
{
"path": "src/debug/crash/CrashReporter.cpp",
"chars": 8658,
"preview": "#include \"CrashReporter.hpp\"\n#include <fcntl.h>\n#include <sys/utsname.h>\n#include <link.h>\n#include <ctime>\n#include <ce"
},
{
"path": "src/debug/crash/CrashReporter.hpp",
"chars": 80,
"preview": "#pragma once\n\nnamespace CrashReporter {\n void createAndSaveCrash(int sig);\n};"
},
{
"path": "src/debug/crash/SignalSafe.cpp",
"chars": 708,
"preview": "#include \"SignalSafe.hpp\"\n\n#ifndef __GLIBC__\n#include <signal.h>\n#endif\n#include <fcntl.h>\n#include <unistd.h>\n#include "
},
{
"path": "src/debug/crash/SignalSafe.hpp",
"chars": 5308,
"preview": "#pragma once\n\n#include \"defines.hpp\"\n#include <cstring>\n\nnamespace SignalSafe {\n template <uint16_t N>\n class CMax"
},
{
"path": "src/debug/log/Logger.cpp",
"chars": 1832,
"preview": "#include \"Logger.hpp\"\n#include \"RollingLogFollow.hpp\"\n\n#include \"../../event/EventBus.hpp\"\n\n#include \"../../config/Confi"
},
{
"path": "src/debug/log/Logger.hpp",
"chars": 2165,
"preview": "#pragma once\n\n#include <hyprutils/cli/Logger.hpp>\n\n#include \"../../helpers/memory/Memory.hpp\"\n#include \"../../helpers/en"
},
{
"path": "src/debug/log/RollingLogFollow.hpp",
"chars": 2504,
"preview": "#pragma once\n\n#include <shared_mutex>\n#include <unordered_map>\n#include <format>\n#include <vector>\n\nnamespace Log {\n "
},
{
"path": "src/defines.hpp",
"chars": 277,
"preview": "#pragma once\n\n#include \"includes.hpp\"\n#include \"debug/log/Logger.hpp\"\n#include \"helpers/Color.hpp\"\n#include \"macros.hpp\""
},
{
"path": "src/desktop/DesktopTypes.hpp",
"chars": 782,
"preview": "#pragma once\n#include \"../helpers/memory/Memory.hpp\"\n\nclass CWorkspace;\nclass CMonitor;\n\nnamespace Desktop::View {\n c"
},
{
"path": "src/desktop/Workspace.cpp",
"chars": 19962,
"preview": "#include \"Workspace.hpp\"\n#include \"view/Group.hpp\"\n#include \"../Compositor.hpp\"\n#include \"../config/ConfigValue.hpp\"\n#in"
},
{
"path": "src/desktop/Workspace.hpp",
"chars": 3365,
"preview": "#pragma once\n\n#include \"../helpers/AnimatedVariable.hpp\"\n#include <string>\n#include \"DesktopTypes.hpp\"\n#include \"../help"
},
{
"path": "src/desktop/history/WindowHistoryTracker.cpp",
"chars": 1306,
"preview": "#include \"WindowHistoryTracker.hpp\"\n\n#include \"../view/Window.hpp\"\n#include \"../../event/EventBus.hpp\"\n\nusing namespace "
},
{
"path": "src/desktop/history/WindowHistoryTracker.hpp",
"chars": 874,
"preview": "#pragma once\n\n#include \"../DesktopTypes.hpp\"\n\n#include <vector>\n\nnamespace Desktop::History {\n class CWindowHistoryTr"
},
{
"path": "src/desktop/history/WorkspaceHistoryTracker.cpp",
"chars": 4836,
"preview": "#include \"WorkspaceHistoryTracker.hpp\"\n\n#include \"../../helpers/Monitor.hpp\"\n#include \"../Workspace.hpp\"\n#include \"../st"
},
{
"path": "src/desktop/history/WorkspaceHistoryTracker.hpp",
"chars": 1849,
"preview": "#pragma once\n\n#include \"../DesktopTypes.hpp\"\n#include \"../../SharedDefs.hpp\"\n#include \"../../macros.hpp\"\n#include \"../.."
},
{
"path": "src/desktop/reserved/ReservedArea.cpp",
"chars": 2752,
"preview": "#include \"ReservedArea.hpp\"\n#include \"../../macros.hpp\"\n\nusing namespace Desktop;\n\n// fuck me. Writing this at 11pm, and"
},
{
"path": "src/desktop/reserved/ReservedArea.hpp",
"chars": 1384,
"preview": "#pragma once\n\n#include \"../../helpers/math/Math.hpp\"\n#include <array>\n\nnamespace Desktop {\n enum eReservedDynamicType"
},
{
"path": "src/desktop/rule/Engine.cpp",
"chars": 1461,
"preview": "#include \"Engine.hpp\"\n#include \"Rule.hpp\"\n#include \"../view/LayerSurface.hpp\"\n#include \"../../Compositor.hpp\"\n\nusing nam"
},
{
"path": "src/desktop/rule/Engine.hpp",
"chars": 707,
"preview": "#pragma once\n\n#include \"Rule.hpp\"\n\nnamespace Desktop::Rule {\n class CRuleEngine {\n public:\n CRuleEngine()"
},
{
"path": "src/desktop/rule/Rule.cpp",
"chars": 5988,
"preview": "#include \"Rule.hpp\"\n#include \"../../debug/log/Logger.hpp\"\n#include <re2/re2.h>\n\n#include \"matchEngine/RegexMatchEngine.h"
},
{
"path": "src/desktop/rule/Rule.hpp",
"chars": 3318,
"preview": "#pragma once\n\n#include \"matchEngine/MatchEngine.hpp\"\n\n#include \"../../helpers/memory/Memory.hpp\"\n#include \"../../helpers"
},
{
"path": "src/desktop/rule/effect/EffectContainer.hpp",
"chars": 2483,
"preview": "#pragma once\n\n#include <string>\n#include <vector>\n#include <type_traits>\n#include <cstdint>\n#include <optional>\n#include"
},
{
"path": "src/desktop/rule/layerRule/LayerRule.cpp",
"chars": 1117,
"preview": "#include \"LayerRule.hpp\"\n#include \"../../../debug/log/Logger.hpp\"\n#include \"../../view/LayerSurface.hpp\"\n\nusing namespac"
},
{
"path": "src/desktop/rule/layerRule/LayerRule.hpp",
"chars": 793,
"preview": "#pragma once\n\n#include \"../Rule.hpp\"\n#include \"../../DesktopTypes.hpp\"\n#include \"LayerRuleEffectContainer.hpp\"\n\nnamespac"
},
{
"path": "src/desktop/rule/layerRule/LayerRuleApplicator.cpp",
"chars": 6969,
"preview": "#include \"LayerRuleApplicator.hpp\"\n#include \"LayerRule.hpp\"\n#include \"../Engine.hpp\"\n#include \"../../view/LayerSurface.h"
},
{
"path": "src/desktop/rule/layerRule/LayerRuleApplicator.hpp",
"chars": 3827,
"preview": "#pragma once\n\n#include \"LayerRuleEffectContainer.hpp\"\n#include \"../../DesktopTypes.hpp\"\n#include \"../Rule.hpp\"\n#include "
},
{
"path": "src/desktop/rule/layerRule/LayerRuleEffectContainer.cpp",
"chars": 1017,
"preview": "#include \"LayerRuleEffectContainer.hpp\"\n\nusing namespace Desktop;\nusing namespace Desktop::Rule;\n\n//\nSP<CLayerRuleEffect"
},
{
"path": "src/desktop/rule/layerRule/LayerRuleEffectContainer.hpp",
"chars": 881,
"preview": "#pragma once\n\n#include \"../effect/EffectContainer.hpp\"\n#include \"../../../helpers/memory/Memory.hpp\"\n\n#pragma once\n\nname"
},
{
"path": "src/desktop/rule/matchEngine/BoolMatchEngine.cpp",
"chars": 273,
"preview": "#include \"BoolMatchEngine.hpp\"\n#include \"../../../helpers/MiscFunctions.hpp\"\n\nusing namespace Desktop::Rule;\n\nCBoolMatch"
},
{
"path": "src/desktop/rule/matchEngine/BoolMatchEngine.hpp",
"chars": 321,
"preview": "#pragma once\n\n#include \"MatchEngine.hpp\"\n\nnamespace Desktop::Rule {\n class CBoolMatchEngine : public IMatchEngine {\n "
},
{
"path": "src/desktop/rule/matchEngine/IntMatchEngine.cpp",
"chars": 368,
"preview": "#include \"IntMatchEngine.hpp\"\n#include \"../../../debug/log/Logger.hpp\"\n\nusing namespace Desktop::Rule;\n\nCIntMatchEngine:"
},
{
"path": "src/desktop/rule/matchEngine/IntMatchEngine.hpp",
"chars": 312,
"preview": "#pragma once\n\n#include \"MatchEngine.hpp\"\n\nnamespace Desktop::Rule {\n class CIntMatchEngine : public IMatchEngine {\n "
}
]
// ... and 504 more files (download for full content)
About this extraction
This page contains the full source code of the hyprwm/Hyprland GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 704 files (4.4 MB), approximately 1.2M tokens, and a symbol index with 2382 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.