summaryrefslogtreecommitdiff
path: root/dotfiles
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles')
-rw-r--r--dotfiles/hyprland/.config/foot/foot.ini38
-rw-r--r--dotfiles/hyprland/.config/fuzzel/fuzzel.ini31
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf170
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprlock.conf78
-rw-r--r--dotfiles/hyprland/.config/waybar/config76
-rw-r--r--dotfiles/hyprland/.config/waybar/style.css83
-rw-r--r--dotfiles/hyprland/.gnupg/gpg-agent.conf18
-rwxr-xr-xdotfiles/hyprland/.local/bin/pinentry-fuzzel107
-rw-r--r--dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Bold.ttfbin0 -> 2294328 bytes
-rw-r--r--dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttfbin0 -> 2295172 bytes
-rw-r--r--dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttfbin0 -> 2294116 bytes
-rw-r--r--dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttfbin0 -> 2293800 bytes
12 files changed, 446 insertions, 155 deletions
diff --git a/dotfiles/hyprland/.config/foot/foot.ini b/dotfiles/hyprland/.config/foot/foot.ini
new file mode 100644
index 0000000..a96778c
--- /dev/null
+++ b/dotfiles/hyprland/.config/foot/foot.ini
@@ -0,0 +1,38 @@
+# foot terminal configuration
+# Minimal config matching DWM color scheme
+
+[main]
+term=xterm-256color
+font=Berkeley Mono:size=14
+pad=8x8
+
+[scrollback]
+lines=10000
+
+[colors]
+# DWM-inspired colors: gray1=#222222, gray2=#444444, gray3=#bbbbbb, gray4=#eeeeee, cyan=#daa520
+background=222222
+foreground=eeeeee
+
+# Regular colors (0-7)
+regular0=222222 # black
+regular1=cc6666 # red
+regular2=b5bd68 # green
+regular3=f0c674 # yellow
+regular4=81a2be # blue
+regular5=b294bb # magenta
+regular6=8abeb7 # cyan
+regular7=c5c8c6 # white
+
+# Bright colors (8-15)
+bright0=444444 # bright black
+bright1=d54e53 # bright red
+bright2=b9ca4a # bright green
+bright3=e7c547 # bright yellow
+bright4=7aa6da # bright blue
+bright5=c397d8 # bright magenta
+bright6=70c0b1 # bright cyan
+bright7=eeeeee # bright white
+
+# Cursor: background foreground (golden on dark)
+cursor=222222 daa520
diff --git a/dotfiles/hyprland/.config/fuzzel/fuzzel.ini b/dotfiles/hyprland/.config/fuzzel/fuzzel.ini
new file mode 100644
index 0000000..ce46448
--- /dev/null
+++ b/dotfiles/hyprland/.config/fuzzel/fuzzel.ini
@@ -0,0 +1,31 @@
+# Fuzzel config - matching waybar DWM-inspired theme
+# Colors from waybar: bg=#222222, cpu=#bbbbbb, clock=#eeeeee, accent=#daa520
+
+[main]
+font=BerkeleyMono Nerd Font:size=14
+prompt=Search:
+icon-theme=hicolor
+icons-enabled=yes
+width=30
+lines=12
+horizontal-pad=20
+vertical-pad=12
+inner-pad=8
+layer=overlay
+exit-on-keyboard-focus-loss=yes
+
+[colors]
+# Format: RRGGBBAA
+background=222222f0
+text=eeeeeeff
+selection=daa520ff
+selection-text=222222ff
+border=daa520ff
+match=daa520ff
+prompt=bbbbbbff
+placeholder=888888ff
+input=eeeeeeff
+
+[border]
+width=2
+radius=16
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
index ce45088..d7bb431 100644
--- a/dotfiles/hyprland/.config/hypr/hyprland.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprland.conf
@@ -39,8 +39,8 @@ env = _JAVA_AWT_WM_NONREPARENTING,1
# DWM colors: gray1=#222222, gray2=#444444, gray3=#bbbbbb, gray4=#eeeeee, cyan=#daa520
general {
- gaps_in = 5
- gaps_out = 10
+ gaps_in = 25
+ gaps_out = 30
border_size = 3
col.active_border = rgba(daa520ff)
col.inactive_border = rgba(444444ff)
@@ -49,7 +49,7 @@ general {
}
decoration {
- rounding = 0
+ rounding = 10
blur {
enabled = false
}
@@ -86,7 +86,7 @@ dwindle {
input {
kb_layout = us
kb_options = ctrl:nocaps
- follow_mouse = 1
+ follow_mouse = 0
touchpad {
natural_scroll = true
}
@@ -108,15 +108,15 @@ xwayland {
}
# ============================================================================
-# Window Rules
+# Window Rules (Hyprland 0.53+ syntax: match:CONDITION, RULE)
# ============================================================================
# Floating windows (from DWM rules)
-windowrulev2 = float, class:^(Gimp)$
-windowrulev2 = float, class:^(caffeine)$
-windowrulev2 = float, class:^(blueman-services)$
-windowrulev2 = float, class:^(Blueman-manager)$
-windowrulev2 = float, class:^(qalculate-gtk)$
-windowrulev2 = float, title:^(Event Tester)$
+windowrule = match:class ^(Gimp)$, float on
+windowrule = match:class ^(caffeine)$, float on
+windowrule = match:class ^(blueman-services)$, float on
+windowrule = match:class ^(Blueman-manager)$, float on
+windowrule = match:class ^(qalculate-gtk)$, float on
+windowrule = match:title ^(Event Tester)$, float on
# ============================================================================
# Key Bindings
@@ -124,47 +124,62 @@ windowrulev2 = float, title:^(Event Tester)$
$mod = SUPER
# Terminal and core apps (from DWM)
-bind = $mod, T, exec, st
+bind = $mod, T, exec, foot
bind = $mod, E, exec, emacsclient -c -a "" || emacs
bind = $mod, W, exec, $BROWSER
-bind = $mod, P, exec, wofi --show drun
+bind = $mod, P, exec, fuzzel
# From sxhkdrc
-bind = $mod, SPACE, exec, wofi --show drun
-bind = $mod SHIFT, S, exec, wofi --show ssh
+bind = $mod, SPACE, exec, fuzzel
+bind = $mod SHIFT, S, exec, fuzzel --dmenu < ~/.ssh/config | grep -oP '^Host\s+\K\S+' | fuzzel --dmenu --prompt "SSH: " | xargs -I{} foot ssh {}
bind = $mod SHIFT, W, exec, $ALTBROWSER
bind = CTRL ALT, W, exec, tor-browser
bind = CTRL ALT, F, exec, thunar
bind = $mod, V, exec, virtualbox
bind = $mod SHIFT, L, exec, calibre
bind = $mod SHIFT, R, exec, shortwave
+bind = $mod SHIFT, P, exec, waypaper
# Window management (from DWM)
bind = $mod, J, layoutmsg, cyclenext
bind = $mod, K, layoutmsg, cycleprev
bind = $mod SHIFT, J, layoutmsg, swapnext
bind = $mod SHIFT, K, layoutmsg, swapprev
-bind = $mod, H, resizeactive, -50 0
-bind = $mod, L, resizeactive, 50 0
-bind = $mod, RETURN, layoutmsg, swapwithmaster
+bind = $mod, H, splitratio, -0.05
+bind = $mod, L, splitratio, +0.05
+bind = $mod, RETURN, layoutmsg, swapwithmaster master
bind = $mod, G, centerwindow
bind = $mod, TAB, workspace, previous
bind = $mod SHIFT, C, killactive
# Layouts (from DWM)
-bind = $mod SHIFT, M, exec, hyprctl keyword general:layout master
-bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master
+# monocle [M] - maximize window
+bind = $mod SHIFT, M, fullscreen, 1
+# tile []= - master on left (default master orientation)
+bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation left
+# floating ><> - toggle floating for current window
bind = $mod SHIFT, F, togglefloating
bind = $mod SHIFT, SPACE, togglefloating
+# bstack TTT - master on top
+bind = $mod SHIFT, U, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation top
+# bstackhoriz === - same as bstack in Hyprland
+bind = $mod, U, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation top
+# deck [D] - use dwindle layout as approximation
+bind = $mod SHIFT, D, exec, hyprctl keyword general:layout dwindle
+# centeredmaster |M| - master in center
+bind = $mod SHIFT, I, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation center
+# centeredfloatingmaster >M> - no direct equivalent, use centered master
+bind = $mod SHIFT, O, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation center
# Master layout adjustments
bind = $mod, I, layoutmsg, addmaster
bind = $mod, D, layoutmsg, removemaster
# Gaps (from DWM)
-bind = $mod, MINUS, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq '.int') - 5 ))
-bind = $mod, EQUAL, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq '.int') + 5 ))
-bind = $mod SHIFT, EQUAL, exec, hyprctl keyword general:gaps_out 10
+bind = $mod, MINUS, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq -r '.custom' | cut -d' ' -f1) - 5 )) && hyprctl keyword general:gaps_in $(( $(hyprctl getoption general:gaps_in -j | jq -r '.custom' | cut -d' ' -f1) - 5 ))
+bind = $mod, EQUAL, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq -r '.custom' | cut -d' ' -f1) + 5 )) && hyprctl keyword general:gaps_in $(( $(hyprctl getoption general:gaps_in -j | jq -r '.custom' | cut -d' ' -f1) + 5 ))
+bind = $mod SHIFT, EQUAL, exec, hyprctl keyword general:gaps_out 30 && hyprctl keyword general:gaps_in 25
+bind = $mod SHIFT, MINUS, exec, hyprctl keyword general:gaps_out 0 && hyprctl keyword general:gaps_in 0
# Toggle bar
bind = $mod, B, exec, killall -SIGUSR1 waybar
@@ -185,16 +200,16 @@ bind = $mod, 9, workspace, 9
bind = $mod, 0, workspace, 10
# Move window to workspace (from DWM tag)
-bind = $mod SHIFT, 1, movetoworkspace, 1
-bind = $mod SHIFT, 2, movetoworkspace, 2
-bind = $mod SHIFT, 3, movetoworkspace, 3
-bind = $mod SHIFT, 4, movetoworkspace, 4
-bind = $mod SHIFT, 5, movetoworkspace, 5
-bind = $mod SHIFT, 6, movetoworkspace, 6
-bind = $mod SHIFT, 7, movetoworkspace, 7
-bind = $mod SHIFT, 8, movetoworkspace, 8
-bind = $mod SHIFT, 9, movetoworkspace, 9
-bind = $mod SHIFT, 0, movetoworkspace, 10
+bind = $mod SHIFT, 1, movetoworkspacesilent, 1
+bind = $mod SHIFT, 2, movetoworkspacesilent, 2
+bind = $mod SHIFT, 3, movetoworkspacesilent, 3
+bind = $mod SHIFT, 4, movetoworkspacesilent, 4
+bind = $mod SHIFT, 5, movetoworkspacesilent, 5
+bind = $mod SHIFT, 6, movetoworkspacesilent, 6
+bind = $mod SHIFT, 7, movetoworkspacesilent, 7
+bind = $mod SHIFT, 8, movetoworkspacesilent, 8
+bind = $mod SHIFT, 9, movetoworkspacesilent, 9
+bind = $mod SHIFT, 0, movetoworkspacesilent, 10
# Monitor focus (from DWM focusmon)
bind = $mod, COMMA, focusmonitor, -1
@@ -202,54 +217,63 @@ bind = $mod, PERIOD, focusmonitor, +1
bind = $mod SHIFT, COMMA, movewindow, mon:-1
bind = $mod SHIFT, PERIOD, movewindow, mon:+1
+# ============================================================================
# Scratchpads (from DWM togglescratch)
-# Audio mixer (was MODKEY+a -> spaudio/pulsemixer)
+# ============================================================================
+# Using on-created-empty workspace rules - app launches on first toggle,
+# subsequent toggles just show/hide the workspace
+
+# Workspace rules (auto-launch apps when workspace first accessed)
+workspace = special:term, on-created-empty:foot --app-id foot-term tmux
+workspace = special:audio, on-created-empty:foot --app-id foot-audio pulsemixer
+workspace = special:monitor, on-created-empty:foot --app-id foot-monitor gotop
+workspace = special:music, on-created-empty:foot --app-id foot-music ncmpcpp
+workspace = special:files, on-created-empty:foot --app-id foot-files ranger
+workspace = special:htop, on-created-empty:foot --app-id foot-htop htop
+
+# Keybindings (single bind per scratchpad - just toggle visibility)
+bind = $mod SHIFT, RETURN, togglespecialworkspace, term
bind = $mod, A, togglespecialworkspace, audio
-bind = $mod, A, exec, [workspace special:audio] pgrep -x pulsemixer || st -n spaudio -e pulsemixer
-windowrulev2 = float, class:^(st)$, title:^(spaudio)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spaudio)$
-windowrulev2 = center, class:^(st)$, title:^(spaudio)$
-windowrulev2 = workspace special:audio, class:^(st)$, title:^(spaudio)$
-
-# System monitor (was MODKEY+m -> spmon/gotop)
bind = $mod, M, togglespecialworkspace, monitor
-bind = $mod, M, exec, [workspace special:monitor] pgrep -x gotop || st -n spmon -e gotop
-windowrulev2 = float, class:^(st)$, title:^(spmon)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmon)$
-windowrulev2 = workspace special:monitor, class:^(st)$, title:^(spmon)$
-
-# Music player (was MODKEY+slash -> spmp/ncmpcpp)
bind = $mod, SLASH, togglespecialworkspace, music
-bind = $mod, SLASH, exec, [workspace special:music] pgrep -x ncmpcpp || st -n spmp -e ncmpcpp
-windowrulev2 = float, class:^(st)$, title:^(spmp)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmp)$
-windowrulev2 = workspace special:music, class:^(st)$, title:^(spmp)$
-
-# Terminal scratchpad (was MODKEY+Shift+Return -> spterm/tmux)
-bind = $mod SHIFT, RETURN, togglespecialworkspace, term
-bind = $mod SHIFT, RETURN, exec, [workspace special:term] pgrep -f "st.*spterm" || st -n spterm -e tmux
-windowrulev2 = float, class:^(st)$, title:^(spterm)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spterm)$
-windowrulev2 = workspace special:term, class:^(st)$, title:^(spterm)$
-
-# File manager (was MODKEY+f -> spfm/ranger)
bind = $mod, F, togglespecialworkspace, files
-bind = $mod, F, exec, [workspace special:files] pgrep -x ranger || st -n spfm -e ranger
-windowrulev2 = float, class:^(st)$, title:^(spfm)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spfm)$
-windowrulev2 = workspace special:files, class:^(st)$, title:^(spfm)$
+bind = $mod SHIFT, H, togglespecialworkspace, htop
-# Calculator (was MODKEY+x or MODKEY+c -> qalculate)
+# Window rules (using app-id/class matching, Hyprland 0.53+ syntax)
+# Terminal scratchpad
+windowrule = match:class ^(foot-term)$, float on
+windowrule = match:class ^(foot-term)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(foot-term)$, center on
+
+# Audio mixer
+windowrule = match:class ^(foot-audio)$, float on
+windowrule = match:class ^(foot-audio)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(foot-audio)$, center on
+
+# System monitor
+windowrule = match:class ^(foot-monitor)$, float on
+windowrule = match:class ^(foot-monitor)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(foot-monitor)$, center on
+
+# Music player
+windowrule = match:class ^(foot-music)$, float on
+windowrule = match:class ^(foot-music)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(foot-music)$, center on
+
+# File manager
+windowrule = match:class ^(foot-files)$, float on
+windowrule = match:class ^(foot-files)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(foot-files)$, center on
+
+# Htop
+windowrule = match:class ^(foot-htop)$, float on
+windowrule = match:class ^(foot-htop)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(foot-htop)$, center on
+
+# Calculator (not a scratchpad, just launches app)
bind = $mod, X, exec, qalculate-gtk
bind = $mod, C, exec, qalculate-gtk
-# Htop (was MODKEY+Shift+h -> sptop/htop)
-bind = $mod SHIFT, H, togglespecialworkspace, htop
-bind = $mod SHIFT, H, exec, [workspace special:htop] pgrep -x htop || st -n sptop -e htop
-windowrulev2 = float, class:^(st)$, title:^(sptop)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(sptop)$
-windowrulev2 = workspace special:htop, class:^(st)$, title:^(sptop)$
-
# Media/hardware keys
bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
@@ -277,7 +301,7 @@ bind = $mod, ESCAPE, exec, hyprlock
bind = $mod, F9, exec, toggle-touchpad
# Exit/session (from DWM)
-bind = $mod SHIFT, Q, exec, wofi --show dmenu --prompt "Exit?" -D dmenu/exit="0" < /dev/null && hyprctl dispatch exit
+bind = $mod SHIFT, Q, exec, printf "Exit\nCancel" | fuzzel --dmenu --prompt "Exit Hyprland? " | grep -q "Exit" && hyprctl dispatch exit
bind = $mod SHIFT, BACKSPACE, exit
bind = $mod SHIFT, ESCAPE, exec, hyprctl reload
diff --git a/dotfiles/hyprland/.config/hypr/hyprlock.conf b/dotfiles/hyprland/.config/hypr/hyprlock.conf
index b4dcfb8..4f1c5df 100644
--- a/dotfiles/hyprland/.config/hypr/hyprlock.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprlock.conf
@@ -1,5 +1,6 @@
# Hyprlock configuration
# Matching DWM colors: gray1=#222222, accent=#daa520
+# Using percentages for proportional sizing across monitors
general {
disable_loading_bar = false
@@ -20,22 +21,65 @@ background {
vibrancy_darkness = 0.0
}
+# Clock (top)
+label {
+ monitor =
+ text = $TIME12
+ text_align = center
+ color = rgb(bbbbbb)
+ font_size = 64
+ font_family = BerkeleyMono Nerd Font
+ position = 0, 15%
+ halign = center
+ valign = center
+}
+
+# Profile image
+image {
+ monitor =
+ path = ~/pictures/devilman.jpg
+ size = 120
+ rounding = -1
+ border_size = 3
+ border_color = rgb(daa520)
+ position = 0, 0%
+ halign = center
+ valign = center
+ shadow_passes = 2
+ shadow_size = 3
+ shadow_color = rgba(0, 0, 0, 0.5)
+}
+
+# Username
+label {
+ monitor =
+ text = $USER
+ text_align = center
+ color = rgb(daa520)
+ font_size = 36
+ font_family = BerkeleyMono Nerd Font
+ position = 0, -7%
+ halign = center
+ valign = center
+}
+
+# Password input (no outline)
input-field {
monitor =
- size = 300, 50
- outline_thickness = 3
+ size = 20%, 4%
+ outline_thickness = 0
dots_size = 0.33
dots_spacing = 0.15
dots_center = true
dots_rounding = -1
- outer_color = rgb(444444)
+ outer_color = rgb(222222)
inner_color = rgb(222222)
font_color = rgb(bbbbbb)
fade_on_empty = true
fade_timeout = 1000
placeholder_text = <i>Password...</i>
hide_input = false
- rounding = 0
+ rounding = 8
check_color = rgb(daa520)
fail_color = rgb(d9534f)
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
@@ -45,31 +89,7 @@ input-field {
bothlock_color = -1
invert_numlock = false
swap_font_color = false
- position = 0, -20
- halign = center
- valign = center
-}
-
-label {
- monitor =
- text = $TIME
- text_align = center
- color = rgb(bbbbbb)
- font_size = 64
- font_family = FiraCode Nerd Font Mono
- position = 0, 80
- halign = center
- valign = center
-}
-
-label {
- monitor =
- text = $USER
- text_align = center
- color = rgb(daa520)
- font_size = 20
- font_family = FiraCode Nerd Font Mono
- position = 0, -80
+ position = 0, -12%
halign = center
valign = center
}
diff --git a/dotfiles/hyprland/.config/waybar/config b/dotfiles/hyprland/.config/waybar/config
index 3b3a90f..5481a86 100644
--- a/dotfiles/hyprland/.config/waybar/config
+++ b/dotfiles/hyprland/.config/waybar/config
@@ -3,48 +3,74 @@
"position": "top",
"height": 30,
"spacing": 4,
+ "margin-top": 6,
+ "margin-left": 10,
+ "margin-right": 10,
- "modules-left": ["hyprland/workspaces"],
- "modules-center": ["hyprland/window"],
- "modules-right": ["tray", "battery", "disk", "clock"],
+ "modules-left": [
+ "hyprland/workspaces"
+ ],
+ "modules-center": [],
+ "modules-right": [
+ "group/sysmonitor",
+ "tray",
+ "clock",
+ "wireplumber"
+ ],
+
+ "group/sysmonitor": {
+ "orientation": "horizontal",
+ "modules": [
+ "cpu",
+ "memory",
+ "disk"
+ ]
+ },
"hyprland/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": true,
"format": "{name}",
- "on-click": "activate",
"sort-by-number": true
},
- "hyprland/window": {
- "format": "{}",
- "max-length": 50
+ "cpu": {
+ "interval": 10,
+ "format": "CPU {}%"
},
- "tray": {
- "spacing": 10
- },
-
- "battery": {
- "bat": "BAT0",
+ "memory": {
"interval": 30,
- "states": {
- "warning": 30,
- "critical": 15
- },
- "format": "󱊣 {capacity}% {icon}",
- "format-charging": "󱊣 {capacity}% ",
- "format-plugged": "󱊣 {capacity}% ",
- "format-icons": ["", "", "", "", ""]
+ "format": "MEM {}%"
},
"disk": {
"interval": 30,
- "format": " {used}/{total}",
+ "format": "DSK {percentage_used}%",
"path": "/"
},
+ "tray": {
+ "icon-size": 22,
+ "spacing": 10
+ },
+
"clock": {
- "interval": 30,
- "format": " {:%a %B %d} 󰥔 {:%I:%M %p %Z}",
- "tooltip-format": "<tt>{calendar}</tt>"
+ "format": "{:%a %d-%m-%Y %I:%M %p}",
+ "tooltip-format": "<small>{calendar}</small>",
+ "calendar": {
+ "format": {
+ "today": "<span color='#daa520'><b><u>{}</u></b></span>"
+ }
+ }
+ },
+
+ "wireplumber": {
+ "format": "{volume}% {icon}",
+ "format-muted": "Muted 󰝟",
+ "format-icons": ["", "", ""],
+ "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
+ "on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+",
+ "on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
}
}
diff --git a/dotfiles/hyprland/.config/waybar/style.css b/dotfiles/hyprland/.config/waybar/style.css
index 9411b46..88dd0f8 100644
--- a/dotfiles/hyprland/.config/waybar/style.css
+++ b/dotfiles/hyprland/.config/waybar/style.css
@@ -1,61 +1,88 @@
-/* Waybar style - matching DWM colors */
-/* gray1=#222222, gray2=#444444, gray3=#bbbbbb, gray4=#eeeeee, accent=#daa520 */
+/* Waybar style - Hyprland-Rice inspired with DWM colors */
+/* Based on: github.com/CtrlLuzzio/Hyprland-Rice */
* {
- font-family: "FiraCode Nerd Font Mono", monospace;
- font-size: 12px;
border: none;
border-radius: 0;
+ font-size: 14px;
min-height: 0;
+ font-family: "BerkeleyMono Nerd Font", "Berkeley Mono", monospace;
}
window#waybar {
- background-color: #222222;
- color: #bbbbbb;
+ background: transparent;
}
-#workspaces button {
- padding: 0 8px;
- color: #bbbbbb;
- background-color: transparent;
+#workspaces {
+ padding: 0.2rem;
}
-#workspaces button:hover {
- background-color: #444444;
+#workspaces button {
+ padding: 0.5rem;
+ margin: 0.2rem;
+ background-color: transparent;
+ color: #bbbbbb;
+ border-radius: 1rem;
+ transition: all 0.3s ease;
}
#workspaces button.active {
- color: #eeeeee;
- background-color: #daa520;
+ background: #daa520;
+ color: #222222;
+ border-radius: 1rem;
}
#workspaces button.urgent {
- background-color: #900000;
+ background-color: rgba(255, 88, 88, 0.4);
}
-#window {
- color: #bbbbbb;
- padding: 0 10px;
+.modules-right, .modules-left {
+ background-color: #222222;
+ border-radius: 1rem;
+ padding: 0.2rem 0.6rem;
+ margin: 0.3rem;
+ border: 0.095rem solid #daa520;
+ box-shadow: 0rem 0.2rem 0.4rem rgba(0,0,0,0.5);
}
-#clock,
-#battery,
+#cpu,
+#memory,
#disk,
-#tray {
- padding: 0 10px;
+#wireplumber,
+#tray,
+#clock {
+ padding: 0.4rem;
+ margin: 0.3rem;
color: #bbbbbb;
+ background-color: transparent;
+ border-radius: 1rem;
}
-#battery.charging {
- color: #daa520;
+#sysmonitor {
+ margin: 0.3rem;
+ background-color: transparent;
+ border-radius: 1rem;
}
-#battery.warning:not(.charging) {
- color: #f0ad4e;
+#cpu:hover,
+#memory:hover,
+#disk:hover,
+#wireplumber:hover,
+#sysmonitor:hover {
+ background-color: #444444;
+ border-radius: 1rem;
+}
+
+#clock {
+ color: #eeeeee;
+}
+
+#wireplumber {
+ color: #daa520;
}
-#battery.critical:not(.charging) {
- color: #d9534f;
+#wireplumber.muted {
+ color: #666666;
}
#tray > .passive {
diff --git a/dotfiles/hyprland/.gnupg/gpg-agent.conf b/dotfiles/hyprland/.gnupg/gpg-agent.conf
new file mode 100644
index 0000000..068f889
--- /dev/null
+++ b/dotfiles/hyprland/.gnupg/gpg-agent.conf
@@ -0,0 +1,18 @@
+# Pinentry configuration (Wayland/Hyprland)
+pinentry-program ~/.local/bin/pinentry-fuzzel
+pinentry-timeout 10
+allow-loopback-pinentry
+
+# Cache passphrases for entire login session (400 days)
+default-cache-ttl 34560000
+max-cache-ttl 34560000
+
+# Enable SSH support (use gpg-agent for SSH keys too)
+enable-ssh-support
+
+# Prevent external programs from clearing cache
+no-allow-external-cache
+
+# Keep running even when no connections
+keep-display
+keep-tty
diff --git a/dotfiles/hyprland/.local/bin/pinentry-fuzzel b/dotfiles/hyprland/.local/bin/pinentry-fuzzel
new file mode 100755
index 0000000..4cbe6b7
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/pinentry-fuzzel
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+ENABLE_LOGGING="TRUE"
+logger() {
+ if [ "$ENABLE_LOGGING" == "TRUE" ]; then
+ /usr/bin/logger -t "${0} [$]" "$@";
+ fi
+}
+
+# Decode URL-encoded characters (%0A = newline, %20 = space, etc.)
+decode() {
+ printf '%b' "$(echo "$1" | sed 's/%\([0-9A-Fa-f][0-9A-Fa-f]\)/\\x\1/g')"
+}
+
+# Base command and misc variables
+DESC=""
+PROMPT=""
+COUNTFILE="/tmp/pinentry-fuzzel-count-$$"
+
+# Check if this is a repeat prompt (within 5 seconds of last)
+LASTFILE="/tmp/pinentry-fuzzel-last"
+NOW=$(date +%s)
+if [ -f "$LASTFILE" ]; then
+ LAST=$(cat "$LASTFILE")
+ if [ $((NOW - LAST)) -lt 5 ]; then
+ REPEAT=1
+ else
+ REPEAT=0
+ fi
+else
+ REPEAT=0
+fi
+echo "$NOW" > "$LASTFILE"
+
+echo "OK Please go ahead"
+while read cmd rest; do
+ logger "RAW=< ${cmd} ${rest} >"
+ logger "cmd=<${cmd}> rest=<${rest}>"
+
+ case $cmd in
+ GETINFO)
+ case "$rest" in
+ flavor)
+ echo "D fuzzel"
+ echo "OK"
+ ;;
+ version)
+ echo "D 0.1"
+ echo "OK"
+ ;;
+ ttyinfo)
+ echo "D - - -"
+ echo "OK"
+ ;;
+ pid)
+ echo "D $$"
+ echo "OK"
+ ;;
+ esac
+ ;;
+
+ SETDESC)
+ DESC=$(decode "$rest")
+ echo "OK"
+ ;;
+
+ SETERROR)
+ logger "ERROR $rest"
+ # Silently acknowledge errors (e.g., empty passphrase on escape)
+ echo "OK"
+ ;;
+
+ SETPROMPT)
+ PROMPT=$(decode "$rest")
+ # Remove trailing colon if present (we add our own)
+ PROMPT="${PROMPT%:}"
+ echo "OK"
+ ;;
+
+ GETPIN | getpin)
+ if [ "$REPEAT" -eq 0 ]; then
+ LABEL="password: "
+ else
+ LABEL="reenter: "
+ fi
+ PASS=$(fuzzel --prompt "$LABEL" --width 25 --lines 0 --cache /dev/null --password --dmenu)
+ if [ -z "$PASS" ]; then
+ # User cancelled - return error to GPG
+ rm -f "$LASTFILE"
+ echo "ERR 83886179 Operation cancelled"
+ else
+ echo "D $PASS"
+ echo "OK"
+ fi
+ ;;
+
+ BYE|bye)
+ echo "OK closing connection"
+ logger "EXITING"
+ exit 0
+ ;;
+
+ *)
+ echo "OK"
+ ;;
+ esac
+done
diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Bold.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Bold.ttf
new file mode 100644
index 0000000..2f76c1f
--- /dev/null
+++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Bold.ttf
Binary files differ
diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf
new file mode 100644
index 0000000..03cf72f
--- /dev/null
+++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf
Binary files differ
diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf
new file mode 100644
index 0000000..be5694d
--- /dev/null
+++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf
Binary files differ
diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf
new file mode 100644
index 0000000..a39f1da
--- /dev/null
+++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf
Binary files differ