25 次代碼提交 736af8a244 ... cb4a111964

作者 SHA1 備註 提交日期
  Casey DeLorme cb4a111964 update todo list 1 月之前
  Casey DeLorme 49e88e7944 update sway notes 1 月之前
  Casey DeLorme 62a069eed3 update ytdlp config to use new browser 1 月之前
  Casey DeLorme c5773683b1 add mising font(s) 1 月之前
  Casey DeLorme 87ebe2393c we add the crontab via arch.sh 1 月之前
  Casey DeLorme 63893d34a8 missed cursor setting in themes 1 月之前
  Casey DeLorme aea5e522c1 update libfm 1 月之前
  Casey DeLorme 2623e3ef8d remove unneeded styles 1 月之前
  Casey DeLorme 50e32a7d2a add missing Games to userdirs 1 月之前
  Casey DeLorme 3bd4b2e889 re-add symlink for disk maintenance 1 月之前
  Casey DeLorme 7767b283d5 do not set TERM 1 月之前
  Casey DeLorme d5576dd853 remove legacy game launching commands and fix some others 1 月之前
  Casey DeLorme 0a4ce50aa3 directly add gifduration to scripts 1 月之前
  Casey DeLorme 83e3e2ce18 refine disk cleanup script 1 月之前
  Casey DeLorme d9a17f9928 remove flash player install and gifduration script 1 月之前
  Casey DeLorme ca91733543 add decache command 1 月之前
  Casey DeLorme 3dd5e96f33 set pull to rebase 1 月之前
  Casey DeLorme 5fbe702d0c remove sublime text in favor of neovim 1 月之前
  Casey DeLorme dd121f3a9b numerous vulkan related placeholders 1 月之前
  Casey DeLorme 0ad769718e remove corectrl from installation 1 月之前
  Casey DeLorme 18c8906de9 remove viewnior in favor of qview 1 月之前
  Casey DeLorme da9bba8d6c remove viewnior; it was abandoned after they broke animated gifs 1 月之前
  Casey DeLorme 17279b8478 update viewnoir config 1 月之前
  Casey DeLorme 209424d3d2 remove fcitx from enabled by default 1 月之前
  Casey DeLorme 7e7b7336e4 update mpv config 1 月之前

+ 36 - 50
arch.sh

@@ -48,10 +48,6 @@ rm -rf /etc/pacman.d/gnupg
 pacman-key --init
 pacman-key --populate archlinux
 
-# add sublime text source
-curl -O https://download.sublimetext.com/sublimehq-pub.gpg && pacman-key --add sublimehq-pub.gpg && pacman-key --lsign-key 8A8F901A && rm sublimehq-pub.gpg
-[ $(grep -c "sublime-text" /etc/pacman.conf) -eq 0 ] && echo -e "\n[sublime-text]\nServer = https://download.sublimetext.com/arch/stable/x86_64" | tee -a /etc/pacman.conf
-
 # Core tools
 export PACKAGES="linux linux-headers linux-firmware base-devel mkinitcpio sudo bash-completion man-db tmux gvim dkms dmidecode at bc cronie lm_sensors lshw stress"
 
@@ -81,7 +77,7 @@ PACKAGES="${PACKAGES} pkgfile pkgconf bison gcc gcc-libs cmake ccache ncurses li
 PACKAGES="${PACKAGES} mesa lib32-mesa dbus polkit giflib lib32-giflib mpg123 lib32-mpg123 v4l-utils lib32-v4l-utils lame libwebp libid3tag libvorbis vorbis-tools faac x264 x265 libldap lib32-libldap libpng lib32-libpng libpng12 lib32-libpng12 libjpeg-turbo lib32-libjpeg-turbo pipewire lib32-pipewire pipewire-jack lib32-pipewire-jack pipewire-alsa pipewire-pulse pipewire-zeroconf wireplumber openal lib32-openal alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib opencl-icd-loader lib32-opencl-icd-loader libva lib32-libva libva-utils gst-plugins-base-libs lib32-gst-plugins-base-libs graphicsmagick imagemagick joyutils evtest libexif ffmpeg lxsession-gtk3 yt-dlp wine-staging winetricks fcitx5 fcitx5-mozc fcitx5-configtool fcitx5-gtk fcitx5-qt"
 
 # GUI theme
-PACKAGES="${PACKAGES} gnome-themes-extra hicolor-icon-theme arc-gtk-theme gtk-engines gtk-engine-murrine"
+PACKAGES="${PACKAGES} gnome-themes-extra hicolor-icon-theme"
 
 # GUI dependencies
 PACKAGES="${PACKAGES} gtk3 lib32-gtk3 pavucontrol pcmanfm-gtk3 ffmpegthumbnailer tumbler xdg-utils xdg-user-dirs libxcomposite lib32-libxcomposite libxinerama lib32-libxinerama libxslt lib32-libxslt"
@@ -93,24 +89,29 @@ PACKAGES="${PACKAGES} libva-mesa-driver lib32-libva-mesa-driver lib32-mesa-vdpau
 PACKAGES="${PACKAGES} sway swaybg alacritty wofi waybar xorg-xwayland xorg-xlsclients wev qt5-wayland glfw-x11 grim slurp xdg-desktop-portal-wlr libpipewire lib32-libpipewire wl-clipboard brightnessctl playerctl mako libappindicator-gtk3 lib32-libappindicator-gtk3"
 
 # fonts
-PACKAGES="${PACKAGES} fontconfig ttf-bitstream-vera ttf-droid ttf-dejavu ttf-liberation ttf-hanazono ttf-font-awesome"
+PACKAGES="${PACKAGES} fontconfig ttf-bitstream-vera ttf-droid ttf-dejavu ttf-liberation ttf-hanazono ttf-jigmo ttf-roboto ttf-sazanami ttf-vlgothic ttf-font-awesome otf-font-awesome"
 
 # GUI software
