Arch Linux re-installation journal for my Z16 AMD ThinkPad
I took the opportunity presented by having to bring my Lenovo Z16 AMD Gen1 ThinkPad to Advice in Surat Thani for repair due to a faulty motherboard to document the re-installation process on my blog for friends and other GNOME / Arch users. In fact, I maintain a similar changelog for all of my/our Arch Linux computers and try to keep their configurations as consistent and reproducible as possible over time.
The setup described in this article is my secondary computer. My primary system, the custom Ryzen 9 3900X studio PC (see Gear), is nearly identical, though. The main difference is that it also has a large collection of audio plugins installed, which I have, so far, chosen to leave off my laptop this time. 🫣😜
Some parts of this guide will be redacted, some are somewhat incomplete (e.g. restored XY from backup) while others may appear in an order or fashion that might not always be easy to comprehend/follow. Be that as it may, I am happy to answer questions and am already looking forward to hearing what you think of my approach to configuring my system, and learning from you how I might do a better job at it in the future. 🤓️
PS: I made some of the scripts mentioned in this journal (and some more that I use regularly) available on my GitLab.
Installed base system
- Installed Arch Linux with
linuxandlinux-ltskernels, as well asplymouth - Set static hostname to
<HOSTNAME> - Enabled SSH daemon in the GNOME Settings app
- Added
GNOME_SHELL_SLOWDOWN_FACTOR=0.3to/etc/environmentto make GNOME Shell animations more snappy:
sudo tee -a /etc/environment > /dev/null <<'EOF'
# Make GNOME Shell animations more snappy
GNOME_SHELL_SLOWDOWN_FACTOR=0.3
EOF
- Extended /etc/hosts with
sudo tee -a /etc/hosts > /dev/null <<'EOF'
# Computers
<HOST_1_IP> <HOSTNAME>
<HOST_2_IP> <HOSTNAME>
<HOST_3_IP> <HOSTNAME>
<HOST_4_IP> <HOSTNAME>
# NAS
<NAS_IP> <NAS_HOST>
# Raspberry Pi
<PI_1_IP> <HOSTNAME>
<PI_2_IP> <HOSTNAME>
EOF
Configured avahi/systemd-resolved
- Ran
sudo nano /etc/systemd/resolved.confand changed:
MulticastDNS=no
LLMNR=no
- Set unique static hostname by running
sudo hostnamectl hostname <HOSTNAME> - Finished avahi/systemd-resolved configuration by running
sudo systemctl restart systemd-resolved && sudo systemctl restart avahi-daemon - Verified avahi/systemd-resolved configuration by running
sudo ss -ulpn 'sport = 5353'(only avahi-daemon owns 5353),resolvectl status | grep -i mdns(mDNS not in Current Scopes), andjournalctl -u avahi-daemon -f(no host name conflicts)
Installed base packages
- Installed pacman packages with
sudo pacman -S adw-gtk-theme base-devel bind btop cava cmake cpupower dosfstools fastfetch ffmpegthumbnailer flatpak git gnome-firmware gnome-sound-recorder gst-libav gst-plugins-ugly gulp hunspell-de hyphen-de hyphen-en inxi iwd less libgda6 logrotate mediainfo mpc mpd nano-syntax-highlighting networkmanager-openvpn nmap nodejs noto-fonts-cjk npm nvm openvpn pacman-contrib patchelf php php-gd radeontop realtime-privileges rsync seahorse showmethekey speedtest-cli tree usbutils whois wireless_tools wol xcb-imdkit xcb-util-wm xorg-server xorg-xinit yarn zenity zip zsh - Installed yay with
git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si && yay --version && cd../ && rm -rf yay, and installed yay packages withsudo yay -S blackbox-terminal linkchecker symfony-cli unimatrix-git - Installed Flatpak packages with
flatpak install app.drey.KeyRack app.zen_browser.zen art.fatdawlf.Piccolo be.alexandervanhee.gradia ca.desrt.dconf-editor com.belmoussaoui.Decoder com.github.huluti.Curtail com.github.johnfactotum.Foliate com.github.tchx84.Flatseal com.jeffser.Alpaca com.mattjakeman.ExtensionManager com.obsproject.Studio com.rafaelmardojai.Blanket com.rafaelmardojai.SharePreview com.rafaelmardojai.WebfontKitGenerator com.valvesoftware.Steam com.vixalien.sticky de.haeckerfelix.Fragments de.haeckerfelix.Shortwave de.wwwtech.gitte dev.geopjr.Tuba hu.irl.cameractrls io.github.dimtpap.coppwr io.github.dp0sk.Crosspipe io.github.fabrialberio.pinapp io.github.flattool.Ignition io.github.flattool.Warehouse io.github.gaheldev.Millisecond io.github.htkhiem.Euphonica io.github.idevecore.Valuta io.github.jorchube.monitorets io.github.kolunmi.Bazaar io.github.mrvladus.List io.github.nate_xyz.Chromatic io.github.nozwock.Packet io.github.quodlibet.QuodLibet io.github.sitraorg.sitra io.github.sigmasd.stimulator io.github.sitraorg.sitra io.github.v81d.Wattage io.gitlab.adhami3310.Impression io.gitlab.elescoute.password io.gitlab.liferooter.TextPieces io.gitlab.news_flash.NewsFlash io.gitlab.theevilskeleton.Upscaler it.mijorus.gearlever me.dusansimic.DynamicWallpaper me.fouquet.Stencil net.codelogistics.webapps net.nokyan.Resources net.sonobus.SonoBus no.bragefuglseth.Keypunch org.ardour.Ardour org.audacityteam.Audacity org.blender.Blender org.darktable.Darktable org.filezillaproject.Filezilla org.gabmus.swatch org.gimp.GIMP org.gnome.Builder org.gnome.DejaDup org.gnome.Fractal org.gnome.Papers org.gnome.Podcasts org.gnome.Showtime org.gnome.World.PikaBackup org.gnome.design.Lorem org.gnome.gitlab.somas.Apostrophe org.gnome.meld org.gtk.Gtk3theme.adw-gtk3 org.gtk.Gtk3theme.adw-gtk3-dark org.inkscape.Inkscape org.libreoffice.LibreOffice org.mixxx.Mixxx org.mozilla.firefox org.mozilla.thunderbird org.nickvision.tagger org.nickvision.tubeconverter org.pipewire.Helvum org.pitivi.Pitivi org.signal.Signal org.soundconverter.SoundConverter page.codeberg.censor.Censor page.tesk.Refine re.sonny.OhMySVG - Ran
flatpak config --set languages 'de;en'andflatpak config languages --set "en;de"so Flatpak apps get the right dictionaries - Made Flatpak theme aware with
sudo flatpak override --filesystem=xdg-data/themes && gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3' && gsettings set org.gnome.desktop.interface color-scheme 'default' && gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3-dark' && gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' - Installed Lightworks as the official Flatpak and authenticated it
- Installed Bitwig Studio as the official Flatpak and authenticated it
- Installed Studio Pro 8 as the official Flatpak and authenticated it
Configured personal files, dotfiles, and wallpaper
- Cloned
Git repository - Symlinked Dynamic Wallpapers from the
Git repository to the user paths with
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/dynamic-wallpapers/circles-16-9-amadeus-paulussen.xml \
~/.local/share/gnome-background-properties/circles-16-9-amadeus-paulussen.xml
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/dynamic-wallpapers/circles-16-10-amadeus-paulussen.xml \
~/.local/share/gnome-background-properties/circles-16-10-amadeus-paulussen.xml
- Symlinked nautilus scripts, Templates, fonts, and MPD playlists from
<PERSONAL_GIT_REPOSITORY>to respective user paths with
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/nautilus ~/.local/share/nautilus/scripts
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/templates ~/Templates
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/fonts ~/.fonts
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/avatar ~/Pictures/avatar
ln -s ~/Sites/<PERSONAL_GIT_REPOSITORY>/playlists ~/.local/share/mpd/playlists
Configured CLI
- Installed oh-my-zsh with the official installation script
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" - Added personal settings to ~/.zshrc with
cat >> ~/.zshrc <<'EOF'
# PATH & directories
export PATH="$PATH:~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/"
export CDPATH="~/Sites/"
# Default applications
export EDITOR="nano"
# Aliases
alias gnome-builder="flatpak run org.gnome.Builder"
# Startup
logo-fastfetch.sh
EOF
- Created custom nanorc configuration with
cat > ~/.nanorc <<'EOF'
include "/usr/share/nano/*.nanorc"
set tabsize 4
set softwrap
set tabstospaces
set whitespace "·→"
EOF
- Configured Blackbox Terminal with
dconf load /com/raggesilver/BlackBox/ <<'EOF'
[/]
floating-controls=true
floating-controls-hover-area=uint32 20
font='Adwaita Mono 11'
headerbar-drag-area=false
remember-window-size=true
show-headerbar=false
terminal-padding=(uint32 10, uint32 10, uint32 10, uint32 10)
was-maximized=false
window-height=uint32 1128
window-width=uint32 930
EOF
- Set Black Box terminal to launch upon login in the Ignition app
- Enabled asterisks for password input with
sudo install -Dm440 /dev/stdin /etc/sudoers.d/pwfeedback <<'EOF'
Defaults pwfeedback
EOF
sudo visudo -c
- Configured ufw with
sudo systemctl enable ufw.service
sudo ufw enable
sudo ufw logging off
# SSH for LAN only
sudo ufw allow from <LAN_SUBNET> to any port 22 proto tcp
# Network printer / IPP
sudo ufw allow from <LAN_SUBNET> to any port 631 proto tcp
# mDNS / Bonjour
sudo ufw allow in proto udp to 224.0.0.251 port 5353
sudo ufw allow out proto udp from any to 224.0.0.251 port 5353
sudo ufw reload
sudo chmod 600 /etc/ufw/*.rules
Configured SMB mount and automount setup
- Created mount directories
sudo mkdir -p /mnt/smb/<NAS_NAME>/{amadeus,backup,shared} && sudo chown -R amadeus:amadeus /mnt/smb
- Created
~/.smbcredentials
sudo tee ~/.smbcredentials > /dev/null <<'EOF'
username=*****
password=*****
EOF
- Created the three
.mountunits
sudo tee /etc/systemd/system/mnt-smb-<NAS_NAME>-backup.mount > /dev/null <<'EOF'
[Unit]
Description=Mount SMB <NAS_NAME>/backup
After=network-online.target
Wants=network-online.target
[Mount]
What=//<NAS_NAME>.local/backup
Where=/mnt/smb/<NAS_NAME>/backup
Type=cifs
Options=credentials=~/.smbcredentials,vers=3.0,uid=amadeus,gid=amadeus,iocharset=utf8,actimeo=2,soft,nofail,noserverino,cache=none,_netdev
TimeoutSec=30
EOF
sudo tee /etc/systemd/system/mnt-smb-<NAS_NAME>-amadeus.mount > /dev/null <<'EOF'
[Unit]
Description=Mount SMB <NAS_NAME>/amadeus
After=network-online.target
Wants=network-online.target
[Mount]
What=//<NAS_NAME>.local/amadeus
Where=/mnt/smb/<NAS_NAME>/amadeus
Type=cifs
Options=credentials=~/.smbcredentials,vers=3.0,uid=amadeus,gid=amadeus,iocharset=utf8,actimeo=2,soft,nofail,noserverino,cache=none,_netdev
TimeoutSec=30
EOF
sudo tee /etc/systemd/system/mnt-smb-<NAS_NAME>-shared.mount > /dev/null <<'EOF'
[Unit]
Description=Mount SMB <NAS_NAME>/shared
After=network-online.target
Wants=network-online.target
[Mount]
What=//<NAS_NAME>.local/shared
Where=/mnt/smb/<NAS_NAME>/shared
Type=cifs
Options=credentials=~/.smbcredentials,vers=3.0,uid=amadeus,gid=amadeus,iocharset=utf8,actimeo=2,soft,nofail,noserverino,cache=none,_netdev
TimeoutSec=30
EOF
- Cloned/pulled the
<PERSONAL_GIT_REPOSITORY>repository, then symlinked the two repo-tracked scripts into/usr/local/bin
chmod 755 ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/mount-smb-<NAS_NAME>.sh
chmod 755 ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/umount-smb-<NAS_NAME>.sh
sudo ln -sf ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/mount-smb-<NAS_NAME>.sh /usr/local/bin/mount-smb-<NAS_NAME>.sh
sudo ln -sf ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/umount-smb-<NAS_NAME>.sh /usr/local/bin/umount-smb-<NAS_NAME>.sh
- Installed
reconcile-smb-<NAS_NAME>.sh
sudo install -m 755 -o root -g root ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/reconcile-smb-<NAS_NAME>.sh /usr/local/bin/
- Added the reconcile service + timer
sudo tee /etc/systemd/system/reconcile-smb-<NAS_NAME>.service > /dev/null <<'EOF'
[Unit]
Description=Reconcile <NAS_NAME>.local SMB mounts with reachability
[Service]
Type=oneshot
ExecStart=/usr/local/bin/reconcile-smb-<NAS_NAME>.sh
EOF
sudo tee /etc/systemd/system/reconcile-smb-<NAS_NAME>.timer > /dev/null <<'EOF'
[Unit]
Description=Periodic <NAS_NAME>.local SMB reachability check
[Timer]
OnBootSec=15s
OnUnitActiveSec=20s
[Install]
WantedBy=timers.target
EOF
- Added the NetworkManager dispatcher
sudo tee /etc/NetworkManager/dispatcher.d/50-smb-<NAS_NAME> > /dev/null <<'EOF'
#!/bin/bash
ACTION="$2"
case "$ACTION" in
up|down|connectivity-change)
/usr/local/bin/reconcile-smb-<NAS_NAME>.sh
;;
esac
EOF
sudo chmod 755 /etc/NetworkManager/dispatcher.d/50-smb-<NAS_NAME> && sudo chown root:root /etc/NetworkManager/dispatcher.d/50-smb-<NAS_NAME>
- Reloaded the daemon and enabled the
reconcile-smb-<NAS_NAME>.timer
sudo systemctl daemon-reload
sudo systemctl enable --now reconcile-smb-<NAS_NAME>.timer
- Verified the setup
systemctl status reconcile-smb-<NAS_NAME>.timer
ls -l /usr/local/bin/{mount,umount,reconcile}-smb-<NAS_NAME>.sh
sudo /usr/local/bin/reconcile-smb-<NAS_NAME>.sh
mountpoint /mnt/smb/<NAS_NAME>/amadeus
Configured pro audio
- Added my user to the realtime, and audio groups with
sudo usermod -aG audio,realtime amadeus - Disabled SMT with
echo forceoff | sudo tee /sys/devices/system/cpu/smt/control - Added threadirqs to reduce IRQ-induced audio latency jitter with
sudo sed -i 's/$/ threadirqs/' /etc/kernel/cmdlineandsudo mkinitcpio -P - Reloaded udev rules with
sudo udevadm control --reload-rules
sudo udevadm trigger
- Set swappiness with
sudo tee /etc/sysctl.d/99-swappiness.conf >/dev/null <<'EOF'
vm.swappiness = 10
EOF
- Reloaded system-wide kernel parameters with
sudo sysctl --system
Setup accounts, credentials, and peripherals
- Setup Bitwarden
- Setup public key authentication with GitLab and Cyon
- Setup Online Accounts in GNOME Settings
- Calendars
- Contacts
- Added printer with
sudo lpadmin -p HL-L2460DN -E -v ipp://<PRINTER_IP>/ipp/print -m everywhereand made it the default printer withlpoptions -d HL-L2460DN
Configured GNOME desktop and shell
- Set GNOME Default Apps for web and email with
xdg-mime default app.zen_browser.zen.desktop x-scheme-handler/http && xdg-mime default org.mozilla.thunderbird.desktop x-scheme-handler/mailto - Installed GNOME Shell extensions Copyous, Legacy (GTK3) Theme Scheme Auto Switcher, Luminus, No overview at start-up, and PaperWM
- Configured GNOME Shell extension settings with
dconf load /org/gnome/shell/extensions/ <<'EOF'
[copyous]
clipboard-position-vertical='top'
database-backend='sqlite'
disable-hljs-dialog=false
history-length=100
show-indicator=false
wiggle-indicator=false
wmclass-exclusions=['com.biwarden.desktop']
[paperwm]
cycle-height-steps=[0.25, 0.33299999999999996, 0.5, 0.75]
cycle-width-steps=[0.25, 0.33299999999999996, 0.5, 0.75]
default-focus-mode=0
disable-topbar-styling=true
edge-preview-click-enable=false
edge-preview-enable=false
gesture-enabled=false
last-used-display-server='Wayland'
overview-min-windows-per-row=15
restore-attach-modal-dialogs='true'
restore-edge-tiling='true'
restore-keybinds='{"toggle-tiled-left":{"bind":"[\\"<Super>Left\\"]","schema_id":"org.gnome.mutter.keybindings"},"toggle-tiled-right":{"bind":"[\\"<Super>Right\\"]","schema_id":"org.gnome.mutter.keybindings"},"switch-to-workspace-last":{"bind":"[\\"<Super>End\\"]","schema_id":"org.gnome.desktop.wm.keybindings"},"unmaximize":{"bind":"[\\"<Super>Down\\",\\"<Alt>F5\\"]","schema_id":"org.gnome.desktop.wm.keybindings"},"switch-applications":{"bind":"[\\"<Super>Tab\\",\\"<Alt>Tab\\"]","schema_id":"org.gnome.desktop.wm.keybindings"},"maximize":{"bind":"[\\"<Super>Up\\"]","schema_id":"org.gnome.desktop.wm.keybindings"},"switch-applications-backward":{"bind":"[\\"<Shift><Super>Tab\\",\\"<Shift><Alt>Tab\\"]","schema_id":"org.gnome.desktop.wm.keybindings"},"focus-active-notification":{"bind":"[\\"<Super>n\\"]","schema_id":"org.gnome.shell.keybindings"}}'
restore-workspaces-only-on-primary='true'
selection-border-radius-bottom=20
selection-border-radius-top=20
show-focus-mode-icon=false
show-open-position-icon=false
show-window-position-bar=false
show-workspace-indicator=false
winprops=['{"wm_class":"de.haeckerfelix.Fragments","title":"","preferredWidth":"25%"}', '{"wm_class":"org.gabmus.swatch","title":"","preferredWidth":"25%"}', '{"wm_class":"org.gnome.design.Lorem","title":"","preferredWidth":"25%"}', '{"wm_class":"org.gnome.Decibels","title":"","preferredWidth":"25%"}', '{"wm_class":"org.gnome.Weather","title":"","preferredWidth":"25%"}', '{"wm_class":"app.drey.KeyRack","title":"","preferredWidth":"25%"}', '{"wm_class":"io.github.sigmasd.stimulator","title":"","preferredWidth":"25%"}', '{"wm_class":"be.alexandervanhee.gradia","title":"","preferredWidth":"50%"}', '{"wm_class":"com.bitwarden.desktop","title":"","preferredWidth":"50%"}', '{"wm_class":"com.github.johnfactotum.Foliate","title":"","preferredWidth":"50%"}', '{"wm_class":"com.github.tchx84.Flatseal","title":"","preferredWidth":"50%"}', '{"wm_class":"com.jeffser.Alpaca","title":"","preferredWidth":"50%"}', '{"wm_class":"com.jeffser.Pigment","title":"","preferredWidth":"50%"}', '{"wm_class":"com.rafaelmardojai.Blanket","title":"","preferredWidth":"50%"}', '{"wm_class":"de.haeckerfelix.Shortwave","title":"","preferredWidth":"50%"}', '{"wm_class":"dev.geopjr.Tuba","title":"","preferredWidth":"50%"}', '{"wm_class":"io.github.flattool.Warehouse","title":"","preferredWidth":"50%"}', '{"wm_class":"io.github.mrvladus.List","title":"","preferredWidth":"50%"}', '{"wm_class":"io.github.ronniedroid.concessio","title":"","preferredWidth":"50%"}', '{"wm_class":"io.github.tobagin.digger","title":"","preferredWidth":"50%"}', '{"wm_class":"io.gitlab.liferooter.TextPieces","title":"","preferredWidth":"50%"}', '{"wm_class":"net.nokyan.Resources","title":"","preferredWidth":"50%"}', '{"wm_class":"no.bragefuglseth.Keypunch","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.DejaDup","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Fractal","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Papers","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Podcasts","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.World.PikaBackup","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.gitlab.somas.Apostrophe","title":"","preferredWidth":"50%"}', '{"wm_class":"org.nickvision.tubeconverter","title":"","preferredWidth":"50%"}', '{"wm_class":"org.signal.Signal","title":"","preferredWidth":"50%"}', '{"wm_class":"blackbox-terminal","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Console","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Contacts","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Settings","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.font-viewer","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.Logs","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.SystemMonitor","title":"","preferredWidth":"50%"}', '{"wm_class":"org.gnome.TextEditor","title":"","preferredWidth":"50%"}', '{"wm_class":"nautilus","title":"","preferredWidth":"50%"}', '{"wm_class":"baobab","title":"","preferredWidth":"50%"}', '{"wm_class":"loupe","title":"","preferredWidth":"50%"}', '{"wm_class":"app.zen_browser.zen","title":"","preferredWidth":"75%"}', '{"wm_class":"io.github.dp0sk.Crosspipe","title":"","preferredWidth":"75%"}', '{"wm_class":"io.github.htkhiem.Euphonica","title":"","preferredWidth":"75%"}', '{"wm_class":"io.github.kolunmi.Bazaar","title":"","preferredWidth":"75%"}', '{"wm_class":"io.github.quodlibet.QuodLibet","title":"","preferredWidth":"75%"}', '{"wm_class":"io.gitlab.news_flash.NewsFlash","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gimp.GIMP","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gnome.Builder","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gnome.Showtime","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gnome.meld","title":"","preferredWidth":"75%"}', '{"wm_class":"org.inkscape.Inkscape","title":"","preferredWidth":"75%"}', '{"wm_class":"com.fender.studioapp8","title":"","preferredWidth":"100%"}', '{"wm_class":"com.lwks.Lightworks","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-startcenter","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-writer","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-calc","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-impress","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-draw","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-base","title":"","preferredWidth":"75%"}', '{"wm_class":"libreoffice-math","title":"","preferredWidth":"75%"}', '{"wm_class":"org.mixxx.mixxx","title":"","preferredWidth":"75%"}', '{"wm_class":"org.mozilla.firefox","title":"","preferredWidth":"75%"}', '{"wm_class":"org.pipewire.Helvum","title":"","preferredWidth":"75%"}', '{"wm_class":"epiphany","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gnome.Calendar","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gnome.Maps","title":"","preferredWidth":"75%"}', '{"wm_class":"org.gnome.Software","title":"","preferredWidth":"75%"}', '{"wm_class":"stamp","title":"","preferredWidth":"75%"}', '{"wm_class":"com.bitwig.BitwigStudio","title":"","preferredWidth":"100%"}', '{"wm_class":"art.fatdawlf.Piccolo","title":"","scratch_layer":true}', '{"wm_class":"com.belmoussaoui.Decoder","title":"","scratch_layer":true}', '{"wm_class":"com.github.huluti.Curtail","title":"","scratch_layer":true}', '{"wm_class":"com.mattjakeman.ExtensionManager","title":"","scratch_layer":true}', '{"wm_class":"com.vixalien.sticky","title":"","scratch_layer":true}', '{"wm_class":"io.github.fabrialberio.pinapp","title":"","scratch_layer":true}', '{"wm_class":"io.github.flattool.Ignition","title":"","scratch_layer":true}', '{"wm_class":"io.github.gaheldev.Millisecond","title":"","scratch_layer":true}', '{"wm_class":"io.github.idevecore.Valuta","title":"","scratch_layer":true}', '{"wm_class":"io.github.jorchube.monitorets","title":"","scratch_layer":true}', '{"wm_class":"io.github.nozwock.Packet","title":"","scratch_layer":true}', '{"wm_class":"io.gitlab.adhami3310.Impression","title":"","scratch_layer":true}', '{"wm_class":"io.gitlab.elescoute.password","title":"","scratch_layer":true}', '{"wm_class":"me.dusansimic.DynamicWallpaper","title":"","scratch_layer":true}', '{"wm_class":"org.soundconverter.SoundConverter","title":"","scratch_layer":true}', '{"wm_class":"page.tesk.Refine","title":"","scratch_layer":true}', '{"wm_class":"org.gnome.Calculator","title":"","scratch_layer":true}', '{"wm_class":"org.gnome.Characters","title":"","scratch_layer":true}', '{"wm_class":"org.gnome.Clocks","title":"","scratch_layer":true}', '{"wm_class":"org.gnome.DiskUtility","title":"","scratch_layer":true}', '{"wm_class":"org.gnome.tweaks","title":"","scratch_layer":true}', '{"wm_class":"showmethekey","title":"","scratch_layer":true}', '{"wm_class":"","title":"Mozilla Thunderbird","preferredWidth":"75%"}']
[paperwm/keybindings]
activate-window-under-cursor=@as []
barf-out=['']
barf-out-active=['<Shift><Super>i']
center=@as []
center-horizontally=['<Super>c']
center-vertically=['']
close-window=['<Super>q']
cycle-height=['<Super><Shift>r']
cycle-height-backwards=['<Super><Alt><Shift>r']
cycle-width=['<Super>r']
cycle-width-backwards=['<Super><Alt>r']
drift-left=['']
drift-right=['']
live-alt-tab=['<Super>Tab', '<Alt>Tab']
live-alt-tab-backward=['<Super><Shift>Tab', '<Alt><Shift>Tab']
live-alt-tab-scratch=['']
live-alt-tab-scratch-backward=['']
move-down=['<Super><Ctrl>Down']
move-down-workspace=@as []
move-left=['<Super><Ctrl>comma', '<Super><Shift>comma', '<Super><Ctrl>Left']
move-monitor-above=['']
move-monitor-below=['']
move-monitor-left=['']
move-monitor-right=['']
move-previous-workspace=['']
move-previous-workspace-backward=['']
move-right=['<Super><Ctrl>period', '<Super><Shift>period', '<Super><Ctrl>Right']
move-space-monitor-above=['']
move-space-monitor-below=['']
move-space-monitor-left=['']
move-space-monitor-right=['']
move-up=['<Super><Ctrl>Up']
move-up-workspace=@as []
new-window=['<Super>n']
open-window-position-down=@as []
open-window-position-end=@as []
open-window-position-left=@as []
open-window-position-right=@as []
open-window-position-start=@as []
open-window-position-up=@as []
paper-toggle-fullscreen=['<Super><shift>f']
previous-workspace=['']
previous-workspace-backward=['']
resize-h-dec=['']
resize-h-inc=@as []
resize-w-dec=['']
resize-w-inc=@as []
slurp-in=['<Super>i']
swap-monitor-above=['']
swap-monitor-below=['']
swap-monitor-left=['']
swap-monitor-right=['']
switch-down=['<Super>Down']
switch-down-loop=@as []
switch-down-or-else-workspace=@as []
switch-down-workspace=['']
switch-down-workspace-from-all-monitors=@as []
switch-eighth=@as []
switch-eleventh=@as []
switch-fifth=@as []
switch-first=['<Super>Home']
switch-focus-mode=['']
switch-fourth=@as []
switch-global-down=@as []
switch-global-left=@as []
switch-global-right=@as []
switch-global-up=@as []
switch-last=['<Super>End']
switch-left=['<Super>Left']
switch-left-loop=@as []
switch-monitor-above=['']
switch-monitor-below=['']
switch-monitor-left=@as []
switch-monitor-right=@as []
switch-next=['']
switch-next-loop=@as []
switch-ninth=@as []
switch-open-window-position=['']
switch-previous=['']
switch-previous-loop=@as []
switch-right=['<Super>Right']
switch-right-loop=@as []
switch-second=@as []
switch-seventh=@as []
switch-sixth=@as []
switch-tenth=@as []
switch-third=@as []
switch-up=['<Super>Up']
switch-up-loop=@as []
switch-up-or-else-workspace=@as []
switch-up-workspace=['']
switch-up-workspace-from-all-monitors=@as []
take-window=['<Super>t']
toggle-maximize-width=['<Super>f']
toggle-position-bar=@as []
toggle-scratch=['<Control><Super>Escape']
toggle-scratch-layer=['']
toggle-scratch-window=['']
toggle-top-and-position-bar=['']
toggle-top-bar=@as []
[paperwm/workspaces]
list=['f597c64e-ddcf-4446-a539-695fc1d39bba', 'abf50bb7-0b86-4139-9730-776ed9d71adc', '7776d108-e0b1-4f56-8ece-524bb03342bd', '9455a255-ccdc-431b-8fe5-04d52cb09ec9']
[paperwm/workspaces/7776d108-e0b1-4f56-8ece-524bb03342bd]
index=2
[paperwm/workspaces/9455a255-ccdc-431b-8fe5-04d52cb09ec9]
index=3
[paperwm/workspaces/abf50bb7-0b86-4139-9730-776ed9d71adc]
index=1
[paperwm/workspaces/f597c64e-ddcf-4446-a539-695fc1d39bba]
index=0
EOF
- Manually added Copyous Pinned Items
…, ฿, —, ç, Ş, ó - Setup three custom scripts to launch the web browser (app.zen_browser.zen) with Super+B, the terminal (blackbox-terminal) with Super+Enter, and the file browser (nautilus) with Super+E by first creating the scripts and then configuring the key bindings respectively with
sudo tee ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/gnome/open-browser.sh > /dev/null <<'EOF'
#!/bin/sh
exec flatpak run app.zen_browser.zen
EOF
sudo tee ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/gnome/open-terminal.sh > /dev/null <<'EOF'
#!/bin/sh
exec blackbox-terminal
EOF
sudo tee ~/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/gnome/open-files.sh > /dev/null <<'EOF'
#!/bin/sh
exec nautilus
EOF
#!/usr/bin/env bash
set -e
BASE="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings"
# Register the custom keybindings
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \
"[
'${BASE}/browser/',
'${BASE}/terminal/',
'${BASE}/files/'
]"
# app.zen_browser.zen
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/browser/ \
name "Open Browser"
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/browser/ \
command "$HOME/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/gnome/open-browser.sh"
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/browser/ \
binding "<Super>b"
# blackbox-terminal
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/terminal/ \
name "Open Terminal"
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/terminal/ \
command "$HOME/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/gnome/open-terminal.sh"
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/terminal/ \
binding "<Super>Return"
# nautilus
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/files/ \
name "Open Files"
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/files/ \
command "$HOME/Sites/<PERSONAL_GIT_REPOSITORY>/scripts/gnome/open-files.sh"
gsettings set \
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${BASE}/files/ \
binding "<Super>e"
echo "Done."
- Set GNOME key bindings* with
dconf write /org/gnome/desktop/wm/keybindings/close "['<Super>w']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-up "@as []"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-down "@as []"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-left "['<Shift><Super>Left']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-right "['<Shift><Super>Right']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-1 "['<Super><Shift>1']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-2 "['<Super><Shift>2']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-3 "['<Super><Shift>3']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['<Super><Shift>4']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-1 "['<Super>1']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-2 "['<Super>2']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-3 "['<Super>3']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['<Super>4']"
- Adjusted GNOME Settings app configuration with
dconf load /org/gnome/desktop/sound/ <<'EOF'
[/]
event-sounds=false
theme-name='__custom'
EOF
dconf load /org/gnome/desktop/peripherals/ <<'EOF'
[touchpad]
speed=0.47008547008547019
tap-and-drag=false
two-finger-scrolling-enabled=true
EOF
dconf load /org/gnome/desktop/input-sources/ <<'EOF'
[/]
mru-sources=[('xkb', 'us')]
sources=[('xkb', 'ch'), ('xkb', 'th')]
EOF
- Changed GNOME's mag-factor with
gsettings set org.gnome.desktop.a11y.magnifier mag-factor 1.7 - Configured nautilus sidebar elements with
sudo tee ~/.config/gtk-3.0/bookmarks > /dev/null <<'EOF'
file://~/Desktop Desktop
file://~/Documents Documents
file://~/Downloads Downloads
file://~/Music Music
file://~/Pictures Pictures
file://~/Sites Sites
file://~/Templates Templates
file://~/Videos Videos
file:///mnt/smb/<NAS_NAME>/amadeus <NAS_NAME>
EOF
- Symlinked custom .desktop launchers from
<PERSONAL_GIT_REPOSITORY>Git repository with
mkdir -p ~/.local/share/applications
SRC_DIR=~/Sites/<PERSONAL_GIT_REPOSITORY>/custom-desktop-launchers
DEST_DIR=~/.local/share/applications
for f in "$SRC_DIR"/*.desktop; do
dest="$DEST_DIR/$(basename "$f")"
if [ -e "$dest" ] && [ ! -L "$dest" ]; then
echo "Replacing existing file: $dest"
fi
ln -sf "$f" "$dest"
done
update-desktop-database "$DEST_DIR"
- Configured GNOME dock favorites with
dconf write /org/gnome/shell/favorite-apps "['org.gnome.Nautilus.desktop', 'org.signal.Signal.desktop', 'org.mozilla.thunderbird.desktop', 'app.zen_browser.zen.desktop', 'com.bitwarden.desktop.desktop', 'org.gnome.TextEditor.desktop', 'com.bitwig.BitwigStudio.desktop', 'Sononym.desktop', 'io.github.quodlibet.QuodLibet.desktop', 'com.raggesilver.BlackBox.desktop', 'org.gnome.Settings.desktop']"
Configured GNOME overview app grid
- Created folders with
dconf load /org/gnome/desktop/app-folders/ << 'EOF'
[/]
folder-children=['System', 'Utilities', 'YaST', 'Pardus', 'e6e599c3-6109-466b-af08-f15ad2b78c9c', 'a44c1ab8-efb8-4ae4-895e-426fa4998315', 'c0cb5d93-ebb6-4df3-9771-7db80c4d0a23', '21afcf46-e26b-4386-95f8-3683dbc08137', 'c9914c5f-cbe7-410d-80da-5c8f2e972c09', '54440d6f-fb64-477a-bf62-17d7b025ba55', 'de3780cc-3d81-4683-9469-e7f7b055bed5', 'd23a8583-1412-4ff6-9583-15e107d937cf', 'fde98bb2-dae6-465d-8b77-2031a655e66c', '6a58a1c0-e3fd-4a85-bed8-f3e28e4ecdff', '4474c5fb-a7cd-43b1-8512-f104e28f2733', '6f0a9004-30a1-4d02-8acf-764ea4362a58', '4f79323f-b079-4e6b-9300-de2713913232', '9fc2a554-47cf-4702-a829-2e5b3cf65763', 'aabaf61f-ce50-4490-8ad0-626a1904139f', '8848f124-60d2-4115-8ee7-04940eb06d10']
[folders/21afcf46-e26b-4386-95f8-3683dbc08137]
apps=['com.lwks.Lightworks.desktop', 'org.pitivi.Pitivi.desktop', 'org.gnome.Showtime.desktop']
name='Video'
translate=false
[folders/4474c5fb-a7cd-43b1-8512-f104e28f2733]
apps=['org.gnome.DejaDup.desktop', 'org.gnome.World.PikaBackup.desktop']
name='Backup'
translate=false
[folders/4f79323f-b079-4e6b-9300-de2713913232]
apps=['org.gnome.Epiphany.desktop', 'org.mozilla.firefox.desktop']
name='Browser'
translate=false
[folders/54440d6f-fb64-477a-bf62-17d7b025ba55]
apps=['org.gnome.gitlab.somas.Apostrophe.desktop', 'io.github.mrvladus.List.desktop', 'de.haeckerfelix.Fragments.desktop', 'bvnc.desktop', 'bssh.desktop', 'avahi-discover.desktop', 'qv4l2.desktop', 'qvidcap.desktop', 'htop.desktop', 'org.gnome.Fractal.desktop', 'com.github.johnfactotum.Foliate.desktop', 'dev.bragefuglseth.Keypunch.desktop', 'com.ranfdev.DistroShelf.desktop', 'me.sanchezrodriguez.passes.desktop', 'nm-connection-editor.desktop', 'com.valvesoftware.Steam.desktop', 'net.codelogistics.webapps.desktop', 'io.github.kolunmi.Bazaar.desktop', 'org.mozilla.thunderbird_esr.desktop', 'me.fouquet.Stencil.desktop', 'page.codeberg.censor.Censor.desktop', 'org.nickvision.tubeconverter.desktop', 'no.bragefuglseth.Keypunch.desktop', 'io.github.flattool.Ignition.desktop']
name='Miscellaneous'
translate=false
[folders/6a58a1c0-e3fd-4a85-bed8-f3e28e4ecdff]
apps=['io.github.idevecore.Valuta.desktop', 'io.github.sigmasd.stimulator.desktop', 'io.gitlab.adhami3310.Impression.desktop', 'app.drey.KeyRack.desktop', 'io.github.nozwock.Packet.desktop', 'com.vixalien.sticky.desktop', 'cups.desktop', 'io.gitlab.elescoute.password.desktop', 'io.github.ronniedroid.concessio.desktop', 'com.belmoussaoui.Decoder.desktop', 'art.fatdawlf.Piccolo.desktop']
name='Helper'
translate=false
[folders/6f0a9004-30a1-4d02-8acf-764ea4362a58]
apps=['org.gnome.Builder.desktop', 'de.wwwtech.gitte.desktop', 'io.gitlab.liferooter.TextPieces.desktop', 'org.filezillaproject.Filezilla.desktop', 'org.gnome.meld.desktop', 'com.rafaelmardojai.WebfontKitGenerator.desktop', 're.sonny.OhMySVG.desktop', 'com.rafaelmardojai.SharePreview.desktop', 'cmake-gui.desktop']
name='Development'
translate=false
[folders/8848f124-60d2-4115-8ee7-04940eb06d10]
apps=['com.jeffser.Alpaca.desktop', 'io.github.qwersyk.Newelle.desktop', 'io.github.chidiwilliams.Buzz.desktop', 'net.codelogistics.webapps.webapp_b865d5e6_ae60_4271_a053_23116f79458f.desktop', 'net.codelogistics.webapps.webapp_84cb91fe_0d25_4670_84b4_8ad635cd60e7.desktop']
name='AI'
translate=false
[folders/9fc2a554-47cf-4702-a829-2e5b3cf65763]
apps=['com.obsproject.Studio.desktop', 'com.core447.StreamController.desktop', 'hu.irl.cameractrls.desktop']
name='Screen Recording'
translate=false
[folders/Pardus]
categories=['X-Pardus-Apps']
name='X-Pardus-Apps.directory'
translate=true
[folders/System]
apps=['org.gnome.SystemMonitor.desktop']
name='X-GNOME-Shell-System.directory'
translate=true
[folders/Utilities]
apps=['org.gnome.Connections.desktop', 'org.gnome.Evince.desktop', 'org.gnome.font-viewer.desktop', 'org.gnome.Loupe.desktop', 'org.gnome.Snapshot.desktop', 'org.gnome.SimpleScan.desktop', 'org.gnome.Papers.desktop']
name='GNOME #2'
translate=false
[folders/YaST]
categories=['X-SuSE-YaST']
name='suse-yast.directory'
translate=true
[folders/a44c1ab8-efb8-4ae4-895e-426fa4998315]
apps=['org.libreoffice.LibreOffice.writer.desktop', 'org.libreoffice.LibreOffice.calc.desktop', 'org.libreoffice.LibreOffice.draw.desktop', 'org.libreoffice.LibreOffice.impress.desktop', 'org.libreoffice.LibreOffice.math.desktop', 'org.libreoffice.LibreOffice.base.desktop', 'org.libreoffice.LibreOffice.desktop']
name='LibreOffice'
translate=false
[folders/aabaf61f-ce50-4490-8ad0-626a1904139f]
apps=['net.nokyan.Resources.desktop', 'io.github.jorchube.monitorets.desktop', 'de.capypara.FieldMonitor.desktop', 'org.gnome.baobab.desktop', 'org.gnome.DiskUtility.desktop', 'org.gnome.Logs.desktop', 'org.gnome.Boxes.desktop', 'btop.desktop', 'org.gnome.Console.desktop', 'io.github.v81d.Wattage.desktop']
name='Maintenance'
translate=false
[folders/c0cb5d93-ebb6-4df3-9771-7db80c4d0a23]
apps=['org.gnome.Calculator.desktop', 'org.gnome.Software.desktop', 'org.gnome.Firmware.desktop', 'nm-connection-editor.desktop', 'org.freedesktop.MalcontentControl.desktop', 'org.gnome.Yelp.desktop', 'org.gnome.seahorse.Application.desktop']
name='GNOME #3'
translate=false
[folders/c9914c5f-cbe7-410d-80da-5c8f2e972c09]
apps=['org.gnome.Contacts.desktop', 'org.gnome.Weather.desktop', 'org.gnome.clocks.desktop', 'org.gnome.Maps.desktop', 'yelp.desktop', 'org.gnome.Tour.desktop', 'org.gnome.Characters.desktop', 'org.gnome.Calendar.desktop']
name='GNOME #1'
translate=false
[folders/d23a8583-1412-4ff6-9583-15e107d937cf]
apps=['org.gnome.tweaks.desktop', 'page.tesk.Refine.desktop', 'com.mattjakeman.ExtensionManager.desktop', 'me.dusansimic.DynamicWallpaper.desktop', 'io.github.flattool.Warehouse.desktop', 'com.github.tchx84.Flatseal.desktop', 'io.github.fabrialberio.pinapp.desktop', 'org.gnome.Extensions.desktop', 'ca.desrt.dconf-editor.desktop', 'it.mijorus.gearlever.desktop']
name='Settings'
translate=false
[folders/de3780cc-3d81-4683-9469-e7f7b055bed5]
apps=['dev.geopjr.Tuba.desktop', 'io.gitlab.news_flash.NewsFlash.desktop']
name='Social Media'
translate=false
[folders/e6e599c3-6109-466b-af08-f15ad2b78c9c]
apps=['org.mixxx.Mixxx.desktop', 'io.github.dp0sk.Crosspipe.desktop', 'org.pipewire.Helvum.desktop', 'TouchOSC.desktop', 'org.audacityteam.Audacity.desktop', 'org.ardour.Ardour.desktop', 'org.gnome.Decibels.desktop', 'net.sonobus.SonoBus.desktop', 'org.soundconverter.SoundConverter.desktop', 'org.gnome.Podcasts.desktop', 'de.haeckerfelix.Shortwave.desktop', 'org.gnome.SoundRecorder.desktop', 'io.github.gaheldev.Millisecond.desktop', 'Wurly.desktop', 'MiniMeters.desktop', 'io.github.htkhiem.Euphonica.desktop', 'org.nickvision.tagger.desktop', 'com.rafaelmardojai.Blanket.desktop', 'io.github.dimtpap.coppwr.desktop', 'Integrate.desktop', 'SX1000.desktop', 'JUNE.desktop', 'JULY.desktop', 'kazrog-plugin-manager.desktop', 'com.fender.studioapp8.desktop', 'pipewire-controller.desktop', 'io.github.intechstudio.GridEditor.desktop', 'io.github.nate_xyz.Chromatic.desktop']
name='Audio'
translate=false
[folders/fde98bb2-dae6-465d-8b77-2031a655e66c]
apps=['org.inkscape.Inkscape.desktop', 'org.gimp.GIMP.desktop', 'org.blender.Blender.desktop', 'org.gabmus.swatch.desktop', 'be.alexandervanhee.gradia.desktop', 'com.github.huluti.Curtail.desktop', 'com.github.finefindus.eyedropper.desktop', 'com.jeffser.Pigment.desktop', 'org.gnome.design.Lorem.desktop', 'org.darktable.Darktable.desktop', 'io.gitlab.theevilskeleton.Upscaler.desktop']
name='Graphics'
EOF
- Sorted folders with
dconf write /org/gnome/shell/app-picker-layout "[{'e6e599c3-6109-466b-af08-f15ad2b78c9c': <{'position': <0>}>, 'fde98bb2-dae6-465d-8b77-2031a655e66c': <{'position': <1>}>, '21afcf46-e26b-4386-95f8-3683dbc08137': <{'position': <2>}>, '6f0a9004-30a1-4d02-8acf-764ea4362a58': <{'position': <3>}>, 'a44c1ab8-efb8-4ae4-895e-426fa4998315': <{'position': <4>}>, 'c9914c5f-cbe7-410d-80da-5c8f2e972c09': <{'position': <5>}>, 'Utilities': <{'position': <6>}>, 'c0cb5d93-ebb6-4df3-9771-7db80c4d0a23': <{'position': <7>}>, '54440d6f-fb64-477a-bf62-17d7b025ba55': <{'position': <8>}>, '9fc2a554-47cf-4702-a829-2e5b3cf65763': <{'position': <9>}>, 'de3780cc-3d81-4683-9469-e7f7b055bed5': <{'position': <10>}>, '4f79323f-b079-4e6b-9300-de2713913232': <{'position': <11>}>, '4474c5fb-a7cd-43b1-8512-f104e28f2733': <{'position': <12>}>, '6a58a1c0-e3fd-4a85-bed8-f3e28e4ecdff': <{'position': <13>}>, '8848f124-60d2-4115-8ee7-04940eb06d10': <{'position': <14>}>, 'aabaf61f-ce50-4490-8ad0-626a1904139f': <{'position': <15>}>, 'd23a8583-1412-4ff6-9583-15e107d937cf': <{'position': <16>}>}]"
Migrated data from NAS backup
- rsynced ~/Music/Music and ~/Music/Audio\ Library from backup
- rsynced ~/.config/btop, ~/.config/cava, ~/.config/copyous@boerdereinar.dev, and ~/.config/mpd from backup
- rsynced ~/.quodlibet from backup
- rsynced ~/.var/app/{app.zen_browser.zen, dev.geopjr.Tuba, io.github.htkhiem.Euphonica, io.github.mrvladus.List, io.gitlab.liferooter.TextPieces, io.gitlab.news_flash.NewsFlash, org.darktable.Darktable, org.gnome.Builder, org.gnome.gitlab.somas.Apostrophe, org.inkscape.Inkscape, org.libreoffice.LibreOffice, org.mixxx.Mixxx, org.mozilla.firefox, org.mozilla.thunderbird} from backup
- rsynced ~/.BitwigStudio and ~/Bitwig\ Studio from backup
Configured applications
Configured MPD
- Made a directory for the MPD configuration and pid_file with
mkdir -p ~/.config/mpd/pidand added custom configuration with
sudo tee ~/.config/mpd/mpd.conf > /dev/null <<'EOF'
music_directory "~/Music/Music"
db_file "~/.local/share/mpd/tag_cache"
state_file "~/.local/share/mpd/state"
sticker_file "~/.local/share/mpd/sticker.sql"
playlist_directory "~/.local/share/mpd/playlists"
auto_update "yes"
pid_file "~/.config/mpd/pid"
bind_to_address "127.0.0.1"
port "6600"
audio_output {
type "pipewire"
name "PipeWire"
}
EOF
- Made an MPD data directory with
mkdir -p ~/.local/share/mpd, and started MPD withsystemctl --user enable --now mpd
Configured miscellaneous other apps
- Installed Llama3 (latest), Qwen3.5 (latest) and Mistral (latest) in Alpaca app
- Downloaded and installed Sononym to /opt/sononym
- Imported OBS scene collection from
<NAS_HOST>backup - Configured Backups (Deja Dup ) app to use
<NAS_HOST>(/mnt/smb/<NAS_NAME>/backup/<HOSTNAME>/) as destination, and excluded~/.var/app/com.jeffser.Alpaca/data, Trash, and~/Downloads - Setup Tuba with Love You More, Linux Audio Development and Amadeus Paulussen accounts
Configured VPN
- Added a new OpenVPN configuration in GNOME's Settings app via file import from Bitwarden item
<NAS_HOST> (amadeus)naming itroom-of-love, adding credentials,<VPN_HOSTNAME>:<PORT>:udp4as Gateway, and disabling IPv6 entirely - Setup Proton VPN WireGuard by downloading wg-proton.conf from
https://account.protonvpn.com/downloadsand runningnmcli connection import type wireguard file wg-proton.confandnmcli connection modify "wg-proton" connection.autoconnect no
Configured PHP for Grav development
- Uncommented
extension=gdin/etc/php/php.ini