summaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org436
1 files changed, 234 insertions, 202 deletions
diff --git a/todo.org b/todo.org
index e54d8ed..a2220d7 100644
--- a/todo.org
+++ b/todo.org
@@ -120,82 +120,58 @@ The script handles edge cases gracefully, provides detailed error messages with
*Why this is Method 1:* Can't build testing infrastructure or maintain packages if the script doesn't work. This is the foundation—everything else depends on reliable execution.
*** TODO [#A] Make Hyprland Bulletproof and Comfy
-**** DONE [#A] Fix Hyprland Configuration Issues
-CLOSED: [2026-01-25 Sun]
-All critical issues resolved. Remaining sub-items are "consider" tasks for future enhancements.
-
-***** DONE [#B] Consider Hyprland Plugins
-CLOSED: [2026-01-25 Sun]
-Official plugins: https://github.com/hyprwm/hyprland-plugins
-Install via hyprpm (added cpio dependency to archsetup).
-
-Interesting plugins:
-****** hyprscrolling (INTERESTED)
-Arranges windows in vertical columns that scroll horizontally - like a paper tape.
-Instead of tiling in a grid, windows line up side-by-side and you scroll through them.
-Note: Still marked "work in progress" - may have rough edges.
+**** TODO [#C] Remove border color from dunst notifications
+Dunst notification popups have a visible border that looks out of place.
+Remove or disable the border color to match the clean aesthetic.
-Options:
-- column_width: default column width (0.5 = half monitor)
-- explicit_column_widths: widths to cycle through ("0.333, 0.5, 0.667, 1.0")
-- fullscreen_on_one_column: maximize when only one column
-- focus_fit_method: 0=center focused column, 1=just fit on screen
-- follow_focus: auto-scroll when focusing a window
+**** TODO [#C] Change fuzzel border color for visibility
+Fuzzel menu border blends in too much. Change border color to blue or red
+to make the menu more visible when it appears.
-****** xtra-dispatchers (INTERESTED)
-Adds 4 new dispatcher commands:
-
-| Dispatcher | What it does |
-|-------------------------------------+-----------------------------------------------|
-| plugin:xtd:moveorexec WINDOW,CMD | Move window here, or launch if not running |
-| plugin:xtd:throwunfocused WORKSPACE | Send all unfocused windows away (focus mode!) |
-| plugin:xtd:bringallfrom WORKSPACE | Bring all windows from another workspace |
-| plugin:xtd:closeunfocused | Close all unfocused windows |
-
-throwunfocused is useful for focus mode - declutter workspace, then bringallfrom to restore.
-closeunfocused is handy for cleaning up.
-
-****** Other official plugins
-- hyprbars: window title bars
-- hyprexpo: workspace overview (like macOS Mission Control)
-- hyprfocus: flash effect when changing focus
-- hyprtrails: window trail effects (eye candy)
-- borders-plus-plus: extra border layers (cosmetic)
-- hyprwinwrap: use any app as wallpaper
+**** TODO [#D] Consider Customizing Hyprland Animations
+Current: windows pop in, scratchpads slide from bottom.
-***** DONE [#C] Evaluate Hyprland Layout Options
-CLOSED: [2026-01-25 Sun]
-Current layouts: master (left/top/center), dwindle. No deck layout available natively.
+Customizable animations:
+- windows / windowsOut / windowsMove - window open/close/move
+- fade - opacity changes
+- border / borderangle - border color and gradient angle
+- workspaces - workspace switching
+- specialWorkspace - scratchpads (currently slidevert)
+- layers - waybar, notifications, etc.
-Options to consider:
-1. Restrict to commonly used layouts only (remove unused from cycle)
-2. Add hy3 plugin for i3-style manual tiling (horizontal/vertical/tab groups)
+Styles: slide, slidevert, popin X%, fade
+Parameters: animation = NAME, ON/OFF, SPEED, BEZIER, STYLE
+Speed: lower = faster (1-10 typical)
-hy3 plugin:
-- URL: https://github.com/outfoxxed/hy3
-- Provides: horizontal splits, vertical splits, tab groups, autotiling
-- Does NOT provide deck layout
-- Requires different dispatchers (hy3:movefocus, hy3:makegroup, etc.)
+Example tweaks:
+#+begin_src conf
+animation = windows, 1, 2, myBezier, popin 80%
+animation = workspaces, 1, 4, default, slide
+animation = fade, 1, 2, default
+animation = layers, 1, 2, default, fade
+#+end_src
-Other layout plugins (none have deck):
-- hyprNStack: N-stack tiling
-- hyprscroller: PaperWM-style scrolling
-- hyprRiver: River-inspired layouts
+**** VERIFY [#D] Test wlogout menu on laptop
+Test wlogout exit menu on laptop to verify sizing works on different display.
+Current config uses fixed pixel margins - may need adjustment for laptop screen.
-Decision: Keep current setup or adopt hy3 for more flexible manual tiling.
+**** VERIFY [#D] Test hy3 tab bar theming colors
+Test the monocle/tab group mode to verify hy3 tab bar colors look correct with dupre and hudson themes.
+Run =set-theme dupre= and =set-theme hudson= while in tab group mode ($mod SHIFT M).
-***** TODO [#C] Consider Pywal for Dynamic Theming
+**** CANCELLED [#C] Consider Pywal for Dynamic Theming
+CLOSED: [2026-01-26 Mon]
Use pywal to generate color schemes from wallpaper. Reference: reference-repos/kastrbl4nik-dots/
Tools: swww (wallpaper), wal (colors), pywalfox (Firefox), pywal-spicetify (Spotify)
-****** How pywal works
+***** How pywal works
1. Run =wal -i /path/to/wallpaper.jpg=
2. Analyzes image and extracts 16-color palette
3. Colors written to =~/.cache/wal/colors.json= (and other formats)
4. Apps read from these files or use templates that pywal fills in
-****** Reverting to original theme
+***** Reverting to original theme
Pywal doesn't overwrite original configs - you either:
- Use templates (pywal fills in colors, copies to config locations)
- Have configs that source from =~/.cache/wal/= files
@@ -204,14 +180,14 @@ Pywal doesn't overwrite original configs - you either:
Save/restore themes: =wal --theme= lists saved themes, =wal -f theme-name= restores.
Could save current goldenrod scheme and switch back anytime.
-****** Emacs integration
+***** Emacs integration
- Pywal works with Emacs but requires extra setup
- =ewal= package reads pywal colors from =~/.cache/wal/colors.json= and creates Emacs theme
- Terminal Emacs (=-nw=) inherits terminal colors automatically
- GUI Emacs (emacsclient -c) needs ewal or similar explicit integration
- Adds complexity; replaces carefully-tuned theme with auto-generated colors
-****** Auto-trigger on wallpaper change
+***** Auto-trigger on wallpaper change
Option 1 - Wrapper script (simplest):
#+begin_src sh
#!/bin/sh
@@ -227,43 +203,21 @@ Waypaper has post-command setting in config - set to run =wal -i= after wallpape
Option 3 - File watcher:
Watch =~/.cache/swww/= for changes and trigger wal automatically. More complex.
-****** Considerations
+***** Considerations
- Best for: unified colors across apps, variety, matching wallpaper
- Less ideal for: specific color scheme you love, consistency, carefully tuned app colors
- Some wallpapers produce great palettes; others produce muddy low-contrast results
- Current goldenrod/dark gray theme works well - pywal would replace it
-***** TODO [#D] Consider improving waybar netspeed click responsiveness
+**** CANCELLED [#D] Consider improving waybar netspeed click responsiveness
+CLOSED: [2026-01-26 Mon]
The network module has a 1-second sleep to measure throughput, causing occasional
missed clicks when toggling the scratchpad. Options if this becomes annoying:
1. Increase interval (fewer refreshes = fewer missed clicks, less frequent updates)
2. Background daemon approach (separate process writes to file, script just reads it)
Current interval: 2 seconds. Script runtime: ~1 second.
-***** TODO [#C] Consider Customizing Hyprland Animations
-Current: windows pop in, scratchpads slide from bottom.
-
-Customizable animations:
-- windows / windowsOut / windowsMove - window open/close/move
-- fade - opacity changes
-- border / borderangle - border color and gradient angle
-- workspaces - workspace switching
-- specialWorkspace - scratchpads (currently slidevert)
-- layers - waybar, notifications, etc.
-
-Styles: slide, slidevert, popin X%, fade
-Parameters: animation = NAME, ON/OFF, SPEED, BEZIER, STYLE
-Speed: lower = faster (1-10 typical)
-
-Example tweaks:
-#+begin_src conf
-animation = windows, 1, 2, myBezier, popin 80%
-animation = workspaces, 1, 4, default, slide
-animation = fade, 1, 2, default
-animation = layers, 1, 2, default, fade
-#+end_src
-
-***** CANCELLED [#D] Consider "show desktop" toggle via empty special workspace
+**** CANCELLED [#D] Consider "show desktop" toggle via empty special workspace
CLOSED: [2026-01-25 Sun 21:13]
I think what I really want is the throw to other workspace dispatcher.
@@ -274,34 +228,139 @@ Implementation:
bind = $mod, Z, togglespecialworkspace, desktop
#+end_src
-***** DONE Scratchpads not spawning on keybind
+**** DONE [#B] waybar's temperature monitor should change color when hot.
+Consider the temperature at which the CPU is getting "too hot". define two temperature thresholds that are "approaching too hot" (when the user should begin paying attention) and "nearly too hot" (when it's approaching a temperature where the user should take action). have the color change to yellow when it's approaching the first threshold, and red when it approaches the second. we'll be using themed colors from the dupre theme.
+
+**** DONE [#B] waybar's storage monitor should change color when approaching full.
+waybar's storage monitor should change color when it approaches full, to allow the user to take action. note that since this system could be running on zfs, btrfs, and ext4 file systems, this should work no matter which of these filesystems we are running on. When storage is at or over 80% full, the color of the storage icon on the waybar panel should turn yellow. When the storage is at or over 90$ full, it should be red. we'll be using themed colors form the dupre theme.
+
+**** DONE [#A] Change cursor theme (curren theme's cross too small for screenshots)
+CLOSED: [2026-01-27 Tue]
+Switched to Bibata-Modern-Ice across all configs (hyprland, Xresources, GTK, archsetup).
+**** DONE [#B] new master windows do not have focus
+CLOSED: [2026-01-27 Tue]
+Added focus_on_activate = true to misc section in hyprland.conf.
+
+**** DONE [#B] screenshot functionality should leave path of last image in the clipboard ready to paste.
+CLOSED: [2026-01-27 Tue]
+Created screenshot script with fuzzel menu offering Copy Path, Copy Image, and Annotate.
+**** DONE [#B] screenshot functionality should also bind shift printscreen to select region.
+CLOSED: [2026-01-27 Tue]
+Replaced with $mod+S (region) and $mod+Print (fullscreen), both using fuzzel menu.
+**** DONE [#B] waybar's network monitor should change color when there's no network available.
+CLOSED: [2026-01-27 Tue]
+Added #custom-netspeed.disconnected CSS rule with themed red color across
+base, dupre, and hudson waybar CSS. Changed label from "Disconnected" to "Offline".
+
+**** DONE [#C] Verify gammastep and geoclue fix
+CLOSED: [2026-01-27 Tue 07:18]
+Ensure after reboot there is no error.
+Ensure gamma changes at night
+**** DONE [#B] hyprland: new windows should open in master area in tile layout
+CLOSED: [2026-01-27 Tue]
+Changed master layout new_status from slave to master in hyprland.conf.
+**** DONE [#B] waybar's volume module should not change color when muted.
+CLOSED: [2026-01-27 Tue]
+Removed #wireplumber.muted color overrides from all waybar CSS files.
+Icon and "Muted" text provide sufficient visual cue without darkening.
+
+**** DONE [#B] Review scripts and configs in dotfiles
+CLOSED: [2026-01-27 Tue 05:34]
+112 scripts across system and hyprland dotfiles. Many are from DWM/X11 era.
+- Identify scripts still in use vs obsolete
+- Migrate useful dmenu scripts to fuzzel for Wayland
+- Remove or archive unused scripts
+- Remove config files for apps no longer installed
+
+**** DONE [#B] Consider Hyprland Plugins
+CLOSED: [2026-01-25 Sun]
+Official plugins: https://github.com/hyprwm/hyprland-plugins
+Install via hyprpm (added cpio dependency to archsetup).
+
+Interesting plugins:
+
+***** hyprscrolling (INTERESTED)
+Arranges windows in vertical columns that scroll horizontally - like a paper tape.
+Instead of tiling in a grid, windows line up side-by-side and you scroll through them.
+Note: Still marked "work in progress" - may have rough edges.
+
+Options:
+- column_width: default column width (0.5 = half monitor)
+- explicit_column_widths: widths to cycle through ("0.333, 0.5, 0.667, 1.0")
+- fullscreen_on_one_column: maximize when only one column
+- focus_fit_method: 0=center focused column, 1=just fit on screen
+- follow_focus: auto-scroll when focusing a window
+
+***** xtra-dispatchers (INTERESTED)
+Adds 4 new dispatcher commands:
+
+| Dispatcher | What it does |
+|-------------------------------------+-----------------------------------------------|
+| plugin:xtd:moveorexec WINDOW,CMD | Move window here, or launch if not running |
+| plugin:xtd:throwunfocused WORKSPACE | Send all unfocused windows away (focus mode!) |
+| plugin:xtd:bringallfrom WORKSPACE | Bring all windows from another workspace |
+| plugin:xtd:closeunfocused | Close all unfocused windows |
+
+throwunfocused is useful for focus mode - declutter workspace, then bringallfrom to restore.
+closeunfocused is handy for cleaning up.
+
+***** Other official plugins
+- hyprbars: window title bars
+- hyprexpo: workspace overview (like macOS Mission Control)
+- hyprfocus: flash effect when changing focus
+- hyprtrails: window trail effects (eye candy)
+- borders-plus-plus: extra border layers (cosmetic)
+- hyprwinwrap: use any app as wallpaper
+
+**** DONE [#C] Evaluate Hyprland Layout Options
+CLOSED: [2026-01-25 Sun]
+Current layouts: master (left/top/center), dwindle. No deck layout available natively.
+
+Options to consider:
+1. Restrict to commonly used layouts only (remove unused from cycle)
+2. Add hy3 plugin for i3-style manual tiling (horizontal/vertical/tab groups)
+
+hy3 plugin:
+- URL: https://github.com/outfoxxed/hy3
+- Provides: horizontal splits, vertical splits, tab groups, autotiling
+- Does NOT provide deck layout
+- Requires different dispatchers (hy3:movefocus, hy3:makegroup, etc.)
+
+Other layout plugins (none have deck):
+- hyprNStack: N-stack tiling
+- hyprscroller: PaperWM-style scrolling
+- hyprRiver: River-inspired layouts
+
+Decision: Keep current setup or adopt hy3 for more flexible manual tiling.
+
+**** DONE Scratchpads not spawning on keybind
mod+shift+return toggles special workspace (screen dims) but foot terminal doesn't spawn.
- Manual spawn works: =foot -T spterm tmux=
- Fixed pgrep self-match issue (bracket trick)
- Fixed windowrule syntax (match:class first, then rule)
- Still not working - need further investigation
-***** DONE Wofi launcher can't be dismissed
+**** DONE Wofi launcher can't be dismissed
CLOSED: [2026-01-25 Sun 20:50]
mod+space launches wofi but mod+space and mod+shift+c don't dismiss it.
Need to configure proper dismiss keybinding.
-***** DONE No wallpaper displaying
+**** DONE No wallpaper displaying
Desktop has no wallpaper. Need to set up swww or similar.
-***** DONE Verify foot -T flag sets window title correctly
+**** DONE Verify foot -T flag sets window title correctly
Need to confirm foot uses -T for title (vs -t or --title).
-***** DONE Pulsemixer scratchpad sizing different from others
+**** DONE Pulsemixer scratchpad sizing different from others
mod+a pulsemixer scratchpad appears to be sized differently than other scratchpads.
All use same rules: size (monitor_w*0.6) (monitor_h*0.6). Investigate why it differs.
-***** DONE Waybar wireplumber volume control not working
+**** DONE Waybar wireplumber volume control not working
CLOSED: [2026-01-25 Sun 20:50]
Click to mute and scroll to adjust not responding. Config uses wpctl commands.
May need to verify wpctl is working or try different approach.
-***** DONE Waybar clock not displaying
+**** DONE Waybar clock not displaying
Clock module is configured correctly but not showing on bar.
- Config and style.css are stowed correctly
- Font (FiraCode Nerd Font Mono) is installed
@@ -309,120 +368,67 @@ Clock module is configured correctly but not showing on bar.
- Other modules (tray, disk, workspaces) appear to work
- Reference config in reference-repos/hyprland-dotfiles/waybar/
-***** TODO [#B] Add caffeine replacement for Hyprland
-Find and configure a Wayland/Hyprland equivalent to caffeine for preventing screen lock/sleep when needed (e.g., during presentations or video watching).
+**** DONE [#B] Add caffeine replacement for Hyprland
+CLOSED: [2026-01-26 Sun]
+Added waybar idle_inhibitor module as caffeine replacement.
+Click to toggle; prevents screen lock/sleep when activated.
-***** DONE [#B] Fill out the exit menu for Hyprland
+**** DONE [#B] Fill out the exit menu for Hyprland
CLOSED: [2026-01-26 Sun]
Created wlogout exit menu with dupre theme and nerd font icons.
Keybinding: $mod SHIFT Q. Uses pgrep to prevent multiple instances.
-***** TODO [#B] Test wlogout menu on laptop
-Test wlogout exit menu on laptop to verify sizing works on different display.
-Current config uses fixed pixel margins - may need adjustment for laptop screen.
-
-***** DONE [#B] Fix rseed32 issue in console at boot
+**** DONE [#B] Fix rseed32 issue in console at boot
CLOSED: [2026-01-26 Mon]
-Added clearcpuid=rdseed kernel parameter to suppress "RDSEED32 is broken" message.
-Also added is_amd_zen5() detection and Hardware Workarounds section to archsetup.
-
-***** TODO [#B] Configure Hyprland auto-start after login
-Set up automatic Hyprland startup when logging in to console, similar to how .xinitrc starts DWM for X11.
+Attempted clearcpuid=rdseed kernel parameter but it doesn't suppress the message.
+The kernel detection runs separately and still logs the warning. Proper fix requires
+a BIOS update from Framework with newer AGESA microcode. Reverted the workaround
+since it's cosmetic only - the kernel already mitigates the actual security issue.
-***** TODO [#B] Prune desktop files from application menu
-Hide unwanted .desktop entries from fuzzel/app launcher. Some installed apps clutter the menu unnecessarily.
-
-***** TODO [#B] Review scripts in dotfiles ~/.local/bin
-112 scripts across system and hyprland dotfiles. Many are from DWM/X11 era.
-- Identify scripts still in use vs obsolete
-- Migrate useful dmenu scripts to fuzzel for Wayland
-- Remove or archive unused scripts
+**** DONE [#B] Prune desktop files from application menu
+CLOSED: [2026-01-26 Mon]
+Hide unwanted .desktop entries from fuzzel/app launcher. Created ~90 NoDisplay=true overrides
+in dotfiles/hyprland/.local/share/applications/.
-***** DONE [#C] Standardize font size and name across theme configs
+**** DONE [#C] Standardize font size and name across theme configs
CLOSED: [2026-01-26 Mon]
- Changed font to BerkeleyMono Nerd Font (patched version) across all configs
- Standardized point-based configs (foot, fuzzel, dunstrc, Xresources) to 13pt
- Added comments explaining unit type (points vs pixels) in each config
- Waybar CSS kept at 14px with explanatory comment
-***** DONE [#B] Color theming the hy3 tab bar in monocle view
+**** DONE [#B] Color theming the hy3 tab bar in monocle view
CLOSED: [2026-01-26 Mon]
Added hy3 plugin tab bar colors to set-theme script for both dupre and hudson themes.
Replaces default bright cyan with theme-appropriate colors.
Dupre: active bg+2/steel, inactive gray+2, urgent red, locked cyan.
Hudson: active #444/#bbb, inactive #c5c8c6, urgent red, locked cyan.
-***** TODO [#C] Test hy3 tab bar theming colors
-Test the monocle/tab group mode to verify hy3 tab bar colors look correct with dupre and hudson themes.
-Run =set-theme dupre= and =set-theme hudson= while in tab group mode ($mod SHIFT M).
-
-***** TODO [#C] Consider breaking out Hardware Workarounds as separate section
-The Hardware Workarounds section in archsetup could be its own optional step with user prompt to skip.
-Would allow users to opt-out if workarounds don't apply or cause issues.
-
-Current workaround:
-- AMD Zen 5 RDSEED32 bug (CVE-2025-62626): clearcpuid=rdseed kernel parameter
-
-Candidate for future inclusion:
-- AMD GPU VPE issue: potential video processing engine problem on newer AMD GPUs (not yet encountered)
+**** DONE [#C] Consider breaking out Hardware Workarounds as separate section
+CLOSED: [2026-01-26 Mon]
+Removed the Hardware Workarounds section from archsetup entirely. The only workaround
+(AMD Zen 5 RDSEED32) didn't actually suppress the warning message - the kernel detection
+runs separately. Proper fix requires BIOS updates from vendors with AGESA microcode.
-*** TODO [#A] Fix sleep/suspend on Framework Laptop (velox only)
+*** TODO [#A] Ensure sleep/suspend works on laptops
Critical functionality for laptop use - current battery drain unacceptable
**NOTE:** This applies to Framework Laptop (velox), not Framework Desktop (ratio)
Add kernel parameter: ~rtc_cmos.use_acpi_alarm=1~ (will become systemd default)
Consider: ~acpi_mask_gpe=0x1A~ for battery drain, suspend-then-hibernate config
See Framework community notes on logind.conf and sleep.conf settings
-*** TODO [#B] Review slow and failed packages from 8GB RAM test
-See [[file:docs/slow-failed-packages.org][Slow and Failed Packages Analysis]]
-
-Test run from 2025-11-09 with 8GB RAM, 50GB disk identified:
-- 2 packages that hang indefinitely (anki, tageditor)
-- 4 packages that fail to install (nitrogen, gtk-engine-murrine, adwaita-color-schemes, vagrant)
-- Several slow but successful packages (multimarkdown, ptyxis, thunderbird, etc.)
-
-High priority actions:
-- Remove or make optional: anki (hangs 98 min), tageditor (hangs on qt5-webengine)
-- Investigate repository/build issues for failing packages
-
-*** TODO [#B] Improve error handling: UFW firewall, rmmod pcspkr, mkdir missing quotes
-**** DONE [#B] Fix UFW firewall error handling (archsetup:395,410)
-CLOSED: [2026-01-21 Wed]
-Firewall failures use ~|| error "error"~ which logs but continues - system may be left exposed
-Should use ~|| error "crash"~ or validate rules were applied successfully
-RESOLVED: Added firewall verification after setup (checks "ufw status | grep Status: active").
-If verification fails, displays CRITICAL SECURITY WARNING in outro with manual fix commands.
-**** DONE [#B] Fix rmmod pcspkr error (archsetup:588)
-CLOSED: [2026-01-21 Wed]
-~rmmod pcspkr~ doesn't check if module is loaded, produces error if already unloaded
-Should use ~rmmod pcspkr 2>/dev/null || true~ or check with ~lsmod~
-RESOLVED: Changed to ~rmmod pcspkr 2>/dev/null || true~
-**** DONE [#B] Fix mkdir missing quotes (archsetup:247)
-CLOSED: [2026-01-21 Wed]
-Line 247: ~mkdir -p $source_dir~ should be ~mkdir -p "$source_dir"~ - fails if path contains spaces
-RESOLVED: Current code at line 577 properly quotes: ~(mkdir -p "$source_dir")~
-
-*** TODO [#B] Test complete end-to-end run on fresh VM
-Validates the script actually works in a clean environment (blocks claiming Method 1 complete)
-
-*** TODO [#B] Make all error messages actionable with recovery steps
+*** TODO [#B] All error messages should be actionable with recovery steps
Currently just reports errors without guidance on how to fix them
-*** TODO [#B] Improve progress indicators throughout install
-Enhance existing indicators to show what's happening in real-time
-
-*** TODO [#B] Check that full install logs have timestamps
+*** TODO [#B] Full install logs should contain timestamps
Verify timestamps exist for debugging failures
-*** TODO [#B] Add retry logic to git_install function
-pacman_install and aur_install have retry logic, but git_install doesn't
-
*** TODO [#B] Add input validation for username and paths
Variables like ~$username~, ~$source_dir~, and paths are not validated
Special characters or malicious input could break the script or cause security issues
Should validate inputs match expected patterns (alphanumeric, valid paths, etc.)
-*** TODO [#B] Enable TLP power management for Framework Laptop
+*** TODO [#B] Enable TLP power management for laptops
TLP manages power-saving modes for Wi-Fi, USB, PCIe, Bluetooth, CPU scheduler
Install tlp, enable service, add custom Framework 13 config to /etc/tlp.d/01-custom.conf
Improves battery life and prevents power-related issues during install/post-install
@@ -432,14 +438,20 @@ Some operations log to ~$logfile~, others don't - standardize logging
All package installs should log, all system modifications should log, all errors should log with context
Makes debugging failed installations easier
-*** TODO [#C] Add backup before system file modifications
+*** TODO [#B] Add backup before system file modifications
Safety net for /etc/X11/xorg.conf.d and other system file edits
Files like ~/etc/sudoers~, ~/etc/pacman.conf~, ~/etc/default/grub~ modified without backup
If modifications fail or are incorrect, difficult to recover - should backup files to ~.backup~ before modifying
-*** TODO [#C] Parse and improve AUR error reporting
+*** TODO [#D] Parse and improve AUR error reporting
Parse yay errors and provide specific, actionable fixes instead of generic error messages
+*** TODO [#D] Improve progress indicators throughout install
+Enhance existing indicators to show what's happening in real-time
+
+*** TODO [#D] Add retry logic to git_install function
+pacman_install and aur_install have retry logic, but git_install doesn't
+
*** TODO [#D] Add cpupower installation and enabling to archsetup
cpupower service configures the default CPU scheduler (powersave or performance)
Install cpupower, configure /etc/default/cpupower, enable service: ~systemctl enable --now cpupower.service~
@@ -447,6 +459,19 @@ Install cpupower, configure /etc/default/cpupower, enable service: ~systemctl en
*** VERIFY [#C] FZF works everywhere
Especially the ** expander for all files - may already be fixed, needs verification
+*** CANCELLED [#B] Review slow and failed packages from 8GB RAM test
+CLOSED: [2026-01-27 Tue 06:24]
+See [[file:docs/slow-failed-packages.org][Slow and Failed Packages Analysis]]
+
+Test run from 2025-11-09 with 8GB RAM, 50GB disk identified:
+- 2 packages that hang indefinitely (anki, tageditor)
+- 4 packages that fail to install (nitrogen, gtk-engine-murrine, adwaita-color-schemes, vagrant)
+- Several slow but successful packages (multimarkdown, ptyxis, thunderbird, etc.)
+
+High priority actions:
+- Remove or make optional: anki (hangs 98 min), tageditor (hangs on qt5-webengine)
+- Investigate repository/build issues for failing packages
+
*** DONE [#A] Fix: no dotfiles were set up on last run
CLOSED: [2025-11-13 Wed]
RESOLVED - VM test confirms dotfiles are properly stowed as symlinks; all configs and scripts in place
@@ -498,6 +523,28 @@ CLOSED: [2026-01-20 Mon]
NVMe devices weren't available when ZFS hook tried to import pool at boot.
RESOLVED: Added has_nvme_drives() detection and auto-add nvme to mkinitcpio MODULES.
+*** DONE [#B] Improve error handling: UFW firewall, rmmod pcspkr, mkdir missing quotes
+CLOSED: [2026-01-27 Tue 06:24]
+**** DONE [#B] Fix UFW firewall error handling (archsetup:395,410)
+CLOSED: [2026-01-21 Wed]
+Firewall failures use ~|| error "error"~ which logs but continues - system may be left exposed
+Should use ~|| error "crash"~ or validate rules were applied successfully
+RESOLVED: Added firewall verification after setup (checks "ufw status | grep Status: active").
+If verification fails, displays CRITICAL SECURITY WARNING in outro with manual fix commands.
+**** DONE [#B] Fix rmmod pcspkr error (archsetup:588)
+CLOSED: [2026-01-21 Wed]
+~rmmod pcspkr~ doesn't check if module is loaded, produces error if already unloaded
+Should use ~rmmod pcspkr 2>/dev/null || true~ or check with ~lsmod~
+RESOLVED: Changed to ~rmmod pcspkr 2>/dev/null || true~
+**** DONE [#B] Fix mkdir missing quotes (archsetup:247)
+CLOSED: [2026-01-21 Wed]
+Line 247: ~mkdir -p $source_dir~ should be ~mkdir -p "$source_dir"~ - fails if path contains spaces
+RESOLVED: Current code at line 577 properly quotes: ~(mkdir -p "$source_dir")~
+
+*** DONE [#B] Test complete end-to-end run on fresh VM
+CLOSED: [2026-01-27 Tue 06:24]
+Validates the script actually works in a clean environment (blocks claiming Method 1 complete)
+
*** DONE [#B] Add random.trust_cpu=off to kernel parameters
CLOSED: [2026-01-20 Mon]
AMD RDSEED warnings appearing at boot ("RDSEED32 is broken").
@@ -561,8 +608,9 @@ RESOLVED: Standardized rofi configuration in commit 590aa02:
**** DONE [#B] Match Rofi CSS style to notification CSS and move into proper place
CLOSED: [2025-12-01 Sun]
Rofi theme now matches dunst notifications (colors, border-radius, font)
-**** TODO [#C] Consider rofi-wayland for future Wayland migration
-~rofi~ doesn't support Wayland - evaluate ~rofi-wayland~, ~wofi~, or ~fuzzel~ for future
+**** CANCELLED [#C] Consider rofi-wayland for future Wayland migration
+CLOSED: [2026-01-27 Tue]
+Chose fuzzel for Wayland launcher and wlogout for exit menu. No need for rofi-wayland.
*** DONE [#B] Complete Warpinator setup for file transfers
CLOSED: [2026-01-21 Wed]
@@ -687,7 +735,7 @@ My system stays lean and intentional. I have a clear inventory of what archsetup
The review process is straightforward—I don't have to manually hunt through installed packages or wonder "do I still use this?" The system tells me what's diverged. I make decisions: add to archsetup, remove from system, or document why it's intentionally different.
-My dotfiles are equally clean and purposeful. I have a clear audit process for the 50+ scripts in ~/.local/bin and all the configs in dotfiles/system. I can identify which scripts I haven't used in months, which dotfiles belong to packages no longer installed, and which configurations are stale. The dotfile audit process is repeatable—not a manual archaeology expedition each time.
+My dotfiles are equally clean and purposeful. I have a clear audit process for the 50+ scripts in ~/.local/bin and all the configs in dotfiles/common. I can identify which scripts I haven't used in months, which dotfiles belong to packages no longer installed, and which configurations are stale. The dotfile audit process is repeatable—not a manual archaeology expedition each time.
The system remains as intentional and minimal as the day archsetup first installed it. No cruft accumulates. Every package, script, and configuration serves a purpose I can articulate.
@@ -706,7 +754,7 @@ The system remains as intentional and minimal as the day archsetup first install
*** TODO [#A] Automate the inventory comparison
Make package diff a runnable script instead of manual process
-*** TODO [#B] Audit dotfiles/system directory
+*** TODO [#B] Audit dotfiles/common directory
**** TODO [#B] Review all 50+ scripts in ~/.local/bin - remove unused scripts
**** TODO [#B] Check dotfiles for uninstalled packages - remove orphaned configs
**** TODO [#B] Verify all stowed files are actually used
@@ -748,34 +796,18 @@ Parse shell history files for ~/.local/bin script names to identify last usage d
*** TODO [#B] Automate dotfile validation
Parse config files for binary/command references and verify those binaries exist - catch orphaned references
-*** TODO [#C] Review and reorganize dotfiles for unused applications
-Review all dotfiles by application and remove unused application configurations.
-
-Options:
-1. Move to new =dotfiles/unused/= directory (next to =dotfiles/system/=)
-2. Design better restowing mechanism (perhaps with Makefile)
- - Selective stowing of only active applications
- - Track which configs are actually in use
- - Make it easy to enable/disable application dotfiles
-
-Benefits:
-- Cleaner dotfiles directory with only actively used configs
-- Faster stow operations (fewer files to process)
-- Clear separation between active and archived configurations
-- Easier to maintain and understand what's actually being used
-
-Current state:
-- Many application configs for apps removed from archsetup (mpd, ncmpcpp, mopidy, obs-studio, obsidian)
-- Unclear which dotfiles correspond to currently installed applications
-- No easy way to selectively stow/unstow configs
-
-Reference: Identified on 2025-11-15 during package cleanup session
+*** DONE [#C] Review and reorganize dotfiles for unused applications
+CLOSED: [2026-01-27 Tue]
+Completed through multiple cleanup sessions: deleted configs for uninstalled apps (ghostty, lf,
+mopidy, nitrogen, pychess, JetBrains, youtube-dl, sublime-merge), reduced scripts from 112 to 48.
+Dotfiles now contain only active configs. Archive directory and selective stow tooling not needed.
*** TODO [#C] Set up alerts for deprecated packages
Proactive monitoring integrated with Method 2 testing
-*** TODO [#C] Cleanup dotfiles repository
-The .dotfiles repo has configuration for applications no longer used - remove stale configs
+*** DONE [#C] Cleanup dotfiles repository
+CLOSED: [2026-01-27 Tue]
+Stale configs removed during January 2026 cleanup sessions.
*** DONE [#B] Replace deprecated ntp with chrony
CLOSED: [2026-01-21 Wed]