-PACKAGES="${PACKAGES} xarchiver gparted psensor steam steam-native-runtime gamemode gamescope mangohud lib32-mangohud lib32-gamemode discord mpv mpv-mpris openshot gimp krita firefox obs-studio mednafen mame ppsspp lutris sublime-text evince viewnior virt-manager virtualbox virtualbox-host-modules-arch corectrl"
+PACKAGES="${PACKAGES} xarchiver gparted psensor steam steam-native-runtime gamemode gamescope mangohud lib32-mangohud lib32-gamemode discord mpv mpv-mpris openshot gimp krita obs-studio mednafen mame ppsspp lutris neovim evince virt-manager virtualbox virtualbox-host-modules-arch"
 
-# conditional GPU packages
+# conditional AMD GPU packages
 if [ $(lspci | grep -i "vga" | grep -ci "amd") -gt 0 ]; then
 	PACKAGES="${PACKAGES} xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon mesa-vdpau"
 
 	# update modules to load
 	[ $(grep -c "amd" /etc/mkinitcpio.conf) -eq 0 ] && sed -i 's/MODULES=(\(.*\))/MODULES=(\1 amdgpu radeon)/' /etc/mkinitcpio.conf
 fi
+
+# conditional Intel GPU packages
 if [ $(lspci | grep -i "vga" | grep -ci "intel") -gt 0 ]; then
 	PACKAGES="${PACKAGES} xf86-video-intel vulkan-intel lib32-vulkan-intel mesa-vdpau"
 
 	# update modules to load
 	[ $(grep -c "amd" /etc/mkinitcpio.conf) -eq 0 ] && sed -i 's/MODULES=(\(.*\))/MODULES=(\1 i915)/' /etc/mkinitcpio.conf
 fi
+
+# conditional nVidia GPU packages
+# @note: untested since 2019; I stopped using nvidia
 if [ $(lspci | grep -i "vga" | grep -ci "nvidia") -gt 0 ]; then
 	PACKAGES="${PACKAGES} nvidia-dkms libglvnd lib32-libglvnd opencl-nvidia lib32-opencl-nvidia xf86-video-nouveau nvidia-utils lib32-nvidia-utils mesa-vdpau nvidia-settings"
 
@@ -129,54 +130,13 @@ pacman -Syu --noconfirm $PACKAGES
 [ -d /srv/arch-desktop/install ] || git clone https://git.caseydelorme.com/cdelorme/arch-desktop /srv/arch-desktop
 rsync -Pav /srv/arch-desktop/install/ /
 mkdir -p /etc/skel/{desktop,downloads,public,public/templates,documents,music,pictures,videos,code}
-# @todo: verify if these is necessary /w pipewire-pulse
-#mkdir -p /etc/skel/.config/pulse
-# sed "/module-suspend-on-idle/d" /etc/pulse/default.pa > /etc/skel/.config/pulse/default.pa
-# sed -i "/module-switch-on-port-available/d" /etc/skel/.config/pulse/default.pa
 rsync -Pav /etc/skel/ "$(getent passwd root | cut -d: -f6)/"
 sed -i "/ssh-add/d" "$(getent passwd root | cut -d: -f6)/.bashrc"
 
-# install protontricks
-# python3 -m pip install protontricks
-
 # enable ccache and optimize cores for AUR
 sed -i 's/!ccache/ccache/' /etc/makepkg.conf
 sed -i 's/^#MAKEFLAGS.*/MAKEFLAGS="-j$(($(nproc) + 1)) -l$(nproc)"/' /etc/makepkg.conf
 
-# create a user to install aur packages
-export aur_username=$(head /dev/urandom | tr -dc a-z | head -c 13 ; echo '')
-useradd -r -m -s /bin/bash $aur_username
-echo "${aur_username} ALL= NOPASSWD: /usr/bin/pacman" > /etc/sudoers.d/${aur_username}
-
-# install vimix-cursors
-sudo -u $aur_username git clone https://aur.archlinux.org/vimix-cursors.git /home/${aur_username}/vimix-cursors
-(cd /home/${aur_username}/vimix-cursors && sudo -u ${aur_username} makepkg -rcsi --noconfirm)
-
-# install numix-icon-theme
-sudo -u $aur_username git clone https://aur.archlinux.org/numix-icon-theme-git.git /home/${aur_username}/numix-icon-theme-git
-(cd /home/${aur_username}/numix-icon-theme-git && sudo -u ${aur_username} makepkg -rcsi --noconfirm)
-
-# cmst (for connman UI)
-sudo -u $aur_username git clone https://aur.archlinux.org/cmst.git /home/${aur_username}/cmst
-(cd /home/${aur_username}/cmst && sudo -u ${aur_username} makepkg -rcsi --noconfirm)
-
-# cleanup aur user
-rm -rf /etc/sudoers.d/${aur_username}
-userdel -fr $aur_username
-unset $aur_username
-
-# install gifduration
-if ! which gifduration &> /dev/null; then
-	curl -Lfs https://raw.githubusercontent.com/alimony/gifduration-script/master/gifduration.py > /usr/local/bin/gifduration
-	chmod a+rx /usr/local/bin/gifduration
-fi
-
-# install 64bit flash projector
-if ! which flashplayer &> /dev/null; then
-	curl -Lfs "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz" > /tmp/flash.tar.gz
-	tar -xf /tmp/flash.tar.gz -C /usr/local/bin flashplayer
-fi
-
 # create sudo group and add to sudoers
 groupadd -fr sudo
 [ ! -f /etc/sudoers.d/sudo ] && echo '%sudo ALL=(ALL) ALL' > /etc/sudoers.d/sudo
