diff options
Diffstat (limited to 'dotfiles')
| -rw-r--r-- | dotfiles/hyprland/.config/foot/foot.ini | 38 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/fuzzel/fuzzel.ini | 31 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/hypr/hyprland.conf | 170 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/hypr/hyprlock.conf | 78 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/waybar/config | 76 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/waybar/style.css | 83 | ||||
| -rw-r--r-- | dotfiles/hyprland/.gnupg/gpg-agent.conf | 18 | ||||
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/pinentry-fuzzel | 107 | ||||
| -rw-r--r-- | dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Bold.ttf | bin | 0 -> 2294328 bytes | |||
| -rw-r--r-- | dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf | bin | 0 -> 2295172 bytes | |||
| -rw-r--r-- | dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf | bin | 0 -> 2294116 bytes | |||
| -rw-r--r-- | dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..2f76c1f --- /dev/null +++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Bold.ttf diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf Binary files differnew file mode 100644 index 0000000..03cf72f --- /dev/null +++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-BoldItalic.ttf diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf Binary files differnew file mode 100644 index 0000000..be5694d --- /dev/null +++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Italic.ttf diff --git a/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf Binary files differnew file mode 100644 index 0000000..a39f1da --- /dev/null +++ b/dotfiles/system/.local/share/fonts/BerkeleyMonoNerdFont-Regular.ttf |
