aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/hyprland/.local
Commit message (Collapse)AuthorAgeFilesLines
* refactor: drop in-repo dotfiles/, move stow tooling to the dotfiles repoCraig Jennings2026-06-02119-1796/+0
| | | | | | | | Since the installer clones DOTFILES_REPO into ~/.dotfiles and stows from there, the in-repo dotfiles/ tree was dead weight. Nothing reads it at install time. I removed it (831 files) now that both machines are migrated. The Makefile's stow / restow / reset / unstow / import targets and the dotfile-script unit suites moved to the dotfiles repo. They sit alongside the scripts they manage and run standalone (cd ~/.dotfiles && make ...). This Makefile keeps the VM-integration targets and the installer-helper suite (safe-rm-rf). I updated CLAUDE.md and README.md so stow operations run from ~/.dotfiles, and the dotfile-management, theme, and unit-test sections point at the standalone repo. The README was already describing the old in-repo model from before the installer switched to cloning. This brings it in line.
* feat(notify): add --silent flag, volume knob, and level sound filesCraig Jennings2026-05-211-2/+2
| | | | | | | | The touchpad toggle's notification was too loud, and the eight notify sounds varied by ~13 dB in RMS loudness — bug and fail came out two to three times louder than info or security. I added a --silent flag to notify (shows the popup, plays no sound) and a NOTIFY_VOLUME knob (paplay scale, default 65536) so the master level can drop without re-encoding. toggle-touchpad now passes --silent on both enable and disable. normalize-notify-sounds.sh measures each .ogg and shifts it to a uniform -31 dB mean. It writes through the file instead of mv-ing over it, so the stow symlinks survive when the script runs against the live sound dir. I re-encoded all eight sounds to the new level. Tests: a new tests/notify suite (12 tests) covers --silent, the volume knob, flag composition, and the error paths.
* feat(hyprland): add airplane-mode waybar toggleCraig Jennings2026-05-212-0/+143
| | | | | | | | I added a laptop-only waybar button that drops the machine into a low-power state and restores it on a second click. Engaging turns wifi off, sets the CPU energy-performance preference to power, dims the backlight to 35%, and stops network-only services (tailscale, proton-vpn, avahi, cups, wsdd, geoclue, sshd, fail2ban, syncthing). Bluetooth is left alone so earbuds keep working. Disengaging replays the state recorded when airplane mode was engaged rather than writing hardcoded defaults. A lever already in its low-power position is left untouched: wifi that was already off stays off, and a service that was already stopped isn't restarted. The indicator hides itself on machines with no battery, so desktops never show the button. State lives in $XDG_RUNTIME_DIR/airplane-state, and the bar refreshes the moment the toggle fires via a realtime signal.
* feat(hyprland): add touchpad state indicator to waybarCraig Jennings2026-05-203-0/+93
| | | | | | | | The $mod+F9 toggle and the toggle-touchpad / touchpad-auto scripts already worked, but the scripts lived only in ~/.local/bin and were never committed, and there was no way to see the touchpad's state at a glance. I committed both scripts into the repo so stow installs them, and added a waybar indicator: a waybar-touchpad status script and a custom/touchpad module that shows a mouse glyph when the touchpad is on and a mouse-off glyph (in the dupre orange) when it's off. The scripts signal the module with pkill -RTMIN+9 waybar after each state change, so the icon updates the moment the touchpad toggles. touchpad-auto now runs at login via exec-once. The waybar-touchpad script has unit tests under tests/waybar-touchpad/ covering the enabled, disabled, and missing-state-file cases.
* fix(hyprland): Escape special workspace on navigateCraig Jennings2026-04-241-1/+19
| | | | | | | | | | | | | When focus is inside a special workspace (e.g. special:stash), layoutmsg cyclenext/cycleprev only operates within that workspace, trapping $mod+J inside the scratchpad overlay. Detect workspace name starting with "special:" on focus navigation (not move), toggle the overlay off first, re-read active window state, then fall through to the normal layout/floating branches. Add unit tests with a fake hyprctl harness in tests/layout-navigate/. ```
* feat: Zoom HiDPI scaling and Hyprland window rulesCraig Jennings2026-04-111-0/+13
| | | | | Add Zoom.desktop override with QT_SCALE_FACTOR=1.5 for HiDPI displays. Float all Zoom windows and fix disappearing popup menus.
* fix(hyprland): escape floating window focus trap in layout-navigateCraig Jennings2026-04-091-0/+11
| | | | | | layoutmsg cyclenext only operates on tiled windows, so $mod+J was a no-op when focus was on a floating/pinned scratchpad. Detect floating state and use cyclenext dispatcher instead.
* feat: comprehensive mime type associations with emacsclient defaultsCraig Jennings2026-03-071-0/+13
| | | | | | | Merge all mime associations into mimeapps.list as single source of truth. Set emacsclient as default for all text/code files. Add TypeScript mime override, emacsclient.desktop with fixed Exec line, and simplify resetmimetypes to just restow + rebuild caches.
* feat(hyprland): remove plugins, add layout cyclingCraig Jennings2026-03-073-56/+35
| | | | | | | | Hyprland 0.54 brings scrolling and monocle layouts into core, making hyprpm plugins unnecessary. Remove hyprland-plugins-setup, focus-restore, hyprpm pacman hook, and allfloat keybinding. Add layout-cycle script and $mod+Shift+Arrow keybindings to cycle master/scrolling/monocle. Move cpio to System Utilities section.
* fix: update layout-resize and waybar-netspeed for 0.54Craig Jennings2026-03-072-14/+17
| | | | | | | | layout-resize: replace removed splitratio dispatcher with layoutmsg mfact for master layout resizing. waybar-netspeed: replace iwgetid/proc/net/wireless with iw commands for SSID and signal strength (old tools no longer populated by kernel).
* feat(hyprland): update plugins for 0.54, add scratchpad hide_delayCraig Jennings2026-03-071-11/+12
| | | | | Remove hyprscrolling from plugin setup (now in core). Add hide_delay workaround for pyprland bug #211 to all scratchpads.
* feat(hyprland): add monocle layout support, fix scrolling keybindingsCraig Jennings2026-03-074-5/+35
| | | | | Add monocle to layout cycle and waybar indicator. Fix scrolling layout move (swapwindow) and resize (resizeactive). Add layout-resize script.
* fix(hyprland): load plugins on every session startCraig Jennings2026-02-161-1/+2
| | | | | hyprland-plugins-setup was skipping hyprpm reload when plugins were already enabled, so they were never loaded into the running session.
* fix(waybar): reduce spacing between months in date tooltipCraig Jennings2026-02-111-3/+3
|
* feat(waybar): add day abbreviation to world clock tooltipCraig Jennings2026-02-111-1/+1
|
* feat(hyprland): add pyprland config and toggle-scratchpad to stowCraig Jennings2026-02-111-0/+40
| | | | | Scratchpads set to 50% width (music at 60%). Adds toggle-scratchpad utility for waybar click handling.
* feat(waybar): split clock into date + world clock modulesCraig Jennings2026-02-102-0/+54
| | | | | | | Replace single clock module with custom/date (calendar tooltip) and custom/worldclock (multi-timezone tooltip from worldclock.conf). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(hyprland): add scratchpad refocus on window closeCraig Jennings2026-02-091-0/+24
| | | | | IPC listener detects closewindow events and refocuses the visible scratchpad (special workspace) instead of falling to a regular window.
* feat(archsetup): add slack with Wayland/DWM conditionalCraig Jennings2026-02-081-0/+12
| | | | | | Add slack-desktop-wayland for Hyprland, slack-desktop for DWM. Update Claude startup prompts, fix Hyprland portal/waybar startup order, add signal-desktop Wayland .desktop override.
* feat(hyprland): waybar scratchpad toggles, remove hy3, fix cursor warpCraig Jennings2026-02-066-105/+2
| | | | | | | | | Waybar modules now toggle pyprland scratchpads on click: sysmonitor group opens btop, netspeed opens nmtui, pulseaudio opens pulsemixer. Consolidated pyprland config to canonical ~/.config/pypr/config.toml. Removed hy3 plugin from all configs and scripts (disabled since crash). Added $mod+N for network scratchpad. Set cursor:no_warps to prevent cursor jumping to window center on focus change.
* feat(hyprland): install plugins on first login via setup scriptCraig Jennings2026-02-011-0/+61
| | | | | | | | hyprpm requires running Hyprland to determine version for plugin compilation. Move plugin installation from archsetup to a first-login script (hyprland-plugins-setup) that runs via exec-once. Script checks if plugins are already installed and skips if so. Update validation to check for setup script presence instead of enabled plugins.
* fix(hyprland): auto-rebuild plugins and preserve stash master positionCraig Jennings2026-01-311-4/+12
| | | | | | | - Add pacman hook to rebuild hyprpm plugins after Hyprland updates - Change startup to hyprpm update -n (rebuilds if needed) - Fix stash-restore to preserve master window using batch commands - Add validation tests for plugins and hyprpm hook
* feat(hyprland): add pyprland for scratchpads, magnify, and window stashingCraig Jennings2026-01-293-0/+26
| | | | | | | Replace native special workspace scratchpads with pyprland to fix issue where new windows were captured by visible scratchpads. Add magnify on mod+Z and window stash scripts (mod+O to stash, mod+Alt+O stash others, mod+Shift+O restore).
* fix(hyprland): simplify monitor scratchpad to btop onlyCraig Jennings2026-01-291-36/+2
| | | | | | | Remove tmux session and other monitoring tools (s-tui, nvtop, duf, bandwhich, wavemon, powertop). Just run btop directly. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(keyring,hyprpm): use template keyring, fix hyprpm warningCraig Jennings2026-01-291-46/+0
| | | | | | | | | | | | | | Keyring: - Add empty-password login.keyring template to dotfiles - Remove init-keyring script (secretstorage API requires prompting) - Remove python-secretstorage dependency - Remove PAM gnome-keyring config (not needed with template approach) Hyprpm: - Only run hyprpm reload if plugins are installed - Prevents "Failed to load plugins" warning on fresh installs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(hyprland): resolve autologin startup issuesCraig Jennings2026-01-291-0/+46
| | | | | | | | | | | | - Use start-hyprland wrapper instead of Hyprland directly (fixes "started without start-hyprland" warning) - Add init-keyring script to create empty-password keyring (fixes keyring password prompt with autologin) - Add easyeffects config with noWindowAfterStarting=true (starts minimized instead of fullscreen) - Install python-secretstorage for init-keyring script Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(dotfiles): move easyeffects presets to correct locationCraig Jennings2026-01-283-0/+637
| | | | | EasyEffects stores presets in ~/.local/share/easyeffects/output/, not ~/.config/easyeffects/output/. Moved presets to correct path.
* feat(hyprland): add monitor-dashboard, remove htop scratchpadCraig Jennings2026-01-281-0/+37
| | | | | | - Monitor scratchpad now launches monitor-dashboard (tmux session with btop, s-tui, nvtop, duf, bandwhich, wavemon, powertop) - Remove htop scratchpad ($mod+Shift+H now free)
* fix(hyprland): add persistent logging and fix waybar/script issuesCraig Jennings2026-01-283-8/+30
| | | | | | | | | | - Add persistent logging for waybar, dunst, hypridle, gammastep to ~/.local/var/log/ - Create start-hyprland wrapper script for Hyprland logging - Fix waybar-layout and toggle-scratchpad to auto-detect Hyprland socket - Add swap-icon-label: false to waybar group, remove height setting - Fix GTK CSS margin units (1 → 1px) to silence deprecation warning - Add battery detection in archsetup to exclude module on desktops - Update cursor theme to Bibata-Modern-Ice size 24
* feat(hyprland): add focus-restore script to preserve master on mod+shift+oCraig Jennings2026-01-271-0/+9
| | | | | | | | | The xtra-dispatchers bringallfrom dispatcher doesn't preserve window positions, displacing the focused window from master. The new script captures the focused window address, brings all windows back, then swaps the original window back to master. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): add hy3 tab bar theme colors and boot-time theme applyCraig Jennings2026-01-271-4/+14
| | | | | | | | | Add static plugin { hy3 { tabs { ... } } } block with full color set including border, focused, and darkened inactive tab colors. Eliminates default cyan borders. Update set-theme with matching colors for both dupre and hudson themes. Add exec-once set-theme to reapply theme on boot. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(fuzzel): use dupre red border on pinentry password promptCraig Jennings2026-01-271-1/+1
| | | | | | | | Add --border-color=d47c59ff (dupre red) and widen from 25 to 35 characters in pinentry-fuzzel so the password dialog stands out from normal fuzzel usage and accommodates longer passwords. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(waybar): add warning/critical color thresholds for temperature and diskCraig Jennings2026-01-271-0/+7
| | | | | | | | Temperature turns yellow at 70°C, red at 80°C using built-in waybar states. Disk replaced with custom script that turns yellow at 80% full, red at 90%, working across ZFS/btrfs/ext4. Colors themed per dupre/hudson. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(screenshot): use ISO 8601 date format in filenamesCraig Jennings2026-01-271-1/+1
| | | | | Changed from 2026.01.27-HHMMSS to 2026-01-27_HHMMSS for standard date formatting and clean date/time separation.
* fix(screenshot): explicit mime types for wl-copyCraig Jennings2026-01-271-2/+2
| | | | | Added --type text/plain for path copy and --type image/png for image copy to prevent wl-copy from misinterpreting content.
* feat(hyprland): screenshot script with fuzzel menuCraig Jennings2026-01-271-0/+23
| | | | | | Replaced inline grim/satty keybindings with screenshot script that captures to file then presents fuzzel menu: Copy Path, Copy Image, or Annotate. Bindings: $mod+S (region), $mod+Print (fullscreen).
* fix(waybar): show red network icon when disconnectedCraig Jennings2026-01-271-1/+1
| | | | | Added themed disconnected color to netspeed module CSS across base, dupre, and hudson styles. Changed disconnected label to "Offline".
* chore(hyprland): remove unused power-menu scriptCraig Jennings2026-01-261-45/+0
| | | | | | Using wlogout for power/session management instead. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): prune app menu and switch to Nautilus file managerCraig Jennings2026-01-2689-0/+188
| | | | | | | | | | | | | - Add 90 desktop file overrides (NoDisplay=true) to hide unwanted apps - Switch file manager from Thunar to Nautilus in hyprland.conf and sxhkdrc - Update resetmimetypes script to use Nautilus for directories - Remove Thunar config (accels.scm, uca.xml) - Remove unused torrent.desktop - Add hyprland.sh profile with Wayland environment overrides - Rename calibre-ebook-viewer to "Calibre E-book Viewer" in menu - Update gammastep to gammastep-indicator for tray control Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): add wlogout exit menu with dupre themeCraig Jennings2026-01-261-0/+45
| | | | | | | | | - Add wlogout config with nerd font icons and dupre colors - Add wofi power-menu as alternative (disabled) - Use pgrep to prevent multiple instances - Theme: gold highlight on hover, invisible borders Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): set trondheim-norway.jpg as default wallpaperCraig Jennings2026-01-261-0/+3
| | | | | Update both hyprland.conf startup and set-theme script to use trondheim-norway.jpg as the default wallpaper.
* feat(themes): standardize fonts and add hy3 tab bar themingCraig Jennings2026-01-261-0/+16
| | | | | | | | - Standardize font to BerkeleyMono Nerd Font size 13pt across configs - Add unit comments (points vs pixels) to font settings - Add hy3 tab bar colors to set-theme for dupre and hudson themes - Add GTK file chooser sort-directories-first to archsetup - Update todo.org with completed tasks and new test task
* feat(themes): add hyprlock and Xresources to theme systemCraig Jennings2026-01-251-0/+5
| | | | | | | | | | | | | Add themed configs for: - hyprlock.conf: lock screen colors match theme - Xresources: X11 apps and Emacs color support Update set-theme script to copy these files and run xrdb. Hudson uses adjusted bright yellow (#e0b040) for gold cohesion. Removed gruvbox references from Xresources. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): add theme switching between dupre and hudsonCraig Jennings2026-01-251-0/+119
| | | | | | | | | | | | | | | | | | | Add two complete themes: - dupre: warm earthy colors from Emacs dupre-theme.el - hudson: Tomorrow Night + Goldenrod accent (original) Theme files cover: foot, fuzzel, waybar, dunst, hyprland borders. Add set-theme script with: - set-theme <name>: apply a theme - set-theme --toggle: switch between themes - set-theme --pick: fuzzel picker Keybindings: - $mod Y: toggle theme - $mod Shift Y: pick theme with fuzzel Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(waybar): redesign network module with connection type iconsCraig Jennings2026-01-251-18/+33
| | | | | | | | Show WiFi icon (with signal strength) + SSID, or ethernet icon + interface name. Move upload/download speeds to tooltip for cleaner display. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(hyprland): preserve j/k direction in master layoutCraig Jennings2026-01-251-4/+5
| | | | | | | | Swap directions only in scrolling layout, not master. - Master: J=next (down), K=prev (up) - original behavior - Scrolling: J=left, K=right - swapped for intuitive scroll Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): add plugins and simplify layoutsCraig Jennings2026-01-253-60/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | Plugins installed via hyprpm: - hy3: i3-style manual tiling with tab groups (monocle) - hyprscrolling: PaperWM-style horizontal scrolling - xtra-dispatchers: throwunfocused, bringallfrom, closeunfocused Layout system simplified to 4 modes: - Master (tile) - default DWM-style - Tab group (monocle) - via hy3 plugin - Scrolling - horizontal columns - Floating New scripts: - layout-navigate: layout-aware j/k navigation - Updated cycle-layout: cycles through 4 layouts - Updated waybar-layout: icons for new layouts Other changes: - Add hyprpm reload to startup - Add cpio and fc-cache to archsetup - Remove SSH fuzzel picker (conflicted with scrolling keybind) - Add slidevert animation for scratchpads - Update todo.org with plugin evaluation notes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(waybar): enhance status bar with icons, modules, and interactivityCraig Jennings2026-01-254-0/+165
| | | | | | | | | | | | | | | | | - Add nerd font icons (large size) for cpu, memory, disk, temperature, volume - Add temperature module next to CPU in sysmonitor group - Add battery module with warning/critical states - Add custom netspeed module with fixed-width output and SSID tooltip - Add layout indicator with clickable cycling through layouts - Add window title module to left panel - Add network scratchpad with nmtui (click netspeed to toggle) - Add toggle-scratchpad script to handle focus-loss auto-close - Make sysmonitor modules clickable to toggle monitor scratchpad - Add right-click on volume to toggle audio scratchpad - Update clock format to "Sun, Jan 25 2025 08:04 PM CST" - Remove nm-applet from autostart (replaced by nmtui scratchpad) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): add fuzzel launcher and pinentry-fuzzelCraig Jennings2026-01-251-0/+107
- Replace wofi with fuzzel in archsetup - Add fuzzel config with waybar-matching theme - Add pinentry-fuzzel script for GPG passphrase prompts - Add Hyprland-specific gpg-agent.conf using pinentry-fuzzel