@@ -231,7 +191,9 @@ su $username -c "cd; if [ ! -f ~/.ssh/id_ed25519 ]; then ssh-keygen -q -t ed2551
 # install gvm loading from ~/.bashrc & ~/.bash_profile, and the latest go version
 su $username -c "if [ ! -d ~/.gvm ]; then GVM_NO_UPDATE_PROFILE=1 bash < <(curl -Ls https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer 2> /dev/null); fi"
 su $username -c 'grep "gvm" ~/.bash_profile &> /dev/null || echo -e "\n# load gvm\n[ -s $HOME/.gvm/scripts/gvm ] && . $HOME/.gvm/scripts/gvm" >> ~/.bash_profile'
-su $username -c ". ~/.gvm/scripts/gvm && gvm install go1.21.3 -B && gvm use go1.21.3 --default"
+su $username -c ". ~/.gvm/scripts/gvm && gvm install go1.26.1 -B && gvm use go1.26.1 --default"
+# @note: fix stupid fucking cd override in gvm scripts
+su $username -c "[ -f ~/.gvm/scripts/env/cd ] && mv ~/.gvm/scripts/env/cd ~/.gvm/scripts/env/cd.bak && touch ~/.gvm/scripts/env/cd"
 
 # configure user-space transmission
 if [ ! -f "/etc/systemd/system/transmission.service.d/local.conf" ]; then
@@ -239,6 +201,30 @@ if [ ! -f "/etc/systemd/system/transmission.service.d/local.conf" ]; then
 	su $username -c 'cd && tmp=$(mktemp) && jq ".[\"download-dir\"] = \"${HOME}/transmission/done\"" $HOME/.config/transmission-daemon/settings.json | jq ".[\"incomplete-dir\"] = \"${HOME}/transmission/incomplete\"" | jq ".[\"watch-dir\"] = \"$(xdg-user-dir DOWNLOAD)\"" > $tmp && mv $tmp $HOME/.config/transmission-daemon/settings.json'
 fi
 
+su -u $username -c "mkdir -p ~/code/aur.archlinux.org"
+export user_home="$(getent passwd $username | cut -d: -f6)/"
+
+# install qview
+sudo -u $username git clone https://aur.archlinux.org/qview.git ${user_home}/aur.archlinux.org/qview
+(cd ${user_home}/aur.archlinux.org/qview && sudo -u ${username} makepkg -rcsi --noconfirm)
+
+# cmst (for connman UI)
+sudo -u $username git clone https://aur.archlinux.org/cmst.git ${user_home}/aur.archlinux.org/cmst
+(cd ${user_home}/aur.archlinux.org/cmst && sudo -u ${username} makepkg -rcsi --noconfirm)
+
+# brave browser (plus override to bypass keyring)
+sudo -u $username git clone https://aur.archlinux.org/brave-bin.git ${user_home}/aur.archlinux.org/brave-bin
+(cd ${user_home}/aur.archlinux.org/brave-bin && sudo -u ${username} makepkg -rcsi --noconfirm)
+[ -f /usr/share/applications/brave-browser.desktop ] && sed -i 's|Exec=brave|Exec=brave --password-store=basic|g' /usr/share/applications/brave-browser.desktop
+
+# install vimix-cursors
+sudo -u $username git clone https://aur.archlinux.org/vimix-cursors.git ${user_home}/aur.archlinux.org/vimix-cursors
+(cd ${user_home}/aur.archlinux.org/vimix-cursors && sudo -u ${username} makepkg -rcsi --noconfirm)
+
+# install numix-icon-theme
+sudo -u $username git clone https://aur.archlinux.org/numix-icon-theme-git.git ${user_home}/aur.archlinux.org/numix-icon-theme-git
+(cd ${user_home}/aur.archlinux.org/numix-icon-theme-git && sudo -u ${username} makepkg -rcsi --noconfirm)
+
 # symlink shceduled maintenance tasks
 #ln -sf /usr/local/bin/system-updates /etc/cron.daily/system-updates
 ln -sf /usr/local/bin/disk-maintenance /etc/cron.weekly/disk-maintenance

+ 15 - 2
install/etc/skel/.bash_profile

@@ -11,7 +11,9 @@ export XDG_DATA_DIRS="$XDG_DATA_DIRS:$HOME/.local/share"
 # set language, editor, augment history behavior, enable dynamic resize
 export LANG=en_US.UTF-8
 export LANGUAGE=en_US.UTF-8
-export EDITOR=vim
+export TerminalEmulator=alacritty
+export EDITOR=/usr/bin/vim
+export BROWSER=/usr/bin/brave
 export HISTFILE="$HOME/.bash_history"
 export HISTCONTROL=ignoreboth:erasedups
 shopt -s histappend
@@ -26,11 +28,22 @@ export XMODIFIERS=@im=fcitx
 # specify wayland for applications (primarily games)
 export MOZ_ENABLE_WAYLAND=1
 export SDL_VIDEODRIVER="wayland,x11"
-export XDG_CURRENT_DESKTOP=Unity
+export QT_QPA_PLATFORM=wayland
+export XDG_CURRENT_DESKTOP=sway
 export WINE_FULLSCREEN_FSR=1
 export RADV_PERFTEST=gpl
 export MANGOHUD_CONFIG="no_display,cpu_temp,gpu_temp"
 export MANGOHUD=1
+export _JAVA_AWT_WM_NONREPARENTING=1
+
+# vulkan patches
+export WLR_RENDERER=vulkan
+# @note: sometimes it may try to pick the wrong vulkan driver
+#export VK_DRIVER_FILES="/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json"
+# @note: machines with multiple valid gpu devices may require explicit overrides
+#export WLR_DRM_DEVICES="/dev/dri/card1:/dev/dri/card0"
+# @note: explicitly set device using `vulkaninfo` to get the vendorID and deviceID
+#export MESA_VK_DEVICE_SELECT="VID:DID"
 
 # if bashrc exists and the terminal has stdin load it
 test -t 0 && . "$HOME/.bashrc"

+ 6 - 4
install/etc/skel/.config/libfm/libfm.conf

