feat: uwsm integration and hyprland worktime saver keybinds
- Replace SDDM with greetd+tuigreet (VT1) using uwsm-managed Hyprland - Remove legacy exec-once from hyprland.conf - Create 6 systemd user services: hyprpaper, waybar, dunst, hypridle, hyprlauncher, cliphist (all WantedBy=graphical-session.target) - Add worktime saver keybinds: fullscreen, float, cycle windows, scratchpad, reload config, browser, keybind menu - Home row navigation: HJKL for focus, move, resize (SUPER+ALT) - Replace wofi with hyprlauncher (first-party, uwsm app prefix) - Add hyprlauncher config with finders: desktop, math, unicode, font - New ansible role templates: systemd/user services - Documentation: hyprland-uwsm.md, cheatsheet.txt KDE Wallet -> Bitwarden migration deferred (extract script prepared)
This commit is contained in:
@@ -8,13 +8,9 @@ monitor=DP-1,2560x1440@144,0x0,1
|
||||
monitor=DVI-D-1,1920x1080@60,2560x0,1,transform,1
|
||||
monitor=HDMI-A-1,2560x1440@144,3640x0,1
|
||||
|
||||
# Execute on start
|
||||
exec-once = hyprpaper
|
||||
exec-once = waybar
|
||||
exec-once = dunst
|
||||
exec-once = hypridle
|
||||
exec-once = wl-paste --type text --watch cliphist store
|
||||
exec-once = wl-paste --type image --watch cliphist store
|
||||
# Session services: hyprpaper, waybar, dunst, hypridle, hyprlauncher, cliphist
|
||||
# Managed by systemd user units under ~/.config/systemd/user/
|
||||
# All WantedBy=graphical-session.target for uwsm integration
|
||||
|
||||
# Environment variables for NVIDIA
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
@@ -73,10 +69,37 @@ bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, dolphin
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, D, exec, wofi --show drun
|
||||
bind = $mainMod, D, exec, hyprlauncher
|
||||
bind = $mainMod, P, pseudo
|
||||
bind = $mainMod, J, layoutmsg, togglesplit
|
||||
bind = $mainMod, L, exec, hyprlock
|
||||
|
||||
# Worktime safers
|
||||
bind = $mainMod, F, fullscreen, 0 # Toggle fullscreen
|
||||
bind = $mainMod, SPACE, togglefloating # Toggle float (popup window)
|
||||
bind = $mainMod, TAB, cyclenext # Cycle through windows
|
||||
bind = $mainMod SHIFT, TAB, cyclenext, prev # Cycle backwards
|
||||
bind = $mainMod, GRAVE, togglespecialworkspace # Scratchpad (toggle)
|
||||
bind = $mainMod SHIFT, GRAVE, movetoworkspace, special # Send to scratchpad
|
||||
bind = $mainMod CTRL, K, exec, grep -E '^bind\s*=.*#' ~/.config/hypr/hyprland.conf | sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/' | fuzzel -d
|
||||
|
||||
# Home row navigation aliases (keep arrows too)
|
||||
bind = $mainMod, H, movefocus, l
|
||||
bind = $mainMod, L, movefocus, r
|
||||
|
||||
# HJKL + SHIFT = move window in direction (home row)
|
||||
bind = $mainMod SHIFT, H, movewindow, l
|
||||
bind = $mainMod SHIFT, L, movewindow, r
|
||||
bind = $mainMod SHIFT, K, movewindow, u
|
||||
bind = $mainMod SHIFT, J, movewindow, d
|
||||
|
||||
# Window resize via home row (SUPER+ALT)
|
||||
bind = $mainMod ALT, H, resizeactive, -40 0
|
||||
bind = $mainMod ALT, L, resizeactive, 40 0
|
||||
bind = $mainMod ALT, K, resizeactive, 0 -40
|
||||
bind = $mainMod ALT, J, resizeactive, 0 40
|
||||
|
||||
# Lock screen
|
||||
bind = $mainMod CTRL, L, exec, hyprlock
|
||||
|
||||
# Focus
|
||||
bind = $mainMod, left, movefocus, l
|
||||
@@ -90,6 +113,15 @@ bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Move window to adjacent tile/monitor
|
||||
bind = $mainMod SHIFT, left, movewindow, l
|
||||
bind = $mainMod SHIFT, right, movewindow, r
|
||||
bind = $mainMod SHIFT, up, movewindow, u
|
||||
bind = $mainMod SHIFT, down, movewindow, d
|
||||
|
||||
# Apps
|
||||
bind = $mainMod, B, exec, chromium
|
||||
|
||||
# Workspaces
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Cliphist clipboard store
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/bin/sh -c '/usr/bin/wl-paste --type text --watch /usr/bin/cliphist store & /usr/bin/wl-paste --type image --watch /usr/bin/cliphist store & wait'
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Dunst notification daemon
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/dunst
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Hyprland idle daemon
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/hypridle
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Hyprlauncher daemon
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/usr/bin/sleep 2
|
||||
ExecStart=/usr/bin/hyprlauncher -d
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Hyprland Wallpaper daemon
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/hyprpaper
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Waybar status bar
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/waybar
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
Reference in New Issue
Block a user