12 Commits

Author SHA1 Message Date
kenji f4bb5e4ca8 fix(bitwarden): resize, center, and fix background execution
- Float to 600x800 centered on the active monitor after title match
- Fix socat -u so the daemon works when launched in the background
- Add debug logging to /tmp/hypr-window-rules.log

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 13:03:58 -05:00
kenji 1a435a8676 add(bitwarden): added window rule for bitwarden extension via socket listening 2026-05-31 12:47:43 -05:00
kenji 53f9e2d925 feat(hyprpaper): now hovers over previously selected wallpaper 2026-05-31 12:21:53 -05:00
kenji c85ba7f69b fix(matugen): source dominant color as priority
it will no longer prompt user to pick a color
2026-05-31 12:10:59 -05:00
kenji 263133a86a fix(matugen): update to version 4.1.0
issue regarding old version as to error change of color
2026-05-31 12:02:50 -05:00
kenji 4c37e35d2c fix(monitor): removed HDR
deadlock is not compatible with HDR (will have graphical issue)
2026-05-31 11:48:10 -05:00
kenji 99f57dca0c fix(monitor): DP-1 sdrbrightness has incorrect syntax 2026-05-30 10:36:12 -05:00
kenji b5f2538c19 update(hyprland): switched to hyprland 0.55.1 2026-05-28 12:12:21 -05:00
kenji 91f91212db update(apps): vicinae updated 2026-05-28 10:14:27 -05:00
kenji 9071abeacc fix(steam): steam now only shows up on special workspace. 2026-05-28 09:27:09 -05:00
CLAUDE AI f7ab887ed0 revert(hypr): remove game-focus-watcher, restore steam rules
Keep only DP-1 forcing changes: gamingMonitor variable, monitor rules
for steam_app/mkGameRules, gaming-focus script, and SUPER+G binding.

Remove game-focus-watcher (caused game freeze on workspace switch).
Revert steam workspace rule back to title:Steam only.
Revert ghostty exec-once order.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 08:18:42 -05:00
CLAUDE AI fe0d006f2e fix(hypr): reliable gaming workspace focus across monitors
- Add gaming-focus script: closes special workspace on DP-1 via
  --batch dispatch (fixes async race), then focuses gaming workspace;
  replaces raw workspace binding for SUPER+G
- Add game-focus-watcher: listens on Hyprland socket, auto-focuses
  gaming workspace when a game launches regardless of current monitor
- Fix monitor 0 → DP-1 in mkGameRules and steam_app windowrules
- Fix steam dialogs leaking to normal workspaces (broaden workspace
  rule from title:Steam to all class:steam)