@@ -1,14 +1,16 @@
-# Configuration file for the libfm version 1.3.2.
+# Configuration file for the libfm version 1.4.1.
 # Autogenerated file, don't edit, your changes will be overwritten.
 
 [config]
 single_click=0
+middle_click=0
 use_trash=0
 confirm_del=1
 confirm_trash=1
 advanced_mode=0
 si_unit=0
 force_startup_notify=0
+date_iso_8601=0
 backup_as_hidden=0
 no_usb_trash=1
 no_child_non_expandable=0
@@ -23,14 +25,14 @@ quick_exec=1
 terminal=alacritty %s
 archiver=xarchiver
 thumbnail_local=0
-thumbnail_max=32768
+thumbnail_max=0
 smart_desktop_autodrop=1
 
 [ui]
-big_icon_size=48
+big_icon_size=160
 small_icon_size=24
 pane_icon_size=24
-thumbnail_size=256
+thumbnail_size=192
 show_thumbnail=1
 shadow_hidden=1
 

+ 16 - 16
install/etc/skel/.config/mimeapps.list

@@ -1,12 +1,12 @@
 [Added Associations]
-image/gif=viewnior.desktop;
-image/bmp=viewnior.desktop;
-image/jpg=viewnior.desktop;
-image/jpeg=viewnior.desktop;
-image/png=viewnior.desktop;
-image/tiff=viewnior.desktop;
-text/html=firefox.desktop;
-text/htmls=firefox.desktop;
+image/gif=qview.desktop;
+image/bmp=qview.desktop;
+image/jpg=qview.desktop;
+image/jpeg=qview.desktop;
+image/png=qview.desktop;
+image/tiff=qview.desktop;
+text/html=brave.desktop;
+text/htmls=brave.desktop;
 application/x-shockwave-flash=flash.desktop;
 text/plain=sublime_text.desktop;
 text/x-c=sublime_text.desktop;
@@ -48,14 +48,14 @@ application/x-ms-dos-executable=wine.desktop;
 application/x-msdos-program=wine.desktop;
 
 [Default Applications]
-image/gif=viewnior.desktop;
-image/bmp=viewnior.desktop;
-image/jpg=viewnior.desktop;
-image/jpeg=viewnior.desktop;
-image/png=viewnior.desktop;
-image/tiff=viewnior.desktop;
-text/html=firefox.desktop;
-text/htmls=firefox.desktop;
+image/gif=qview.desktop;
+image/bmp=qview.desktop;
+image/jpg=qview.desktop;
+image/jpeg=qview.desktop;
+image/png=qview.desktop;
+image/tiff=qview.desktop;
+text/html=brave.desktop;
+text/htmls=brave.desktop;
 application/x-shockwave-flash=flash.desktop;
 text/plain=sublime_text.desktop;
 text/x-c=sublime_text.desktop;

+ 7 - 2
install/etc/skel/.config/mpv/mpv.conf

@@ -1,10 +1,15 @@
 
-# video driver
-profile=gpu-hq
+# video driver to use gpu, wayland, and vulkan
+vo=gpu-next
+gpu-api=vulkan
+gpu-context=waylandvk
 
 # hwdecoder
 hwdec=auto-copy
 
+# reduce judder
+video-sync=display-resample
+
 # wayland gpu context
 gpu-context=waylandvk
 

+ 79 - 0
install/etc/skel/.config/qView/qView.conf

@@ -0,0 +1,79 @@
+[General]
+configversion=7.1
+firstlaunch=true
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\0\0\0\v\xf5\0\0\x5\x66\0\0\a\x80\0\0\0\0\0\0\v\xf5\0\0\x5\x66\0\0\0\0\0\0\0\0\rp\0\0\a\x80\0\0\0\0\0\0\v\xf5\0\0\x5\x66)
+optionsgeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\0\0\0\t>\0\0\x2\x31\0\0\a\x80\0\0\0\0\0\0\t>\0\0\x2\x31\0\0\0\0\0\0\0\0\rp\0\0\a\x80\0\0\0\0\0\0\t>\0\0\x2\x31)
+optionstab=0
+
+[options]
+afterdelete=2
+allowmimecontentdetection=false
+askdelete=true
+bgcolor=#212121
+bgcolorenabled=true
+colorspaceconversion=1
+cropmode=0
+cursorzoom=true
+filteringenabled=true
+fractionalzoom=false
+fullscreendetails=false
+language=system
+loopfoldersenabled=true
+maxwindowresizedpercentage=70
+menubarenabled=false
+minwindowresizedpercentage=20
+pastactualsizeenabled=true
+preloadingmode=1
+quitonlastwindow=false
+saverecents=false
+scalefactor=25
+scalingenabled=true
+scalingtwoenabled=true
+scrollzoom=1
+skiphidden=true
+slideshowreversed=0
+slideshowtimer=5
+sortdescending=0
+sortmode=0
+titlebaralwaysdark=true
+titlebarmode=3
+updatenotifications=false
+windowresizemode=0
+
+[recents]
+recentFiles=@Invalid()
+
+[shortcuts]
+copy=Ctrl+C, Ctrl+Ins, F16, Copy
+decreasespeed=[
+delete=Ctrl+Backspace, Del, Ctrl+D
+deletepermanent=Shift+Del
+firstfile=Home
+flip=Ctrl+F
+fullscreen=F11
+increasespeed=]
+lastfile=End
+mirror=F
+nextfile=Right
+nextframe=N
+open=Ctrl+O, Open
+opencontainingfolder=@Invalid()
+openurl=Ctrl+Shift+O
+options=Settings
+originalsize=O
+paste=Ctrl+V, Ctrl+Shift+Ins, Shift+Ins, F18, Paste
+pause=P
+previousfile=Left
+quit=Esc
+reloadfile=F5, Refresh
+rename=Ctrl+Return, F2, Ctrl+R
+resetspeed=\\
+resetzoom=Ctrl+0
+rotateleft=Down
+rotateright=Up
+saveframeas=Ctrl+S, Save
+showfileinfo=I
+slideshow=@Invalid()
+undo=Ctrl+Z, F14, Undo
+zoomin=Ctrl++, Zoom In, "Ctrl+="
+zoomout=Ctrl+-, Zoom Out

