mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-08-03 18:28:37 +02:00
feat(niri): reorganize workspace layout
This commit is contained in:
@@ -151,22 +151,16 @@ binds {
|
||||
Mod+1 { focus-workspace "1terminal"; }
|
||||
Mod+2 { focus-workspace "2browser"; }
|
||||
Mod+3 { focus-workspace "3chat"; }
|
||||
Mod+4 { focus-workspace "4music"; }
|
||||
Mod+4 { focus-workspace "4entertainment"; }
|
||||
Mod+5 { focus-workspace "5mail"; }
|
||||
Mod+6 { focus-workspace "6file"; }
|
||||
Mod+7 { focus-workspace "7"; }
|
||||
Mod+8 { focus-workspace "8"; }
|
||||
Mod+9 { focus-workspace "9"; }
|
||||
Mod+6 { focus-workspace "6utility"; }
|
||||
Mod+0 { focus-workspace "0other"; }
|
||||
Mod+Ctrl+1 { move-column-to-workspace "1terminal"; }
|
||||
Mod+Ctrl+2 { move-column-to-workspace "2browser"; }
|
||||
Mod+Ctrl+3 { move-column-to-workspace "3chat"; }
|
||||
Mod+Ctrl+4 { move-column-to-workspace "4music"; }
|
||||
Mod+Ctrl+4 { move-column-to-workspace "4entertainment"; }
|
||||
Mod+Ctrl+5 { move-column-to-workspace "5mail"; }
|
||||
Mod+Ctrl+6 { move-column-to-workspace "6file"; }
|
||||
Mod+Ctrl+7 { move-column-to-workspace "7"; }
|
||||
Mod+Ctrl+8 { move-column-to-workspace "8"; }
|
||||
Mod+Ctrl+9 { move-column-to-workspace "9"; }
|
||||
Mod+Ctrl+6 { move-column-to-workspace "6utility"; }
|
||||
Mod+Ctrl+0 { move-column-to-workspace "0other"; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
|
||||
@@ -61,66 +61,77 @@ window-rule {
|
||||
open-on-workspace "3chat"
|
||||
}
|
||||
|
||||
// Gaming applications - open in workspace 4
|
||||
// Entertainment applications - open in workspace 4
|
||||
window-rule {
|
||||
match app-id="steam"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="steam_app_default"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="heroic"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="net.lutris.Lutris"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="com.vysp3r.ProtonPlus"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
// Run anime games on Linux
|
||||
match app-id="^moe.launcher"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
// All *.exe (Windows applications)
|
||||
match app-id=".exe$"
|
||||
open-on-workspace "4gaming"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="^mpv$"
|
||||
open-on-workspace "4entertainment"
|
||||
}
|
||||
|
||||
// File management applications - open in workspace 6
|
||||
// Utility applications - open in workspace 6
|
||||
window-rule {
|
||||
match app-id="com.github.johnfactotum.Foliate"
|
||||
open-on-workspace "6file"
|
||||
open-on-workspace "6utility"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="thunar"
|
||||
open-on-workspace "6file"
|
||||
open-on-workspace "6utility"
|
||||
}
|
||||
|
||||
// Other applications - open in workspace 0
|
||||
window-rule {
|
||||
match app-id="Clash-verge"
|
||||
open-on-workspace "0other"
|
||||
match app-id="^Clash-verge$"
|
||||
match app-id="^[.]clash-verge-wrapped$"
|
||||
open-on-workspace "6utility"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="^org[.]kde[.]easyeffects$"
|
||||
open-on-workspace "6utility"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="Zoom Workplace"
|
||||
// Zoom Home Page
|
||||
match title="^(Zoom Workplace)( - Free account)?$"
|
||||
open-on-workspace "0other"
|
||||
open-on-workspace "6utility"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="Zoom Workplace"
|
||||
// Zoom - other windows
|
||||
exclude title="^(Zoom Workplace)( - Free account)?$"
|
||||
open-on-workspace "0other"
|
||||
open-on-workspace "6utility"
|
||||
open-floating true
|
||||
}
|
||||
window-rule {
|
||||
match app-id="^Zoom$"
|
||||
open-on-workspace "6utility"
|
||||
}
|
||||
window-rule {
|
||||
match app-id="^Zoom$" title="^as_toolbar$"
|
||||
open-floating true
|
||||
|
||||
@@ -1,17 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Reorder named workspaces so indices match their numeric prefixes:
|
||||
# 1 → "1terminal", 2 → "2browser", ..., 6 → "6file", 10 → "0other".
|
||||
# Requires a running niri session and the `niri msg` command in PATH.
|
||||
# Niri keeps a separate workspace index sequence on each output.
|
||||
case "$(hostname)" in
|
||||
ai)
|
||||
workspace_order=(
|
||||
"4entertainment:1"
|
||||
"2browser:2"
|
||||
"0other:3"
|
||||
"1terminal:1"
|
||||
"3chat:2"
|
||||
"6utility:3"
|
||||
)
|
||||
;;
|
||||
shoukei)
|
||||
workspace_order=(
|
||||
"1terminal:1"
|
||||
"2browser:2"
|
||||
"3chat:3"
|
||||
"4entertainment:4"
|
||||
"5mail:5"
|
||||
"6utility:6"
|
||||
"0other:7"
|
||||
)
|
||||
;;
|
||||
*)
|
||||
printf 'No workspace order configured for host %s\n' "$(hostname)" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
niri msg action move-workspace-to-index 1 --reference "1terminal"
|
||||
niri msg action move-workspace-to-index 2 --reference "2browser"
|
||||
niri msg action move-workspace-to-index 3 --reference "3chat"
|
||||
niri msg action move-workspace-to-index 4 --reference "4music"
|
||||
niri msg action move-workspace-to-index 5 --reference "5mail"
|
||||
niri msg action move-workspace-to-index 6 --reference "6file"
|
||||
niri msg action move-workspace-to-index 7 --reference "7"
|
||||
niri msg action move-workspace-to-index 8 --reference "8"
|
||||
niri msg action move-workspace-to-index 9 --reference "9"
|
||||
niri msg action move-workspace-to-index 10 --reference "0other"
|
||||
for entry in "${workspace_order[@]}"; do
|
||||
workspace="${entry%%:*}"
|
||||
index="${entry##*:}"
|
||||
printf 'Moving workspace %s to index %s\n' "$workspace" "$index"
|
||||
niri msg action move-workspace-to-index "$index" --reference "$workspace"
|
||||
done
|
||||
|
||||
@@ -7,12 +7,9 @@ output "eDP-1" {
|
||||
workspace "1terminal" { open-on-output "eDP-1"; }
|
||||
workspace "2browser" { open-on-output "eDP-1"; }
|
||||
workspace "3chat" { open-on-output "eDP-1"; }
|
||||
workspace "4music" { open-on-output "eDP-1"; }
|
||||
workspace "4entertainment" { open-on-output "eDP-1"; }
|
||||
workspace "5mail" { open-on-output "eDP-1"; }
|
||||
workspace "6file" { open-on-output "eDP-1"; }
|
||||
workspace "7" { open-on-output "eDP-1"; }
|
||||
workspace "8" { open-on-output "eDP-1"; }
|
||||
workspace "9" { open-on-output "eDP-1"; }
|
||||
workspace "6utility" { open-on-output "eDP-1"; }
|
||||
workspace "0other" { open-on-output "eDP-1"; }
|
||||
debug { render-drm-device "/dev/dri/renderD128"; }
|
||||
|
||||
|
||||
@@ -38,14 +38,10 @@ output "HDMI-A-2" {
|
||||
}
|
||||
|
||||
// ============= Named Workspaces =============
|
||||
workspace "4entertainment" { open-on-output "DP-1"; }
|
||||
workspace "2browser" { open-on-output "DP-1"; }
|
||||
workspace "4gaming" { open-on-output "DP-1"; }
|
||||
workspace "5music" { open-on-output "DP-1"; }
|
||||
workspace "0other" { open-on-output "DP-1"; }
|
||||
|
||||
workspace "1terminal" { open-on-output "HDMI-A-2"; }
|
||||
workspace "3chat" { open-on-output "HDMI-A-2"; }
|
||||
workspace "6file" { open-on-output "HDMI-A-2"; }
|
||||
workspace "7" { open-on-output "HDMI-A-2"; }
|
||||
workspace "8" { open-on-output "HDMI-A-2"; }
|
||||
workspace "9" { open-on-output "HDMI-A-2"; }
|
||||
workspace "0other" { open-on-output "HDMI-A-2"; }
|
||||
workspace "6utility" { open-on-output "HDMI-A-2"; }
|
||||
|
||||
Reference in New Issue
Block a user