diff options
23 files changed, 429 insertions, 27 deletions
@@ -10,7 +10,7 @@ DE := $(filter dwm hyprland,$(MAKECMDGOALS)) # Extract DEST from command line for import (e.g., 'make import common' -> DEST=common) DEST := $(filter common dwm hyprland,$(MAKECMDGOALS)) -.PHONY: help stow restow reset unstow import test common dwm hyprland +.PHONY: help deps stow restow reset unstow import test common dwm hyprland # Default target - show help help: @@ -24,6 +24,7 @@ help: @echo " hyprland Wayland/Hyprland specific" @echo "" @echo "Targets:" + @echo " deps Install dependencies for this project" @echo " stow Create symlinks (fresh install) - requires DE" @echo " restow Refresh symlinks (unlink + relink) - requires DE" @echo " reset Resolve conflicts, keep repo version - requires DE" @@ -41,6 +42,20 @@ help: @echo " make test # Run full VM integration test" @echo "" +# Install project dependencies +deps: + @echo "Installing project dependencies..." + @echo "" + @echo "=== Makefile targets (stow, import) ===" + sudo pacman -S --needed stow fzf + @echo "" + @echo "=== VM testing (make test) ===" + sudo pacman -S --needed qemu-full virt-manager virt-viewer libguestfs \ + bridge-utils dnsmasq archiso sshpass socat + @echo "" + @echo "Done. For VM testing, also ensure libvirtd is running:" + @echo " sudo systemctl enable --now libvirtd" + # Prevent 'common', 'dwm' and 'hyprland' from being treated as file targets common dwm hyprland: @: @@ -688,7 +688,7 @@ prerequisites() { for software in linux-firmware wireless-regdb base-devel ca-certificates \ chrony coreutils curl git go openssh python \ - stow tar vi zsh; do + stow tar vim zsh; do pacman_install "$software" done @@ -1267,6 +1267,7 @@ EOF # Btrfs: Install snapper for snapshot management display "task" "btrfs detected - installing snapper and grub-btrfs" pacman_install snapper + pacman_install snap-pac # auto-snapshot on pacman transactions pacman_install grub-btrfs # inotify-tools is an optional dep of grub-btrfs but required for grub-btrfsd daemon pacman_install inotify-tools @@ -1394,7 +1395,9 @@ hyprland() { pacman_install cpio # hyprpm (plugin manager) dependency pacman_install waybar # status bar pacman_install fuzzel # app launcher (native Wayland, pinentry support) - pacman_install swww # wallpaper + pacman_install swww # wallpaper daemon + aur_install waypaper # wallpaper GUI (swww frontend) + aur_install wlogout-git # logout menu pacman_install grim # screenshot pacman_install slurp # region select pacman_install satty # screenshot annotation @@ -1576,12 +1579,12 @@ desktop_environment() { # Command Line Utilities action="Command Line Utilities" && display "subtitle" "$action" - for software in htop mc ncdu tmux fzf zip unzip atool wget detox \ - lsof usbutils moreutils; do + for software in htop btop mc ncdu tmux fzf zip unzip atool wget detox \ + lsof usbutils moreutils nvtop s-tui wavemon bandwhich; do pacman_install "$software" done - for software in task-spooler-cpu speedtest-go-bin gotop-bin rar; do + for software in task-spooler-cpu speedtest-go-bin rar; do aur_install "$software" done @@ -1627,7 +1630,7 @@ desktop_environment() { action="UI Theme" && display "subtitle" "$action" - for software in picom lxappearance gnome-themes-extra; do + for software in picom lxappearance gnome-themes-extra adwaita-qt5 adwaita-qt6; do pacman_install "$software" done @@ -1887,8 +1890,7 @@ supplemental_software() { aur_install insync # Google Drive sync client aur_install nsxiv # image viewer aur_install snore-git # sleep with feedback - pacman_install thunar # file manager - pacman_install gvfs-smb # SMB network share browsing in Thunar + pacman_install gvfs-smb # SMB network share browsing in Nautilus pacman_install wsdd # WS-Discovery daemon (Windows network discovery) pacman_install gvfs-wsdd # WS-Discovery backend for gvfs (browse Windows shares) aur_install topgrade # upgrade everything utility diff --git a/dotfiles/common/.bashrc.d/aliases.sh b/dotfiles/common/.bashrc.d/aliases.sh index 28c0f3f..9be16da 100644 --- a/dotfiles/common/.bashrc.d/aliases.sh +++ b/dotfiles/common/.bashrc.d/aliases.sh @@ -51,7 +51,6 @@ alias speedtest="speedtest-go" # ============================================================================= # Applications # ============================================================================= -alias vim="nvim" alias et="emacs -nw" alias weather="wego" alias crm="tickrs -s CRM" diff --git a/dotfiles/common/.config/btop/btop.conf b/dotfiles/common/.config/btop/btop.conf new file mode 100644 index 0000000..3c1318f --- /dev/null +++ b/dotfiles/common/.config/btop/btop.conf @@ -0,0 +1,272 @@ +#? Config file for btop v.1.4.6 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "Default" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = true + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = true + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = false + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = false + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = true + +#* Use terminal synchronized output sequences to reduce flickering on supported terminals. +terminal_sync = true + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "cpu lazy" + +#* Reverse sorting order, True or False. +proc_reversed = false + +#* Show processes as a tree. +proc_tree = false + +#* Use the cpu graph colors in the process list. +proc_colors = true + +#* Use a darkening gradient in the process list. +proc_gradient = true + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = false + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = true + +#* Show cpu graph for each process. +proc_cpu_graphs = true + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = false + +#* Show proc box on left side of screen instead of right. +proc_left = false + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = false + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = false + +#* Should cpu and memory usage display be preserved for dead processes when paused. +keep_dead_proc_usage = false + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = true + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = false + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = false + +#* Shows the system uptime in the CPU box. +show_uptime = true + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = true + +#* Show cpu temperature. +check_temp = true + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = true + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = false + +#* Show CPU frequency. +show_cpu_freq = true + +#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average". +freq_mode = "first" + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = true + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = true + +#* Show mem box below net box instead of above. +mem_below_net = false + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = true + +#* If swap memory should be shown in memory box. +show_swap = true + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = true + +#* If mem box should be split to also show disks info. +show_disks = true + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = true + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = true + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = false + +#* Set to true to show available disk space for privileged users. +disk_free_priv = false + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = true + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = false + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = false + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = true + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = true + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = true + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = true + +#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Automatically save current settings to config file on exit. +save_config_on_exit = true + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = true + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = true + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = true + +#* Set which GPU vendors to show. Available values are "nvidia amd intel" +shown_gpus = "nvidia amd intel" + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/dotfiles/common/.config/systemd/user/xdg-desktop-portal-gtk.service.d/environment.conf b/dotfiles/common/.config/systemd/user/xdg-desktop-portal-gtk.service.d/environment.conf deleted file mode 100644 index e8c5e8f..0000000 --- a/dotfiles/common/.config/systemd/user/xdg-desktop-portal-gtk.service.d/environment.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Service] -Environment="DISPLAY=:0" -Environment="XAUTHORITY=/home/cjennings/.Xauthority"
\ No newline at end of file diff --git a/dotfiles/common/.config/wavemon/wavemonrc b/dotfiles/common/.config/wavemon/wavemonrc new file mode 100644 index 0000000..e39c80b --- /dev/null +++ b/dotfiles/common/.config/wavemon/wavemonrc @@ -0,0 +1,13 @@ +interface = wlp192s0 +cisco_mac = off +sort_order = chan/sig +sort_ascending = off +scan_filter_band = both +scan_hidden_essids = on +stat_updates = 100 +lhist_slot_size = 4 +meter_smoothness = 0 +info_updates = 10 +override_auto_scale = off +transparent_bg = on +startup_screen = info screen diff --git a/dotfiles/common/.zshrc.d/aliases.sh b/dotfiles/common/.zshrc.d/aliases.sh index 28c0f3f..9be16da 100644 --- a/dotfiles/common/.zshrc.d/aliases.sh +++ b/dotfiles/common/.zshrc.d/aliases.sh @@ -51,7 +51,6 @@ alias speedtest="speedtest-go" # ============================================================================= # Applications # ============================================================================= -alias vim="nvim" alias et="emacs -nw" alias weather="wego" alias crm="tickrs -s CRM" diff --git a/dotfiles/common/.Xresources b/dotfiles/dwm/.Xresources index 4b35809..4b35809 100644 --- a/dotfiles/common/.Xresources +++ b/dotfiles/dwm/.Xresources diff --git a/dotfiles/common/.config/conky/conky.conf b/dotfiles/dwm/.config/conky/conky.conf index 09ee8ea..09ee8ea 100644 --- a/dotfiles/common/.config/conky/conky.conf +++ b/dotfiles/dwm/.config/conky/conky.conf diff --git a/dotfiles/common/.config/flameshot/flameshot.ini b/dotfiles/dwm/.config/flameshot/flameshot.ini index 8874b3b..8874b3b 100644 --- a/dotfiles/common/.config/flameshot/flameshot.ini +++ b/dotfiles/dwm/.config/flameshot/flameshot.ini diff --git a/dotfiles/common/.config/picom.conf b/dotfiles/dwm/.config/picom.conf index 0b65df7..0b65df7 100644 --- a/dotfiles/common/.config/picom.conf +++ b/dotfiles/dwm/.config/picom.conf diff --git a/dotfiles/common/.config/redshift.conf b/dotfiles/dwm/.config/redshift.conf index 92b61bf..92b61bf 100644 --- a/dotfiles/common/.config/redshift.conf +++ b/dotfiles/dwm/.config/redshift.conf diff --git a/dotfiles/common/.config/touchpad-indicator/touchpad-indicator.conf b/dotfiles/dwm/.config/touchpad-indicator/touchpad-indicator.conf index 51a9907..51a9907 100644 --- a/dotfiles/common/.config/touchpad-indicator/touchpad-indicator.conf +++ b/dotfiles/dwm/.config/touchpad-indicator/touchpad-indicator.conf diff --git a/dotfiles/common/.xinitrc b/dotfiles/dwm/.xinitrc index 991f507..991f507 100755 --- a/dotfiles/common/.xinitrc +++ b/dotfiles/dwm/.xinitrc diff --git a/dotfiles/hyprland/.config/easyeffectsrc b/dotfiles/hyprland/.config/easyeffectsrc new file mode 100644 index 0000000..a4cbf66 --- /dev/null +++ b/dotfiles/hyprland/.config/easyeffectsrc @@ -0,0 +1,2 @@ +[UiSettings] +ColorScheme=BreezeDark diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf index 2cc42e3..3eae5b6 100644 --- a/dotfiles/hyprland/.config/hypr/hyprland.conf +++ b/dotfiles/hyprland/.config/hypr/hyprland.conf @@ -10,22 +10,32 @@ monitor=,preferred,auto,auto # ============================================================================ # Startup Applications # ============================================================================ +# Portal and D-Bus setup FIRST (other apps depend on these) +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = systemctl --user start xdg-desktop-portal-hyprland xdg-desktop-portal + +# Core services exec-once = hyprpm reload && sleep 1 && hyprctl dismissnotify -1 -exec-once = waybar > ~/.local/var/log/waybar-$(date +%Y-%m-%d-%H%M%S).log 2>&1 -exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/trondheim-norway.jpg +exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh exec-once = dunst > ~/.local/var/log/dunst-$(date +%Y-%m-%d-%H%M%S).log 2>&1 + +# Desktop appearance (after portal is ready) +exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/trondheim-norway.jpg +exec-once = waybar > ~/.local/var/log/waybar-$(date +%Y-%m-%d-%H%M%S).log 2>&1 +exec-once = set-theme "$(cat ~/.config/current-theme 2>/dev/null || echo hudson)" + +# Background services exec-once = hypridle > ~/.local/var/log/hypridle-$(date +%Y-%m-%d-%H%M%S).log 2>&1 exec-once = /usr/lib/geoclue-2.0/demos/agent exec-once = gammastep > ~/.local/var/log/gammastep-$(date +%Y-%m-%d-%H%M%S).log 2>&1 exec-once = blueman-applet exec-once = easyeffects --gapplication-service -exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh -exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = mpd + +# Apps that can start later exec-once = signal-desktop --start-in-tray --ozone-platform=wayland exec-once = protonmail-bridge --no-window exec-once = insync start -exec-once = set-theme "$(cat ~/.config/current-theme 2>/dev/null || echo hudson)" # ============================================================================ # Environment Variables @@ -107,6 +117,13 @@ misc { } # ============================================================================ +# Debug (temporary - disable when stable) +# ============================================================================ +debug { + disable_logs = false +} + +# ============================================================================ # XWayland # ============================================================================ xwayland { @@ -252,9 +269,8 @@ bind = $mod SHIFT, PERIOD, movewindow, mon:+1 # 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:monitor, on-created-empty:foot --app-id foot-monitor monitor-dashboard workspace = special:music, on-created-empty:foot --app-id foot-music ncmpcpp -workspace = special:htop, on-created-empty:foot --app-id foot-htop htop workspace = special:network, on-created-empty:foot --app-id foot-network nmtui workspace = special:effects, on-created-empty:easyeffects @@ -263,7 +279,6 @@ bind = $mod SHIFT, RETURN, togglespecialworkspace, term bind = $mod, A, togglespecialworkspace, audio bind = $mod, M, togglespecialworkspace, monitor bind = $mod, SLASH, togglespecialworkspace, music -bind = $mod SHIFT, H, togglespecialworkspace, htop bind = $mod SHIFT, A, togglespecialworkspace, effects # Window rules (using app-id/class matching, Hyprland 0.53+ syntax) @@ -287,11 +302,6 @@ 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 -# 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 - # Network manager windowrule = match:class ^(foot-network)$, float on windowrule = match:class ^(foot-network)$, size (monitor_w*0.6) (monitor_h*0.6) diff --git a/dotfiles/hyprland/.config/waypaper/config.ini b/dotfiles/hyprland/.config/waypaper/config.ini new file mode 100644 index 0000000..66652ed --- /dev/null +++ b/dotfiles/hyprland/.config/waypaper/config.ini @@ -0,0 +1,27 @@ +[Settings] +language = en +folder = ~/pictures/wallpaper +monitors = All +wallpaper = ~/pictures/wallpaper/trondheim-norway.jpg +show_path_in_tooltip = True +backend = swww +fill = fill +sort = name +color = #ffffff +subfolders = False +all_subfolders = False +show_hidden = False +show_gifs_only = False +zen_mode = False +post_command = +number_of_columns = 3 +swww_transition_type = simple +swww_transition_step = 63 +swww_transition_angle = 0 +swww_transition_duration = 2 +swww_transition_fps = 60 +mpvpaper_sound = False +mpvpaper_options = +use_xdg_state = False +stylesheet = /home/cjennings/.config/waypaper/style.css + diff --git a/dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf b/dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf new file mode 100644 index 0000000..9cc87a2 --- /dev/null +++ b/dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf @@ -0,0 +1,3 @@ +[preferred] +default=hyprland;gtk +org.freedesktop.impl.portal.Settings=none diff --git a/dotfiles/hyprland/.local/bin/monitor-dashboard b/dotfiles/hyprland/.local/bin/monitor-dashboard new file mode 100755 index 0000000..9236d20 --- /dev/null +++ b/dotfiles/hyprland/.local/bin/monitor-dashboard @@ -0,0 +1,37 @@ +#!/bin/sh +# monitor-dashboard - tmux session with system monitoring tools +# Each tool gets its own window for full screen real estate + +SESSION="monitor" + +# Check if system has a battery +has_battery() { + [ -d /sys/class/power_supply/BAT0 ] || [ -d /sys/class/power_supply/BAT1 ] +} + +# Attach to existing session or create new one +if tmux has-session -t "$SESSION" 2>/dev/null; then + exec tmux attach-session -t "$SESSION" +fi + +# Create new session with btop in first window +tmux new-session -d -s "$SESSION" -n btop btop + +# Add windows for other monitoring tools (grouped logically) +# CPU/GPU +tmux new-window -t "$SESSION" -n s-tui s-tui +tmux new-window -t "$SESSION" -n nvtop nvtop +# Disk +tmux new-window -t "$SESSION" -n duf "watch --color -n 60 duf" +# Network +tmux new-window -t "$SESSION" -n bandwhich "sudo bandwhich" +tmux new-window -t "$SESSION" -n wavemon wavemon +# Power (laptop only) +if has_battery; then + tmux new-window -t "$SESSION" -n powertop "sudo powertop" +fi + +# Start on btop window +tmux select-window -t "$SESSION:btop" + +exec tmux attach-session -t "$SESSION" diff --git a/dotfiles/hyprland/.config/easyeffects/output/dt770-pro-250-harman-eq.json b/dotfiles/hyprland/.local/share/easyeffects/output/dt770-pro-250-harman-eq.json index 8774a0f..8774a0f 100644 --- a/dotfiles/hyprland/.config/easyeffects/output/dt770-pro-250-harman-eq.json +++ b/dotfiles/hyprland/.local/share/easyeffects/output/dt770-pro-250-harman-eq.json diff --git a/dotfiles/hyprland/.config/easyeffects/output/pixel-buds-pro-2-harman-eq.json b/dotfiles/hyprland/.local/share/easyeffects/output/pixel-buds-pro-2-harman-eq.json index 056e216..056e216 100644 --- a/dotfiles/hyprland/.config/easyeffects/output/pixel-buds-pro-2-harman-eq.json +++ b/dotfiles/hyprland/.local/share/easyeffects/output/pixel-buds-pro-2-harman-eq.json diff --git a/dotfiles/hyprland/.config/easyeffects/output/pxc-550-ii-harman-eq.json b/dotfiles/hyprland/.local/share/easyeffects/output/pxc-550-ii-harman-eq.json index c400419..c400419 100644 --- a/dotfiles/hyprland/.config/easyeffects/output/pxc-550-ii-harman-eq.json +++ b/dotfiles/hyprland/.local/share/easyeffects/output/pxc-550-ii-harman-eq.json diff --git a/dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh b/dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh new file mode 100644 index 0000000..9d80353 --- /dev/null +++ b/dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh @@ -0,0 +1,26 @@ +# 99-hyprland-autostart.sh +# Auto-start Hyprland on TTY1 console login + +# Guard: only on TTY1, not SSH, no existing display +[ "$XDG_VTNR" = "1" ] || return 0 +[ -z "$SSH_TTY" ] || return 0 +[ -z "$WAYLAND_DISPLAY" ] || return 0 +[ -z "$DISPLAY" ] || return 0 +command -v Hyprland >/dev/null 2>&1 || return 0 + +# Skip if flag file exists (touch ~/.skip-hyprland to disable) +[ -f "$HOME/.skip-hyprland" ] && return 0 + +# Setup logging (same pattern as start-hyprland wrapper) +_hypr_log_dir="$HOME/.local/var/log" +mkdir -p "$_hypr_log_dir" +_hypr_log="$_hypr_log_dir/hyprland-$(date +%Y-%m-%d-%H%M%S).log" + +# Clear screen and start Hyprland (no exec = return to shell on exit) +clear +Hyprland >"$_hypr_log" 2>&1 + +# Hyprland exited - inform user +echo "Hyprland session ended. Type 'start-hyprland' to restart." + +unset _hypr_log_dir _hypr_log |