+ 2 - 5
install/etc/skel/.config/sway/config

@@ -7,7 +7,7 @@ set $mod Mod4
 set $launcher wofi --show=run --lines=5 --prompt=""
 set $applauncher wofi --show=drun --lines=5 --prompt=""
 set $term alacritty
-set $browser firefox
+set $browser brave
 set $editor subl
 set $files pcmanfm
 set $steam gamemodrun steam -gamepadui
@@ -126,7 +126,7 @@ bindsym --release $mod+m exec pactl set-source-mute @DEFAULT_SOURCE@ 1 # unmute
 bindsym $mod+Shift+m exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
 
 # Tag xwayland windows with [X]
-for_window [shell="xwayland"] title_format "<span>[X] %title゜</span>"
+# for_window [shell="xwayland"] title_format "<span>[X] %title゜</span>"
 
 # classify sane defaults for window management
 for_window [window_role="About"] floating enable
@@ -139,7 +139,6 @@ for_window [window_role="Preferences"] floating enable
 for_window [window_type="dialog"] floating enable
 for_window [window_type="menu"] floating enable
 
-for_window [class="xdg-desktop-portal-kde"] floating enable
 for_window [class="Wine"] floating enable
 
 for_window [app_id="pavucontrol"] floating enable
@@ -148,8 +147,6 @@ for_window [app_id="floating"] floating enable
 for_window [title="(?i)(?:copying|deleting|moving)"] floating enable
 for_window [title="Save File"] floating enable
 for_window [title="^Open File$"] floating enable
-for_window [title="Firefox - Choose User Profile" ] floating enable
-for_window [title="About Mozilla Firefox"] floating enable
 
 # https://github.com/ValveSoftware/steam-for-linux/issues/1040
 for_window [class="^Steam$" title="^Friends$"] floating enable

+ 0 - 12
install/etc/skel/.config/systemd/user/corectrl.service

@@ -1,12 +0,0 @@
-[Unit]
-Description=CoreControl Advanced CPU and GPU Tuning
-PartOf=graphical-session.target
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/corectrl
-Restart=on-failure
-RestartSec=3
-
-[Install]
-WantedBy=sway-session.target

+ 0 - 1
install/etc/skel/.config/systemd/user/sway-session.target.wants/corectrl.service

@@ -1 +0,0 @@
-../corectrl.service

+ 0 - 1
install/etc/skel/.config/systemd/user/sway-session.target.wants/fcitx5.service

@@ -1 +0,0 @@
-../fcitx5.service

+ 2 - 0
install/etc/skel/.config/user-dirs.dirs

@@ -13,3 +13,5 @@ XDG_DOCUMENTS_DIR="$HOME/documents"
 XDG_MUSIC_DIR="$HOME/music"
 XDG_PICTURES_DIR="$HOME/pictures"
 XDG_VIDEOS_DIR="$HOME/videos"
+XDG_GAMES_DIR="$HOME/games"
+

+ 0 - 19
install/etc/skel/.config/viewnior/viewnior.conf

@@ -1,19 +0,0 @@
-[prefs]
-zoom-mode=0
-fit-on-fullscreen=true
-show-hidden=false
-smooth-images=true
-confirm-delete=true
-reload-on-save=false
-show-menu-bar=false
-show-toolbar=true
-show-scrollbar=true
-start-maximized=true
-slideshow-timeout=5
-auto-resize=false
-behavior-wheel=1
-behavior-click=0
-behavior-modify=0
-jpeg-quality=90
-png-compression=9
-desktop=9

+ 0 - 18
install/etc/skel/.config/waybar/style.css

@@ -16,24 +16,6 @@ window#waybar.hidden {
     opacity: 0.2;
 }
 
-/*
-window#waybar.empty {
-    background-color: transparent;
-}
-window#waybar.solo {
-    background-color: #FFFFFF;
-}
-*/
-
-window#waybar.termite {
-    background-color: #3F3F3F;
-}
-
-window#waybar.chromium {
-    background-color: #000000;
-    border: none;
-}
-
 #workspaces button {
     padding: 0 5px;
     background-color: transparent;

+ 6 - 0
install/etc/skel/.config/yt-dlp/config

@@ -38,3 +38,9 @@
 -S ext:webm:webm
 --audio-format=opus
 --recode-video="opus>opus/webm"
+
+# use ~/.netrc file for authentication if available
+# --netrc
+
+# use browser cookings for authentication if available
+--cookies-from-browser brave

+ 3 - 0
install/etc/skel/.gitconfig

@@ -7,6 +7,8 @@
 	ui = true
 [push]
 	default = simple
+[pull]
+	rebase = true
 [alias]
 	a = add
 	s = status -suall
@@ -15,3 +17,4 @@
 	sa = stash apply
 	l = !git log --graph --pretty=format:'%C(yellow)%h%Creset -%C(bold red)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
 	pp = !git pull && git push
+

+ 1 - 1
install/etc/skel/.icons/default/index.theme

@@ -1,2 +1,2 @@
 [icon theme]
-Inherits=Chameleon-SkyBlue-Regular
+Inherits=Vimix-cursors

+ 8 - 0
install/usr/local/bin/decache

