2023-08-01 10:06:31 +00:00
|
|
|
#!/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")"
|
|
|
|
|
|
|
|
# Copy over various settings
|
2023-08-01 15:06:55 +00:00
|
|
|
cp -a home/.pki ~ # symlink
|
2023-08-01 23:49:08 +00:00
|
|
|
mkdir -p ~/.local/share/pki
|
2023-08-01 15:06:55 +00:00
|
|
|
cp -a home/.mozilla ~ # symlink
|
2023-08-01 10:06:31 +00:00
|
|
|
mkdir -p ~/.config/mozilla
|
|
|
|
mkdir -p ~/.config/nv
|
|
|
|
cp -ar home/.local/share/thumbnailers ~/.local/share
|
|
|
|
cp -ar home/.local/share/icons ~/.local/
|
|
|
|
cp -ar home/.config/fontconfig ~/.config
|
|
|
|
cp -ar home/.config/python_keyring ~/.config
|
|
|
|
cp -ra home/.config/wget ~/.config
|
|
|
|
|
|
|
|
# More opinionated settings
|
|
|
|
cp home/.config/mimeapps.list ~/.config
|
|
|
|
cp -ar home/.config/mpv ~/.config
|
|
|
|
cp -ar home/.config/pcmanfm ~/.config
|
|
|
|
cp -ar home/.config/pcmanfm-qt ~/.config
|
|
|
|
cp -ar home/.config/pypoetry ~/.config
|
|
|
|
cp -ar home/.config/qt5ct ~/.config
|
|
|
|
cp -ar home/.config/tmux ~/.config
|
|
|
|
cp -ra home/.config/wireplumber ~/.config
|
|
|
|
cp -ra home/.config/alacritty ~/.config
|
|
|
|
cp -ra home/.config/kitty ~/.config
|
|
|
|
cp -ra home/.config/systemd ~/.config
|
2023-08-01 12:39:55 +00:00
|
|
|
cp -ra home/.config/dunst ~/.config
|
|
|
|
cp -ra home/.config/eww ~/.config
|
2023-08-01 10:06:31 +00:00
|
|
|
|
|
|
|
# Wayland-specific settings
|
|
|
|
cp home/.config/chromium-flags.conf ~/.config
|
|
|
|
cp -ra home/.config/swappy ~/.config
|
|
|
|
cp -ra home/.config/swayidle ~/.config
|
|
|
|
cp -ra home/.config/swaylock ~/.config
|
|
|
|
cp -ra home/.config/wofi ~/.config
|
|
|
|
|
2023-08-01 11:20:05 +00:00
|
|
|
# Sync mirrors and update before other installations
|
|
|
|
yay -Syu --noconfirm
|
|
|
|
|
2023-08-01 10:06:31 +00:00
|
|
|
# Instal fonts
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
libxft ttf-hack ttf-joypixels noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-font-awesome \
|
2023-08-01 13:16:05 +00:00
|
|
|
ttf-jetbrains-mono xorg-font-util ttf-ms-fonts otf-jost ttf-material-design-icons-git \
|
2023-08-01 10:06:31 +00:00
|
|
|
nerd-fonts-git
|
|
|
|
|
|
|
|
# Audio
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
pipewire pipewire-pulse pipewire-pulse pipewire-jack wireplumber alsa-utils pulsemixer
|
|
|
|
|
|
|
|
# Themes
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
gnome-themes-extra gnome-icon-theme-extras python-qt-material notify-osd papirus-icon-theme \
|
|
|
|
lxappearance adwaita-qt5 adwaita-qt6 qt5ct
|
|
|
|
|
|
|
|
# WM Essentials
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
dunst udisks2 udiskie gvfs gnome-keyring xorg-xinput polkit-gnome
|
|
|
|
|
|
|
|
# Wayland WM essentials
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
wl-clipboard xdg-desktop-portal qt5-qayland qt6-wayland wev wl-gammarelay-rs wdisplays
|
|
|
|
|
|
|
|
# Utilities
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2024-02-17 21:44:32 +00:00
|
|
|
nm-connection-editor ffmpegthumbnailer upower devour hyfetch
|
2023-08-01 10:06:31 +00:00
|
|
|
|
|
|
|
# Wayland Utilities
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
grim slurp wofi swappy-git swayidle swaybg wf-recorder wlogout hyprpicker-git clipman
|
|
|
|
|
|
|
|
# Applications
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
discord firefox chromium kitty mpv pcmanfm-qt file-roller obs-studio qbittorrent \
|
2023-08-01 11:45:33 +00:00
|
|
|
qalculate-gtk-nognome spotify nomacs
|
|
|
|
yay -S --noconfirm --needed stremio
|
2023-08-01 10:06:31 +00:00
|
|
|
|
|
|
|
# Bluetooth
|
2023-08-01 12:10:09 +00:00
|
|
|
yay -S --noconfirm --needed bluez bluiz-utils blueberry
|
2023-08-01 10:06:31 +00:00
|
|
|
|
|
|
|
# Build hyprland
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed \
|
2023-08-01 10:06:31 +00:00
|
|
|
gdb ninja gcc cmake meson libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite \
|
|
|
|
xorg-xinput libxrender pixman wayland-protocols cairo pango seatd libxkbcommon xcb-util-wm xorg-xwayland \
|
|
|
|
libinput libliftoff libdisplay-info cpio
|
|
|
|
mkdir -p ~/.local/src
|
2023-08-01 12:13:26 +00:00
|
|
|
git clone --recursive https://github.com/hyprwm/Hyprland ~/.local/src/Hyprland || true # don't fail if exists
|
2023-08-01 12:14:46 +00:00
|
|
|
pushd ~/.local/src/Hyprland
|
2023-08-01 12:19:35 +00:00
|
|
|
# TODO: Consider git pull here, in case the clone fell through and hyprland was already installed
|
2023-08-01 11:33:24 +00:00
|
|
|
git checkout "$(git rev-list --tags --max-count=1)" # check out the last tag (latest stable release)
|
2023-12-29 14:11:58 +00:00
|
|
|
make all
|
2023-08-01 10:06:31 +00:00
|
|
|
sudo make install
|
|
|
|
popd
|
2023-08-01 12:16:23 +00:00
|
|
|
yay -S --noconfirm --needed xdg-desktop-portal-hyprland-git hyprpaper
|
2023-08-01 12:34:41 +00:00
|
|
|
sudo pacman -R --noconfirm xdg-desktop-portal-gnome || true # don't fail if this isn't installed
|
2023-12-29 14:11:58 +00:00
|
|
|
cp -ra home/.config/hypr ~/.config/hypr # loads dwindle-autogoroup
|
2023-08-01 11:21:37 +00:00
|
|
|
|
|
|
|
# Hyprland dwindle-autogroup plugin
|
2023-08-01 12:19:20 +00:00
|
|
|
git clone --recursive https://github.com/ItsDrike/hyprland-dwindle-autogroup ~/.local/src/hyprland-dwindle-autogroup || true # don't fail if exists
|
2023-08-01 11:21:37 +00:00
|
|
|
pushd ~/.local/src/hyprland-dwindle-autogroup
|
|
|
|
make install
|
|
|
|
popd
|
2023-08-01 10:06:31 +00:00
|
|
|
|
|
|
|
# Build eww
|
2023-08-01 11:18:55 +00:00
|
|
|
sudo pacman -S --noconfirm --needed \
|
|
|
|
gtk3 gtk-layer-shell rustup openbsd-netcat pango gdk-pixbuf2 cairo glib2 gcc-libs glibc libdbusmenu-gtk3
|
2023-08-01 10:06:31 +00:00
|
|
|
sudo rustup default stable
|
|
|
|
# Use a fork instead of the original elkowar/eww, for system tray suppot
|
|
|
|
sudo mkdir -p /usr/local/src
|
2023-08-01 12:24:04 +00:00
|
|
|
sudo git clone https://github.com/ralismark/eww /usr/local/src/eww || true # don't fail if exists
|
2023-08-01 10:06:31 +00:00
|
|
|
pushd /usr/local/src/eww
|
|
|
|
sudo git checkout tray-3
|
|
|
|
sudo cargo build --release --no-default-features --features=wayland
|
|
|
|
sudo ln -s /usr/local/src/eww/target/release/eww /usr/local/bin
|
|
|
|
popd
|
|
|
|
|
|
|
|
# Lockscreen
|
2023-08-01 11:18:55 +00:00
|
|
|
yay -S --noconfirm --needed swaylock-effects-git systemd-lock-handler
|
2023-08-01 10:06:31 +00:00
|
|
|
systemctl --user enable systemd-lock-handler.service
|
|
|
|
# You'll need the systemd-lock-handler-swaylock.service from my dotfiles (in home/.config/systemd/user)
|
|
|
|
# this is copied above by default, but if you're editing the script, be aware of it
|
|
|
|
systemctl enable --user systemd-lock-handler-swaylock.service
|
|
|
|
# To test the lockscreen, you can run loginctl lock-session, while in a graphical session
|
|
|
|
|
|
|
|
# Generate db for -git packages
|
|
|
|
yay -Y --gendb
|
|
|
|
|
|
|
|
popd
|