dotfiles/install_gui.sh
2025-09-13 12:06:03 +02:00

158 lines
5.7 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
# Arch installation script to be ran for an unpriviledged user after base setup.
# (Check install_user.sh first)
# $ cd ~/dots
# $ ./install_gui.sh
# ------------------------------------------------------------------------------
if [ "$UID" = 0 ]; then
echo >&2 "This script must be ran as an unpriviledged user (non-root)"
exit 1
fi
# cd into the dotfiles dir, no matter where the script was called from
pushd "$(dirname "$0")" >/dev/null
# XDG base dir stuff
mkdir -p ~/.local/share/pki
ln -s ~/.local/share/pki ~/.pki
mkdir -p ~/.config/mozilla
ln -s ~/.config/mozilla ~/.mozilla
mkdir -p ~/.cache/nv
cp -ra home/.config/wget ~/.config
mkdir -p ~/.config/gtk-2.0
touch ~/.config/gtk-2.0/gtkrc
# DE configs (core apps/tools that make up the base graphical experience)
cp -ra home/.config/xdg-desktop-portal ~/.config
cp -ra home/.config/hypr ~/.config
cp -ra home/.config/swappy ~/.config
cp -ra home/.config/systemd ~/.config
#cp -ar home/.config/fontconfig ~/.config
cp -ra home/.config/swaync ~/.config
# Theme configs
cp -ar home/.config/qt5ct ~/.config
cp -ar home/.config/qt6ct ~/.config
cp -ar home/.config/Kvantum ~/.config
cp -arf home/.config/gtk-2.0 ~/.config
cp -ar home/.config/gtk-3.0 ~/.config
cp -ar home/.config/gtk-4.0 ~/.config
cp -ar home/.local/share/icons ~/.local/share
sudo cp root/etc/fonts/local.conf /etc/fonts
# Electron flags to make apps use wayland
cp home/.config/chromium-flags.conf ~/.config
cp home/.config/code-flags.conf ~/.config
cp home/.config/codium-flags.conf ~/.config
cp home/.config/electron-flags.conf ~/.config
cp home/.config/spotify-flags.conf ~/.config
# Specific application configs (fairly opinionated)
cp -ar home/.config/kitty ~/.config
cp -ar home/.config/pcmanfm ~/.config
cp -ar home/.config/pcmanfm-qt ~/.config
cp -ar home/.config/nomacs ~/.config
cp -ar home/.config/qimgv ~/.config
cp -ar home/.config/mpv ~/.config
cp -ar home/.config/pypoetry ~/.config
cp -ar home/.config/tmux ~/.config
cp -ar home/.config/hyfetch.json ~/.config
# Other configs
cp -ar home/.config/python_keyring ~/.config
cp home/.config/mimeapps.list ~/.config
cp home/.config/user-dirs.dirs ~/.config
cp home/.config/user-dirs.locale ~/.config
# Sync mirrors and update before other installations
paru -Syu --noconfirm
# WM Essentials
paru -S --noconfirm --needed \
udisks2 udiskie gvfs gvfs-mtp gnome-keyring xorg-xinput polkit-gnome brightnessctl \
xdg-user-dirs playerctl
# Wayland WM essentials
paru -S --noconfirm --needed \
xdg-desktop-portal xdg-desktop-portal-gtk qt5-wayland qt6-wayland \
wl-clipboard uwsm
# Wayland Utilities
paru -S --noconfirm --needed \
wev wdisplays grim slurp swappy wf-recorder wlogout cliphist \
hyprpicker hyprpaper hyprsunset
# Application launcher
paru -S --noconfirm --needed walker elephant elephant-desktopapplications elephant-files elephant-runner elephant-websearch elephant-symbols elephant-calc elephant-menus
# Hyprland
paru -S --noconfirm --needed hyprland xdg-desktop-portal-hyprland
# Audio
paru -S --noconfirm --needed \
pipewire wireplumber pipewire-alsa pipewire-pulse pipewire-jack \
alsa-utils pulsemixer
# Other Utilities
paru -S --noconfirm --needed \
nm-connection-editor network-manager-applet ffmpegthumbnailer hyfetch fastfetch \
tesseract tesseract-data-eng nvtop
# Themes (Qt theme, GTK theme, icons theme, cursor theme)
paru -S --noconfirm --needed \
papirus-folders-catppuccin-git tokyonight-gtk-theme-git \
kvantum kvantum-qt5 qt5ct qt6ct kvantum-theme-catppuccin-git \
rose-pine-cursor rose-pine-hyprcursor
# Fonts
paru -S --noconfirm --needed \
gnu-free-fonts noto-fonts noto-fonts-emoji noto-fonts-cjk \
otf-monaspace ttf-jost ttf-comic-neue ttf-material-design-icons-webfont \
ttf-joypixels ttf-twemoji otf-openmoji ttf-ms-fonts
# Nerd Fonts (These contain most of the other fonts that I need)
paru -S --noconfirm --needed nerd-fonts
# Applications
paru -S --noconfirm --needed \
vesktop firefox chromium kitty mpv pcmanfm-qt file-roller obs-studio qbittorrent \
qalculate-gtk spotify qimgv nomacs stremio seahorse
# Bluetooth
paru -S --noconfirm --needed bluez bluez-utils blueberry
# Lockscreen
# To test the lockscreen, you can run loginctl lock-session, while in a graphical session
paru -S --noconfirm --needed hyprlock hypridle systemd-lock-handler
# Temporary
# TODO: Swaync should be replaced by quickshell (also remove swaync.service)
# TODO: Eww should be replaced by quickshell (also remove associated services)
# TODO: Quickshell should be moved outside of temporary once config is ready
paru -S --noconfirm --needed quickshell swaync eww
# Dconf/Gsettings
paru -S --needed --noconfirm dconf
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
gsettings set org.gnome.desktop.interface gtk-theme 'Tokyonight-Dark'
gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
gsettings set org.gnome.desktop.interface font-name 'Noto Sans 10'
gsettings set org.gnome.desktop.interface document-font-name 'Noto Sans 10'
gsettings set org.gnome.desktop.interface monospace-font-name 'Source Code Pro 10'
gsettings set org.gnome.desktop.interface cursor-theme 'BreezeX-RosePine-Linux'
gsettings set org.gnome.desktop.interface cursor-size 24
# Services
sudo systemctl enable --now seatd.service
systemctl --user enable polkit-gnome-agent.service fumon.service hyprpaper.service hypridle.service hyprsunset.service elephant.service walker.service swaync.service systemd-lock-handler.service hyprlock.service swaync-inhibit-lock.service swaync-inhibit-unlock.service pcmanfm-qt.service nm-applet.service
echo "GUI Installation finished, you should now reboot and run uwsm start hyprland.desktop"
echo ""
echo "Optional extra steps:"
echo " - setup greetd (follow guide)"
echo " - setup printing (follow guide)"
popd >/dev/null