@@ -0,0 +1,8 @@
+#!/bin/bash -ex
+
+# remove gpu related cache files
+rm -rf $HOME/.cache/{Cemu,mesa,radv,citron,eden}*
+
+# remove steam cache
+rm -rf $HOME/.local/share/Steam/steamapps/shadercache/*
+

+ 7 - 33
install/usr/local/bin/disk-maintenance

@@ -5,43 +5,17 @@ find / -type f -iname "thumbs.db" -exec rm {} \; 2> /dev/null &
 find / -type f -iname ".ds_store" -exec rm {} \; 2> /dev/null &
 find / -type f -name '._*' -exec rm -rf {} \; 2> /dev/null &
 
-# functions for asynchronous operations
-cleanup_ext4() {
-	fstrim "$1"
-	e4defrag "$1"
-}
-
-cleanup_btrfs() {
-	fstrim "$1"
-
-	btrfs balance start -dusage=1 "$1"
-	btrfs balance start -musage=1 "$1"
-	btrfs balance start -dusage=5 "$1"
-	btrfs balance start -musage=5 "$1"
-	btrfs balance start -dusage=10 "$1"
-	btrfs balance start -musage=10 "$1"
-	btrfs balance start -dusage=25 "$1"
-	btrfs balance start -musage=25 "$1"
-	btrfs balance start -dusage=50 "$1"
-	btrfs balance start -musage=50 "$1"
-
-	btrfs scrub start -qdB "$1"
-}
-
-# defragment and fstrim ext4 weekly
+# fstrim and defragment ext4
 for filesystem in $(mount -t ext4 | awk '{print $3}'); do
-	cleanup_ext4 "$filesystem" &
+	fstrim "$filesystem"
+	e4defrag "$filesystem"
 done
 
-# defragment and rebalance ssd-only (hdd are too slow) btrfs weekly
+# rebalance and trim SSD btrfs (HDD are too slow and should be done manually)
 for filesystem in $(mount -t btrfs | grep "ssd" | awk '{print $3}'); do
-	cleanup_btrfs "$filesystem" &
-done
-
-# wait for jobs to complete
-for j in $(jobs -p); do
-	wait $j
+	btrfs balance start -musage=11 dusage=10 "$filesystem"
+	fstrim "$filesystem"
 done
 
 # cleanup journalctl
-journalctl --vacuum-time=10d
+journalctl --vacuum-time=5d --vacuum-size=500M

+ 2 - 2
install/usr/local/bin/ea

@@ -1,7 +1,7 @@
 #!/bin/bash
 # a command line utility intended to simplify bulk decompression
 # by automating a pool sized by the processor of parallel operations
-# each of which creates a folder, decompresses, and if successful
+# each of which creates a directory, decompresses, and if successful
 # removes the compressed file, finally checking each directory and
 # pulling out single items to avoid redundant parent directories.
 
@@ -36,7 +36,7 @@ extract_locally() {
 	# cleanup
 	rm "$1"
 
-	# @todo: fix redundant parent folders
+	# fix redundant parent directories
 	if [ $(find "$name" -mindepth 1 -maxdepth 1 | wc -l) -eq 1 ]; then
 		mv "$name" "${name}.tmp"
 		mv "${name}.tmp"/* .

+ 0 - 3
install/usr/local/bin/ffxiv

@@ -1,3 +0,0 @@
-#!/bin/bash -ex
-lutris lutris:rungame/final-fantasy-xiv-online
-

+ 89 - 0
install/usr/local/bin/gifduration

@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+# encoding: utf-8
+"""
+This script takes one or more animated GIF files as input and calculates their
+total durations, returning zero for non-animated GIF files.
+
+Requires Pillow, formerly known as the Python Imaging Library (PIL).
+
+Code by Markus Amalthea Magnuson <markus@polyscopic.works>
+"""
+
+from __future__ import print_function
+
+import getopt
+import os.path
+import sys
+
+from PIL import Image, ImageSequence
+
+help_message = """
+Supply one or more animated GIF files as input to get their total durations.
+"""
+
+
+class Usage(Exception):
+    def __init__(self, msg):
+        self.msg = msg
+
+
+def main(argv=None):
+    if argv is None:
+        argv = sys.argv
+    try:
+        try:
+            opts, args = getopt.getopt(argv[1:], "h:v", ["help", "verbose"])
+        except getopt.error as err:
+            raise Usage(err.msg)
+
+        # Option processing.
+        verbose = False
+        for option, value in opts:
+            if option in ("-v", "--verbose"):
+                verbose = True
+            if option in ("-h", "--help"):
+                raise Usage(help_message)
+
+    except Usage as err:
+        print(sys.argv[0].split("/")[-1] + ": " + str(err.msg), file=sys.stderr)
+        print("\t for help use --help", file=sys.stderr)
+        return 2
+
+    # Start processing the images.
+    for path in args:
+        try:
+            im = Image.open(path)
+        except IOError as err:
+            print("%s:" % os.path.basename(path), file=sys.stderr)
+            print(err, file=sys.stderr)
+            print("---", file=sys.stderr)
+            continue
+
+        durations = []
+        for frame in ImageSequence.Iterator(im):
+            try:
+                durations.append(frame.info["duration"])
+            except KeyError:
+                # Ignore if there was no duration, we will not count that frame.
+                pass
+
+        if not durations:
+            print("Not an animated GIF image")
+        else:
+            if verbose:
+                for index, duration in enumerate(durations):
+                    print(
+                        "Frame %d: %d ms (%0.2f seconds)"
+                        % (index + 1, duration, duration / 1000.0)
+                    )
+            total_duration = sum(durations)
+            print(
+                "Total duration: %d ms (%0.2f seconds)"
+                % (total_duration, total_duration / 1000.0)
+            )
+
+        print("---")
+
+
+if __name__ == "__main__":
+    sys.exit(main())

+ 4 - 1
install/usr/local/bin/otp

@@ -1,8 +1,11 @@
 #!/bin/bash
+
+# @todo: read users ~/.config/totp/totp.sh and forward $1 for specifying service to get totp
 if [ -z "TOTP" ]; then
 	echo "please export TOTP with your authentication code"
 	exit 1
 fi
 OTP=$(oathtool --base32 --totp "$TOTP")
-echo "$OTP" | xsel -ib
+echo "$OTP" | wl-copy
 echo "$OTP"
+

+ 0 - 3
install/usr/local/bin/pob

@@ -1,3 +0,0 @@
-#!/bin/bash
-lutris lutris:rungame/path-of-building
-

+ 0 - 3
install/usr/local/bin/poe

@@ -1,3 +0,0 @@
-#!/bin/bash
-steam steam://run/238960
-

+ 4 - 3
install/usr/local/bin/system-updates

@@ -1,6 +1,7 @@
 #!/bin/bash
 
-pacman -Syu --noconfirm --ignore=linux
-
-python3 -m pip install --upgrade protontricks
+# @note: could cause instability, require applications to be reloaded, or require a reboot
+pacman -Syu --noconfirm
 
+# @note: this alternative skips linux kernel upgrades, but the user will have to do so eventually themselves
+# pacman -Syu --noconfirm --ignore=linux

+ 89 - 6
notes/sway.md

@@ -1,7 +1,9 @@
 
 # sway
 
-This is the new window manager based on the Wayland protocol, which is being adopted by the linux community as a replacement to xorg.
+This is a new window manager based on the Wayland protocol.
+
+Wayland itself is being adopted by the linux community as a replacement to xorg's X11, but there are many just like with X.
 
 
 ## notes
@@ -31,10 +33,6 @@ The `~/.config/sway/config.d/` directory should be used to establish overrides s
 	workspace 4 output DP-1
 	workspace 5 output DP-1
 
-
-
----
-
 Strange problem with global push-to-talk; had to start it once in order to trigger it, and the state may or may not persist on reboots.
 
 There does not appear to be a way to add temperature support to `waybar`, since by default it reads the first `hwmon` resource, which is often unrelated or unimportant, and selecting the correct ones for CPU and GPU is entirely hardware dependent.  _It may be possible to write a script that generalizes running `sensors` and scanning for common or known driver names in order to grab the correct data._
@@ -42,10 +40,95 @@ There does not appear to be a way to add temperature support to `waybar`, since
 The scratchpad is a bit messy in that the "cycle" for pulling windows out involves show/hide/show/hide on repeat, rather than show to show to show swapping the pulled window instead.  _It may be possible to script this with `swaymsg` with an iterator._
 
 
-
 ## nvidia
 
 Since the nvidia proprietary driver is unsupported you may need these in your `~/.bash_profile`:
 
 	export WLR_NO_HARDWARE_CURSORS=1
 	alias sway='sway --unsupported-gpu'
+
+_I haven't bought an nVidia GPU for a decade now, so I can't speak to the stability._
+
+
+# Gaming & HDR
+
+As of 1.1 released in July 2025, Sway supports HDR.
+
+This is set to toggle by default, but can be defined when you configure the displays.
+
+Using `gamescope` you can `--hdr-enabled`, but there are occasional bugs that may require temporary flags like `--hdr-debug-force-support`.
+
+	gamescope --hdr-enabled --hdr-debug-force-support -- vkcube
+
+I have not been able to get SteamVR working, but I'm not sure if that's because of the switch to sway or some other problem between years worth of updates or faulty hardware.
+
+
+
+
+## better temperature scripts
+
+Write a script to grab temperatures to replace the temperature module in waybar with custom commands...
+
+_This is because configuring temperatures is hardware dependent and the waybar has unintelligent defaults and anti-agnostic configuration!_
+
+Example that matters?
+
+for amd cpu: `k10temp` followed by `tctl`
+for intel cpu: `coretemp` followed by `package id 0`
+for amd gpu `amdgpu` followed by `edge`
+
+for nvidia we need to use `nvidia-smi` and parse that instead, but that also means if `nvidia-smi` does not exist we have to back out!
+
+_For this we will want to have an `exec-if` that checks for results
+_There may be cases where there is no GPU, so when no sensors appear can we have the custom module omitted?_
+
+For gpu temperatures:
+
+- `amdgpu`, followed by `edge`
+
+_This may not exist for laptops, may differ for nvidia, and may also differ depending on the driver._
+
+Samples:
+
+	"custom/cputemp": {
+		"format": "{}°C",
+		"interval": "3",
+		"exec": "/usr/local/bin/temps cpu",
+		"exec-if": "/usr/local/bin/temps cpu can"
+	}
+	"custom/gputemp": {
+		"format": "GPU: {}°C",
+		"interval": "3",
+		"exec": "/usr/local/bin/temps gpu",
+		"exec-if": "/usr/local/bin/temps gpu can"
+	}
+
+_Other people have tried to write their own scripts, but due to the randomized nature of the udev naming, it may require a full programming language to maintain sanity, and it's just not important enough to me to focus on._
+
+
+## workspace restoration
+
+One problem with sway is that applications with multiple windows, such as the web browser or text editor, do not restore to their previous workspaces.
+
+This seems to be due to the lack of metadata properties (eg. formerly xprops), which are no-longer available to external programs for security purposes.
+
+It may be possible to write an IPC connected utility to save and restore workspaces though.
+
+_This tool would need to know when to save, and to intelligently restore only once when applications are first launched._
+
+It would need to have a way to pull wayland equivalents for the content mentioned in this issue:
+
+- https://github.com/swaywm/sway/issues/1005
+
+_Again, I haven't been bothered by this enough to justify sinking who knows how long into fixing it._
+
+
+## sessions
+
+I am still testing to verify whether my latest configuration iteration allows me to close sway with `super+x` and launch it again without redundant overlapping services.
+
+The original sway setup involved launching tools with exec commands, but anything loaded as a daemon remains running, so you'd end up with more than one instance.
+
+I've switched to using systemd unit files in an attempt to resolve this, but I also had to change the exit command to stop the entire session.
+
+So far I believe some things may not close out correctly, such as the wallpaper service, but I'm pretty sure sound and the waybar do not duplicate or break.

+ 7 - 155
todo.md

@@ -1,159 +1,11 @@
 
-# todo
+- verify whether we need to remove the gvm override that breaks certain default commands (eg. cd/ls etc...)
 
-Transitioning to Sway/Wayland for desktop environment.
+- verify brave launches correctly (eg. no keyring prompt)
+	- verify mpv runs correctly
+	- verify yt-dlp is correctly able to pull credentials from brave
 
-_Expect iterative changes over the following months while fine-tuning happens on real hardware._
+- verify whether qview works correctly; the desktop file added is odd (com.interversehq.qView.desktop), so the mimeapps.list might need adjustment.
 
-
-## sway
-
-- verify fix for alacritty config loads gvm/bash_profile without requiring redundant sourcing
-- double-check whether exit command properly, and fully, terminates our sway session (eg. we can safely reload sway)
-
-
----
-
-When I eventually break down and buy elden ring, try these?
-
-	PROTON_NO_FSYNC=1 WINE_FULLSCREEN_FSR=1 mangohud gamemoderun %command%
-
-May need other steps for ultrawide support?
-
-https://github.com/gurrgur/er-patcher
-
-	./er-patcher -r 144 -uavc -- env <above command>
-
-
----
-
-- figure out how to modify aur package installation to occur under new user rather than temporary user
-- add new aur packages to the installation
-	- cmst (sway/wayland friendly connman management)
-	- wev (_need to verify necessity?_)
-
-- investigate `poweralertd` and `batsignal` to setup low battery alerts with `mako`
-	- _This is important for laptops_
-
-- continue to refine `notes/sway.md` to account for the lack of obvious world-knowledge
-
-- Test SteamVR
-	- Setup two new base stations for 4-station setup
-	- Reconfigure steam vr utils software
-		- Make sure all 4 base stations connect
-		- Make sure all 4 base stations shutdown
-		- Make sure audio transitions to and from
-	- try Beat Saber
-	- try No Man's Sky
-
-
-## better temperature scripts
-
-Write a script to grab temperatures to replace the temperature module in waybar with custom commands...
-
-_This is because configuring temperatures is hardware dependent and the waybar has unintelligent defaults and anti-agnostic configuration!_
-
-Example that matters?
-
-for amd cpu: `k10temp` followed by `tctl`
-for intel cpu: `coretemp` followed by `package id 0`
-for amd gpu `amdgpu` followed by `edge`
-
-for nvidia we need to use `nvidia-smi` and parse that instead, but that also means if `nvidia-smi` does not exist we have to back out!
-
-_For this we will want to have an `exec-if` that checks for results
-_There may be cases where there is no GPU, so when no sensors appear can we have the custom module omitted?_
-
-For gpu temperatures:
-
-- `amdgpu`, followed by `edge`
-
-_This may not exist for laptops, may differ for nvidia, and may also differ depending on the driver._
-
-Samples:
-
-	"custom/cputemp": {
-		"format": "{}°C",
-		"interval": "3",
-		"exec": "/usr/local/bin/temps cpu",
-		"exec-if": "/usr/local/bin/temps cpu can"
-	}
-	"custom/gputemp": {
-		"format": "GPU: {}°C",
-		"interval": "3",
-		"exec": "/usr/local/bin/temps gpu",
-		"exec-if": "/usr/local/bin/temps gpu can"
-	}
-
-
-## scratchpad experiment
-
-I would like to be able to selectively deal with applications send to scratchpad.
-
-Getting an ordered list is a starting point.
-
-Probably replacing `scratchpad show` with an `exec`.
-
-New `/usr/local/bin/alacrittyq` with `$mod+tilde` toggle:
-
-	#!/bin/bash
-
-	# @todo: query swaymsg get_tree for alacrittyq
-	# if not exists launch
-	# if exists
-	# if hidden in scratchpad show
-	# if shown hide in scratchpad
-	alacritty --class "alacrittyq"
-
-- investigate dedicated identity for an alacritty window to selectively target for scratchpad persistent terminal via mod+tilde
-
-
-## workspace restoration
-
-It may be possible to write an IPC connected utility to save and restore workspaces
-
-_This tool would need to know when to save, and to intelligently restore only once when applications are first launched._
-
-It would need to have a way to pull wayland equivalents for the content mentioned in this issue:
-
-- https://github.com/swaywm/sway/issues/1005
-
-
-## hidpi check
-
-Previously I stopped caring because hidpi is erratic and glitchy, but I'm curious if sway might be smarter than openbox...
-
-- test hidpi configuration
-	- `output * scale 2`
-	- also targeted output scaling for HDTV but not ultrawide
-- Verify hidpi behavior of applications is not poor:
-	- firefox (many different websites?)
-	- mpv
-	- pcmanfm
-	- steam
-	- discord
-- _Remember to take some screenshots before and after to indicate visible changes?_
-
-
-## firefox automated configuration
-
-- investigate firefox configuration
-	- [auto-configuration?](https://support.mozilla.org/en-US/kb/customizing-firefox-using-autoconfig)
-	- add mimetypes to bypass godawful save dialog (eg. hanlders.json in `~/.mozilla`, but unique profile path?)
-	- how to make it remember workspaces when restoring tabs (_probably not possible, so using tab manager addon_)
-
-
-## data cleanup
-
-Utilize my old rig to cleanup and organize my data across my old HDD's
-
-- Uninstall everything that is taking up disk space
-	- games
-	- videos
-	- music
-	- data
-- disable transmission (_we should not be downloading more content on this box_)
-
-Since this machine is separate/independent I can happily deal with long running processes and filling the disks to the brim while going through my files...
-
-At the end I want to be able to eliminate a huge amount of data that I don't need anymore, and any redundant copies of data as well...
+- compare installed.md list against a fresh install list of packages
+	- we can perhaps identify packages to add to our arch.sh