niri(blankpad): desk-profile system, keybind rework, lid handler, noctalia config tracked
- config.kdl: display include optional=true (desk profiles link it per-desk), new optional switch-events.kdl include (per-host, blankpad-only) - keybinds: swap-window-left/right on Mod+CTRL+H/L+arrows (join/exit columns on pass), move-column demoted to Mod+CTRL+Alt+chords; Print trio -> flameshot full/gui/screen (CTRL+Shift trio kept); launcher Mod+CTRL+Return -> Mod+D; Alt+Tab noctalia window-switcher; Mod+V clipboard panel; Mod+Shift+Space handy post-process; Mod+Shift+D desk cycle - layout: preset column widths 12.5/25/33/50/67/75/87.5% - desk-1-home.kdl: EDID-identity-keyed positions (M34 + eDP long names; PM1601 connector placeholder pending EDID capture), focus-at-startup M34-first - desk-2-portable.kdl: skeleton, EDID capture TODO - switch-events: lid-close -> noctalia session lock-and-suspend - autostart: handy --start-hidden (replaces Handy self-autostart) - noctalia config.toml + settings.toml now tracked - zz-blankpad display.kdl retired to .AGENTTRASH (superseded by desk-1-home) niri validate: pass (assembled blankpad layout)
This commit is contained in:
1 parent
1d32829428
commit
4ec47a5b7e
10 files changed
+339
-36
No files matched your search
@@ -2,3 +2,4 @@
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#spawn-sh-at-startup
|
||||
|
||||
spawn-at-startup "noctalia"
|
||||
spawn-at-startup "handy" "--start-hidden"
|
||||
@@ -0,0 +1,32 @@
|
||||
// ────────────── Desk Profile: home (current rig) ──────────────
|
||||
// Applied by symlinking this file to cfg/display.kdl (see scripts/desk.sh).
|
||||
// Panels are keyed by EDID identity (manufacturer model serial), NOT by
|
||||
// connector name — connector names reshuffle between desks; identity travels.
|
||||
//
|
||||
// requires: Sceptre Tech Inc Sceptre M34 Unknown
|
||||
// requires: Lenovo Group Limited 0x40A9 Unknown
|
||||
// optional: HDMI-A-1 (PM1601, dock-dependent)
|
||||
|
||||
output "Sceptre Tech Inc Sceptre M34 Unknown" {
|
||||
mode "3440x1440@239.999"
|
||||
scale 1
|
||||
transform "normal"
|
||||
position x=1581 y=-600
|
||||
focus-at-startup
|
||||
}
|
||||
|
||||
// PM1601 portrait panel (dock-dependent). EDID string NOT captured as of
|
||||
// 2026-10-09 (panel disconnected) — connector-keyed placeholder.
|
||||
// When plugged in: run `desk.sh capture`, re-key this block to the printed
|
||||
// long name, update #optional above.
|
||||
output "HDMI-A-1" {
|
||||
scale 1
|
||||
transform "90"
|
||||
position x=1200 y=0
|
||||
}
|
||||
|
||||
output "Lenovo Group Limited 0x40A9 Unknown" {
|
||||
scale 1.0
|
||||
position x=5021 y=-240
|
||||
focus-at-startup
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// ────────────── Desk Profile: portable (skeleton) ──────────────
|
||||
// SKELETON — portable monitor EDID not captured yet. On first use at the
|
||||
// portable desk: run `desk.sh capture`, replace PORTABLE-EDID-TBD below and
|
||||
// in the requires list with the printed long name, adjust position to taste.
|
||||
// requires: Lenovo Group Limited 0x40A9 Unknown
|
||||
// requires: PORTABLE-EDID-TBD
|
||||
|
||||
output "Lenovo Group Limited 0x40A9 Unknown" {
|
||||
scale 1.0
|
||||
position x=0 y=0
|
||||
focus-at-startup
|
||||
}
|
||||
|
||||
// Assumed: 1920x1080 landscape panel right of the laptop panel.
|
||||
output "PORTABLE-EDID-TBD" {
|
||||
scale 1.0
|
||||
position x=1920 y=0
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
// ────────────── Output Configuration ──────────────
|
||||
// You can run `niri msg outputs` to get the correct name for your displays.
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
|
||||
//
|
||||
// eDP-1 (laptop panel) is pinned too: an output block resets unspecified
|
||||
// properties to defaults, so its 1.25 scale must be repeated here.
|
||||
//
|
||||
// Both external PM1601 panels run portrait. niri's transform is
|
||||
// counter-clockwise: "90" = panel's top bezel faces left, "270" = top bezel
|
||||
// faces right. In portrait a 180° flip is the 90<->270 swap.
|
||||
|
||||
output "DP-2" {
|
||||
mode "3440x1440@239.999"
|
||||
|
||||
scale 1
|
||||
transform "normal"
|
||||
position x=1581 y=-600
|
||||
}
|
||||
|
||||
output "HDMI-A-1" {
|
||||
scale 1
|
||||
transform "90"
|
||||
position x=1200 y=0
|
||||
}
|
||||
|
||||
output "eDP-1" {
|
||||
scale 1.0 // MUST restate: dashed-out by the block otherwise
|
||||
position x=5021 y=-240
|
||||
}
|
||||
@@ -16,9 +16,13 @@ binds {
|
||||
Mod+Shift+Return hotkey-overlay-title="Open Wallpaper Selector: noctalia wallpaper toggle" { spawn-sh "noctalia msg panel-toggle wallpaper"; }
|
||||
Mod+S hotkey-overlay-title="Open Control Center: noctalia controlCenter" { spawn-sh "noctalia msg panel-toggle control-center"; }
|
||||
Mod+Shift+S hotkey-overlay-title="Open Settings: noctalia settings" { spawn-sh "noctalia msg settings-toggle"; }
|
||||
Mod+CTRL+Return hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; }
|
||||
Mod+D hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; }
|
||||
Mod+ALT+L hotkey-overlay-title="Lock Screen: noctalia lock" { spawn-sh "noctalia msg session lock"; }
|
||||
Mod+Shift+Q hotkey-overlay-title="Session Menu: noctalia sessionMenu" { spawn-sh "noctalia msg panel-toggle session"; }
|
||||
Mod+V hotkey-overlay-title="Clipboard History: noctalia panel" { spawn-sh "noctalia msg panel-toggle clipboard"; }
|
||||
Alt+TAB hotkey-overlay-title="Window Switcher: noctalia" { spawn-sh "noctalia msg window-switcher"; }
|
||||
Mod+Shift+Space hotkey-overlay-title="Handy: toggle post-process recording" allow-when-locked=true { spawn-sh "handy --toggle-post-process"; }
|
||||
Mod+Shift+D hotkey-overlay-title="Cycle Desk Profile" { spawn-sh "desk.sh cycle"; }
|
||||
|
||||
// Please set the text editor of your choice.
|
||||
// Mod+Shift+E hotkey-overlay-title="Open Text Editor: Zed" { spawn "zed"; }
|
||||
@@ -52,10 +56,15 @@ binds {
|
||||
Mod+Down { focus-window-down; }
|
||||
Mod+J { focus-window-down; }
|
||||
|
||||
Mod+CTRL+Left { move-column-left; }
|
||||
Mod+CTRL+H { move-column-left; }
|
||||
Mod+CTRL+Right { move-column-right; }
|
||||
Mod+CTRL+L { move-column-right; }
|
||||
// swap-window = window walks sideways, joining/exiting columns it passes
|
||||
Mod+CTRL+Left { swap-window-left; }
|
||||
Mod+CTRL+H { swap-window-left; }
|
||||
Mod+CTRL+Right { swap-window-right; }
|
||||
Mod+CTRL+L { swap-window-right; }
|
||||
Mod+CTRL+Alt+Left { move-column-left; }
|
||||
Mod+CTRL+Alt+H { move-column-left; }
|
||||
Mod+CTRL+Alt+Right { move-column-right; }
|
||||
Mod+CTRL+Alt+L { move-column-right; }
|
||||
Mod+CTRL+UP { move-window-up; }
|
||||
Mod+CTRL+K { move-window-up; }
|
||||
Mod+CTRL+Down { move-window-down; }
|
||||
@@ -149,6 +158,9 @@ binds {
|
||||
CTRL+Shift+1 hotkey-overlay-title="Screenshot: flameshot full" { spawn-sh "flameshot full"; }
|
||||
CTRL+Shift+2 hotkey-overlay-title="Screenshot: flameshot screen" { spawn-sh "flameshot screen"; }
|
||||
CTRL+Shift+3 hotkey-overlay-title="Screenshot: flameshot region" { spawn-sh "flameshot gui"; }
|
||||
Print hotkey-overlay-title="Screenshot: flameshot full" { spawn-sh "flameshot full"; }
|
||||
Ctrl+Print hotkey-overlay-title="Screenshot: flameshot region" { spawn-sh "flameshot gui"; }
|
||||
Alt+Print hotkey-overlay-title="Screenshot: flameshot screen" { spawn-sh "flameshot screen"; }
|
||||
|
||||
// ─── Emergency Escape Key ───
|
||||
// Use this when a fullscreen app blocks your keybinds.
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// ────────────── Switch (lid) Events — blankpad laptop ──────────────
|
||||
// Included by config.kdl via include optional=true; only blankpad links this.
|
||||
// Pair with logind: if HandleLidSwitch=ignore is set, this is the sole path.
|
||||
|
||||
switch-events {
|
||||
lid-close { spawn "noctalia" "msg" "session" "lock-and-suspend"; }
|
||||
}
|
||||
Reference in new issue
Block a user