-
Notifications
You must be signed in to change notification settings - Fork 0
/
install_gui.sh
executable file
·138 lines (115 loc) · 4.74 KB
/
install_gui.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/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
cp -a home/.pki ~ # symlink
mkdir -p ~/.local/share/pki
cp -a home/.mozilla ~ # symlink
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
cp -ra home/.config/dunst ~/.config
cp -ra home/.config/eww ~/.config
# 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/wofi ~/.config
# Hyprcursor theme of my choice
mkdir -p ~/.local/share/icons
pushd ~/.local/share/icons
git clone https://github.com/ndom91/rose-pine-cursor-hyprcursor
popd
# Sync mirrors and update before other installations
yay -Syu --noconfirm
# Instal fonts
yay -S --noconfirm --needed \
libxft ttf-hack ttf-joypixels noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-font-awesome \
ttf-jetbrains-mono xorg-font-util ttf-ms-fonts otf-jost ttf-material-design-icons-git \
nerd-fonts-git
# Audio
yay -S --noconfirm --needed \
pipewire pipewire-pulse pipewire-pulse pipewire-jack wireplumber alsa-utils pulsemixer
# Themes
yay -S --noconfirm --needed \
gnome-themes-extra gnome-icon-theme-extras python-qt-material notify-osd papirus-icon-theme \
lxappearance adwaita-qt5 adwaita-qt6 qt5ct
# WM Essentials
yay -S --noconfirm --needed \
dunst udisks2 udiskie gvfs gvfs-mtp gnome-keyring xorg-xinput polkit-gnome
# Wayland WM essentials
yay -S --noconfirm --needed \
wl-clipboard xdg-desktop-portal qt5-qayland qt6-wayland wev wl-gammarelay-rs wdisplays
# Utilities
yay -S --noconfirm --needed \
nm-connection-editor ffmpegthumbnailer upower devour hyfetch
# Wayland Utilities
yay -S --noconfirm --needed \
grim slurp wofi swappy-git swaybg wf-recorder wlogout hyprpicker-git clipman
# Applications
yay -S --noconfirm --needed \
vesktop firefox chromium kitty mpv pcmanfm-qt file-roller obs-studio qbittorrent \
qalculate-gtk-nognome spotify nomacs
yay -S --noconfirm --needed stremio
# Bluetooth
yay -S --noconfirm --needed bluez bluiz-utils blueberry
# Build hyprland
yay -S --noconfirm --needed \
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 hyprlang-git hyprcursor-git
mkdir -p ~/.local/src
git clone --recursive https://github.com/hyprwm/Hyprland ~/.local/src/Hyprland || true # don't fail if exists
pushd ~/.local/src/Hyprland
# TODO: Consider git pull here, in case the clone fell through and hyprland was already installed
git checkout "$(git rev-list --tags --max-count=1)" # check out the last tag (latest stable release)
make all
sudo make install
popd
yay -S --noconfirm --needed xdg-desktop-portal-hyprland-git hyprpaper
sudo pacman -R --noconfirm xdg-desktop-portal-gnome || true # don't fail if this isn't installed
cp -ra home/.config/hypr ~/.config/hypr
# Build eww
sudo pacman -S --noconfirm --needed \
gtk3 gtk-layer-shell rustup openbsd-netcat pango gdk-pixbuf2 cairo glib2 gcc-libs glibc libdbusmenu-gtk3
sudo rustup default stable
# Use a fork instead of the original elkowar/eww, for system tray suppot
sudo mkdir -p /usr/local/src
sudo git clone https://github.com/ralismark/eww /usr/local/src/eww || true # don't fail if exists
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
yay -S --noconfirm --needed hyprlock-git hypridle-git systemd-lock-handler
# To test the lockscreen, you can run loginctl lock-session, while in a graphical session
# Generate db for -git packages
yay -Y --gendb
popd