feat(arch-layer,scripts): linux-gated desktop configs + package install scripts

niri (exact_config.d, scripts), noctalia (plugins excluded — runtime
state with embedded token), fontconfig, mimeapps.list,
niri-dynamic-workspaces, systemd user unit files (enable-state not
managed; only nirinit enabled by run_once), niri-launch vendored from
/usr/bin (unowned hand-written script, shellcheck warnings pre-existing).

Scripts: packages (pacman --needed + paru, brew on darwin, root-safe,
keyed on packages.yaml hash), gh extensions (idempotent), user services
(linux), post (tpm clone, bat cache, fc-cache). All shellcheck-clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Prad NukalaandClaude Fable 5 committed 2026-08-09 14:56:09 -04:00
1 parent 20891f3910
commit 2142bdf9cb
61 files changed
+3113 -3

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit name="rgba" mode="assign">
<const>none</const>
</edit>
</match>
</fontconfig>
+51
View File
@@ -0,0 +1,51 @@
[Default Applications]
text/plain=vim.desktop
text/x-shellscript=vim.desktop
text/x-python=vim.desktop
text/x-script.python=vim.desktop
text/html=brave-origin-nightly.desktop
x-scheme-handler/http=brave-origin-nightly.desktop
x-scheme-handler/https=brave-origin-nightly.desktop
x-scheme-handler/about=chromium.desktop
x-scheme-handler/unknown=chromium.desktop
x-scheme-handler/chrome=brave-origin-nightly.desktop
application/x-extension-htm=brave-origin-nightly.desktop
application/x-extension-html=brave-origin-nightly.desktop
application/x-extension-shtml=brave-origin-nightly.desktop
application/xhtml+xml=brave-origin-nightly.desktop
application/x-extension-xhtml=brave-origin-nightly.desktop
application/x-extension-xht=brave-origin-nightly.desktop
x-scheme-handler/figma=figma-linux.desktop
x-scheme-handler/claude=com.anthropic.Claude.desktop
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
x-scheme-handler/com.todoist=todoist.desktop
x-scheme-handler/todoist=todoist.desktop
x-scheme-handler/openhuman=OpenHuman-handler.desktop
application/vnd.microsoft.portable-executable=wine.desktop
x-scheme-handler/slack=slack.desktop
x-scheme-handler/mailto=userapp-Evolution-PCEYQ3.desktop
x-scheme-handler/anytype=anytype.desktop
x-scheme-handler/piebald=piebald-handler.desktop
x-scheme-handler/discord-647066573147996161=discord-647066573147996161.desktop
x-scheme-handler/tolaria=tolaria-handler.desktop
x-scheme-handler/antigravity=antigravity.desktop
application/pdf=com.brave.Origin.nightly.desktop
x-scheme-handler/opencode=ai.opencode.desktop.desktop
x-scheme-handler/follow=folo.desktop
x-scheme-handler/folo=folo.desktop
[Added Associations]
x-scheme-handler/http=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
x-scheme-handler/https=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
x-scheme-handler/chrome=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
text/html=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/x-extension-htm=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/x-extension-html=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/x-extension-shtml=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/xhtml+xml=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/x-extension-xhtml=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/x-extension-xht=brave-origin-nightly.desktop;userapp-Floorp-9MTFP3.desktop;
application/vnd.microsoft.portable-executable=wine.desktop;
x-scheme-handler/mailto=userapp-Evolution-PCEYQ3.desktop;
application/pdf=com.brave.Origin.nightly.desktop;
x-scheme-handler/opencode=ai.opencode.desktop.desktop;
@@ -0,0 +1,76 @@
[general]
workspace_prefix = "ndw-" # prefix for dynamic workspace names
default_programs = ["kitty"] # programs launched when creating any new workspace
auto_delete_empty = true # daemon: auto-delete empty unfocused workspaces
hover_preview = false # preview workspaces by hovering over cards
layout = "qwerty" # keyboard layout for the overlay (see table below)
[keybinds]
close = ["Escape", "Ctrl+c", "Ctrl+w", "Ctrl+q"] # keys to dismiss the overlay
[workspace.y] # digit workspaces work too
name = "YouTube"
programs = ["vicinae vicinae://launch/applications/WebApp-YouTube7881"]
[workspace.m] # digit workspaces work too
name = "Messages"
programs = [
"vicinae vicinae://launch/applications/beeper",
"vicinae vicinae://launch/applications/org.gnome.Evolution",
]
[workspace.l] # digit workspaces work too
name = "Linear"
programs = ["vicinae vicinae://launch/applications/WebApp-Linear3312"]
[workspace.d] # digit workspaces work too
name = "Chrome"
programs = ["vicinae vicinae://launch/applications/google-chrome"]
[workspace.x] # digit workspaces work too
name = "Twitter"
programs = ["vicinae vicinae://launch/applications/WebApp-X1000"]
[workspace.h]
name = "Herdr"
programs = ["kitty --class kitty-herdr -e herdr"]
# digit workspaces work too
[workspace.f]
name = "Frontend"
programs = [
"kitty-nvim walletbases/website",
"kitty-claude walletbases/website",
]
[workspace.c]
name = "Contracts"
programs = [
"kitty-nvim walletbases/contracts",
"kitty --class kitty-claude -d /home/prad/Developer/github.com/walletbases/contracts -e claude",
]
[workspace.b]
name = "Backend"
programs = [
"kitty --class kitty-nvim -d /home/prad/Developer/github.com/walletbases/backend -e nvim",
"kitty --class kitty-claude -d /home/prad/Developer/github.com/walletbases/backend -e claude",
]
[workspace.s]
name = "SDK"
programs = [
"kitty --class kitty-nvim -d /home/prad/Developer/github.com/walletbases/core -e nvim",
"kitty --class kitty-claude -d /home/prad/Developer/github.com/walletbases/core -e claude",
]
[workspace.w]
name = "Web"
programs = [
"kitty --class kitty-nvim -d /home/prad/Developer/github.com/walletbases/website -e nvim",
"kitty --class kitty-claude -d /home/prad/Developer/github.com/walletbases/website -e claude",
]
[hooks]
on_create = ['''~/.config/niri/scripts/ndw-route-workspace.sh''']
+195
View File
@@ -0,0 +1,195 @@
// ============================================================================
// NIRI CONFIGURATION - Base for iNiR (ii)
// ============================================================================
// Minimal base config - customize to your needs
// Wiki: https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
// ============================================================================
hotkey-overlay {
skip-at-startup
}
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
include "config.d/10-input-and-cursor.kdl"
include "config.d/20-layout-and-overview.kdl"
include "config.d/30-window-rules.kdl"
include "config.d/40-environment.kdl"
include "config.d/50-startup.kdl"
include "config.d/60-animations.kdl"
include "config.d/70-binds.kdl"
include "config.d/80-layer-rules.kdl"
include "config.d/90-outputs.kdl"
// ============================================================================
// Layer rules added by iNiR (required for backdrop in overview)
// ============================================================================
input {
keyboard {
xkb {
layout "us"
}
repeat-delay 400
repeat-rate 50
}
touchpad {
natural-scroll
tap
tap-button-map "left-right-middle"
}
mod-key "Super"
mod-key-nested "Alt"
}
// ============================================================================
// LAYOUT
// ============================================================================
layout {
background-color "transparent"
default-column-width { proportion 0.5; }
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
focus-ring {
width 1.5
active-color "#7fc8ff"
inactive-color "transparent"
}
border {
off
width 1.5
active-color "#ffc87f"
inactive-color "transparent"
urgent-color "#9b0000"
}
shadow {
off
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
tab-indicator {
place-within-column
hide-when-single-tab
position "left" // Can be "left", "right", "top", or "bottom"
}
}
gestures {
hot-corners {
off
}
}
cursor {
xcursor-theme "capitaine-cursors-light"
xcursor-size 24
hide-when-typing
}
overview {
zoom 0.4
workspace-shadow { off; }
}
// ============================================================================
// WINDOW RULES
// ============================================================================
window-rule {
geometry-corner-radius 8
clip-to-geometry true
}
// ============================================================================
// ANIMATIONS
// ============================================================================
// Tuned to complement quickshell's expressive Material motion curves
// QS uses ~500ms for main movements, ~400ms enter, ~200ms exit
animations {
workspace-switch {
spring damping-ratio=0.78 stiffness=1350 epsilon=0.0001
}
window-open {
spring damping-ratio=0.82 stiffness=1125 epsilon=0.0001
}
window-close {
spring damping-ratio=0.88 stiffness=2025 epsilon=0.0001
}
horizontal-view-movement {
spring damping-ratio=0.80 stiffness=1238 epsilon=0.0001
}
window-movement {
spring damping-ratio=0.85 stiffness=1463 epsilon=0.0001
}
window-resize {
spring damping-ratio=0.88 stiffness=1575 epsilon=0.0001
}
config-notification-open-close {
spring damping-ratio=0.90 stiffness=1800 epsilon=0.0001
}
screenshot-ui-open {
spring damping-ratio=0.85 stiffness=1688 epsilon=0.0001
}
}
// ============================================================================
// ENVIRONMENT
// ============================================================================
environment {
XDG_CURRENT_DESKTOP "niri"
XDG_MENU_PREFIX "plasma-" // Required for Dolphin/KDE app file associations
QT_QPA_PLATFORM "wayland"
ELECTRON_OZONE_PLATFORM_HINT "auto"
QT_LOGGING_RULES "quickshell.dbus.properties=false"
// Qt theming: kde platform reads colors from kdeglobals (requires plasma-integration pkg)
// The installer falls back to qt6ct only if plasma-integration is not installed
QT_QPA_PLATFORMTHEME "kde"
QT_STYLE_OVERRIDE "Darkly"
// Quickshell Python virtual environment
INIR_VENV "$HOME/.local/state/quickshell/.venv"
ILLOGICAL_IMPULSE_VIRTUAL_ENV "$HOME/.local/state/quickshell/.venv"
}
// ============================================================================
// STARTUP — commands live in config.d/50-startup.kdl
// ============================================================================
// Noctalia v5: allows notification actions and window activation from Noctalia.
debug {
honor-xdg-activation-with-invalid-serial
}
// ============================================================================
// KEYBINDINGS
// ============================================================================
include "./noctalia.kdl"
prefer-no-csd
@@ -0,0 +1,44 @@
// Outputs (example - disabled by default)
// Run `niri msg outputs` inside a niri session to see connector names and modes.
// Then edit and uncomment this block to pin a specific monitor layout.
// ============================================================================
// INPUT
// ============================================================================
input {
keyboard {
xkb {
layout "us"
}
repeat-delay 400
repeat-rate 50
}
touchpad {
natural-scroll
tap
tap-button-map "left-right-middle"
accel-speed 1.0
}
tablet {
map-to-output "eDP-1"
}
touch {
map-to-output "eDP-1"
}
mod-key "Super"
mod-key-nested "Alt"
}
gestures {
}
cursor {
xcursor-theme "capitaine-cursors-light"
xcursor-size 24
hide-when-typing
}
@@ -0,0 +1,57 @@
layout {
center-focused-column "never"
background-color "transparent"
default-column-width { proportion 0.5; }
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
focus-ring {
width 1.5
active-color "#7fc8ff"
inactive-color "transparent"
}
border {
off
width 1.5
active-color "#ffc87f"
inactive-color "transparent"
urgent-color "#9b0000"
}
shadow {
off
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
tab-indicator {
place-within-column
hide-when-single-tab
position "left" // Can be "left", "right", "top", or "bottom"
}
}
gestures {
hot-corners {
}
}
cursor {
xcursor-theme "capitaine-cursors-light"
xcursor-size 24
hide-when-typing
}
overview {
zoom 0.4
workspace-shadow { off; }
}
@@ -0,0 +1,135 @@
// ============================================================================
// WINDOW RULES
// ============================================================================
window-rule {
geometry-corner-radius 10
clip-to-geometry true
}
window-rule {
background-effect {
blur true
xray false
}
}
// Noctalia v5: floating settings window.
window-rule {
match app-id="dev.noctalia.Noctalia"
open-floating true
default-column-width { fixed 1080; }
default-window-height { fixed 920; }
}
blur {
passes 4
offset 5.0
noise 0.02
saturation 2.0
}
window-rule {
match app-id="Folo"
match app-id="Spotify"
match app-id="zen"
match app-id="brave-origin-nightly"
match app-id="gemini-desktop"
match app-id="claude-desktop"
opacity 0.9
open-floating false
draw-border-with-background false
background-effect {
blur true
xray false
}
open-focused true
}
window-rule {
match app-id="kitty"
match app-id="zed"
match app-id="obsidian"
match app-id="Beeper"
match app-id="chromium"
match app-id="com.mitchellh.ghostty"
opacity 0.9
open-floating false
draw-border-with-background false
open-focused true
background-effect {
blur true
xray false
}
}
window-rule {
match app-id="org.gnome.Nautilus"
match app-id="com.gabm.satty"
open-floating true
open-focused true
draw-border-with-background false
default-column-width { proportion 0.5; }
}
window-rule {
match app-id="kitty-dropdown"
open-floating true
opacity 1.0
default-floating-position x=32 y=32 relative-to="top"
}
window-rule {
match title="ostt"
open-floating true
open-focused true
default-column-width { proportion 0.1; }
default-window-height { proportion 0.15; }
opacity 0.8
draw-border-with-background false
default-floating-position x=64 y=64 relative-to="bottom-right"
}
window-rule {
match title="Picture-in-Picture" app-id="zen"
match title="Picture in picture"
open-floating true
open-focused false
opacity 1.0
// default-floating-position x=28 y=28 relative-to="top-right"
default-floating-position x=28 y=28 relative-to="bottom-left"
// open-on-output "eDP-1"
open-on-output "HDMI-A-1"
// open-on-output "Apple Computer Inc StudioDisplay 0x984262A7"
}
window-rule {
// open-on-output "HDMI-A-1"
}
window-rule {
match app-id="sticky-notest-canvas"
match title="Sticky Notes"
match app-id="vacuumtube"
match app-id="Fladder"
match app-id="gemini-desktop"
match app-id="com-fastmail-fastmail"
match app-id="Beeper"
match app-id="todoist"
match app-id="com.anthropic.Claude"
match app-id="Hermes"
open-on-output "eDP-1"
}
window-rule {
match app-id="kitty"
match app-id="zed"
match app-id="obsidian"
open-on-output "Apple Computer Inc StudioDisplay 0x984262A7"
}
@@ -0,0 +1,22 @@
// ============================================================================
// ENVIRONMENT
// ============================================================================
environment {
XDG_CURRENT_DESKTOP "niri"
XDG_MENU_PREFIX "plasma-" // Required for Dolphin/KDE app file associations
QT_QPA_PLATFORM "wayland"
ELECTRON_OZONE_PLATFORM_HINT "auto"
QT_LOGGING_RULES "quickshell.dbus.properties=false"
// Qt theming: kde platform reads colors from kdeglobals (requires plasma-integration pkg)
// The installer falls back to qt6ct only if plasma-integration is not installed
QT_QPA_PLATFORMTHEME "kde"
QT_STYLE_OVERRIDE "Darkly"
// Quickshell Python virtual environment
INIR_VENV "$HOME/.local/state/quickshell/.venv"
ILLOGICAL_IMPULSE_VIRTUAL_ENV "$HOME/.local/state/quickshell/.venv"
}
@@ -0,0 +1,11 @@
// ============================================================================
// STARTUP
// ============================================================================
// Import XDG_MENU_PREFIX to systemd for Dolphin/KDE app file associations
spawn-at-startup "bash" "-c" "systemctl --user import-environment XDG_MENU_PREFIX && kbuildsycoca6"
spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
spawn-at-startup "noctalia"
spawn-at-startup "niri-dynamic-workspaces" "daemon"
spawn-at-startup "vicinae" "server"
spawn-at-startup "bash" "-c" "wl-paste --watch cliphist store &"
@@ -0,0 +1,32 @@
// ============================================================================
// ANIMATIONS
// ============================================================================
// Tuned to complement quickshell's expressive Material motion curves
// QS uses ~500ms for main movements, ~400ms enter, ~200ms exit
animations {
workspace-switch {
spring damping-ratio=1.0 stiffness=4000 epsilon=0.0001
}
window-open {
spring damping-ratio=1.0 stiffness=5000 epsilon=0.0001
}
window-close {
spring damping-ratio=1.0 stiffness=6000 epsilon=0.0001
}
horizontal-view-movement {
spring damping-ratio=1.0 stiffness=4500 epsilon=0.0001
}
window-movement {
spring damping-ratio=1.0 stiffness=5000 epsilon=0.0001
}
window-resize {
spring damping-ratio=1.0 stiffness=5500 epsilon=0.0001
}
config-notification-open-close {
spring damping-ratio=1.0 stiffness=5000 epsilon=0.0001
}
screenshot-ui-open {
spring damping-ratio=1.0 stiffness=5000 epsilon=0.0001
}
}
+154
View File
@@ -0,0 +1,154 @@
// ============================================================================
// KEYBINDINGS
// ============================================================================
binds {
// System
Mod+Tab repeat=false { toggle-overview; }
Mod+Shift+E { quit; }
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
// ii Overview (daemon)
Mod+Space repeat=false { spawn "vicinae" "toggle"; }
Mod+Shift+Space repeat=false { spawn "vicinae" "vicinae://launch/core/search-emojis"; }
Mod+Shift+Return repeat=false { spawn "vicinae" "vicinae://launch/wm/switch-windows"; }
Mod+BackSpace { focus-window-previous; }
// ii Clipboard
Mod+P { spawn "vicinae" "vicinae://launch/clipboard/history"; }
Mod+Ctrl+R { spawn "noctalia" "msg" "plugin" "prdlk/ostt:recorder" "focused" "toggle"; }
// ii Region tools
Mod+Shift+G { spawn "kitty" "--title=goliath" "ssh" "-t" "goliath" "tmux" "new-session" "-A" "-s" "main"; }
Mod+S { spawn "dot-screenshot" "region"; }
Mod+Shift+S { spawn "dot-screenshot" "window"; }
Mod+Ctrl+S { spawn "dot-screenshot" "monitor-focused"; }
Mod+Ctrl+Shift+S { spawn "dot-screenshot" "monitor-all"; }
// v4: Mod+Period { spawn-sh "qs -c noctalia-shell ipc call controlCenter toggle"; }
// v4: Mod+Comma { spawn-sh "qs -c noctalia-shell ipc call settings toggle"; }
Mod+Period { spawn-sh "noctalia msg panel-toggle control-center"; }
Mod+Comma { spawn-sh "noctalia msg settings-toggle"; }
Super+Ctrl+A { spawn "vicinae" "vicinae://launch/applications/com.anthropic.Claude"; }
Super+Ctrl+G { spawn "vicinae" "vicinae://launch/applications/gemini-desktop"; }
Super+Alt+Ctrl+H { spawn "hermes" "desktop"; }
Super+Alt+Ctrl+J { spawn "niri-launch" "kitty"; }
Super+Alt+Ctrl+K { spawn "niri-launch" "brave-origin-nightly"; }
Super+Alt+Ctrl+O { spawn "niri-launch" "obsidian"; }
Super+Alt+Ctrl+E { spawn "vicinae" "vicinae://launch/applications/com.fastmail.Fastmail"; }
Super+Alt+Ctrl+B { spawn "vicinae" "vicinae://launch/applications/beeper"; }
Super+Alt+Ctrl+L { spawn "vicinae" "vicinae://launch/applications/WebApp-Linear3312"; }
Super+Alt+Ctrl+M { spawn "vicinae" "vicinae://launch/applications/beeper"; }
Super+Alt+Ctrl+T { spawn "vicinae" "vicinae://launch/applications/todoist"; }
Super+Alt+Ctrl+N { spawn "noctalia" "msg" "panel-open" "noctalia/notes:panel"; }
Super+Alt+Ctrl+F { spawn "vicinae" "vicinae://launch/applications/org.gnome.Nautilus"; }
Super+Alt+Ctrl+Space { spawn "vicinae" "vicinae://launch/applications/io.github.faridjaff.StickyNotesCanvas"; }
Super+Alt+Ctrl+Return { spawn "vicinae" "vicinae://launch/wm/switch-windows"; }
Super+Shift+Alt+Ctrl+W { spawn "niri-dynamic-workspaces" "switch" "w"; }
Super+Shift+Alt+Ctrl+H { spawn "niri-dynamic-workspaces" "switch" "h"; }
Super+Alt+Ctrl+Y { spawn "vicinae" "vicinae://launch/applications/rocks.shy.VacuumTube"; }
Super+Alt+Ctrl+X { spawn "niri-dynamic-workspaces" "switch" "x"; }
// ─── Monitors ─── (Vertical)
Mod+Left { focus-monitor-left; }
Mod+Up { focus-monitor-up; }
Mod+Right { focus-monitor-right; }
Mod+Shift+Down { move-column-to-monitor-right; }
Mod+Shift+Up { move-column-to-monitor-left; }
// ─── Layout ───
Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Shift+F { maximize-column; }
Mod+F { expand-column-to-available-width; }
Super+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
Mod+Ctrl+F { fullscreen-window; }
Mod+Ctrl+O { toggle-window-floating; }
// ─── Window Sizing: hjkl ───
Alt+Shift+H { set-column-width "-10%"; }
Alt+Shift+J { set-window-height "-10%"; }
Alt+Shift+K { set-window-height "+10%"; }
Alt+Shift+L { set-column-width "+10%"; }
// Window management
Mod+Q repeat=false { spawn "/home/prad/.local/bin/niri-smart-close"; }
// Focus
Mod+H { focus-column-left-or-last; }
Mod+L { focus-column-right-or-first; }
Mod+J { focus-window-or-workspace-down; }
Mod+K { focus-window-or-workspace-up; }
// Workspaces
Mod+Shift+J { move-column-to-workspace-down; }
Mod+Shift+K { move-column-to-workspace-up; }
// Monitors
Super+O { focus-monitor-next; }
Super+Ctrl+J { focus-monitor-next; }
Super+Ctrl+K { focus-monitor-previous; }
Super+Shift+O { move-column-to-monitor-next; }
Mod+Ctrl+Shift+J { move-column-to-monitor-next; }
Mod+Ctrl+Shift+K { move-column-to-monitor-previous; }
// Columns
Super+Ctrl+H { focus-column-first; }
Super+Ctrl+L { focus-column-last; }
Super+Ctrl+Shift+H { move-column-to-first; }
Super+Ctrl+Shift+L { move-column-to-last; }
// Tabs
Mod+W { toggle-column-tabbed-display; }
Mod+Shift+H { spawn "/home/prad/.local/bin/niri-smart-move" "left"; }
Mod+Shift+L { spawn "/home/prad/.local/bin/niri-smart-move" "right"; }
// Screenshots (native)
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
// ========================================================================
// HARDWARE KEYS - Audio, Brightness, Media
// ========================================================================
// These use noctalia IPC so the OSD (On Screen Display) shows feedback
Mod+F24 { spawn "voxtype" "record" "toggle" "--profile" "hermes"; }
// ─── Media Controls ───
// v4: XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume increase"; }
// v4: XF86AudioLowerVolume allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume decrease"; }
// v4: XF86AudioMute allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume muteOutput"; }
// v4: XF86AudioMicMute allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume muteInput"; }
// v4: XF86AudioNext allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media next"; }
// v4: XF86AudioPrev allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media previous"; }
// v4: XF86AudioPlay allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
// v4: XF86AudioPause allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "noctalia msg volume-up"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "noctalia msg volume-down"; }
XF86AudioMute allow-when-locked=true { spawn-sh "noctalia msg volume-mute"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "noctalia msg mic-mute"; }
XF86AudioNext allow-when-locked=true { spawn-sh "noctalia msg media next"; }
XF86AudioPrev allow-when-locked=true { spawn-sh "noctalia msg media previous"; }
XF86AudioPlay allow-when-locked=true { spawn-sh "noctalia msg media toggle"; }
XF86AudioPause allow-when-locked=true { spawn-sh "noctalia msg media toggle"; }
// ─── Brightness Controls ───
// v4: XF86MonBrightnessUp allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call brightness increase"; }
// v4: XF86MonBrightnessDown allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call brightness decrease"; }
XF86MonBrightnessUp allow-when-locked=true { spawn-sh "noctalia msg brightness-up"; }
XF86MonBrightnessDown allow-when-locked=true { spawn-sh "noctalia msg brightness-down"; }
// Power / Session
// v4: Mod+Shift+Q { spawn-sh "qs -c noctalia-shell ipc call sessionMenu toggle"; }
Mod+Shift+Q hotkey-overlay-title="Session Menu: noctalia session" { spawn-sh "noctalia msg panel-toggle session"; }
}
@@ -0,0 +1,34 @@
/*
Noctalia v5: disable xray on all our surfaces so blur looks more realistic.
Noctalia publishes blur regions automatically when ext-background-effects is available.
*/
layer-rule {
match namespace="^noctalia-(bar-[^\"]+|notification|dock|panel|attached-panel|osd)$"
background-effect {
xray false
//blur false
}
}
// Option 2 (Stationary Wallpaper): place the regular wallpaper on the backdrop.
layer-rule {
match namespace="^noctalia-wallpaper"
place-within-backdrop true
}
// Set transparent workspace background color so you see the backdrop at all times.
layout {
background-color "transparent"
}
// Optionally, disable the workspace shadows in the overview.
overview {
workspace-shadow {
off
}
}
@@ -0,0 +1,47 @@
// ============================================================================
// OUTPUTS
// ============================================================================
//
// // Apple Display
// output "Apple Computer Inc StudioDisplay 0x984262A7" {
// position x=0 y=0
// scale 1.5
// layout {
// center-focused-column "never"
// always-center-single-column true
// gaps 8
// default-column-width {
// proportion 0.75
// }
// preset-column-widths {
// proportion 0.25
// proportion 0.5
// proportion 0.75
// }
// }
// }
//
//
//
// output "DP-5" {
// off
// }
//
//
output "DP-4" {
off
}
// ============================================================================
// OUTPUTS
// ============================================================================
// The Studio Display exposes a phantom second connector (DP-4/5/6, varies per
// boot) whose only mode is 640x480. Connector name and EDID both shift, so it
// can't be matched in config — this script finds it by mode signature instead.
// spawn-at-startup "/home/prad/.config/niri/scripts/kill-phantom-display.fish"
include "91-internal-display.kdl"
// include "92-ultrawide.kdl"
include "93-apple-display.kdl"
include "94-portable-hdmi.kdl"
// include "95-portable-usbc.kdl"
@@ -0,0 +1,32 @@
// Internal Display
output "Tianma Microelectronics Ltd. TL134ADXP03 Unknown" {
position x=1920 y=0
scale 1.5
variable-refresh-rate on-demand=true
layout {
always-center-single-column true
center-focused-column "never"
gaps 8
default-column-width { proportion 0.9; }
preset-column-widths {
proportion 0.5
proportion 1.0
}
}
}
workspace "1" {
open-on-output "Tianma Microelectronics Ltd. TL134ADXP03 Unknown"
}
window-rule {
match app-id="org.gnome.Calendar"
match app-id="discord"
match app-id="slack"
draw-border-with-background false
open-focused true
open-maximized true
open-on-workspace "1"
}
@@ -0,0 +1,24 @@
// ============================================================================
// OUTPUTS
// ============================================================================
output "Samsung Electric Company S34CG50 HNTY501103" {
position x=0 y=0
mode "3440x1440@100.00"
scale 1
variable-refresh-rate on-demand=true
layout {
center-focused-column "never"
always-center-single-column true
gaps 16
default-column-width {
proportion 0.3333
}
preset-column-widths {
proportion 0.3333
proportion 0.5
proportion 0.6667
}
}
}
@@ -0,0 +1,24 @@
// ============================================================================
// OUTPUTS
// ============================================================================
// Apple Display
output "Apple Computer Inc StudioDisplay 0x984262A7" {
position x=0 y=0
scale 1.5
layout {
center-focused-column "never"
always-center-single-column true
gaps 8
default-column-width {
proportion 0.5
}
preset-column-widths {
proportion 0.25
proportion 0.3333
proportion 0.5
proportion 0.6667
}
}
}
@@ -0,0 +1,22 @@
// ============================================================================
// OUTPUTS
// ============================================================================
// Portable Display #1
output "PNP(AOP) 16PM1QB 14490001D3X00" {
transform "90"
layout {
always-center-single-column true
center-focused-column "never"
gaps 2
default-column-width {
proportion 1.0
}
preset-column-widths {
proportion 0.5
proportion 1.0
}
}
}
@@ -0,0 +1,20 @@
// ============================================================================
// OUTPUTS
// ============================================================================
output "ASUSTek COMPUTER INC ASUS MB16AC M8LMTF195749" {
position x=0 y=0
layout {
always-center-single-column true
center-focused-column "never"
gaps 2
default-column-width {
proportion 1.0
}
preset-column-widths {
proportion 0.5
proportion 1.0
}
}
}
+35
View File
@@ -0,0 +1,35 @@
layout {
focus-ring {
active-color "#a398b3"
inactive-color "#1e1c21"
urgent-color "#fd4663"
}
border {
active-color "#a398b3"
inactive-color "#1e1c21"
urgent-color "#fd4663"
}
shadow {
color "#1e1c2170"
}
tab-indicator {
active-color "#a398b3"
inactive-color "#4a4158"
urgent-color "#fd4663"
}
insert-hint {
color "#a398b380"
}
}
recent-windows {
highlight {
active-color "#a398b3"
urgent-color "#fd4663"
}
}
@@ -0,0 +1,20 @@
#!/usr/bin/env fish
# Turn off the phantom Studio Display leg (DP-4/5/6, varies per boot).
# Its signature is a single 640x480 mode — connector name and EDID are unreliable.
# ponytail: one-shot with retry at startup; doesn't handle mid-session hotplug —
# switch to a `niri msg event-stream` watcher if that starts biting.
for i in (seq 10)
set -l phantoms (niri msg -j outputs 2>/dev/null | jq -r '
to_entries[]
| select((.value.modes | length) == 1
and .value.modes[0].width == 640
and .value.modes[0].height == 480)
| .key')
if test -n "$phantoms"
for out in $phantoms
niri msg output $out off
end
exit 0
end
sleep 1
end
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# ndw-route-workspace.sh
# Routes a niri-dynamic-workspaces workspace to the correct monitor by
# resolving the Apple Studio Display's connector at runtime.
#
# Inputs: NDW_WORKSPACE_KEY env var (set by ndw on_create), or $1.
# Exits silently on unknown keys so it's safe to call for all workspaces.
set -euo pipefail
KEY="${NDW_WORKSPACE_KEY:-${1:-}}"
[ -z "$KEY" ] && exit 0
INTERNAL="HDMI-A-1"
# Resolve the external Apple Studio Display connector.
# Match by make+model; fall back to eDP-1 if not currently connected.
resolve_external() {
niri msg --json outputs | jq -r '
to_entries
| map(select(
.value.make == "Apple Computer Inc"
and .value.model == "StudioDisplay"
))
| .[0].key // empty
'
}
case "$KEY" in
y|g|m|x|z|p|l|a)
target="$INTERNAL"
;;
b|f|s|w|c|d|o)
target="$(resolve_external)"
[ -z "$target" ] && target="$INTERNAL" # external not connected
;;
*)
exit 0
;;
esac
exec niri msg action move-workspace-to-monitor "$target"
+367
View File
@@ -0,0 +1,367 @@
#!/usr/bin/env bash
set -euo pipefail
#=============================================================================
# Niri Sidebar Manager
#=============================================================================
# This script manages floating windows in the Niri window manager,
# organizing them into a toggleable sidebar.
#=============================================================================
### --- DIMENSION SETTINGS --- ###
readonly WIN_W=550 # Floating window width
readonly BASE_SLOTS=4 # Default number of slots in the sidebar
readonly GAP_BETWEEN=15 # Gap between windows
readonly BOTTOM_MARGIN=50 # Bottom screen margin
readonly TOP_MARGIN=30 # Top screen margin
readonly SIDE_MARGIN=20 # Side screen margin
readonly VISIBLE_SLIVER=70 # Pixels visible when sidebar is hidden
### --- STATE FILES --- ###
# Get current workspace ID
WORKSPACE_ID=$(niri msg --json workspaces | jq -r '.[] | select(.is_focused).id')
# File paths for state tracking
readonly FLAG_FILE="/tmp/niri.toggle.${WORKSPACE_ID}.floating"
readonly STATE_FILE="/tmp/niri.toggle.${WORKSPACE_ID}.state"
readonly ORDER_STATE_FILE="/tmp/niri.toggle.${WORKSPACE_ID}.order"
readonly HIDE_STATE_FILE="/tmp/niri.toggle.${WORKSPACE_ID}.hide_state"
### --- SCREEN INFO --- ###
readonly SCREEN_W=$(niri msg --json outputs | jq -r 'to_entries[0].value.logical.width')
readonly SCREEN_H=$(niri msg --json outputs | jq -r 'to_entries[0].value.logical.height')
#=============================================================================
# FUNCTION: get_focused_window
# Description: Returns JSON info of the currently focused window
#=============================================================================
get_focused_window() {
niri msg --json windows | jq -r '.[] | select(.is_focused)'
}
#=============================================================================
# FUNCTION: ensure_files_exist
# Description: Creates necessary state files if they don't exist
#=============================================================================
ensure_files_exist() {
touch "$FLAG_FILE" "$STATE_FILE" "$HIDE_STATE_FILE" "$ORDER_STATE_FILE"
if [ ! -s "$HIDE_STATE_FILE" ]; then
echo "visible" >"$HIDE_STATE_FILE"
fi
if [ ! -s "$ORDER_STATE_FILE" ]; then
echo "bottom-up" >"$ORDER_STATE_FILE"
fi
}
#=============================================================================
# FUNCTION: get_floating_windows
# Description: Gets a list of floating window IDs in the current workspace
#=============================================================================
get_floating_windows() {
niri msg --json windows |
jq -r ".[] | select(.is_floating==true and .workspace_id==$WORKSPACE_ID) | .id"
}
#=============================================================================
# FUNCTION: cleanup_state_file
# Description: Removes closed windows from the state file
# Parameters:
# $1 - List of currently active floating windows
#=============================================================================
cleanup_state_file() {
local actual_floating="$1"
if [ ! -s "$STATE_FILE" ]; then
return
fi
local tmp_state
tmp_state=$(mktemp)
while IFS= read -r line; do
local id_in_file
id_in_file=$(echo "$line" | cut -d: -f1)
if echo "$actual_floating" | grep -q "^${id_in_file}$"; then
echo "$line" >>"$tmp_state"
fi
done <"$STATE_FILE"
mv "$tmp_state" "$STATE_FILE"
}
#=============================================================================
# FUNCTION: calculate_window_dimensions
# Description: Calculates dynamic window height and X position
# Parameters:
# $1 - Window count
# Returns: Sets WIN_H and X global variables
#=============================================================================
calculate_window_dimensions() {
local count="$1"
local slots="$BASE_SLOTS"
# Increase slots if window count exceeds default
if [ "$count" -gt "$BASE_SLOTS" ]; then
slots="$count"
fi
# Calculate available vertical space
local total_gaps_space=$(((slots - 1) * GAP_BETWEEN))
local available_h=$((SCREEN_H - TOP_MARGIN - BOTTOM_MARGIN - total_gaps_space))
# Export calculated dimensions
WIN_H=$((available_h / slots))
X=$((SCREEN_W - WIN_W - SIDE_MARGIN))
}
#=============================================================================
# FUNCTION: position_window
# Description: Moves and resizes a specific window
# Parameters:
# $1 - Window ID
# $2 - X position
# $3 - Y position
#=============================================================================
position_window() {
local id="$1"
local x="$2"
local y="$3"
niri msg action set-window-width "$WIN_W" --id "$id" 2>/dev/null || true
niri msg action set-window-height "$WIN_H" --id "$id" 2>/dev/null || true
niri msg action move-floating-window --id "$id" --x "$x" --y "$y" 2>/dev/null || true
}
#=============================================================================
# FUNCTION: reorder_sidebar
# Description: Syncs state and updates all window positions on screen
#=============================================================================
reorder_sidebar() {
local actual_floating
actual_floating=$(get_floating_windows)
cleanup_state_file "$actual_floating"
local sorted_ids
sorted_ids=$(grep -Ff <(echo "$actual_floating") "$STATE_FILE" 2>/dev/null | cut -d: -f1 || true)
local count
count=$(echo "$sorted_ids" | grep -c . || echo 0)
if [ "$count" -eq 0 ]; then
>"$FLAG_FILE"
echo "visible" >"$HIDE_STATE_FILE"
return
fi
calculate_window_dimensions "$count"
local order
order=$(cat "$ORDER_STATE_FILE" 2>/dev/null || echo "bottom-up")
>"$FLAG_FILE"
local index=0
while IFS= read -r id; do
[ -z "$id" ] && continue
local pos_y
if [ "$order" = "top-down" ]; then
pos_y=$((TOP_MARGIN + index * (WIN_H + GAP_BETWEEN)))
else
pos_y=$((SCREEN_H - BOTTOM_MARGIN - WIN_H - index * (WIN_H + GAP_BETWEEN)))
fi
position_window "$id" "$X" "$pos_y"
echo "${id}:${X}:${pos_y}" >>"$FLAG_FILE"
index=$((index + 1))
done <<<"$sorted_ids"
echo "visible" >"$HIDE_STATE_FILE"
}
#=============================================================================
# FUNCTION: toggle_float
# Description: Toggles focused window between sidebar and tiling mode
#=============================================================================
toggle_float() {
local focused_json
focused_json=$(get_focused_window)
local focused_id
focused_id=$(echo "$focused_json" | jq -r '.id')
if [ -z "$focused_id" ] || [ "$focused_id" = "null" ]; then
echo "Error: No focused window"
return 1
fi
if grep -q "^$focused_id:" "$STATE_FILE" 2>/dev/null; then
# Restore to tiling mode
local old_dim
old_dim=$(grep "^$focused_id:" "$STATE_FILE")
local old_w old_h
old_w=$(echo "$old_dim" | cut -d: -f2)
old_h=$(echo "$old_dim" | cut -d: -f3)
# Remove from state
sed -i "/^$focused_id:/d" "$STATE_FILE"
# Action: Move to tiling
niri msg action move-window-to-tiling
# Restore original dimensions
[ "$old_w" != "null" ] && niri msg action set-column-width "$old_w" 2>/dev/null || true
[ "$old_h" != "null" ] && niri msg action set-window-height "$old_h" 2>/dev/null || true
reorder_sidebar
echo "✓ Window removed from sidebar"
else
# Add to sidebar
local orig_w orig_h
orig_w=$(echo "$focused_json" | jq -r '.layout.window_size[0] // 800')
orig_h=$(echo "$focused_json" | jq -r '.layout.window_size[1] // 600')
# Save original size
echo "$focused_id:$orig_w:$orig_h" >>"$STATE_FILE"
# Action: Move to floating
niri msg action move-window-to-floating
# Refresh sidebar
reorder_sidebar
# Keep focus on the window
niri msg action focus-window --id "$focused_id" 2>/dev/null || true
echo "✓ Window added to sidebar"
fi
}
#=============================================================================
# FUNCTION: toggle_hide
# Description: Hides/Shows the entire sidebar by pushing windows off-screen
#=============================================================================
toggle_hide() {
# Save current hide state
local previous_state
previous_state=$(cat "$HIDE_STATE_FILE" 2>/dev/null || echo "visible")
# Reorder sidebar to fix any desync without breaking hide/show state
local actual_floating
actual_floating=$(get_floating_windows)
if [ -n "$actual_floating" ]; then
reorder_sidebar
# reorder_sidebar forces visible, restore previous state
echo "$previous_state" >"$HIDE_STATE_FILE"
fi
if [ ! -s "$FLAG_FILE" ]; then
echo "No floating windows detected"
return 0
fi
local current_state
current_state=$(cat "$HIDE_STATE_FILE")
if [ "$current_state" = "visible" ]; then
# Hide: push windows off-screen
while IFS=: read -r id x y; do
[ -z "$id" ] && continue
local new_x=$((SCREEN_W - VISIBLE_SLIVER))
niri msg action move-floating-window --id "$id" --x "$new_x" --y "$y" 2>/dev/null || true
done <"$FLAG_FILE"
echo "hidden" >"$HIDE_STATE_FILE"
echo "✓ Sidebar hidden"
else
# Show: restore original positions
while IFS=: read -r id x y; do
[ -z "$id" ] && continue
niri msg action move-floating-window --id "$id" --x "$x" --y "$y" 2>/dev/null || true
done <"$FLAG_FILE"
echo "visible" >"$HIDE_STATE_FILE"
echo "✓ Sidebar visible"
fi
}
#=============================================================================
# FUNCTION: flip_sidebar_order
# Description: Flip the order of the sidebar
#=============================================================================
flip_sidebar_order() {
local current
current=$(cat "$ORDER_STATE_FILE" 2>/dev/null || echo "bottom-up")
if [ "$current" = "bottom-up" ]; then
echo "top-down" >"$ORDER_STATE_FILE"
else
echo "bottom-up" >"$ORDER_STATE_FILE"
fi
reorder_sidebar
echo "✓ Sidebar order flipped"
}
#=============================================================================
# FUNCTION: show_usage
# Description: Displays help information
#=============================================================================
show_usage() {
cat <<EOF
Usage: $0 {toggle|hide|help}
Commands:
toggle Toggle focused window between sidebar and tiling mode
hide Hide/show the entire sidebar
flip Flip sidebar order (top-down / bottom-up)
reorder Syncs state and updates all window positions on screen
help Show this help message
Examples:
$0 toggle # Add/remove current window
$0 hide # Show/hide all floating windows
EOF
}
#=============================================================================
# MAIN ENTRY POINT
#=============================================================================
main() {
ensure_files_exist
case "${1:-}" in
toggle)
toggle_float
;;
hide)
toggle_hide
;;
flip)
flip_sidebar_order
;;
reorder)
reorder_sidebar
;;
help | --help | -h)
show_usage
;;
*)
echo "❌ Invalid command"
echo ""
show_usage
exit 1
;;
esac
}
main "$@"
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# Cascade focus: window → occupied workspace → monitor (cycles at edges)
# Skips the trailing empty workspace — jumps to the monitor instead.
# usage: niri-focus.sh up|down
set -euo pipefail
dir="${1:?usage: niri-focus.sh up|down}"
opp=$([ "$dir" = down ] && echo up || echo down)
out() { niri msg --json focused-output | jq -r '.name // "none"'; }
win() { niri msg --json focused-window | jq -r '.id // "none"'; }
# 1) window within the column
w0=$(win); niri msg action "focus-window-$dir" >/dev/null 2>&1 || true
[ "$(win)" != "$w0" ] && exit 0
# 2) occupied workspace in that direction (skip the empty trailing one)
wss=$(niri msg --json workspaces)
wins=$(niri msg --json windows)
cwsid=$(jq -r 'map(select(.is_focused)) | .[0].id' <<<"$wss")
real_neighbor=$(jq -n --argjson wss "$wss" --argjson wins "$wins" \
--argjson cwsid "$cwsid" --arg dir "$dir" '
($wss[] | select(.id==$cwsid)) as $c
| [ $wss[]
| select(.output==$c.output)
| select(if $dir=="down" then .idx>$c.idx else .idx<$c.idx end)
| .id as $wid
| select([$wins[] | select(.workspace_id==$wid)] | length > 0) ]
| length > 0')
if [ "$real_neighbor" = "true" ]; then
niri msg action "focus-workspace-$dir" >/dev/null 2>&1 || true
exit 0
fi
# 3) adjacent monitor… or wrap to the far-end monitor
o0=$(out); niri msg action "focus-monitor-$dir" >/dev/null 2>&1 || true
[ "$(out)" != "$o0" ] && exit 0
while :; do
prev=$(out)
niri msg action "focus-monitor-$opp" >/dev/null 2>&1 || true
[ "$(out)" = "$prev" ] && break
done
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
# Cascade move: column → workspace (incl. empty trailing) → monitor (cycles)
# usage: niri-move.sh up|down
set -euo pipefail
dir="${1:?usage: niri-move.sh up|down}"
opp=$([ "$dir" = down ] && echo up || echo down)
cur=$(niri msg --json focused-window)
[ "$cur" = "null" ] && exit 0
out() { niri msg --json focused-output | jq -r '.name // "none"'; }
sig() { niri msg --json focused-window | jq -rc '[.workspace_id, (.layout.pos_in_scrolling_layout // null)]'; }
# 1) reorder within the column
s0=$(sig); niri msg action "move-window-$dir" >/dev/null 2>&1 || true
[ "$(sig)" != "$s0" ] && exit 0
# 2) workspace in that direction (including the empty trailing one)
s0=$(sig); niri msg action "move-window-to-workspace-$dir" >/dev/null 2>&1 || true
[ "$(sig)" != "$s0" ] && exit 0
# 3) adjacent monitor… or wrap to the far-end monitor
o0=$(out); niri msg action "move-window-to-monitor-$dir" >/dev/null 2>&1 || true
[ "$(out)" != "$o0" ] && exit 0
while :; do
prev=$(out)
niri msg action "move-window-to-monitor-$opp" >/dev/null 2>&1 || true
[ "$(out)" = "$prev" ] && break
done
+25
View File
@@ -0,0 +1,25 @@
{
"mPrimary": "#a398b3",
"mOnPrimary": "#100f13",
"mSecondary": "#9c8da5",
"mOnSecondary": "#1e1c22",
"mTertiary": "#a18fa3",
"mOnTertiary": "#1e1c22",
"mError": "#fd4663",
"mOnError": "#1e1c22",
"mSurface": "#1e1c21",
"mOnSurface": "#f2f2f3",
"mSurfaceVariant": "#322f37",
"mOnSurfaceVariant": "#b2b0b5",
"mOutline": "#6a6670",
"mShadow": "#1e1c21",
"mHover": "#a18fa3",
"mOnHover": "#1e1c22"
}
@@ -0,0 +1,94 @@
{
"dark": {
"mPrimary": "#aaaaaa",
"mOnPrimary": "#111111",
"mSecondary": "#a7a7a7",
"mOnSecondary": "#111111",
"mTertiary": "#cccccc",
"mOnTertiary": "#111111",
"mError": "#dddddd",
"mOnError": "#111111",
"mSurface": "#111111",
"mOnSurface": "#828282",
"mSurfaceVariant": "#191919",
"mOnSurfaceVariant": "#5d5d5d",
"mOutline": "#3c3c3c",
"mShadow": "#000000",
"mHover": "#cccccc",
"mOnHover": "#111111",
"terminal": {
"foreground": "#828282",
"background": "#111111",
"selectionFg": "#111111",
"selectionBg": "#828282",
"cursorText": "#111111",
"cursor": "#aaaaaa",
"normal": {
"black": "#191919",
"red": "#dddddd",
"green": "#cccccc",
"yellow": "#aaaaaa",
"blue": "#a7a7a7",
"magenta": "#dddddd",
"cyan": "#cccccc",
"white": "#828282"
},
"bright": {
"black": "#3c3c3c",
"red": "#dddddd",
"green": "#cccccc",
"yellow": "#aaaaaa",
"blue": "#a7a7a7",
"magenta": "#dddddd",
"cyan": "#cccccc",
"white": "#ffffff"
}
}
},
"light": {
"mPrimary": "#555555",
"mOnPrimary": "#eeeeee",
"mSecondary": "#505058",
"mOnSecondary": "#eeeeee",
"mTertiary": "#333333",
"mOnTertiary": "#eeeeee",
"mError": "#222222",
"mOnError": "#efefef",
"mSurface": "#d4d4d4",
"mOnSurface": "#696969",
"mSurfaceVariant": "#e8e8e8",
"mOnSurfaceVariant": "#9e9e9e",
"mOutline": "#c3c3c3",
"mShadow": "#fafafa",
"mHover": "#333333",
"mOnHover": "#eeeeee",
"terminal": {
"foreground": "#696969",
"background": "#d4d4d4",
"selectionFg": "#d4d4d4",
"selectionBg": "#696969",
"cursorText": "#d4d4d4",
"cursor": "#555555",
"normal": {
"black": "#e8e8e8",
"red": "#222222",
"green": "#333333",
"yellow": "#555555",
"blue": "#505058",
"magenta": "#222222",
"cyan": "#333333",
"white": "#696969"
},
"bright": {
"black": "#c3c3c3",
"red": "#222222",
"green": "#333333",
"yellow": "#555555",
"blue": "#505058",
"magenta": "#222222",
"cyan": "#333333",
"white": "#000000"
}
}
}
}
@@ -0,0 +1,94 @@
{
"dark": {
"mPrimary": "#ef5ce9",
"mOnPrimary": "#0c070b",
"mSecondary": "#ed4592",
"mOnSecondary": "#251824",
"mTertiary": "#ed4c45",
"mOnTertiary": "#251824",
"mError": "#fd4663",
"mOnError": "#251824",
"mSurface": "#291428",
"mOnSurface": "#f3f2f3",
"mSurfaceVariant": "#452143",
"mOnSurfaceVariant": "#b6afb6",
"mOutline": "#756073",
"mShadow": "#291428",
"mHover": "#ed4c45",
"mOnHover": "#251824",
"terminal": {
"normal": {
"black": "#371b36",
"red": "#fd4663",
"green": "#ef5ce9",
"yellow": "#ed4592",
"blue": "#ed4c45",
"magenta": "#f48bef",
"cyan": "#f48bbb",
"white": "#f3f2f3"
},
"bright": {
"black": "#756073",
"red": "#fd4663",
"green": "#ef5ce9",
"yellow": "#ed4592",
"blue": "#ed4c45",
"magenta": "#f48bef",
"cyan": "#f48bbb",
"white": "#f3f2f3"
},
"foreground": "#f3f2f3",
"background": "#291428",
"cursor": "#f3f2f3",
"cursorText": "#291428",
"selectionFg": "#b6afb6",
"selectionBg": "#371b36"
}
},
"light": {
"mPrimary": "#d114c9",
"mOnPrimary": "#faf9fa",
"mSecondary": "#ba125f",
"mOnSecondary": "#faf9fa",
"mTertiary": "#a31610",
"mOnTertiary": "#faf9fa",
"mError": "#fd4663",
"mOnError": "#faf9fa",
"mSurface": "#fbd0f9",
"mOnSurface": "#1b181b",
"mSurfaceVariant": "#f8bff5",
"mOnSurfaceVariant": "#50484f",
"mOutline": "#a569a3",
"mShadow": "#d9bfd8",
"mHover": "#a31610",
"mOnHover": "#faf9fa",
"terminal": {
"normal": {
"black": "#f49af0",
"red": "#fd4663",
"green": "#d114c9",
"yellow": "#ba125f",
"blue": "#a31610",
"magenta": "#8c0d86",
"cyan": "#8c0d47",
"white": "#1b181b"
},
"bright": {
"black": "#b061ad",
"red": "#fd4663",
"green": "#d114c9",
"yellow": "#ba125f",
"blue": "#a31610",
"magenta": "#8c0d86",
"cyan": "#8c0d47",
"white": "#1b181b"
},
"foreground": "#1b181b",
"background": "#fbd0f9",
"cursor": "#1b181b",
"cursorText": "#fbd0f9",
"selectionFg": "#50484f",
"selectionBg": "#f49af0"
}
}
}
+32
View File
@@ -0,0 +1,32 @@
{
"sources": [
{
"enabled": true,
"name": "Noctalia Plugins",
"url": "https://github.com/noctalia-dev/noctalia-plugins"
}
],
"states": {
"github-feed": {
"enabled": true,
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
},
"habitica": {
"enabled": true,
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
},
"kde-connect": {
"enabled": true,
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
},
"khal-agenda-widget": {
"enabled": true,
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
},
"weather-indicator": {
"enabled": true,
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
}
},
"version": 2
}
+904
View File
@@ -0,0 +1,904 @@
{
"appLauncher": {
"autoPasteClipboard": false,
"clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store",
"clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store",
"clipboardWrapText": true,
"customLaunchPrefix": "",
"customLaunchPrefixEnabled": false,
"density": "default",
"enableClipPreview": true,
"enableClipboardChips": true,
"enableClipboardHistory": false,
"enableClipboardSmartIcons": true,
"enableSessionSearch": true,
"enableSettingsSearch": true,
"enableWindowsSearch": true,
"iconMode": "tabler",
"ignoreMouseInput": false,
"overviewLayer": true,
"pinnedApps": [
],
"position": "center",
"screenshotAnnotationTool": "",
"showCategories": true,
"showIconBackground": false,
"sortByMostUsed": true,
"terminalCommand": "alacritty -e",
"viewMode": "list"
},
"audio": {
"mprisBlacklist": [
],
"preferredPlayer": "",
"spectrumFrameRate": 30,
"spectrumMirrored": true,
"visualizerType": "linear",
"volumeFeedback": false,
"volumeFeedbackSoundFile": "",
"volumeOverdrive": false,
"volumeStep": 5
},
"bar": {
"autoHideDelay": 500,
"autoShowDelay": 150,
"backgroundOpacity": 0.71,
"barType": "simple",
"capsuleColorKey": "none",
"capsuleOpacity": 1,
"contentPadding": 2,
"density": "default",
"displayMode": "always_visible",
"enableExclusionZoneInset": true,
"fontScale": 1,
"frameRadius": 8,
"frameThickness": 8,
"hideOnOverview": true,
"marginHorizontal": 4,
"marginVertical": 4,
"middleClickAction": "settings",
"middleClickCommand": "",
"middleClickFollowMouse": false,
"monitors": [
"DP-5",
"DP-4",
"DP-1",
"eDP-1"
],
"mouseWheelAction": "volume",
"mouseWheelWrap": true,
"outerCorners": false,
"position": "top",
"reverseScroll": false,
"rightClickAction": "controlCenter",
"rightClickCommand": "",
"rightClickFollowMouse": true,
"screenOverrides": [
{
"enabled": false,
"name": "DP-4"
},
{
"density": "mini",
"displayMode": "auto_hide",
"enabled": true,
"name": "eDP-1",
"position": "top"
},
{
"density": "mini",
"enabled": true,
"name": "HDMI-A-1",
"position": "right",
"widgets": {
"center": [
{
"compactMode": false,
"diskPath": "/",
"iconColor": "none",
"id": "SystemMonitor",
"showCpuCores": true,
"showCpuFreq": false,
"showCpuTemp": false,
"showCpuUsage": true,
"showDiskAvailable": false,
"showDiskUsage": true,
"showDiskUsageAsPercent": true,
"showGpuTemp": false,
"showLoadAverage": false,
"showMemoryAsPercent": true,
"showMemoryUsage": true,
"showNetworkStats": false,
"showSwapUsage": false,
"textColor": "none",
"useMonospaceFont": true,
"usePadding": false
}
],
"left": [
{
"clockColor": "none",
"customFont": "",
"formatHorizontal": "HH:mm ddd, MMM dd",
"formatVertical": "HH mm - dd MM",
"id": "Clock",
"tooltipFormat": "HH:mm ddd, MMM dd",
"useCustomFont": false
}
],
"right": [
{
"characterCount": 2,
"colorizeIcons": true,
"emptyColor": "secondary",
"enableScrollWheel": true,
"focusedColor": "primary",
"followFocusedScreen": false,
"fontWeight": "semibold",
"groupedBorderOpacity": 1,
"hideUnoccupied": true,
"iconScale": 0.8,
"id": "Workspace",
"labelMode": "none",
"occupiedColor": "secondary",
"pillSize": 0.6,
"showApplications": true,
"showApplicationsHover": false,
"showBadge": true,
"showLabelsOnlyWhenOccupied": true,
"unfocusedIconsOpacity": 1
},
{
"id": "plugin:habitica"
},
{
"id": "plugin:github-feed"
},
{
"id": "plugin:kde-connect"
}
]
}
}
],
"showCapsule": false,
"showOnWorkspaceSwitch": true,
"showOutline": false,
"useSeparateOpacity": false,
"widgetSpacing": 6,
"widgets": {
"center": [
{
"defaultSettings": {
"customColor": "none",
"showConditionIcon": true,
"showTempUnit": true,
"showTempValue": true,
"tooltipOption": "everything"
},
"id": "plugin:weather-indicator"
},
{
"characterCount": 2,
"colorizeIcons": true,
"emptyColor": "secondary",
"enableScrollWheel": true,
"focusedColor": "primary",
"followFocusedScreen": false,
"fontWeight": "bold",
"groupedBorderOpacity": 1,
"hideUnoccupied": true,
"iconScale": 0.8,
"id": "Workspace",
"labelMode": "none",
"occupiedColor": "secondary",
"pillSize": 0.6,
"showApplications": true,
"showApplicationsHover": true,
"showBadge": true,
"showLabelsOnlyWhenOccupied": true,
"unfocusedIconsOpacity": 1
},
{
"compactMode": true,
"hideMode": "hidden",
"hideWhenIdle": false,
"id": "MediaMini",
"maxWidth": 145,
"panelShowAlbumArt": true,
"scrollingMode": "hover",
"showAlbumArt": true,
"showArtistFirst": false,
"showProgressRing": true,
"showVisualizer": true,
"textColor": "none",
"useFixedWidth": true,
"visualizerType": "linear"
}
],
"left": [
{
"colorizeIcons": true,
"hideMode": "hidden",
"id": "ActiveWindow",
"maxWidth": 500,
"scrollingMode": "hover",
"showIcon": true,
"showText": true,
"textColor": "none",
"useFixedWidth": true
}
],
"right": [
{
"defaultSettings": {
},
"id": "plugin:kde-connect"
},
{
"defaultSettings": {
"colorizationBadge": "Primary",
"colorizationBadgeText": "Primary",
"colorizationEnabled": false,
"colorizationIcon": "Primary",
"defaultTab": 0,
"enableSystemNotifications": false,
"githubUrl": "",
"maxEvents": 50,
"notifyForks": true,
"notifyGitHubNotifications": true,
"notifyMyRepoForks": true,
"notifyMyRepoStars": true,
"notifyPRs": true,
"notifyRepoCreations": true,
"notifyStars": true,
"openInBrowser": true,
"refreshInterval": 1800,
"showForks": true,
"showMyRepoForks": true,
"showMyRepoStars": true,
"showNotificationBadge": true,
"showPRs": true,
"showRepoCreations": true,
"showStars": true,
"token": "",
"username": ""
},
"id": "plugin:github-feed"
},
{
"hideWhenZero": false,
"hideWhenZeroUnread": false,
"iconColor": "none",
"id": "NotificationHistory",
"showUnreadBadge": true,
"unreadBadgeColor": "primary"
},
{
"displayMode": "onhover",
"iconColor": "none",
"id": "Volume",
"middleClickCommand": "pwvucontrol || pavucontrol",
"textColor": "none"
},
{
"colorizeDistroLogo": false,
"colorizeSystemIcon": "none",
"colorizeSystemText": "none",
"customIconPath": "",
"enableColorization": false,
"icon": "settings-2",
"id": "ControlCenter",
"useDistroLogo": false
},
{
"clockColor": "none",
"customFont": "",
"formatHorizontal": "ddd MMM d h:mmAP",
"formatVertical": "HH mm - dd MM",
"id": "Clock",
"tooltipFormat": "MM/dd/yyyy HH:mm:ss",
"useCustomFont": false
}
]
}
},
"brightness": {
"backlightDeviceMappings": [
],
"brightnessStep": 5,
"enableDdcSupport": true,
"enforceMinimum": true
},
"calendar": {
"cards": [
{
"enabled": true,
"id": "calendar-header-card"
},
{
"enabled": false,
"id": "calendar-month-card"
},
{
"enabled": true,
"id": "weather-card"
}
]
},
"colorSchemes": {
"darkMode": true,
"generationMethod": "muted",
"manualSunrise": "06:30",
"manualSunset": "18:30",
"monitorForColors": "",
"predefinedScheme": "Monochrome",
"schedulingMode": "off",
"syncGsettings": true,
"useWallpaperColors": true
},
"controlCenter": {
"cards": [
{
"enabled": true,
"id": "profile-card"
},
{
"enabled": true,
"id": "shortcuts-card"
},
{
"enabled": true,
"id": "audio-card"
},
{
"enabled": false,
"id": "brightness-card"
},
{
"enabled": true,
"id": "weather-card"
},
{
"enabled": true,
"id": "media-sysmon-card"
}
],
"diskPath": "/",
"position": "close_to_bar_button",
"shortcuts": {
"left": [
{
"id": "Network"
},
{
"id": "Bluetooth"
},
{
"id": "WallpaperSelector"
},
{
"id": "NoctaliaPerformance"
}
],
"right": [
{
"id": "Notifications"
},
{
"id": "PowerProfile"
},
{
"id": "KeepAwake"
},
{
"id": "NightLight"
}
]
}
},
"desktopWidgets": {
"enabled": false,
"gridSnap": true,
"gridSnapScale": true,
"monitorWidgets": [
{
"name": "eDP-1",
"widgets": [
{
"clockColor": "none",
"clockStyle": "digital",
"customFont": "",
"format": "HH:mm\\nd MMMM yyyy",
"id": "Clock",
"roundedCorners": true,
"showBackground": true,
"useCustomFont": false,
"x": 1440,
"y": 960
},
{
"id": "Weather",
"roundedCorners": true,
"showBackground": true,
"x": 1630,
"y": 1084
},
{
"diskPath": "/",
"id": "SystemStat",
"layout": "bottom",
"roundedCorners": true,
"scale": 1.085295715771401,
"showBackground": true,
"statType": "CPU",
"x": 1620,
"y": 920
}
]
}
],
"overviewEnabled": true
},
"dock": {
"animationSpeed": 1,
"backgroundOpacity": 0.92,
"colorizeIcons": false,
"deadOpacity": 0.6,
"displayMode": "auto_hide",
"dockType": "floating",
"enabled": false,
"floatingRatio": 1,
"groupApps": false,
"groupClickAction": "cycle",
"groupContextMenuMode": "extended",
"groupIndicatorStyle": "dots",
"inactiveIndicators": false,
"indicatorColor": "primary",
"indicatorOpacity": 0.6,
"indicatorThickness": 3,
"launcherIcon": "",
"launcherIconColor": "none",
"launcherPosition": "end",
"launcherUseDistroLogo": false,
"monitors": [
],
"onlySameOutput": true,
"pinnedApps": [
],
"pinnedStatic": false,
"position": "bottom",
"showDockIndicator": false,
"showLauncherIcon": false,
"sitOnFrame": false,
"size": 1
},
"general": {
"allowPanelsOnScreenWithoutBar": true,
"allowPasswordWithFprintd": false,
"animationDisabled": false,
"animationSpeed": 1,
"autoStartAuth": false,
"avatarImage": "/home/prad/Pictures/Prad/prad2.jpg",
"boxRadiusRatio": 1,
"clockFormat": "hh\\nmm",
"clockStyle": "custom",
"compactLockScreen": false,
"dimmerOpacity": 0.2,
"enableBlurBehind": true,
"enableLockScreenCountdown": true,
"enableLockScreenMediaControls": false,
"enableShadows": false,
"forceBlackScreenCorners": false,
"iRadiusRatio": 1,
"keybinds": {
"keyDown": [
"Down"
],
"keyEnter": [
"Return",
"Enter"
],
"keyEscape": [
"Esc"
],
"keyLeft": [
"Left"
],
"keyRemove": [
"Del"
],
"keyRight": [
"Right"
],
"keyUp": [
"Up"
]
},
"language": "",
"lockOnSuspend": true,
"lockScreenAnimations": false,
"lockScreenBlur": 0,
"lockScreenCountdownDuration": 10000,
"lockScreenMonitors": [
],
"lockScreenTint": 0,
"passwordChars": false,
"radiusRatio": 1,
"reverseScroll": true,
"scaleRatio": 0.9500000000000001,
"screenRadiusRatio": 1,
"shadowDirection": "bottom_right",
"shadowOffsetX": 2,
"shadowOffsetY": 3,
"showChangelogOnStartup": true,
"showHibernateOnLockScreen": false,
"showScreenCorners": false,
"showSessionButtonsOnLockScreen": true,
"smoothScrollEnabled": true,
"telemetryEnabled": false
},
"hooks": {
"colorGeneration": "",
"darkModeChange": "",
"enabled": false,
"performanceModeDisabled": "",
"performanceModeEnabled": "",
"screenLock": "",
"screenUnlock": "",
"session": "",
"startup": "",
"wallpaperChange": ""
},
"idle": {
"customCommands": "[]",
"enabled": false,
"fadeDuration": 5,
"lockCommand": "",
"lockTimeout": 660,
"resumeLockCommand": "",
"resumeScreenOffCommand": "",
"resumeSuspendCommand": "",
"screenOffCommand": "",
"screenOffTimeout": 600,
"suspendCommand": "",
"suspendTimeout": 1800
},
"location": {
"analogClockInCalendar": false,
"autoLocate": true,
"firstDayOfWeek": -1,
"hideWeatherCityName": false,
"hideWeatherTimezone": false,
"name": "Ashburn",
"showCalendarEvents": true,
"showCalendarWeather": true,
"showWeekNumberInCalendar": true,
"use12hourFormat": true,
"useFahrenheit": true,
"weatherEnabled": true,
"weatherShowEffects": true,
"weatherTaliaMascotAlways": false
},
"network": {
"bluetoothAutoConnect": true,
"bluetoothDetailsViewMode": "grid",
"bluetoothHideUnnamedDevices": false,
"bluetoothRssiPollIntervalMs": 60000,
"bluetoothRssiPollingEnabled": false,
"disableDiscoverability": false,
"networkPanelView": "wifi",
"wifiDetailsViewMode": "grid"
},
"nightLight": {
"autoSchedule": true,
"dayTemp": "6500",
"enabled": true,
"forced": false,
"manualSunrise": "06:30",
"manualSunset": "18:30",
"nightTemp": "2813"
},
"noctaliaPerformance": {
"disableDesktopWidgets": true,
"disableWallpaper": true
},
"notifications": {
"backgroundOpacity": 0.75,
"clearDismissed": true,
"criticalUrgencyDuration": 15,
"density": "default",
"enableBatteryToast": true,
"enableKeyboardLayoutToast": true,
"enableMarkdown": false,
"enableMediaToast": false,
"enabled": true,
"location": "top_right",
"lowUrgencyDuration": 3,
"monitors": [
"HDMI-A-1",
"DP-2",
"eDP-1"
],
"normalUrgencyDuration": 8,
"overlayLayer": true,
"respectExpireTimeout": false,
"saveToHistory": {
"critical": true,
"low": true,
"normal": true
},
"sounds": {
"criticalSoundFile": "",
"enabled": false,
"excludedApps": "discord,firefox,chrome,chromium,edge",
"lowSoundFile": "",
"normalSoundFile": "",
"separateSounds": false,
"volume": 0.5
}
},
"osd": {
"autoHideMs": 2000,
"backgroundOpacity": 1,
"enabled": true,
"enabledTypes": [
0,
1,
2
],
"location": "top_right",
"monitors": [
],
"overlayLayer": true
},
"plugins": {
"autoUpdate": true,
"notifyUpdates": true
},
"sessionMenu": {
"countdownDuration": 10000,
"enableCountdown": true,
"largeButtonsLayout": "single-row",
"largeButtonsStyle": true,
"position": "center",
"powerOptions": [
{
"action": "lock",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "1"
},
{
"action": "suspend",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "2"
},
{
"action": "hibernate",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "3"
},
{
"action": "reboot",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "4"
},
{
"action": "logout",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "5"
},
{
"action": "shutdown",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "6"
},
{
"action": "rebootToUefi",
"command": "",
"countdownEnabled": true,
"enabled": true,
"keybind": "7"
},
{
"action": "userspaceReboot",
"command": "",
"countdownEnabled": true,
"enabled": false,
"keybind": ""
}
],
"showHeader": true,
"showKeybinds": true
},
"settingsVersion": 59,
"systemMonitor": {
"batteryCriticalThreshold": 5,
"batteryWarningThreshold": 20,
"cpuCriticalThreshold": 90,
"cpuWarningThreshold": 80,
"criticalColor": "#ffb4ab",
"diskAvailCriticalThreshold": 10,
"diskAvailWarningThreshold": 20,
"diskCriticalThreshold": 90,
"diskWarningThreshold": 80,
"enableDgpuMonitoring": false,
"externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor",
"gpuCriticalThreshold": 90,
"gpuWarningThreshold": 80,
"memCriticalThreshold": 90,
"memWarningThreshold": 80,
"swapCriticalThreshold": 90,
"swapWarningThreshold": 80,
"tempCriticalThreshold": 90,
"tempWarningThreshold": 80,
"useCustomColors": false,
"warningColor": "#f0b8c6"
},
"templates": {
"activeTemplates": [
{
"enabled": true,
"id": "niri"
},
{
"enabled": true,
"id": "kitty"
},
{
"enabled": true,
"id": "gtk"
},
{
"enabled": true,
"id": "btop"
},
{
"enabled": true,
"id": "yazi"
},
{
"enabled": true,
"id": "zed"
},
{
"enabled": true,
"id": "vicinae"
},
{
"enabled": true,
"id": "alacritty"
},
{
"enabled": true,
"id": "ghostty"
},
{
"enabled": true,
"id": "starship"
},
{
"enabled": true,
"id": "telegram"
},
{
"enabled": true,
"id": "qt"
},
{
"enabled": true,
"id": "kcolorscheme"
},
{
"enabled": true,
"id": "zenBrowser"
},
{
"enabled": true,
"id": "mango"
},
{
"enabled": true,
"id": "cava"
},
{
"enabled": true,
"id": "fuzzel"
},
{
"enabled": true,
"id": "helix"
}
],
"enableUserTheming": false
},
"ui": {
"boxBorderEnabled": false,
"fontDefault": "VictorMono NFP",
"fontDefaultScale": 0.9,
"fontFixed": "VictorMono NF",
"fontFixedScale": 0.95,
"panelBackgroundOpacity": 0.6,
"panelsAttachedToBar": true,
"scrollbarAlwaysVisible": false,
"settingsPanelMode": "attached",
"settingsPanelSideBarCardStyle": true,
"tooltipsEnabled": true,
"translucentWidgets": true
},
"wallpaper": {
"automationEnabled": false,
"directory": "/home/prad/Pictures/Wallpapers",
"enableMultiMonitorDirectories": false,
"enabled": true,
"favorites": [
{
"appearance": "dark",
"colorScheme": "Monochrome",
"darkMode": true,
"generationMethod": "muted",
"paletteColors": [
"#a398b3",
"#9c8da5",
"#a18fa3",
"#fd4663"
],
"path": "/home/prad/Pictures/Wallpapers/wallhaven-k81776.jpg",
"useWallpaperColors": true
}
],
"fillColor": "#000000",
"fillMode": "crop",
"hideWallpaperFilenames": false,
"linkLightAndDarkWallpapers": true,
"monitorDirectories": [
],
"overviewBlur": 0.4,
"overviewEnabled": true,
"overviewTint": 0.6,
"panelPosition": "follow_bar",
"randomIntervalSec": 300,
"setWallpaperOnAllMonitors": true,
"showHiddenFiles": false,
"skipStartupTransition": true,
"solidColor": "#1a1a2e",
"sortOrder": "name",
"transitionDuration": 1500,
"transitionEdgeSmoothness": 0.05,
"transitionType": [
"fade",
"disc",
"stripes",
"wipe",
"pixelate",
"honeycomb"
],
"useOriginalImages": false,
"useSolidColor": false,
"useWallhaven": false,
"viewMode": "browse",
"wallhavenApiKey": "",
"wallhavenCategories": "111",
"wallhavenOrder": "desc",
"wallhavenPurity": "100",
"wallhavenQuery": "new york",
"wallhavenRatios": "",
"wallhavenResolutionHeight": "",
"wallhavenResolutionMode": "atleast",
"wallhavenResolutionWidth": "",
"wallhavenSorting": "relevance",
"wallpaperChangeMode": "random"
}
}
@@ -0,0 +1,6 @@
[Unit]
Description=Second-brain lens %i
[Service]
Type=oneshot
ExecStart=%h/Documents/Obsidian/Brain/_System/Brain/run-lens.sh %i
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens build-next schedule
[Timer]
OnCalendar=*-*-* 01,07,13,19:37:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens coach schedule
[Timer]
OnCalendar=*-*-* 03,09,15,21:07:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens digest schedule
[Timer]
OnCalendar=*-*-* 08:03:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens what-worked schedule
[Timer]
OnCalendar=*-*-* 00,06,12,18:07:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens write-next schedule
[Timer]
OnCalendar=*-*-* 04,10,16,22:37:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,27 @@
[Unit]
Description=Hermes Agent Gateway - Messaging Platform Integration
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=0
[Service]
Type=simple
ExecStart=/home/prad/.hermes/hermes-agent/venv/bin/python -m hermes_cli.main gateway run
WorkingDirectory=/home/prad/.hermes
Environment="PATH=/home/prad/.hermes/hermes-agent/venv/bin:/home/prad/.hermes/hermes-agent/node_modules/.bin:/home/prad/.local/share/mise/installs/node/latest/bin:/home/prad/.local/bin:/home/prad/.cargo/bin:/home/prad/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="VIRTUAL_ENV=/home/prad/.hermes/hermes-agent/venv"
Environment="HERMES_HOME=/home/prad/.hermes"
Restart=always
RestartSec=5
RestartForceExitStatus=75
RestartPreventExitStatus=78
KillMode=mixed
KillSignal=SIGTERM
ExecReload=/bin/kill -USR1 $MAINPID
ExecStopPost=-/home/prad/.hermes/hermes-agent/venv/bin/python -m gateway.cgroup_cleanup
TimeoutStopSec=210
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=default.target
+14
View File
@@ -0,0 +1,14 @@
[Unit]
Description=nirinit - Niri session save/restore
PartOf=graphical-session.target
After=graphical-session.target
Requisite=graphical-session.target
[Service]
Type=simple
ExecStart=%h/.cargo/bin/nirinit --save-interval 300
Restart=on-failure
RestartSec=2
[Install]
WantedBy=graphical-session.target
+10
View File
@@ -0,0 +1,10 @@
[Unit]
Description=omp agent loop: %i
[Service]
Type=oneshot
ExecStart=%h/.omp/loops/bin/run-loop.sh %i
# Loops are green (read-only + own state file) but belt-and-braces:
# no interactive session, hard runtime ceiling above the script's own caps.
TimeoutStartSec=45min
Nice=10
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: answer-gap
[Timer]
OnCalendar=Thu 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: brand-radar
[Timer]
OnCalendar=Wed 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: competitor-watch
[Timer]
OnCalendar=Fri 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: intel-refresh
[Timer]
OnCalendar=Mon 06:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: regulatory-digest
[Timer]
OnCalendar=Tue 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: repeat-offender
[Timer]
OnCalendar=Sun 18:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: share-of-model
[Timer]
OnCalendar=Mon 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,15 @@
[Unit]
Description=Open WebUI connected to Hermes Agent
After=default.target
[Service]
Type=simple
ExecStart=/bin/bash %h/.local/bin/start-open-webui-hermes.sh
Restart=always
RestartSec=3
WorkingDirectory=%h
StandardOutput=append:%h/.hermes/logs/openwebui.log
StandardError=append:%h/.hermes/logs/openwebui.error.log
[Install]
WantedBy=default.target
@@ -0,0 +1,7 @@
[Unit]
Description=Rclone SFTP Service for gdrive-hyperauth
Requires=rclone-gdrive-hyperauth.socket
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve sftp gdrive-hyperauth: --vfs-cache-mode full --vfs-fast-fingerprint --user yazi --pass yazi
@@ -0,0 +1,8 @@
[Unit]
Description=Rclone SFTP Socket for gdrive-hyperauth
[Socket]
ListenStream=127.0.0.1:2223
[Install]
WantedBy=sockets.target
@@ -0,0 +1,7 @@
[Unit]
Description=Rclone SFTP Service for gdrive-personal
Requires=rclone-gdrive-personal.socket
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve sftp gdrive-personal: --vfs-cache-mode full --vfs-fast-fingerprint --user yazi --pass yazi
@@ -0,0 +1,8 @@
[Unit]
Description=Rclone SFTP Socket for gdrive-personal
[Socket]
ListenStream=127.0.0.1:2221
[Install]
WantedBy=sockets.target
@@ -0,0 +1,7 @@
[Unit]
Description=Rclone SFTP Service for gdrive-sonr
Requires=rclone-gdrive-sonr.socket
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve sftp gdrive-sonr: --vfs-cache-mode full --vfs-fast-fingerprint --user yazi --pass yazi
@@ -0,0 +1,8 @@
[Unit]
Description=Rclone SFTP Socket for gdrive-sonr
[Socket]
ListenStream=127.0.0.1:2222
[Install]
WantedBy=sockets.target
@@ -0,0 +1,12 @@
[Unit]
Description=Shelly Notifications tray service
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/shelly-notifications
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=graphical-session.target
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=Voxtype push-to-talk voice-to-text daemon
Documentation=https://voxtype.io
PartOf=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/voxtype daemon
Restart=on-failure
RestartSec=5
# Ensure we have access to the display
Environment=XDG_RUNTIME_DIR=%t
[Install]
WantedBy=graphical-session.target