refactor: hand active dotfiles to Decman
This commit is contained in:
@@ -1,3 +0,0 @@
|
|||||||
# Used by the Noctalia Pi Status Bridge adapter and the Hyprland launcher.
|
|
||||||
PI_STATUS_BRIDGE_CLIENT=/home/alex/.npm-global/bin/pi-status-bridge-client
|
|
||||||
PI_STATUS_UI_BINARY=/home/alex/.local/bin/pi-status-ui
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
starship init fish | source
|
|
||||||
set fish_greeting ""
|
|
||||||
|
|
||||||
# Prefer Neovim for both explicit and editor-variable invocations.
|
|
||||||
alias vim nvim
|
|
||||||
set -gx EDITOR nvim
|
|
||||||
set -gx VISUAL nvim
|
|
||||||
|
|
||||||
# pyenv setup
|
|
||||||
while set pyenv_index (contains -i -- "/home/alex/.pyenv/shims" $PATH)
|
|
||||||
set -eg PATH[$pyenv_index]
|
|
||||||
end
|
|
||||||
set -e pyenv_index
|
|
||||||
set -gx PATH '/home/alex/.pyenv/shims' $PATH
|
|
||||||
set -gx PYENV_SHELL fish
|
|
||||||
command pyenv rehash 2>/dev/null
|
|
||||||
function pyenv
|
|
||||||
set command $argv[1]
|
|
||||||
set -e argv[1]
|
|
||||||
|
|
||||||
switch "$command"
|
|
||||||
case rehash shell
|
|
||||||
source (pyenv "sh-$command" $argv|psub)
|
|
||||||
case "*"
|
|
||||||
command pyenv "$command" $argv
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# bun
|
|
||||||
set --export BUN_INSTALL "$HOME/.bun"
|
|
||||||
set --export PATH $BUN_INSTALL/bin $PATH
|
|
||||||
|
|
||||||
# opencode
|
|
||||||
fish_add_path /home/alex/.opencode/bin
|
|
||||||
|
|
||||||
# Yazi wrapper that keeps the shell in its selected directory.
|
|
||||||
function y
|
|
||||||
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
|
||||||
command yazi $argv --cwd-file="$tmp"
|
|
||||||
if read -z cwd <"$tmp"; and [ "$cwd" != "$PWD" ]; and test -d "$cwd"
|
|
||||||
builtin cd -- "$cwd"
|
|
||||||
end
|
|
||||||
command rm -f -- "$tmp"
|
|
||||||
end
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Non-locking Wayland screen blanker. It covers every monitor in black and
|
|
||||||
# dismisses itself on any key press or mouse click; it never changes DPMS.
|
|
||||||
listener {
|
|
||||||
timeout = 300
|
|
||||||
on-timeout = /home/alex/.local/bin/wayshell-blanker
|
|
||||||
}
|
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
-- Shared Hyprland profile. yadm deploys machine.lua for the active class.
|
|
||||||
--
|
|
||||||
-- Scope: preserve launch, media, directional focus/move, workspace, scratchpad,
|
|
||||||
-- floating, fullscreen, and window-placement muscle memory. i3's split-tree,
|
|
||||||
-- stacking/tabbed, and resize-mode behavior is intentionally deferred.
|
|
||||||
local machine = dofile(os.getenv("HOME") .. "/.config/hypr/machine.lua")
|
|
||||||
|
|
||||||
for _, monitor in ipairs(machine.monitors or {}) do
|
|
||||||
hl.monitor(monitor)
|
|
||||||
end
|
|
||||||
|
|
||||||
local main_mod = "SUPER"
|
|
||||||
local terminal = "kitty"
|
|
||||||
|
|
||||||
local input = {
|
|
||||||
kb_layout = "us",
|
|
||||||
kb_variant = "intl",
|
|
||||||
numlock_by_default = true,
|
|
||||||
}
|
|
||||||
for key, value in pairs(machine.input or {}) do
|
|
||||||
input[key] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
hl.config({
|
|
||||||
input = input,
|
|
||||||
general = {
|
|
||||||
gaps_in = 4,
|
|
||||||
-- Keep a thin black perimeter so the bottom border remains on-screen.
|
|
||||||
gaps_out = 2,
|
|
||||||
border_size = 2,
|
|
||||||
col = {
|
|
||||||
-- Muted Ember tones: visible focus without a high-brightness OLED edge.
|
|
||||||
active_border = "rgba(c9782ed9)",
|
|
||||||
inactive_border = "rgba(2a190fa6)",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
decoration = {
|
|
||||||
rounding = 0,
|
|
||||||
},
|
|
||||||
animations = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
binds = {
|
|
||||||
-- Selecting the current workspace again returns to the last workspace.
|
|
||||||
workspace_back_and_forth = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Three-finger horizontal swipes change workspaces; touchscreens remain excluded
|
|
||||||
-- by Hyprland's default workspace_swipe_touch = false behavior.
|
|
||||||
hl.gesture({
|
|
||||||
fingers = 3,
|
|
||||||
direction = "horizontal",
|
|
||||||
action = "workspace",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Dynamically hide the border when a workspace has exactly one tiled app.
|
|
||||||
hl.workspace_rule({
|
|
||||||
workspace = "w[t1]",
|
|
||||||
no_border = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Application and session bindings.
|
|
||||||
local noctalia_ipc = "noctalia msg "
|
|
||||||
local pi_status_ui_toggle = 'ui="${PI_STATUS_UI_BINARY:-$HOME/.local/bin/pi-status-ui}"; if test -x "$ui"; then setsid -f env TMPDIR=/tmp "$ui" --toggle >/tmp/pi-status-ui.log 2>&1; fi'
|
|
||||||
-- Tap and release Super on its own to open Noctalia's control-center home.
|
|
||||||
hl.bind(main_mod .. " + SUPER_L", hl.dsp.exec_cmd(noctalia_ipc .. "panel-toggle control-center"), { release = true })
|
|
||||||
hl.bind(main_mod .. " + RETURN", hl.dsp.exec_cmd(terminal))
|
|
||||||
hl.bind(main_mod .. " + CTRL + RETURN", hl.dsp.exec_cmd(terminal .. " -e zellij"))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + RETURN", hl.dsp.exec_cmd("rofi -show combi"))
|
|
||||||
hl.bind(main_mod .. " + SPACE", hl.dsp.exec_cmd(pi_status_ui_toggle))
|
|
||||||
hl.bind(main_mod .. " + N", hl.dsp.exec_cmd(noctalia_ipc .. "panel-toggle alex/knowledge-lookup:panel"))
|
|
||||||
hl.bind(main_mod .. " + S", hl.dsp.exec_cmd(noctalia_ipc .. "panel-toggle control-center"))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + F", hl.dsp.exec_cmd(noctalia_ipc .. "bar-toggle main"))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + R", hl.dsp.exec_cmd("hyprctl reload"))
|
|
||||||
hl.bind(main_mod .. " + CTRL + L", hl.dsp.exec_cmd("command -v hyprlock >/dev/null && hyprlock || loginctl lock-session"))
|
|
||||||
hl.bind(main_mod .. " + CTRL + SHIFT + ALT + S", hl.dsp.exec_cmd("systemctl suspend"))
|
|
||||||
hl.bind(main_mod .. " + CTRL + SHIFT + ALT + H", hl.dsp.exec_cmd("systemctl hibernate"))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + C", hl.dsp.window.close())
|
|
||||||
hl.bind(main_mod .. " + CTRL + SHIFT + F", hl.dsp.exec_cmd("/home/alex/.local/bin/screenshot-select"))
|
|
||||||
|
|
||||||
-- Audio, media, brightness, and calculator keys.
|
|
||||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true })
|
|
||||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true })
|
|
||||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true })
|
|
||||||
hl.bind(main_mod .. " + XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true })
|
|
||||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
|
||||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
|
||||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
|
||||||
hl.bind(main_mod .. " + XF86AudioRaiseVolume", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
|
||||||
hl.bind(main_mod .. " + XF86AudioLowerVolume", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
|
||||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd('light -A 5'), { locked = true })
|
|
||||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd('light -U 5'), { locked = true })
|
|
||||||
hl.bind(main_mod .. " + XF86MonBrightnessDown", hl.dsp.exec_cmd('light -S 0.0'), { locked = true })
|
|
||||||
hl.bind(main_mod .. " + XF86MonBrightnessUp", hl.dsp.exec_cmd('light -S 100'), { locked = true })
|
|
||||||
hl.bind("XF86Calculator", hl.dsp.exec_cmd("qalculate-qt"), { locked = true })
|
|
||||||
|
|
||||||
-- Retain i3's hjkl and arrow-key directional workflow.
|
|
||||||
for _, direction in ipairs({ "left", "down", "up", "right" }) do
|
|
||||||
local key = ({ left = "H", down = "J", up = "K", right = "L" })[direction]
|
|
||||||
hl.bind(main_mod .. " + " .. key, hl.dsp.focus({ direction = direction }))
|
|
||||||
hl.bind(main_mod .. " + " .. direction, hl.dsp.focus({ direction = direction }))
|
|
||||||
end
|
|
||||||
|
|
||||||
for key, direction in pairs({ H = "l", J = "d", K = "u", L = "r", LEFT = "l", DOWN = "d", UP = "u", RIGHT = "r" }) do
|
|
||||||
hl.bind(main_mod .. " + SHIFT + " .. key, hl.dsp.window.move({ direction = direction }))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Numbered workspaces match the i3 profile. Shift moves; Ctrl moves and follows.
|
|
||||||
for workspace = 1, 9 do
|
|
||||||
local key = tostring(workspace)
|
|
||||||
hl.bind(main_mod .. " + " .. key, hl.dsp.focus({ workspace = workspace }))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = workspace }))
|
|
||||||
hl.bind(main_mod .. " + CTRL + " .. key, hl.dsp.window.move({ workspace = workspace, follow = true }))
|
|
||||||
end
|
|
||||||
-- Match i3's back-and-forth workflow: Super+Tab switches to the last workspace;
|
|
||||||
-- selecting the current numbered workspace also returns to it.
|
|
||||||
hl.bind(main_mod .. " + TAB", hl.dsp.focus({ workspace = "previous" }))
|
|
||||||
hl.bind(main_mod .. " + CTRL + RIGHT", hl.dsp.focus({ workspace = "+1" }))
|
|
||||||
hl.bind(main_mod .. " + CTRL + LEFT", hl.dsp.focus({ workspace = "-1" }))
|
|
||||||
|
|
||||||
-- Hyprland special workspaces are the Wayland analogue of the i3 scratchpad.
|
|
||||||
hl.bind(main_mod .. " + MINUS", hl.dsp.workspace.toggle_special("scratchpad"))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + MINUS", hl.dsp.window.move({ workspace = "special:scratchpad" }))
|
|
||||||
|
|
||||||
-- Keep the i3 floating and fullscreen shortcuts. Layout-specific binds are deferred.
|
|
||||||
hl.bind(main_mod .. " + F", hl.dsp.window.fullscreen({ action = "toggle" }))
|
|
||||||
hl.bind(main_mod .. " + SHIFT + SPACE", hl.dsp.window.float({ action = "toggle" }))
|
|
||||||
hl.bind(main_mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
|
||||||
hl.bind(main_mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
|
||||||
|
|
||||||
-- i3 for_window/assign translations. Verify Wayland class/title values with `hyprctl clients`.
|
|
||||||
local function float_rule(name, match, border_size)
|
|
||||||
hl.window_rule({
|
|
||||||
name = name,
|
|
||||||
match = match,
|
|
||||||
float = true,
|
|
||||||
border_size = border_size,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
hl.window_rule({ name = "obsidian-workspace", match = { class = "^obsidian$" }, workspace = "8" })
|
|
||||||
hl.window_rule({ name = "thunderbird-workspace", match = { class = "^Thunderbird$" }, workspace = "9" })
|
|
||||||
float_rule("pi-status-ui", { class = "^(pi-status-ui|Pi-status-ui)$" }, 1)
|
|
||||||
float_rule("alsamixer", { title = "^alsamixer$" }, 1)
|
|
||||||
float_rule("qalculate", { title = "^Qalculate!$" })
|
|
||||||
float_rule("psensor", { class = "^Psensor$" })
|
|
||||||
float_rule("lxrandr", { title = "^lxrandr$" })
|
|
||||||
float_rule("blueman", { class = "^Blueman-manager$" })
|
|
||||||
float_rule("gparted", { class = "^GParted$" })
|
|
||||||
float_rule("pavucontrol", { class = "^pavucontrol$" })
|
|
||||||
float_rule("volume-control", { title = "^Volume Control$" })
|
|
||||||
float_rule("virtualbox", { class = ".*VirtualBox.*" })
|
|
||||||
hl.window_rule({ name = "virtualbox-manager-tiles", match = { class = ".*VirtualBox Manager.*" }, tile = true })
|
|
||||||
hl.window_rule({ name = "virtualbox-machine-tiles", match = { class = ".*VirtualBox Machine.*" }, tile = true })
|
|
||||||
-- Send music clients to the existing scratchpad without stealing startup focus.
|
|
||||||
hl.window_rule({ name = "spotify-music", match = { class = "^Spotify$" }, workspace = "special:scratchpad silent", no_initial_focus = true })
|
|
||||||
hl.window_rule({ name = "deezer-music", match = { class = "^Deezer$" }, workspace = "special:scratchpad silent", no_initial_focus = true })
|
|
||||||
|
|
||||||
hl.on("hyprland.start", function()
|
|
||||||
for _, command in ipairs(machine.startup or {}) do
|
|
||||||
hl.exec_cmd(command)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# Minimal Hyprlock screen using the current desktop as a blurred backdrop.
|
|
||||||
|
|
||||||
$font = Sans
|
|
||||||
|
|
||||||
general {
|
|
||||||
hide_cursor = true
|
|
||||||
}
|
|
||||||
|
|
||||||
background {
|
|
||||||
monitor =
|
|
||||||
path = screenshot
|
|
||||||
blur_passes = 3
|
|
||||||
}
|
|
||||||
|
|
||||||
input-field {
|
|
||||||
monitor =
|
|
||||||
size = 20%, 5%
|
|
||||||
outline_thickness = 2
|
|
||||||
inner_color = rgba(0, 0, 0, 0.25)
|
|
||||||
outer_color = rgba(eeeeeecc)
|
|
||||||
check_color = rgba(8ec07ccc)
|
|
||||||
fail_color = rgba(fb4934cc)
|
|
||||||
|
|
||||||
font_color = rgb(eeeeee)
|
|
||||||
fade_on_empty = false
|
|
||||||
rounding = 12
|
|
||||||
font_family = $font
|
|
||||||
placeholder_text = Input password...
|
|
||||||
fail_text = $PAMFAIL
|
|
||||||
|
|
||||||
position = 0, -20
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
monitor =
|
|
||||||
text = $TIME
|
|
||||||
font_size = 72
|
|
||||||
font_family = $font
|
|
||||||
|
|
||||||
position = 0, 120
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- Desktop-only display and startup profile.
|
|
||||||
return {
|
|
||||||
monitors = {
|
|
||||||
{
|
|
||||||
output = "HDMI-A-1",
|
|
||||||
mode = "3840x2160@120",
|
|
||||||
position = "0x0",
|
|
||||||
scale = 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
startup = {
|
|
||||||
"noctalia",
|
|
||||||
"hypridle",
|
|
||||||
-- Electron's tray icon registers only when the SNI watcher already exists.
|
|
||||||
"sh -c 'sleep 2; exec mullvad-vpn'",
|
|
||||||
"obsidian",
|
|
||||||
"thunderbird",
|
|
||||||
"nextcloud",
|
|
||||||
"spotify",
|
|
||||||
"brave",
|
|
||||||
"alacritty -e tmux",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
-- Laptop profile: leave monitor selection to Hyprland's hotplug support.
|
|
||||||
-- Noctalia replaces the i3-era Redshift, Polybar, Blueman Applet, and Picom stack.
|
|
||||||
return {
|
|
||||||
input = {
|
|
||||||
touchpad = {
|
|
||||||
-- Standard laptop behavior: one/two/three-finger taps map to
|
|
||||||
-- left/right/middle click, and a second tap held down starts a drag.
|
|
||||||
tap_to_click = true,
|
|
||||||
tap_button_map = "lrm",
|
|
||||||
tap_and_drag = true,
|
|
||||||
drag_lock = false,
|
|
||||||
clickfinger_behavior = true,
|
|
||||||
disable_while_typing = true,
|
|
||||||
|
|
||||||
-- Preserve natural two-finger scrolling at the default sensitivity.
|
|
||||||
natural_scroll = true,
|
|
||||||
scroll_factor = 1.0,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
monitors = {},
|
|
||||||
startup = {
|
|
||||||
"noctalia",
|
|
||||||
-- Start after Noctalia has claimed the StatusNotifier watcher.
|
|
||||||
"sh -c 'sleep 2; exec mullvad-vpn'",
|
|
||||||
"obsidian",
|
|
||||||
"thunderbird",
|
|
||||||
"nextcloud",
|
|
||||||
"spotify",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
# Shared Noctalia defaults. Keep GUI experiments in state; promote durable choices here.
|
|
||||||
[shell]
|
|
||||||
setup_wizard_enabled = false
|
|
||||||
offline_mode = true
|
|
||||||
external_ip_enabled = false
|
|
||||||
telemetry_enabled = false
|
|
||||||
|
|
||||||
# Noctalia owns idle handling so ScreenSaver/Wayland idle inhibitors (such as
|
|
||||||
# browser video playback) prevent these actions. Power displays down after five
|
|
||||||
# minutes, lock after ten minutes, then suspend-then-hibernate after thirty.
|
|
||||||
[idle]
|
|
||||||
behavior_order = ["lock", "screen-off", "suspend-then-hibernate"]
|
|
||||||
pre_action_fade_seconds = 2.0
|
|
||||||
|
|
||||||
[idle.behavior.lock]
|
|
||||||
action = "lock"
|
|
||||||
enabled = true
|
|
||||||
timeout = 600
|
|
||||||
|
|
||||||
[idle.behavior.screen-off]
|
|
||||||
action = "screen_off"
|
|
||||||
enabled = true
|
|
||||||
timeout = 300
|
|
||||||
|
|
||||||
[idle.behavior.suspend-then-hibernate]
|
|
||||||
action = "command"
|
|
||||||
command = "loginctl lock-session && systemctl suspend-then-hibernate"
|
|
||||||
enabled = true
|
|
||||||
timeout = 1800
|
|
||||||
|
|
||||||
[theme]
|
|
||||||
mode = "dark"
|
|
||||||
source = "custom"
|
|
||||||
custom_palette = "Ember OLED"
|
|
||||||
pure_black_dark = true
|
|
||||||
|
|
||||||
# Noctalia merges files alphabetically. Keep reusable modules here; machine-specific
|
|
||||||
# layout and hardware settings live in 90-machine.toml, while 99-extend.toml is local.
|
|
||||||
[plugins]
|
|
||||||
enabled = ["alex/system-status", "alex/knowledge-lookup"]
|
|
||||||
|
|
||||||
[widget.cpu]
|
|
||||||
type = "alex/system-status:cpu"
|
|
||||||
|
|
||||||
[widget.ram]
|
|
||||||
type = "alex/system-status:memory"
|
|
||||||
|
|
||||||
[widget.network-rate]
|
|
||||||
type = "alex/system-status:network-rate"
|
|
||||||
|
|
||||||
[widget.idle-inhibitors]
|
|
||||||
type = "alex/system-status:inhibitors"
|
|
||||||
|
|
||||||
[widget.knowledge-lookup]
|
|
||||||
type = "alex/knowledge-lookup:bar"
|
|
||||||
|
|
||||||
[widget.temp]
|
|
||||||
type = "sysmon"
|
|
||||||
stat = "cpu_temp"
|
|
||||||
visualization = "none"
|
|
||||||
show_value = true
|
|
||||||
|
|
||||||
[widget.disk]
|
|
||||||
type = "sysmon"
|
|
||||||
stat = "disk_used_pct"
|
|
||||||
visualization = "none"
|
|
||||||
show_value = true
|
|
||||||
path = "/"
|
|
||||||
|
|
||||||
[desktop_widgets]
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
[wallpaper]
|
|
||||||
enabled = true
|
|
||||||
fill_color = "#000000"
|
|
||||||
|
|
||||||
[wallpaper.default]
|
|
||||||
path = "color:#000000"
|
|
||||||
|
|
||||||
[nightlight]
|
|
||||||
enabled = true
|
|
||||||
force = false
|
|
||||||
temperature_day = 6500
|
|
||||||
temperature_night = 2500
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
# Desktop-specific shell layout and hardware telemetry.
|
|
||||||
# Pi Status Bridge is installed locally from ~/projects/pi-status-bridge.
|
|
||||||
[plugins]
|
|
||||||
enabled = ["alex/system-status", "alex/pi-status-bridge", "alex/knowledge-lookup"]
|
|
||||||
|
|
||||||
[widget.pi-status]
|
|
||||||
type = "alex/pi-status-bridge:bridge"
|
|
||||||
|
|
||||||
[bar.main]
|
|
||||||
position = "bottom"
|
|
||||||
layer = "top"
|
|
||||||
scale = 0.95
|
|
||||||
capsule_radius = 5
|
|
||||||
center = ["group:g3", "notifications"]
|
|
||||||
end = ["group:g2", "group:g6", "group:g1", "session"]
|
|
||||||
font_weight = 400
|
|
||||||
margin_ends = 0
|
|
||||||
padding = 0
|
|
||||||
panel_overlap = 3
|
|
||||||
radius = 0
|
|
||||||
shadow = false
|
|
||||||
# Keep the desktop status bar visible and reserve its screen edge.
|
|
||||||
auto_hide = false
|
|
||||||
smart_auto_hide = false
|
|
||||||
reserve_space = true
|
|
||||||
start = ["tray", "group:g4", "privacy"]
|
|
||||||
thickness = 39
|
|
||||||
widget_spacing = 10
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g1"
|
|
||||||
members = ["idle-inhibitors", "caffeine", "date", "clock"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g2"
|
|
||||||
members = ["network", "bluetooth"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g3"
|
|
||||||
members = ["launcher", "media", "control-center", "clipboard"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
radius = 5.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g4"
|
|
||||||
members = ["pi-status", "cpu", "temp", "ram", "gpu", "gpu_temp", "disk"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g6"
|
|
||||||
members = ["input_volume", "volume"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
radius = 5.0
|
|
||||||
|
|
||||||
[widget.gpu]
|
|
||||||
type = "sysmon"
|
|
||||||
stat = "gpu_usage"
|
|
||||||
visualization = "graph"
|
|
||||||
show_value = true
|
|
||||||
|
|
||||||
[widget.gpu_temp]
|
|
||||||
type = "sysmon"
|
|
||||||
stat = "gpu_temp"
|
|
||||||
visualization = "none"
|
|
||||||
show_value = true
|
|
||||||
|
|
||||||
[control_center]
|
|
||||||
sidebar = "full"
|
|
||||||
sidebar_section = "full"
|
|
||||||
width = 880
|
|
||||||
|
|
||||||
[system.monitor]
|
|
||||||
# GPU polling is disabled by Noctalia by default; enable it for the RTX 3090 widgets.
|
|
||||||
gpu_poll_seconds = 2.0
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
# Laptop-specific Noctalia layout. Shared privacy/theme defaults live in 10-base.toml.
|
|
||||||
[bar.main]
|
|
||||||
position = "top"
|
|
||||||
layer = "top"
|
|
||||||
scale = 0.95
|
|
||||||
capsule_radius = 5
|
|
||||||
center = ["group:g3", "notifications"]
|
|
||||||
end = ["group:g2", "group:g6", "group:g5", "group:g1", "session"]
|
|
||||||
font_weight = 400
|
|
||||||
margin_ends = 0
|
|
||||||
padding = 0
|
|
||||||
panel_overlap = 3
|
|
||||||
radius = 0
|
|
||||||
shadow = false
|
|
||||||
auto_hide = false
|
|
||||||
smart_auto_hide = false
|
|
||||||
reserve_space = true
|
|
||||||
start = ["tray", "group:g4"]
|
|
||||||
# Accommodate the battery-rate widget's wattage + ETA lines without clipping.
|
|
||||||
thickness = 39
|
|
||||||
widget_spacing = 10
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g1"
|
|
||||||
members = ["idle-inhibitors", "caffeine", "date", "clock"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g2"
|
|
||||||
members = ["network", "bluetooth"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g3"
|
|
||||||
members = ["launcher", "media", "control-center", "clipboard"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
radius = 5.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g4"
|
|
||||||
members = ["cpu", "temp", "ram", "gpu-mode", "disk"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g5"
|
|
||||||
members = ["battery-rate", "battery", "power_profile"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
radius = 5.0
|
|
||||||
|
|
||||||
[[bar.main.capsule_group]]
|
|
||||||
enabled = true
|
|
||||||
fill = "surface_variant"
|
|
||||||
id = "g6"
|
|
||||||
members = ["input_volume", "volume"]
|
|
||||||
opacity = 1.0
|
|
||||||
padding = 6.0
|
|
||||||
radius = 5.0
|
|
||||||
|
|
||||||
[widget.battery-rate]
|
|
||||||
type = "alex/system-status:battery-rate"
|
|
||||||
|
|
||||||
[widget.gpu-mode]
|
|
||||||
type = "alex/system-status:gpu-mode"
|
|
||||||
|
|
||||||
# Only suspend-then-hibernate after 30 minutes when UPower confirms battery power.
|
|
||||||
# The command fails closed on AC or when UPower is unavailable.
|
|
||||||
[idle.behavior.suspend-then-hibernate]
|
|
||||||
command = "busctl get-property org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower OnBattery 2>/dev/null | grep -qx 'b true' && loginctl lock-session && systemctl suspend-then-hibernate"
|
|
||||||
|
|
||||||
[control_center]
|
|
||||||
sidebar = "full"
|
|
||||||
sidebar_section = "full"
|
|
||||||
width = 720
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"dark": {
|
|
||||||
"mPrimary": "#ff8800",
|
|
||||||
"mOnPrimary": "#1a0d00",
|
|
||||||
"mSecondary": "#ffb05c",
|
|
||||||
"mOnSecondary": "#2b1600",
|
|
||||||
"mTertiary": "#ffcc99",
|
|
||||||
"mOnTertiary": "#2b1600",
|
|
||||||
"mError": "#ff6b4a",
|
|
||||||
"mOnError": "#2b0700",
|
|
||||||
"mSurface": "#050403",
|
|
||||||
"mOnSurface": "#fff1e6",
|
|
||||||
"mSurfaceVariant": "#1a110c",
|
|
||||||
"mOnSurfaceVariant": "#f4c7a1",
|
|
||||||
"mOutline": "#6e4a31",
|
|
||||||
"mShadow": "#000000",
|
|
||||||
"mHover": "#2a190f",
|
|
||||||
"mOnHover": "#fff1e6",
|
|
||||||
"terminal": {
|
|
||||||
"background": "#050403",
|
|
||||||
"foreground": "#fff1e6",
|
|
||||||
"cursor": "#fff1e6",
|
|
||||||
"cursorText": "#050403",
|
|
||||||
"selectionBg": "#3b220f",
|
|
||||||
"selectionFg": "#fff1e6",
|
|
||||||
"normal": {
|
|
||||||
"black": "#050403",
|
|
||||||
"red": "#ff6b4a",
|
|
||||||
"green": "#c98a45",
|
|
||||||
"yellow": "#ffb05c",
|
|
||||||
"blue": "#c97c45",
|
|
||||||
"magenta": "#d98a5c",
|
|
||||||
"cyan": "#e8a76a",
|
|
||||||
"white": "#fff1e6"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#6e4a31",
|
|
||||||
"red": "#ff8f72",
|
|
||||||
"green": "#e8ad68",
|
|
||||||
"yellow": "#ffca80",
|
|
||||||
"blue": "#e8a06a",
|
|
||||||
"magenta": "#f0ad82",
|
|
||||||
"cyan": "#ffd0a0",
|
|
||||||
"white": "#ffffff"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../idle-inhibitor-monitor.service
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Track session ScreenSaver idle inhibitors for Noctalia
|
|
||||||
After=graphical-session.target
|
|
||||||
PartOf=graphical-session.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=%h/.local/bin/idle-inhibitor-monitor
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=2
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Pi Status Bridge home agent
|
|
||||||
After=graphical-session.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
Environment=PATH=/home/alex/.npm-global/bin:/usr/local/bin:/usr/bin:/bin
|
|
||||||
ExecStart=/usr/bin/env pi-status-bridge --session-root %h/.local/state/pi-status-bridge/sessions
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=3
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
Reference in New Issue
Block a user