- Extract gamingMonitor variable as single source of truth
- Drop redundant workspace dispatch after togglespecialworkspace to
  prevent game freeze on special→gaming transition

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 08:13:47 -05:00
23 changed files with 307 additions and 198 deletions
+2 -2
View File
@@ -27,8 +27,8 @@
exec-once = [ exec-once = [
"uwsm app -- xdg-terminal-exec -e btop-power -p 2" "uwsm app -- xdg-terminal-exec -e btop-power -p 2"
]; ];
windowrulev2 = [ windowrule = [
"monitor ${myConfig.btop.monitor}, title:^(btop)$" "match:title ^(btop)$, monitor ${myConfig.btop.monitor}"
]; ];
}) })
]; ];
+4 -4
View File
@@ -22,10 +22,10 @@
"special:jellyfin, on-created-empty:uwsm app -- firefox -P web-app --name jellyfin https://watch.sakamoto.dev" "special:jellyfin, on-created-empty:uwsm app -- firefox -P web-app --name jellyfin https://watch.sakamoto.dev"
]; ];
windowrulev2 = [ windowrule = [
"opacity 0.99 0.99, class:(?i)(firefox|youtube|jellyfin)" "match:class (?i)(firefox|youtube|jellyfin), opacity 1 1"
"workspace special:youtube, class:^(youtube)$" "match:class ^(youtube)$, workspace special:youtube"
"workspace special:jellyfin, class:^(jellyfin)$" "match:class ^(jellyfin)$, workspace special:jellyfin"
]; ];
}; };
imports = [ imports = [
+1 -1
View File
@@ -74,7 +74,7 @@
]; ];
wayland.windowManager.hyprland.settings.exec-once = [ wayland.windowManager.hyprland.settings.exec-once = [
"[workspace 1] uwsm app -- ghostty -e bash -c 'fastfetch; exec $SHELL'" # TODO: must be xdg-terminal-exec, or default user terminal
"[workspace special:preload silent] uwsm app -- xdg-terminal-exec" "[workspace special:preload silent] uwsm app -- xdg-terminal-exec"
"[workspace 1] uwsm app -- ghostty -e bash -c 'fastfetch; exec $SHELL'" # TODO: must be xdg-terminal-exec, or default user terminal
]; ];
} }
+1
View File
@@ -14,6 +14,7 @@
./hypr/rules.nix ./hypr/rules.nix
./scripts/movement.nix ./scripts/movement.nix
./scripts/window-rules.nix
./scripts/workspace-toggle.nix ./scripts/workspace-toggle.nix
]; ];
wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.enable = true;
+1 -2
View File
@@ -9,7 +9,7 @@
}; };
decoration = { decoration = {
rounding = 0; rounding = 0;
active_opacity = 0.99; active_opacity = 1;
inactive_opacity = 0.99; inactive_opacity = 0.99;
shadow = { shadow = {
enabled = true; enabled = true;
@@ -29,7 +29,6 @@
}; };
monitor = myConfig.hyprland.monitors; monitor = myConfig.hyprland.monitors;
dwindle = { dwindle = {
pseudotile = true;
preserve_split = true; preserve_split = true;
smart_split = false; smart_split = false;
}; };
+1 -6
View File
@@ -1,12 +1,7 @@
{pkgs, ...}: { {pkgs, ...}: {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
layerrule = [ layerrule = [
# Blur and transparency for vicinae "match:namespace vicinae, blur true, ignore_alpha 0.0, no_anim true"
"blur, vicinae"
"ignorealpha 0, vicinae"
# Disable animation for vicinae
"noanim, vicinae"
]; ];
}; };
} }
+1 -1
View File
@@ -5,7 +5,7 @@
disable_splash_rendering = true; disable_splash_rendering = true;
focus_on_activate = true; focus_on_activate = true;
anr_missed_pings = 3; anr_missed_pings = 3;
new_window_takes_over_fullscreen = 1; on_focus_under_fullscreen = 1;
}; };
# experimental = { # experimental = {
+3 -4
View File
@@ -1,10 +1,9 @@
{ {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
windowrulev2 = [ windowrule = [
# Make all inactive windows transparent # Make all inactive windows transparent
"opacity 0.99 0.8, class:.*" "match:class .*, opacity 1 0.8"
# But make Firefox windows opaque again (last rule wins) "match:class firefox, match:title (?i).*bitwarden.*, no_screen_share on"
"float, title:(?i)bitwarden"
]; ];
workspace = [ workspace = [
]; ];
+70
View File
@@ -0,0 +1,70 @@
{pkgs, ...}: let
hyprctl = "${pkgs.hyprland}/bin/hyprctl";
jq = "${pkgs.jq}/bin/jq";
socat = "${pkgs.socat}/bin/socat";
hypr-window-rules = pkgs.writeShellScriptBin "hypr-window-rules" ''
LOG=/tmp/hypr-window-rules.log
log() { echo "[$(date +%T)] $*" >> "$LOG"; }
handle() {
local event="$1"
case "$event" in
windowtitlev2*)
local data="''${event#windowtitlev2>>}"
local addr="0x''${data%%,*}"
local title="''${data#*,}"
if echo "$title" | grep -qi "bitwarden"; then
log "bitwarden title detected: addr=$addr title=$title"
local info
info=$(${hyprctl} clients -j | ${jq} -r --arg addr "$addr" \
'.[] | select(.address == $addr) | "\(.class)|\(.floating)"')
local class="''${info%|*}"
local floating="''${info#*|}"
log " -> class=$class floating=$floating"
if [[ "$class" == "firefox" && "$floating" == "false" ]]; then
${hyprctl} dispatch togglefloating "address:$addr"
local target_w=600
local target_h=800
local mon_id
mon_id=$(${hyprctl} clients -j | ${jq} -r --arg addr "$addr" \
'.[] | select(.address == $addr) | .monitor')
local center
center=$(${hyprctl} monitors -j | ${jq} -r \
--argjson id "$mon_id" --argjson tw "$target_w" --argjson th "$target_h" \
'.[] | select(.id == $id) |
"\(.x + ((.width / .scale) - $tw) / 2 | floor)|\(.y + ((.height / .scale) - $th) / 2 | floor)"')
local cx="''${center%%|*}"
local cy="''${center#*|}"
${hyprctl} dispatch resizewindowpixel "exact $target_w $target_h, address:$addr"
${hyprctl} dispatch movewindowpixel "exact $cx $cy, address:$addr"
log " -> floated, resized to $target_w x $target_h, moved to $cx,$cy"
else
log " -> skipped (class or floating mismatch)"
fi
fi
;;
esac
}
log "started (HYPRLAND_INSTANCE_SIGNATURE=$HYPRLAND_INSTANCE_SIGNATURE)"
${socat} -u \
"UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" \
- \
| while IFS= read -r line; do handle "$line"; done
log "socat exited"
'';
in {
home.packages = [hypr-window-rules];
wayland.windowManager.hyprland.settings.exec-once = [
"hypr-window-rules"
];
}
+27 -14
View File
@@ -22,13 +22,24 @@
fi fi
tmp_file=$(mktemp) tmp_file=$(mktemp)
target_dir="$HOME/Pictures/Wallpapers" LAST_WALLPAPER_FILE="$HOME/.cache/last_wallpaper_path"
if [ ! -d "$target_dir" ]; then
target_dir="$HOME" if [ -f "$LAST_WALLPAPER_FILE" ]; then
last_path=$(cat "$LAST_WALLPAPER_FILE")
if [ -f "$last_path" ]; then
yazi_target="$last_path"
fi
fi
if [ -z "$yazi_target" ]; then
yazi_target="$HOME/Pictures/Wallpapers"
if [ ! -d "$yazi_target" ]; then
yazi_target="$HOME"
fi
fi fi
# Ensure we are in a terminal that supports yazi # Ensure we are in a terminal that supports yazi
${pkgs.yazi}/bin/yazi "$target_dir" --chooser-file="$tmp_file" ${pkgs.yazi}/bin/yazi "$yazi_target" --chooser-file="$tmp_file"
if [ ! -f "$tmp_file" ]; then if [ ! -f "$tmp_file" ]; then
echo "No selection file created." echo "No selection file created."
@@ -46,13 +57,14 @@
# Persistence logic # Persistence logic
CACHE_FILE="$HOME/.cache/current_wallpaper" CACHE_FILE="$HOME/.cache/current_wallpaper"
cp "$WALLPAPER" "$CACHE_FILE" cp "$WALLPAPER" "$CACHE_FILE"
echo "$WALLPAPER" > "$HOME/.cache/last_wallpaper_path"
# Reload hyprpaper # Reload hyprpaper
${pkgs.hyprland}/bin/hyprctl hyprpaper unload all ${pkgs.hyprland}/bin/hyprctl hyprpaper unload all
${pkgs.hyprland}/bin/hyprctl hyprpaper preload "$CACHE_FILE" ${pkgs.hyprland}/bin/hyprctl hyprpaper preload "$CACHE_FILE"
${pkgs.hyprland}/bin/hyprctl hyprpaper wallpaper ",$CACHE_FILE" ${pkgs.hyprland}/bin/hyprctl hyprpaper wallpaper ",$CACHE_FILE"
exec matugen image "$CACHE_FILE" exec matugen image "$CACHE_FILE" --source-color-index 0
''; '';
in { in {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
@@ -64,22 +76,23 @@ in {
"SUPER CTRL, I, Switch Wallpaper, exec, hakase-wallpaper-switch" "SUPER CTRL, I, Switch Wallpaper, exec, hakase-wallpaper-switch"
]; ];
windowrulev2 = [ windowrule = [
# --- WALLPAPER PICKER --- # --- WALLPAPER PICKER ---
"float, class:^(org\.hakase\.switch-wallpaper)$" "match:class ^(org\.hakase\.switch-wallpaper)$, float on"
"float, initialTitle:^(Wallpaper Selector)$" "match:initial_title ^(Wallpaper Selector)$, float on"
"center, class:^(org\.hakase\.switch-wallpaper)$" "match:class ^(org\.hakase\.switch-wallpaper)$, center on"
"center, initialTitle:^(Wallpaper Selector)$" "match:initial_title ^(Wallpaper Selector)$, center on"
"size 60% 60%, class:^(org\.hakase\.switch-wallpaper)$" "match:class ^(org\.hakase\.switch-wallpaper)$, size 60% 60%"
"size 60% 60%, initialTitle:^(Wallpaper Selector)$" "match:initial_title ^(Wallpaper Selector)$, size 60% 60%"
"dimaround, class:^(org\.hakase\.switch-wallpaper)$" "match:class ^(org\.hakase\.switch-wallpaper)$, dim_around on"
"dimaround, initialTitle:^(Wallpaper Selector)$" "match:initial_title ^(Wallpaper Selector)$, dim_around on"
]; ];
}; };
services.hyprpaper = { services.hyprpaper = {
enable = true; enable = true;
settings = { settings = {
splash = false;
preload = [cacheWallpaper]; preload = [cacheWallpaper];
wallpaper = [ wallpaper = [
",${cacheWallpaper}" ",${cacheWallpaper}"
+3 -3
View File
@@ -73,9 +73,9 @@ in {
show = no show = no
''; '';
wayland.windowManager.hyprland.settings.windowrulev2 = [ wayland.windowManager.hyprland.settings.windowrule = [
# --- IMAGE VIEWER (swayimg) --- # --- IMAGE VIEWER (swayimg) ---
"float, class:^(swayimg)$" "match:class ^(swayimg)$, float on"
"center, class:^(swayimg)$" "match:class ^(swayimg)$, center on"
]; ];
} }
+7 -7
View File
@@ -62,14 +62,14 @@
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
exec-once = [ "systemctl --user start jellyfin-mpv-shim" ]; exec-once = [ "systemctl --user start jellyfin-mpv-shim" ];
windowrulev2 = [ windowrule = [
# --- JELLYFIN MPV SHIM --- # --- JELLYFIN MPV SHIM ---
"float, class:^(jellyfin-mpv-shim)$" "match:class ^(jellyfin-mpv-shim)$, float on"
"center, class:^(jellyfin-mpv-shim)$" "match:class ^(jellyfin-mpv-shim)$, center on"
"size 70% 70%, class:^(jellyfin-mpv-shim)$" "match:class ^(jellyfin-mpv-shim)$, size 70% 70%"
"opacity 1.0 override 1.0 override, class:^(jellyfin-mpv-shim)$" "match:class ^(jellyfin-mpv-shim)$, opacity 1.0 override 1.0 override"
"idleinhibit focus, class:^(jellyfin-mpv-shim)$" "match:class ^(jellyfin-mpv-shim)$, idle_inhibit focus"
"noblur, class:^(jellyfin-mpv-shim)$" "match:class ^(jellyfin-mpv-shim)$, no_blur on"
]; ];
}; };
} }
+1 -1
View File
@@ -5,7 +5,7 @@
... ...
}: { }: {
home.packages = with pkgs; [ home.packages = with pkgs; [
matugen inputs.matugen.packages.${pkgs.system}.default
dconf dconf
psmisc # for killall psmisc # for killall
]; ];
+4 -4
View File
@@ -30,10 +30,10 @@
}; };
}; };
wayland.windowManager.hyprland.settings.windowrulev2 = [ wayland.windowManager.hyprland.settings.windowrule = [
# --- VIDEO PLAYER (mpv) --- # --- VIDEO PLAYER (mpv) ---
"float, class:^(mpv)$" "match:class ^(mpv)$, float on"
"center, class:^(mpv)$" "match:class ^(mpv)$, center on"
"size 60% 70%, class:^(mpv)$" "match:class ^(mpv)$, size 60% 70%"
]; ];
} }
+3 -4
View File
@@ -78,10 +78,9 @@ in {
bindd = [ bindd = [
"SUPER, SPACE, Open Vicinae, exec, vicinae-toggle" "SUPER, SPACE, Open Vicinae, exec, vicinae-toggle"
"SUPER, period, Open Emoji Picker, exec, vicinae-toggle deeplink vicinae://extensions/vicinae/core/search-emojis" "SUPER, period, Open Emoji Picker, exec, vicinae-toggle deeplink vicinae://launch/core/search-emojis"
# FIXME: calculator history does not allow you to calculate "SUPER, C, Open Calculator, exec, vicinae-toggle deeplink vicinae://launch/calculator/history"
"SUPER, C, Open Calculator, exec, vicinae-toggle deeplink vicinae://extensions/vicinae/calculator/history" "SUPER, V, Open Clipboard History, exec, vicinae-toggle deeplink vicinae://launch/clipboard/history"
"SUPER, V, Open Clipboard History, exec, vicinae-toggle deeplink vicinae://extensions/vicinae/clipboard/history"
]; ];
}; };
} }
+6 -6
View File
@@ -65,13 +65,13 @@ in {
"SUPER, T, exec, hakase-popup-launch wiremix" "SUPER, T, exec, hakase-popup-launch wiremix"
]; ];
windowrulev2 = [ windowrule = [
# --- POPUP RULES (Wifi, BT, Audio) --- # --- POPUP RULES (Wifi, BT, Audio) ---
"float, class:^(org\.hakase\.popup\..*)$" "match:class ^(org\.hakase\.popup\..*)$, float on"
"size 900 600, class:^(org\.hakase\.popup\..*)$" "match:class ^(org\.hakase\.popup\..*)$, size 900 600"
"center, class:^(org\.hakase\.popup\..*)$" "match:class ^(org\.hakase\.popup\..*)$, center on"
"animation slide right, class:^(org\.hakase\.popup\..*)$" "match:class ^(org\.hakase\.popup\..*)$, animation slide right"
"dimaround, class:^(org\.hakase\.popup\..*)$" "match:class ^(org\.hakase\.popup\..*)$, dim_around on"
]; ];
}; };
imports = [ imports = [
+4 -4
View File
@@ -153,10 +153,10 @@ in {
}; };
}; };
wayland.windowManager.hyprland.settings.windowrulev2 = [ wayland.windowManager.hyprland.settings.windowrule = [
# File picker yazi - floating, centered, smaller size # File picker yazi - floating, centered, smaller size
"float, class:^(org\\.hakase\\.popup\\.yazi)$" "match:class ^(org\\.hakase\\.popup\\.yazi)$, float on"
"size 60% 70%, class:^(org\\.hakase\\.popup\\.yazi)$" "match:class ^(org\\.hakase\\.popup\\.yazi)$, size 60% 70%"
"center, class:^(org\\.hakase\\.popup\\.yazi)$" "match:class ^(org\\.hakase\\.popup\\.yazi)$, center on"
]; ];
} }
+2 -1
View File
@@ -32,7 +32,8 @@
}; };
hyprland = { hyprland = {
monitors = [ monitors = [
"DP-1,highres@165,0x1080,1,vrr,0,bitdepth,10,cm,hdr,sdrbrightness,1.3" # "DP-1,highres@180,0x1080,1,vrr,1,bitdepth,10,cm,hdr,sdrbrightness,2.5"
"DP-1,highres@180,0x1080,1,vrr,0"
"DP-2, highres@165,760x0,1" "DP-2, highres@165,760x0,1"
"HDMI-A-1, highres@highrr@120, 3440x1440, 1.6" "HDMI-A-1, highres@highrr@120, 3440x1440, 1.6"
]; ];
Generated
+121 -67
View File
@@ -41,11 +41,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765900596, "lastModified": 1778857089,
"narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=", "narHash": "sha256-TclWRW2SdFeETLaiTG4BA8C8C4m/LppQEldncqyTzAQ=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace", "rev": "ab2b0af63fbc9fb779d684f19149b790978be8a8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -141,15 +141,15 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1761588595, "lastModified": 1767039857,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"type": "github" "type": "github"
} }
@@ -231,7 +231,7 @@
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_5" "systems": "systems_6"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
@@ -347,11 +347,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753964049, "lastModified": 1776511930,
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", "narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", "rev": "39435900785d0c560c6ae8777d29f28617d031ef",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -376,11 +376,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1763733840, "lastModified": 1776426399,
"narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", "narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprgraphics", "repo": "hyprgraphics",
"rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", "rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -408,11 +408,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1767300597, "lastModified": 1779983308,
"narHash": "sha256-lGE1j1bEuNp7XoDP+oyyF/c+MzYAs6S+sz0NK71nXZE=", "narHash": "sha256-mvjt5EqRubXF5w1RnyLsWOduJQzHDZCjohWJz/TUvJM=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "31d3181e1ee91e338fb4fb8207d64b8d689310fc", "rev": "ebc1816dfb27f1091c9713876669e092a215382d",
"revCount": 6766, "revCount": 7376,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@@ -456,11 +456,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765643131, "lastModified": 1776426575,
"narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=", "narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-guiutils", "repo": "hyprland-guiutils",
"rev": "e50ae912813bdfa8372d62daf454f48d6df02297", "rev": "a968d211048e3ed538e47b84cb3649299578f19d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -486,11 +486,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767304464, "lastModified": 1779209205,
"narHash": "sha256-HsdfmPf5291Y3yXScMoj53P/9SS1DK3KgbprBuR8A4k=", "narHash": "sha256-asc7NpeB8vD66gvZeYcQkaWOs2X6Jgd29vBtP17vjxo=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-plugins", "repo": "hyprland-plugins",
"rev": "7a8521112361997d071fd1fef06d6becc7e53240", "rev": "1cb37fad68dff5f5840010c314fed5809b4ee66f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -511,11 +511,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765214753, "lastModified": 1772460177,
"narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-protocols", "repo": "hyprland-protocols",
"rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -540,11 +540,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1764612430, "lastModified": 1777320127,
"narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", "narHash": "sha256-Qu+Wf2Bp5qUjyn2YpZNq8a7JyzTGowhT1knrwE38a9U=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "0d00dc118981531aa731150b6ea551ef037acddd", "rev": "090117506ddc3d7f26e650ff344d378c2ec329cc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -578,14 +578,15 @@
"inputs": { "inputs": {
"hyprland": [ "hyprland": [
"hyprland" "hyprland"
] ],
"nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1766546378, "lastModified": 1779414137,
"narHash": "sha256-GSoSLHErh1mRfgXM57W98L67MMBHKCemHzxoZPrejSI=", "narHash": "sha256-XpwuFhwnfwPbzImZeUWWns///UEpoKNkpl1hN90C3Ag=",
"owner": "shezdy", "owner": "shezdy",
"repo": "hyprsplit", "repo": "hyprsplit",
"rev": "9a8b55f4269bfa5c59d03ed9f4502f433572c616", "rev": "0fc01e7930625ecb3e069f5dc8e1d61eab929f3b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -633,11 +634,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1764592794, "lastModified": 1772462885,
"narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", "narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprtoolkit", "repo": "hyprtoolkit",
"rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", "rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -658,11 +659,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1766160771, "lastModified": 1779475241,
"narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=", "narHash": "sha256-Nw4DN0A5krWNcPBvuWe5Gz2yuxsUUPiDgtu6SVPJQeU=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f", "rev": "3cd3972b2ee658a14d2610d8494e09259e530124",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -683,11 +684,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1763640274, "lastModified": 1777159683,
"narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", "narHash": "sha256-Jxixw6wZphUp+nHYxOKUYSckL17QMBx2d5Zp0rJHr1g=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", "rev": "b8632713a6beaf28b56f2a7b0ab2fb7088dbb404",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -712,11 +713,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1766253200, "lastModified": 1778410714,
"narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=", "narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwire", "repo": "hyprwire",
"rev": "1079777525b30a947c8d657fac158e00ae85de9d", "rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -747,6 +748,27 @@
"type": "github" "type": "github"
} }
}, },
"matugen": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_4"
},
"locked": {
"lastModified": 1780068618,
"narHash": "sha256-LFiV5gdD4MkPrzBrc3Lq966vTQGuwwXC5WkgglWz7i4=",
"owner": "InioX",
"repo": "Matugen",
"rev": "74bfe9369a46589c5048072142796343a8d74168",
"type": "github"
},
"original": {
"owner": "InioX",
"repo": "Matugen",
"type": "github"
}
},
"nix-github-actions": { "nix-github-actions": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -822,6 +844,22 @@
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": {
"lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1744536153, "lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
@@ -837,7 +875,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1778869304,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
@@ -860,7 +898,7 @@
"nixovim", "nixovim",
"nixpkgs" "nixpkgs"
], ],
"systems": "systems_4" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1779023681, "lastModified": 1779023681,
@@ -907,11 +945,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765911976, "lastModified": 1778507602,
"narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=", "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27", "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -931,8 +969,9 @@
"hyprland-plugins": "hyprland-plugins", "hyprland-plugins": "hyprland-plugins",
"hyprspace": "hyprspace", "hyprspace": "hyprspace",
"hyprsplit": "hyprsplit", "hyprsplit": "hyprsplit",
"matugen": "matugen",
"nixovim": "nixovim", "nixovim": "nixovim",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"nur": "nur", "nur": "nur",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"textfox": "textfox", "textfox": "textfox",
@@ -964,7 +1003,7 @@
}, },
"rust-overlay_2": { "rust-overlay_2": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1766544144, "lastModified": 1766544144,
@@ -1047,16 +1086,16 @@
}, },
"systems_4": { "systems_4": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1689347949,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"type": "github" "type": "github"
} }
}, },
@@ -1091,6 +1130,21 @@
} }
}, },
"systems_7": { "systems_7": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_8": {
"locked": { "locked": {
"lastModified": 1689347949, "lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
@@ -1152,14 +1206,14 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems_6" "systems": "systems_7"
}, },
"locked": { "locked": {
"lastModified": 1767353605, "lastModified": 1779832601,
"narHash": "sha256-j2nuPawvb33wjTV93htSiMRxGeTLLrKhwOEqmmTu5uY=", "narHash": "sha256-/dtn1sOTEcb/rNInzkdnK8PNIIDfQi7fEJfQEq+Is4g=",
"owner": "vicinaehq", "owner": "vicinaehq",
"repo": "vicinae", "repo": "vicinae",
"rev": "d89a9c9656486de144fd035bea7c2ea3b97fedf8", "rev": "dc1f7d47725c68debdb31be26781a96c14bac059",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1176,7 +1230,7 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems_7" "systems": "systems_8"
}, },
"locked": { "locked": {
"lastModified": 1766324177, "lastModified": 1766324177,
@@ -1220,11 +1274,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1761431178, "lastModified": 1778265244,
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", "narHash": "sha256-8jlPtGSsv/CQY6tVVyLF4Jjd0gnS+Zbn9yk/V13A9nM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", "rev": "813ea5ca9a1702a9a2d1f5836bc00172ef698968",
"type": "github" "type": "github"
}, },
"original": { "original": {
+8
View File
@@ -68,6 +68,13 @@
url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git"; url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# TODO: unstable.nixpkgs `matugen` is stuck at v4.0.0
# may need to use `git` version first
matugen = {
url = "github:/InioX/Matugen";
inputs.nixpkgs.follows = "nixpkgs";
# ...
};
}; };
outputs = { outputs = {
@@ -93,6 +100,7 @@
} }
// allConfig.hakase; // allConfig.hakase;
modules = [ modules = [
inputs.matugen.nixosModules.default
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
chaotic.nixosModules.default chaotic.nixosModules.default
+30 -60
View File
@@ -18,39 +18,13 @@
# Close special workspace on gaming monitor if open # Close special workspace on gaming monitor if open
special=$(${pkgs.hyprland}/bin/hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.name == "${gamingMonitor}") | .specialWorkspace.name') special=$(${pkgs.hyprland}/bin/hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.name == "${gamingMonitor}") | .specialWorkspace.name')
if [[ -n "$special" ]]; then if [[ -n "$special" ]]; then
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch togglespecialworkspace ''${special#special:};dispatch focusmonitor ${gamingMonitor};dispatch workspace name:gaming" # Gaming workspace is already underneath just close the special overlay
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch togglespecialworkspace ''${special#special:}"
else else
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch workspace name:gaming" ${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch workspace name:gaming"
fi fi
''; '';
game-focus-watcher = pkgs.writeShellScriptBin "game-focus-watcher" ''
handle() {
case $1 in
openwindow*)
data="''${1#openwindow>>}"
class=$(echo "$data" | cut -d',' -f3)
if [[ "$class" =~ ^steam_app_[0-9]+ ]] || \
[[ "$class" == "gamescope" ]] || \
[[ "$class" =~ ^wine- ]] || \
[[ "$class" == "lutris" ]] || \
[[ "$class" == "heroic" ]]; then
special=$(${pkgs.hyprland}/bin/hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.name == "${gamingMonitor}") | .specialWorkspace.name')
if [[ -n "$special" ]]; then
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch togglespecialworkspace ''${special#special:};dispatch focusmonitor ${gamingMonitor};dispatch workspace name:gaming"
else
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch workspace name:gaming"
fi
fi
;;
esac
}
${pkgs.socat}/bin/socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | while read -r line; do
handle "$line"
done
'';
# Games that should have `stayfocused` applied (to avoid multi-monitor focus issues) # Games that should have `stayfocused` applied (to avoid multi-monitor focus issues)
stayFocusedGames = [ stayFocusedGames = [
# "Deadlock" # "Deadlock"
@@ -59,16 +33,16 @@
]; ];
mkGameRules = selector: [ mkGameRules = selector: [
"monitor ${gamingMonitor}, ${selector}" "match:${selector}, monitor ${gamingMonitor}"
"fullscreen, ${selector}" "match:${selector}, fullscreen on"
"immediate, ${selector}" "match:${selector}, immediate on"
"tile, ${selector}" "match:${selector}, tile on"
]; ];
stayFocusedRules = lib.flatten (map ( stayFocusedRules = lib.flatten (map (
game: [ game: [
"stayfocused, title:^(${game})$" "match:title ^(${game})$, stay_focused on"
"stayfocused, class:^(${game})$" "match:class ^(${game})$, stay_focused on"
] ]
) )
stayFocusedGames); stayFocusedGames);
@@ -78,7 +52,6 @@ in {
protontricks protontricks
mangohud mangohud
gaming-focus gaming-focus
game-focus-watcher
# via # via
]; ];
@@ -100,8 +73,7 @@ in {
]; ];
exec-once = [ exec-once = [
"[workspace special:steam silent] uwsm app -- steam" "[workspace special:steam silent] steam"
"game-focus-watcher"
]; ];
bindd = [ bindd = [
@@ -111,46 +83,44 @@ in {
"SUPER SHIFT, G, Move to Gaming Workspace, movetoworkspace, name:gaming" "SUPER SHIFT, G, Move to Gaming Workspace, movetoworkspace, name:gaming"
]; ];
windowrulev2 = windowrule =
[ [
"plugin:hyprbars:nobar, class:^(steam)$" "match:class ^(steam)$, hyprbars:no_bar on"
"plugin:hyprbars:nobar, class:^(steam_app_\\d+)$" "match:class ^(steam_app_\\d+)$, hyprbars:no_bar on"
# --- STEAM GENERAL RULES --- # --- STEAM GENERAL RULES ---
# Default ALL steam class windows to float. This catches all dialogs & properties windows. # Default ALL steam class windows to float. This catches all dialogs & properties windows.
"float, class:^(steam)$" "match:class ^(steam)$, float on"
# Suppress focus stealing from dialogs/etc. # Suppress focus stealing from dialogs/etc.
"noinitialfocus, class:^(steam)$" "match:class ^(steam)$, no_initial_focus on"
"suppressevent activate fullscreen maximize, class:^(steam)$" "match:class ^(steam)$, suppress_event activate fullscreen maximize"
# --- STEAM CLIENT OVERRIDE --- # --- STEAM CLIENT OVERRIDE ---
# Override the float for the main Steam client, tile it, and move it to the special workspace. # Override the float for the main Steam client, tile it, and move it to the special workspace.
"tile, class:^(steam)$, title:^(Steam)$" "match:class ^(steam)$, tile on"
# All steam class windows go to special:steam (dialogs, store, friends, etc.) "match:class ^(steam)$, workspace special:steam"
# Game overrides below take precedence for actual games.
"workspace special:steam, class:^(steam)$"
# --- STEAM GAME OVERRIDES --- # --- STEAM GAME OVERRIDES ---
# Override the float for actual games and move them to the gaming workspace. # Override the float for actual games and move them to the gaming workspace.
# 1. Auto-detected steam_app games (like Deadlock). # 1. Auto-detected steam_app games (like Deadlock).
"monitor ${gamingMonitor}, class:^(steam_app_\\d+)$" "match:class ^(steam_app_\\d+)$, monitor ${gamingMonitor}"
"tile, class:^(steam_app_\\d+)$" "match:class ^(steam_app_\\d+)$, tile on"
"fullscreen, class:^(steam_app_\\d+)$" "match:class ^(steam_app_\\d+)$, fullscreen on"
"immediate, class:^(steam_app_\\d+)$" "match:class ^(steam_app_\\d+)$, immediate on"
"workspace name:gaming, class:^(steam_app_\\d+)$" "match:class ^(steam_app_\\d+)$, workspace name:gaming"
# 2. Behavior-detected manual games (e.g. ARC Raiders). # 2. Behavior-detected manual games (e.g. ARC Raiders).
# This moves any steam game to the gaming workspace and tiles it when it becomes fullscreen. # This moves any steam game to the gaming workspace and tiles it when it becomes fullscreen.
"tile, class:^(steam)$, fullscreen:1" "match:class ^(steam)$, match:fullscreen true, tile on"
"workspace name:gaming, class:^(steam)$, fullscreen:1" "match:class ^(steam)$, match:fullscreen true, workspace name:gaming"
] ]
# Other auto-detected non-steam games # Other auto-detected non-steam games
++ (mkGameRules "class:^(gamescope)$") ++ (mkGameRules "class ^(gamescope)$")
++ (mkGameRules "class:^(lutris)$") ++ (mkGameRules "class ^(lutris)$")
++ (mkGameRules "class:^(heroic)$") ++ (mkGameRules "class ^(heroic)$")
++ (mkGameRules "class:^wine-.*$") ++ (mkGameRules "class ^wine-.*$")
++ (mkGameRules "title:^Wine .*$") ++ (mkGameRules "title ^Wine .*$")
++ (mkGameRules "initialTitle:^(?i)godot.*$") ++ (mkGameRules "initial_title ^(?i)godot.*$")
# ++ [ # ++ [
# "monitor 0, initialTitle:^(?i)godot.*$" # "monitor 0, initialTitle:^(?i)godot.*$"
# "fullscreen, initialTitle:^(?i)godot.*$" # "fullscreen, initialTitle:^(?i)godot.*$"
+5 -5
View File
@@ -42,14 +42,14 @@ in {
"SUPER SHIFT, M, Move to Music Workspace, movetoworkspace, name:music" "SUPER SHIFT, M, Move to Music Workspace, movetoworkspace, name:music"
]; ];
windowrulev2 = [ windowrule = [
# --- MUSIC RULES (Jellyfin-TUI) --- # --- MUSIC RULES (Jellyfin-TUI) ---
"workspace name:music silent, title:^(jellyfin-tui)$" "match:title ^(jellyfin-tui)$, workspace name:music silent"
"workspace name:music silent, initialTitle:^(jellyfin-tui)$" "match:initial_title ^(jellyfin-tui)$, workspace name:music silent"
# --- CAVA RULES --- # --- CAVA RULES ---
"workspace name:music silent, title:^(cava)$" "match:title ^(cava)$, workspace name:music silent"
"workspace name:music silent, initialTitle:^(cava)$" "match:initial_title ^(cava)$, workspace name:music silent"
]; ];
}; };
} }
+2 -2
View File
@@ -8,11 +8,11 @@
enable = true; enable = true;
settings = { settings = {
initial_session = { initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland"; command = "${pkgs.uwsm}/bin/start-hyprland";
user = "${myConfig.nixos.username}"; user = "${myConfig.nixos.username}";
}; };
default_session = { default_session = {
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland"; command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd start-hyprland";
}; };
}; };
}; };