Compare commits
5 Commits
5bd8a2836e
...
804ec54090
| Author | SHA1 | Date | |
|---|---|---|---|
| 804ec54090 | |||
| 6e1ed76eed | |||
| 2b7b18c66d | |||
| db72a5a635 | |||
| 96c4d36714 |
@@ -7,6 +7,7 @@ All the configuration files for my current machine setup.
|
|||||||
- Ghostty
|
- Ghostty
|
||||||
- Hyprland
|
- Hyprland
|
||||||
- Local
|
- Local
|
||||||
|
- Monique
|
||||||
- NVIM
|
- NVIM
|
||||||
- SSH
|
- SSH
|
||||||
- SystemD
|
- SystemD
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
# Sound through pactl
|
|
||||||
bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +10%
|
|
||||||
bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -10%
|
|
||||||
bind = , XF86AudioMut, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
bind = , XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind = , XF86AudioPrev, exec, playerctl previous
|
|
||||||
bind = , XF86AudioNext, exec, playerctl next
|
|
||||||
|
|
||||||
# Brightness through brightnessctl
|
|
||||||
bind = , XF86MonBrightnessUp, exec, brightnessctl set +5%
|
|
||||||
bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mainMod, T, exec, $terminal
|
|
||||||
bind = $mainMod, B, exec, $browser
|
|
||||||
bind = $mainMod, F, exec, $fileManager
|
|
||||||
bind = $mainMod, C, killactive,
|
|
||||||
bind = $mainMod, M, exit,
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, space, exec, $menu
|
|
||||||
bind = $SUPER_SHIFT, l, exec, hyprlock
|
|
||||||
bind = $SUPER_SHIFT, R, exec, hyprctl reload
|
|
||||||
bind = $SUPER_SHIFT, D, exec, hyprctl keyword monitor eDP-1, disable
|
|
||||||
bind = $SUPER_SHIFT, F, exec, hyprctl keyword monitor eDP-1, enable
|
|
||||||
bind = , Print, exec, grim -c -o "$(hyprctl activeworkspace -j | jq -r '.monitor')" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')
|
|
||||||
bind = shift, Print, exec, grim -g "$(slurp)" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod, E, togglesplit, # dwindle
|
|
||||||
bind = $mainMod CTRL, F, fullscreen, # dwindle
|
|
||||||
bind = $mainMod, W, togglegroup, # dwindle
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
|
||||||
bind = $mainMod, h, movefocus, l
|
|
||||||
bind = $mainMod, l, movefocus, r
|
|
||||||
bind = $mainMod, k, movefocus, u
|
|
||||||
bind = $mainMod, j, movefocus, d
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Example special workspace (scratchpad)
|
|
||||||
bind = $mainMod, S, togglespecialworkspace, magic
|
|
||||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
# Laptop Lid for opening and close
|
|
||||||
bindl = , switch:on:Lid Switch, exec, hyprctl dpms off && hyprctl dispatch exec hyprlock
|
|
||||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
||||||
|
|
||||||
|
-- Sound through pactl
|
||||||
|
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +10%"))
|
||||||
|
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -10%"))
|
||||||
|
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("pactl set-sink-mute @DEFAULT_SINK@ toggle"))
|
||||||
|
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"))
|
||||||
|
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"))
|
||||||
|
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"))
|
||||||
|
|
||||||
|
-- Brightness through brightnessctl
|
||||||
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set +5%"))
|
||||||
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 5%-"))
|
||||||
|
|
||||||
|
-- Main modifier binds
|
||||||
|
hl.bind(mainMod .. " + T", hl.dsp.exec_cmd(terminal))
|
||||||
|
hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(browser))
|
||||||
|
hl.bind(mainMod .. " + F", hl.dsp.exec_cmd(fileManager))
|
||||||
|
hl.bind(mainMod .. " + C", hl.dsp.window.kill())
|
||||||
|
hl.bind(mainMod .. " + M", hl.dsp.exit())
|
||||||
|
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.bind(mainMod .. " + space", hl.dsp.exec_cmd(menu))
|
||||||
|
hl.bind(SUPER_SHIFT .. " + L", hl.dsp.exec_cmd("hyprlock"))
|
||||||
|
hl.bind(SUPER_SHIFT .. " + R", hl.dsp.exec_cmd("hyprctl reload"))
|
||||||
|
-- Monique: GUI monitor arrangement/display settings
|
||||||
|
hl.bind(SUPER_SHIFT .. " + M", hl.dsp.exec_cmd("monique"))
|
||||||
|
hl.bind(SUPER_SHIFT .. " + D", hl.dsp.exec_cmd("hyprctl keyword monitor eDP-1, disable"))
|
||||||
|
hl.bind(SUPER_SHIFT .. " + F", hl.dsp.exec_cmd("hyprctl keyword monitor eDP-1, enable"))
|
||||||
|
|
||||||
|
-- Screenshots
|
||||||
|
hl.bind("Print", hl.dsp.exec_cmd("grim -c -o \"$(hyprctl activeworkspace -j | jq -r '.monitor')\" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')"))
|
||||||
|
hl.bind("SHIFT + Print", hl.dsp.exec_cmd("grim -g \"$(slurp)\" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')"))
|
||||||
|
|
||||||
|
-- Dwindle layout
|
||||||
|
hl.bind(mainMod .. " + P", hl.dsp.window.pseudo()) -- dwindle
|
||||||
|
hl.bind(mainMod .. " + E", hl.dsp.layout("togglesplit")) -- dwindle
|
||||||
|
hl.bind(mainMod .. " + CTRL + F", hl.dsp.window.fullscreen({ action = "toggle" })) -- dwindle
|
||||||
|
hl.bind(mainMod .. " + W", hl.dsp.group.toggle()) -- dwindle
|
||||||
|
|
||||||
|
-- Move focus with mainMod + vim keys
|
||||||
|
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "l" }))
|
||||||
|
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "r" }))
|
||||||
|
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "u" }))
|
||||||
|
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "d" }))
|
||||||
|
|
||||||
|
-- Switch workspaces with mainMod + [0-9]
|
||||||
|
for i = 1, 10 do
|
||||||
|
local key = i % 10 -- 10 maps to key 0
|
||||||
|
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i }))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
for i = 1, 10 do
|
||||||
|
local key = i % 10 -- 10 maps to key 0
|
||||||
|
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Example special workspace (scratchpad)
|
||||||
|
hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
|
||||||
|
|
||||||
|
-- Scroll through existing workspaces with mainMod + scroll
|
||||||
|
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
|
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||||
|
|
||||||
|
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||||
|
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||||
|
|
||||||
|
-- Laptop lid is handled by hypr-lid-power.service (delayed lock/suspend when
|
||||||
|
-- closed undocked; display/clamshell handling is done by moniqued) instead of
|
||||||
|
-- these binds; see .local/bin/hypr-lid-power.sh.
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Example per-device config
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
|
||||||
device {
|
|
||||||
name = epic-mouse-v1
|
|
||||||
sensitivity = -0.5
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
-- Example per-device config
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more
|
||||||
|
hl.device({
|
||||||
|
name = "epic-mouse-v1",
|
||||||
|
sensitivity = -0.5,
|
||||||
|
})
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
env = XCURSOR_SIZE,24
|
|
||||||
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||||
|
hl.env("XCURSOR_SIZE", "24")
|
||||||
|
hl.env("QT_QPA_PLATFORMTHEME", "qt5ct") -- change to qt6ct if you have that
|
||||||
|
hl.env("SUDO_ASKPASS", os.getenv("HOME") .. "/.local/bin/sudo-askpass.sh")
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
exec-once = hyprctl setcursor catppuccin-mocha-dark-cursors 28 &
|
|
||||||
# exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
exec-once = systemctl --user start hyprpolkitagent &
|
|
||||||
|
|
||||||
exec-once = waybar & mako & hyprpaper & hypridle & wluma & hyprshell run &
|
|
||||||
|
|
||||||
exec-once = blueman-applet & # systemctl --user stop wireplumber.service &
|
|
||||||
|
|
||||||
exec-once = 1password --silent & op signin & sunsetr &
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
-- Autostart. See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||||
|
hl.on("hyprland.start", function()
|
||||||
|
hl.exec_cmd("hyprctl setcursor catppuccin-mocha-dark-cursors 28 &")
|
||||||
|
hl.exec_cmd("systemctl --user start plasma-polkit-agent &")
|
||||||
|
hl.exec_cmd("waybar & mako & hyprpaper & hypridle & wluma & hyprshell run &")
|
||||||
|
hl.exec_cmd("1password --silent &")
|
||||||
|
hl.exec_cmd("systemctl --user start hyprland-session.target &")
|
||||||
|
hl.exec_cmd("blueman-applet &")
|
||||||
|
hl.exec_cmd("sunsetr &")
|
||||||
|
end)
|
||||||
|
|
||||||
|
hl.on("hyprland.shutdown", function()
|
||||||
|
os.execute("systemctl --user stop hyprland-session.target && sleep 0.1")
|
||||||
|
end)
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
source=~/.config/hypr/monitors.conf
|
|
||||||
source=~/.config/hypr/mocha.conf
|
|
||||||
source=~/.config/hypr/keywords.conf
|
|
||||||
source=~/.config/hypr/exec.conf
|
|
||||||
source=~/.config/hypr/env.conf
|
|
||||||
source=~/.config/hypr/variable.conf
|
|
||||||
source=~/.config/hypr/input.conf
|
|
||||||
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
|
|
||||||
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
general {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
border_size = 3
|
|
||||||
|
|
||||||
col.active_border = $mauve $flamingo 90deg
|
|
||||||
col.inactive_border = $subtext0
|
|
||||||
|
|
||||||
resize_on_border = true
|
|
||||||
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 4
|
|
||||||
|
|
||||||
layout = dwindle
|
|
||||||
|
|
||||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
|
||||||
allow_tearing = false
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
rounding = 4
|
|
||||||
|
|
||||||
blur {
|
|
||||||
enabled = true
|
|
||||||
size = 3
|
|
||||||
passes = 1
|
|
||||||
new_optimizations = true
|
|
||||||
}
|
|
||||||
|
|
||||||
shadow {
|
|
||||||
enabled = true
|
|
||||||
range = 4
|
|
||||||
render_power = 3
|
|
||||||
color = rgba(1a1a1aee)
|
|
||||||
}
|
|
||||||
|
|
||||||
dim_inactive = true
|
|
||||||
dim_strength = 0.05
|
|
||||||
dim_special = 0.07
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = true
|
|
||||||
|
|
||||||
bezier = linear, 0.0, 0.0, 1, 1
|
|
||||||
animation = borderangle, 1, 50, linear, loop
|
|
||||||
|
|
||||||
animation=workspaces,1,0.5,default
|
|
||||||
animation=windows,0,0.1,default
|
|
||||||
animation=fade,0,0.1,default
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
pseudotile = yes # master switch for pseudotiling. Enableing is bound to mainMod + P in the keybinds section
|
|
||||||
preserve_split = yes
|
|
||||||
}
|
|
||||||
|
|
||||||
# master {
|
|
||||||
# # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
# new_is_master = true
|
|
||||||
# }
|
|
||||||
|
|
||||||
misc {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
|
||||||
middle_click_paste = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Device Config
|
|
||||||
soruce=~/.config/hypr/device.conf
|
|
||||||
|
|
||||||
# Windows Rules (v2)
|
|
||||||
source=~/.config/hypr/windowrulev2.conf
|
|
||||||
|
|
||||||
# Keyboard Bindings
|
|
||||||
source=~/.config/hypr/binding.conf
|
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
-- Hyprland config (Lua)
|
||||||
|
-- Converted from hyprlang .conf files. See https://wiki.hypr.land/Configuring/Start/
|
||||||
|
|
||||||
|
-- This file is a stow symlink; Hyprland resolves it to the repo path, so make
|
||||||
|
-- sure requires (e.g. mocha.lua from the hyprmocha package) resolve through
|
||||||
|
-- the real config dir.
|
||||||
|
package.path = os.getenv("HOME") .. "/.config/hypr/?.lua;" .. package.path
|
||||||
|
|
||||||
|
require("keywords")
|
||||||
|
require("variables")
|
||||||
|
require("mocha")
|
||||||
|
require("monitors")
|
||||||
|
require("env")
|
||||||
|
require("input")
|
||||||
|
require("device")
|
||||||
|
require("window_rules")
|
||||||
|
require("binds")
|
||||||
|
require("exec")
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
xwayland = {
|
||||||
|
force_zero_scaling = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
border_size = 3,
|
||||||
|
col = {
|
||||||
|
active_border = { colors = { mauve, flamingo }, angle = 90 },
|
||||||
|
inactive_border = subtext0,
|
||||||
|
},
|
||||||
|
resize_on_border = true,
|
||||||
|
gaps_in = 2,
|
||||||
|
gaps_out = 4,
|
||||||
|
layout = "dwindle",
|
||||||
|
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
decoration = {
|
||||||
|
rounding = 4,
|
||||||
|
blur = {
|
||||||
|
enabled = true,
|
||||||
|
size = 3,
|
||||||
|
passes = 1,
|
||||||
|
new_optimizations = true,
|
||||||
|
},
|
||||||
|
shadow = {
|
||||||
|
enabled = true,
|
||||||
|
range = 4,
|
||||||
|
render_power = 3,
|
||||||
|
color = "rgba(1a1a1aee)",
|
||||||
|
},
|
||||||
|
dim_inactive = true,
|
||||||
|
dim_strength = 0.05,
|
||||||
|
dim_special = 0.07,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
animations = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
|
||||||
|
-- borderangle disabled: the old "loop" style animated continuously, forcing
|
||||||
|
-- constant redraws and spiking idle CPU usage even with VFR enabled.
|
||||||
|
hl.animation({ leaf = "borderangle", enabled = false, speed = 50, bezier = "linear", style = "loop" })
|
||||||
|
hl.animation({ leaf = "workspaces", enabled = true, speed = 0.5, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "windows", enabled = false })
|
||||||
|
hl.animation({ leaf = "fade", enabled = false })
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
dwindle = {
|
||||||
|
-- pseudotile had no Lua config-table equivalent; toggled via the P bind
|
||||||
|
preserve_split = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- master {
|
||||||
|
-- new_is_master = true
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- CPU/power efficiency. See https://wiki.hypr.land/Configuring/Variables/#misc
|
||||||
|
hl.config({
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = 0, -- Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
middle_click_paste = false,
|
||||||
|
-- Don't wake/re-render just because the cursor crossed a monitor edge.
|
||||||
|
mouse_move_focuses_monitor = false,
|
||||||
|
-- Skip drawing the Hyprland logo in the corner of empty workspaces.
|
||||||
|
disable_hyprland_logo = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Variable framerate: only redraw when the scene actually changes instead of
|
||||||
|
-- running at a fixed rate. This is the single biggest idle-CPU saver; it is
|
||||||
|
-- true by default, but set explicitly (note it lives under `debug:`).
|
||||||
|
hl.config({
|
||||||
|
debug = {
|
||||||
|
vfr = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
input {
|
|
||||||
kb_layout = us
|
|
||||||
kb_variant =
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
kb_options = ctrl:nocaps
|
|
||||||
|
|
||||||
follow_mouse = 1
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = true
|
|
||||||
clickfinger_behavior = true
|
|
||||||
disable_while_typing = true
|
|
||||||
scroll_factor = 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 to 1.0, 0 means no modification
|
|
||||||
}
|
|
||||||
|
|
||||||
gesture = 3, horizontal, workspace
|
|
||||||
gestures {
|
|
||||||
workspace_swipe_direction_lock = true
|
|
||||||
workspace_swipe_direction_lock_threshold = 10
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
-- For all categories, see https://wiki.hypr.land/Configuring/Basics/Variables/
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
kb_layout = "us",
|
||||||
|
kb_variant = "",
|
||||||
|
kb_model = "",
|
||||||
|
kb_options = "ctrl:nocaps",
|
||||||
|
kb_rules = "",
|
||||||
|
follow_mouse = 1,
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = true,
|
||||||
|
clickfinger_behavior = true,
|
||||||
|
disable_while_typing = true,
|
||||||
|
scroll_factor = 0.5,
|
||||||
|
},
|
||||||
|
sensitivity = 0, -- -1.0 to 1.0, 0 means no modification
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.gesture({
|
||||||
|
fingers = 3,
|
||||||
|
direction = "horizontal",
|
||||||
|
action = "workspace",
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe_direction_lock = true,
|
||||||
|
workspace_swipe_direction_lock_threshold = 10,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
$mainMod = super
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Keywords/ for more
|
||||||
|
-- Defined as globals so every required module can use them.
|
||||||
|
mainMod = "SUPER" -- Sets the "Windows" key as main modifier
|
||||||
|
SUPER_SHIFT = "SUPER + SHIFT"
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Generated by nwg-displays on 2026-05-12 at 10:26:18. Do not edit manually.
|
|
||||||
|
|
||||||
monitor=desc:BOE 0x0BC9,disable
|
|
||||||
monitor=desc:Viewteck Co. Ltd. GNV34DB,3440x1440@50.0,3795x1785,1.0
|
|
||||||
monitor=desc:Dell Inc. DELL U2515HX GMDK46C4053L,2560x1440@59.95,5488x345,1.0
|
|
||||||
monitor=desc:Dell Inc. DELL U2518D 0WG2J9C5B3WL,2560x1440@59.95,2928x345,1.0
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
-- Managed by monique (run `monique` or SUPER+SHIFT+M to arrange). The built-in
|
||||||
|
-- panel is managed at runtime by moniqued's clamshell mode: enabled here, then
|
||||||
|
-- disabled while the lid is closed with external displays attached.
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/ for more
|
||||||
|
hl.monitor({ output = "desc:BOE 0x0BC9", mode = "preferred", position = "0x0", scale = 1.0 })
|
||||||
|
hl.monitor({ output = "desc:Viewteck Co. Ltd. GNV34DB", mode = "3440x1440@50.0", position = "3795x1785", scale = 1.0 })
|
||||||
|
hl.monitor({ output = "desc:Dell Inc. DELL U2515HX GMDK46C4053L", mode = "2560x1440@59.95", position = "5488x345", scale = 1.0 })
|
||||||
|
hl.monitor({ output = "desc:Dell Inc. DELL U2518D 0WG2J9C5B3WL", mode = "2560x1440@59.95", position = "2928x345", scale = 1.0 })
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
$terminal = ghostty
|
|
||||||
$fileManager = dolphin
|
|
||||||
$menu = wofi --show drun
|
|
||||||
$browser = zen-browser
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
terminal = "ghostty"
|
||||||
|
fileManager = "dolphin"
|
||||||
|
menu = "wofi --show drun"
|
||||||
|
browser = "zen-browser"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
-- Example window rules
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/ for more
|
||||||
|
|
||||||
|
hl.layer_rule({
|
||||||
|
name = "no_anim_for_wofi",
|
||||||
|
match = { namespace = "wofi" },
|
||||||
|
no_anim = true,
|
||||||
|
})
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# Example windowrule v1
|
|
||||||
# windowrule = float, ^(kitty)$
|
|
||||||
# Example windowrule v2
|
|
||||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
# windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
|
||||||
layerrule {
|
|
||||||
name = no_anim_for_wofi
|
|
||||||
no_anim = on
|
|
||||||
match:namespace = wofi
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Hyprland lid lock/suspend timers (display/clamshell handled by moniqued)
|
||||||
|
After=graphical-session.target
|
||||||
|
PartOf=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=%h/.local/bin/hypr-lid-power.sh
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=3
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=graphical-session.target
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Hyprland session
|
||||||
|
BindsTo=graphical-session.target
|
||||||
|
Wants=graphical-session-pre.target
|
||||||
|
After=graphical-session-pre.target
|
||||||
|
PropagatesStopTo=graphical-session.target
|
||||||
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Open btop fullscreen in a ghostty window; focus it if it is already open.
|
||||||
|
# Intended as the on-click action for the waybar cpu/memory modules.
|
||||||
|
set -uo pipefail
|
||||||
|
|
||||||
|
if hyprctl clients -j 2>/dev/null | jq -e 'any(.[]; ((.title // "") + " " + (.class // "")) | ascii_downcase | contains("btop"))' >/dev/null 2>&1; then
|
||||||
|
hyprctl dispatch 'hl.dsp.focus({ window = "title:btop" })' 2>/dev/null || true
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
ghostty -e btop &
|
||||||
|
sleep 0.5
|
||||||
|
hyprctl dispatch 'hl.dsp.window.fullscreen({ action = "set" })' 2>/dev/null || true
|
||||||
Executable
+91
@@ -0,0 +1,91 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# hypr-lid-power: delayed lock/suspend for the laptop lid.
|
||||||
|
#
|
||||||
|
# Display/clamshell/hotplug handling is owned by moniqued (see
|
||||||
|
# ~/.config/hypr/monitors.lua and moniqued's clamshell mode). This service only
|
||||||
|
# runs the power timers while the lid is closed with no external display
|
||||||
|
# attached:
|
||||||
|
# - lock after LOCK_SECONDS
|
||||||
|
# - suspend after SUSPEND_SECONDS
|
||||||
|
#
|
||||||
|
# Runs as a systemd user service (hypr-lid-power.service) and polls the lid +
|
||||||
|
# monitor state, so connecting/disconnecting a dock while the lid is closed is
|
||||||
|
# handled too. Lock/suspend use transient systemd timers, which pause during
|
||||||
|
# suspend and are recreated afterwards, so if the machine wakes while the lid
|
||||||
|
# stays closed it will sleep again after the full timeout.
|
||||||
|
|
||||||
|
set -uo pipefail
|
||||||
|
|
||||||
|
RUNTIME="/run/user/$(id -u)"
|
||||||
|
LOCK_SECONDS=60
|
||||||
|
SUSPEND_SECONDS=600
|
||||||
|
POLL_SECONDS=2
|
||||||
|
|
||||||
|
log() { printf '[hypr-lid-power] %s %s\n' "$(date '+%H:%M:%S')" "$*"; }
|
||||||
|
|
||||||
|
# Run hyprctl against the active Hyprland instance, if any.
|
||||||
|
hypr() {
|
||||||
|
local sig=""
|
||||||
|
for d in "$RUNTIME"/hypr/*/; do
|
||||||
|
if [ -S "$d/.socket.sock" ]; then
|
||||||
|
sig="$(basename "$d")"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -n "$sig" ] || return 1
|
||||||
|
HYPRLAND_INSTANCE_SIGNATURE="$sig" command hyprctl "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
lid_closed() {
|
||||||
|
local state
|
||||||
|
state="$(cat /proc/acpi/button/lid/*/state 2>/dev/null)" || return 1
|
||||||
|
[[ "$state" == *closed* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
# True when Hyprland has any output up that is not the built-in panel/headless.
|
||||||
|
has_external() {
|
||||||
|
hypr monitors -j 2>/dev/null | grep '"name": "' | grep -qvE '"(eDP|HEADLESS)-'
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_timers() {
|
||||||
|
systemctl --user stop hypr-lid-lock.timer hypr-lid-suspend.timer 2>/dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Re-create the named timer unless it is already waiting. Transient timers are
|
||||||
|
# collected after they fire, so this also restarts them after a suspend.
|
||||||
|
ensure_timer() {
|
||||||
|
local name="$1" seconds="$2"
|
||||||
|
shift 2
|
||||||
|
if ! systemctl --user --quiet is-active "hypr-lid-$name.timer"; then
|
||||||
|
systemd-run --user --quiet --unit="hypr-lid-$name" --on-active="${seconds}s" --collect "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
powering=no
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if ! hypr monitors >/dev/null 2>&1; then
|
||||||
|
# No Hyprland running (e.g. another compositor, or before first launch).
|
||||||
|
powering=no
|
||||||
|
sleep 3
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
want_power="no"
|
||||||
|
if lid_closed && ! has_external; then
|
||||||
|
want_power="yes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$want_power" != "$powering" ]; then
|
||||||
|
log "power mode: $powering -> $want_power"
|
||||||
|
if [ "$want_power" = "yes" ]; then
|
||||||
|
ensure_timer lock "$LOCK_SECONDS" loginctl lock-sessions
|
||||||
|
ensure_timer suspend "$SUSPEND_SECONDS" systemctl suspend
|
||||||
|
else
|
||||||
|
stop_timers
|
||||||
|
fi
|
||||||
|
powering="$want_power"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep "$POLL_SECONDS"
|
||||||
|
done
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# sudo-askpass: GUI password prompt for sudo via $SUDO_ASKPASS.
|
||||||
|
#
|
||||||
|
# sudo calls the program pointed to by $SUDO_ASKPASS when it cannot prompt on a
|
||||||
|
# terminal (or with `sudo -A`) and reads the password from its stdout. zenity's
|
||||||
|
# --password dialog does exactly that. If the dialog is cancelled or times out
|
||||||
|
# zenity exits non-zero and sudo aborts.
|
||||||
|
|
||||||
|
set -uo pipefail
|
||||||
|
|
||||||
|
exec zenity --title="sudo authentication" \
|
||||||
|
--password \
|
||||||
|
--text="Enter password for $(id -un):" \
|
||||||
|
--timeout=120 2>/dev/null
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
-- Catppuccin Mocha palette for the Lua Hyprland config.
|
||||||
|
-- Colors are "rgba(rrggbbaa)" strings; the *Alpha globals are bare hex for
|
||||||
|
-- building custom colors. Kept alongside mocha.conf, which hyprlock still sources.
|
||||||
|
|
||||||
|
rosewater = "rgba(f5e0dcff)"
|
||||||
|
rosewaterAlpha = "f5e0dc"
|
||||||
|
|
||||||
|
flamingo = "rgba(f2cdcdff)"
|
||||||
|
flamingoAlpha = "f2cdcd"
|
||||||
|
|
||||||
|
pink = "rgba(f5c2e7ff)"
|
||||||
|
pinkAlpha = "f5c2e7"
|
||||||
|
|
||||||
|
mauve = "rgba(cba6f7ff)"
|
||||||
|
mauveAlpha = "cba6f7"
|
||||||
|
|
||||||
|
red = "rgba(f38ba8ff)"
|
||||||
|
redAlpha = "f38ba8"
|
||||||
|
|
||||||
|
maroon = "rgba(eba0acff)"
|
||||||
|
maroonAlpha = "eba0ac"
|
||||||
|
|
||||||
|
peach = "rgba(fab387ff)"
|
||||||
|
peachAlpha = "fab387"
|
||||||
|
|
||||||
|
yellow = "rgba(f9e2afff)"
|
||||||
|
yellowAlpha = "f9e2af"
|
||||||
|
|
||||||
|
green = "rgba(a6e3a1ff)"
|
||||||
|
greenAlpha = "a6e3a1"
|
||||||
|
|
||||||
|
teal = "rgba(94e2d5ff)"
|
||||||
|
tealAlpha = "94e2d5"
|
||||||
|
|
||||||
|
sky = "rgba(89dcebff)"
|
||||||
|
skyAlpha = "89dceb"
|
||||||
|
|
||||||
|
sapphire = "rgba(74c7ecff)"
|
||||||
|
sapphireAlpha = "74c7ec"
|
||||||
|
|
||||||
|
blue = "rgba(89b4faff)"
|
||||||
|
blueAlpha = "89b4fa"
|
||||||
|
|
||||||
|
lavendar = "rgba(b4befeff)"
|
||||||
|
lavendarAlpha = "b4befe"
|
||||||
|
|
||||||
|
text = "rgba(cdd6f4ff)"
|
||||||
|
textAlpha = "cdd6f4"
|
||||||
|
|
||||||
|
subtext1 = "rgba(bac2deff)"
|
||||||
|
subtext1Alpha = "bac2de"
|
||||||
|
|
||||||
|
subtext0 = "rgba(a6adc8ff)"
|
||||||
|
subtext0Alpha = "a6adc8"
|
||||||
|
|
||||||
|
overlay2 = "rgba(9399b2ff)"
|
||||||
|
overlay2Alpha = "9399b2"
|
||||||
|
|
||||||
|
overlay1 = "rgba(7f849cff)"
|
||||||
|
overlay1Alpha = "7f849c"
|
||||||
|
|
||||||
|
overlay0 = "rgba(6c7086ff)"
|
||||||
|
overlay0Alpha = "6c7086"
|
||||||
|
|
||||||
|
surface2 = "rgba(585b70ff)"
|
||||||
|
surface2Alpha = "585b70"
|
||||||
|
|
||||||
|
surface1 = "rgba(45475aff)"
|
||||||
|
surface1Alpha = "45475a"
|
||||||
|
|
||||||
|
surface0 = "rgba(313244ff)"
|
||||||
|
surface0Alpha = "313244"
|
||||||
|
|
||||||
|
base = "rgba(1e1e2eff)"
|
||||||
|
baseAlpha = "1e1e2e"
|
||||||
|
|
||||||
|
mantle = "rgba(181825ff)"
|
||||||
|
mantleAlpha = "181825"
|
||||||
|
|
||||||
|
crust = "rgba(11111bff)"
|
||||||
|
crustAlpha = "11111b"
|
||||||
@@ -1,5 +1,35 @@
|
|||||||
|
# https://github.com/emersion/mako/wiki/Configuration
|
||||||
|
|
||||||
max-history=10
|
max-history=10
|
||||||
|
|
||||||
# Style
|
# Style
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
layer=overlay
|
layer=overlay
|
||||||
|
anchor=top-right
|
||||||
|
border-radius=10
|
||||||
|
font="MesloLGS Nerd Font Mono Bold 12"
|
||||||
|
icons=1
|
||||||
|
max-icon-size=48
|
||||||
|
|
||||||
|
# Catppuccin Mocha palette (matches waybar mocha.css)
|
||||||
|
background-color=#1e1e2e
|
||||||
|
text-color=#cdd6f4
|
||||||
|
border-color=#cba6f7
|
||||||
|
progress-color=#a6e3a1
|
||||||
|
|
||||||
|
# Grouping
|
||||||
|
group-by=app-name
|
||||||
|
sort=-time
|
||||||
|
|
||||||
|
[grouped]
|
||||||
|
format=(<b>%g</b>) <b>%s</b>\n%b
|
||||||
|
|
||||||
|
[urgency=low]
|
||||||
|
border-color=#94e2d5
|
||||||
|
default-timeout=8000
|
||||||
|
|
||||||
|
[urgency=normal]
|
||||||
|
|
||||||
|
[urgency=critical]
|
||||||
|
border-color=#f38ba8
|
||||||
|
default-timeout=0
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"clamshell_mode": true,
|
||||||
|
"update_sddm": true,
|
||||||
|
"migrate_workspaces": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
||||||
|
}
|
||||||
@@ -2,22 +2,29 @@
|
|||||||
# systemctl --user daemon-reload
|
# systemctl --user daemon-reload
|
||||||
# systemctl --user enable --now cloudflared-k8s.service
|
# systemctl --user enable --now cloudflared-k8s.service
|
||||||
# systemctl --user status cloudflared-k8s.service
|
# systemctl --user status cloudflared-k8s.service
|
||||||
|
#
|
||||||
|
# The Cloudflare Access service token for k8s-api lives in the "Homelab"
|
||||||
|
# 1Password vault (item "K8s API Service Token", section "Service Token") and
|
||||||
|
# is injected at runtime via `op run` -- the secret is never written to disk.
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Cloudflare Tunnel to K8s API
|
Description=Cloudflare Tunnel to K8s API
|
||||||
After=network-online.target graphical-session.target
|
After=network-online.target graphical-session.target op-cli-signin.service
|
||||||
BindsTo=graphical-session.target
|
|
||||||
Wants=network-online.target systemd-networkd-wait-online.service
|
Wants=network-online.target systemd-networkd-wait-online.service
|
||||||
|
BindsTo=graphical-session.target
|
||||||
|
|
||||||
StartLimitIntervalSec=500
|
StartLimitIntervalSec=500
|
||||||
StartLimitBurst=5
|
StartLimitBurst=5
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
PassEnvironment=DISPLAY WAYLAND_DISPLAY DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
|
PassEnvironment=DISPLAY WAYLAND_DISPLAY DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
|
||||||
ExecStart=uwsm app -- /usr/bin/cloudflared access tcp --hostname k8s.samoneal.io --url localhost:6443
|
Environment="OP_BIOMETRIC_UNLOCK_ENABLED=true"
|
||||||
|
Environment="CF_ACCESS_CLIENT_ID=op://Homelab/K8s API Service Token/Service Token/client-id"
|
||||||
|
Environment="CF_ACCESS_CLIENT_SECRET=op://Homelab/K8s API Service Token/Service Token/client-secret"
|
||||||
|
ExecStart=/usr/bin/op run -- /usr/bin/cloudflared access tcp --hostname k8s.samoneal.io --url localhost:6443
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=60
|
RestartSec=60
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=graphical-session.target
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Connect to GDrive via RClone
|
Description=Connect to GDrive via RClone
|
||||||
After=network-online.target graphical-session.target
|
After=network-online.target graphical-session.target
|
||||||
|
Wants=network-online.target
|
||||||
BindsTo=graphical-session.target
|
BindsTo=graphical-session.target
|
||||||
Wants=network-online.target graphical-session.target
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
PassEnvironment=DISPLAY WAYLAND_DISPLAY DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
|
PassEnvironment=DISPLAY WAYLAND_DISPLAY DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
|
||||||
@@ -11,4 +11,4 @@ Restart=on-failure
|
|||||||
RestartSec=60
|
RestartSec=60
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=graphical-session.target
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Fetch NAS credentials from 1Password
|
Description=Fetch NAS credentials from 1Password
|
||||||
After=op-cli-signin.service
|
After=graphical-session.target op-cli-signin.service
|
||||||
|
BindsTo=graphical-session.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
Environment="DISPLAY=:0"
|
PassEnvironment=DISPLAY WAYLAND_DISPLAY DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
|
||||||
Environment="WAYLAND_DISPLAY=wayland-0"
|
|
||||||
Environment="OP_BIOMETRIC_UNLOCK_ENABLED=true"
|
Environment="OP_BIOMETRIC_UNLOCK_ENABLED=true"
|
||||||
ExecStart=sudo -u sammieo -E /home/sammieo/.local/bin/fetch-nas-credentials.sh
|
Environment="SUDO_ASKPASS=/home/sammieo/.local/bin/sudo-askpass.sh"
|
||||||
ExecStartPost=sudo -u sammieo /usr/bin/systemctl start nas-mounts.target
|
ExecStart=sudo -A -u sammieo -E /home/sammieo/.local/bin/fetch-nas-credentials.sh
|
||||||
|
ExecStartPost=sudo -A -u sammieo /usr/bin/systemctl start nas-mounts.target
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
StandardError=journal
|
StandardError=journal
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=graphical-session.target
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=1Password CLI SignIn
|
Description=1Password CLI SignIn
|
||||||
After=graphical-session.target
|
After=graphical-session.target
|
||||||
|
BindsTo=graphical-session.target
|
||||||
|
|
||||||
|
StartLimitIntervalSec=300
|
||||||
|
StartLimitBurst=10
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
Environment="DISPLAY=:0"
|
Environment="DISPLAY=:0"
|
||||||
Environment="WAYLAND_DISPLAY=wayland-0"
|
Environment="WAYLAND_DISPLAY=wayland-0"
|
||||||
Environment="OP_BIOMETRIC_UNLOCK_ENABLED=true"
|
Environment="OP_BIOMETRIC_UNLOCK_ENABLED=true"
|
||||||
ExecStart=/bin/sh op signin
|
ExecStart=/usr/bin/op signin
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=graphical-session.target
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Hyprland handles the laptop lid itself: moniqued owns the display side
|
||||||
|
# (clamshell when external displays are attached) and hypr-lid-power runs the
|
||||||
|
# delayed lock/suspend timers otherwise. logind must not suspend immediately
|
||||||
|
# on lid close.
|
||||||
|
[Login]
|
||||||
|
HandleLidSwitch=ignore
|
||||||
|
HandleLidSwitchExternalPower=ignore
|
||||||
|
HandleLidSwitchDocked=ignore
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"position": "top",
|
"position": "top",
|
||||||
"modules-left": ["hyprland/workspaces", "mpris"],
|
"modules-left": ["hyprland/workspaces", "mpris"],
|
||||||
"modules-center": ["hyprland/window"],
|
"modules-center": ["hyprland/window"],
|
||||||
"modules-right": ["cpu", "memory", "bluetooth", "network", "pulseaudio", "battery", "clock", "power-profiles-daemon", "custom/power"],
|
"modules-right": ["cpu", "memory", "tray", "bluetooth", "network", "pulseaudio", "battery", "clock", "power-profiles-daemon", "custom/power"],
|
||||||
"clock": {
|
"clock": {
|
||||||
"format": "<span foreground='#f5c2e7'> </span>{:%a %d %H:%M}",
|
"format": "<span foreground='#f5c2e7'> </span>{:%a %d %H:%M}",
|
||||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
||||||
@@ -22,6 +22,24 @@
|
|||||||
"format-icons": ["", "", "", "", ""],
|
"format-icons": ["", "", "", "", ""],
|
||||||
"tooltip-format": "{time}"
|
"tooltip-format": "{time}"
|
||||||
},
|
},
|
||||||
|
"cpu": {
|
||||||
|
"on-click": "~/.local/bin/btop.sh"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"on-click": "~/.local/bin/btop.sh"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 16,
|
||||||
|
"icon-theme": "Papirus-Dark",
|
||||||
|
"spacing": 8,
|
||||||
|
"tooltip": true,
|
||||||
|
"menu": {
|
||||||
|
"enabled": true,
|
||||||
|
"arrow": false,
|
||||||
|
"separator": true,
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
"network": {
|
"network": {
|
||||||
"format-wifi": "<span size='13000' foreground='#f5e0dc'> </span>{essid}",
|
"format-wifi": "<span size='13000' foreground='#f5e0dc'> </span>{essid}",
|
||||||
"format-ethernet": "<span size='13000' foreground='#f5e0dc'> </span> Disconnected",
|
"format-ethernet": "<span size='13000' foreground='#f5e0dc'> </span> Disconnected",
|
||||||
|
|||||||
@@ -122,6 +122,20 @@ button:hover {
|
|||||||
border-bottom: 2px solid @mauve;
|
border-bottom: 2px solid @mauve;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
color: @lavender;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .passive {
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .needs-attention {
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
color: @red;
|
||||||
|
border-bottom: 2px solid @red;
|
||||||
|
}
|
||||||
|
|
||||||
#custom-power {
|
#custom-power {
|
||||||
color: #ec9974;
|
color: #ec9974;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user