mirror of
https://git.myvelabs.com/lab/archlinux.git
synced 2025-12-17 23:56:25 +00:00
First commit
This commit is contained in:
commit
36ad41a2fc
18 changed files with 10005 additions and 0 deletions
670
functions/desktop
Executable file
670
functions/desktop
Executable file
|
|
@ -0,0 +1,670 @@
|
|||
#!/usr/bin/env bash
|
||||
revision='0.1f (feb 24/25)'
|
||||
set -a
|
||||
set -E
|
||||
|
||||
# Exit function
|
||||
trap '[ "${?}" -ne 77 ] || exit 77' ERR
|
||||
function die
|
||||
{
|
||||
if [ ${@} ]
|
||||
then
|
||||
echo
|
||||
echo -e "\e[1;31mError encountered for the following reason:\e[0m
|
||||
|
||||
\e[33m${@}\e[0m
|
||||
|
||||
\e[1;31mScript aborted...\e[0m"
|
||||
echo
|
||||
else
|
||||
echo
|
||||
echo -e '\e[1;31mError encountered, script aborted...\e[0m'
|
||||
echo
|
||||
fi
|
||||
exit 77
|
||||
}
|
||||
|
||||
# Internet connection check
|
||||
if nc -z -w 1 archlinux.org 443 >/dev/null 2>&1 || nc -z -w 1 google.com 443 >/dev/null 2>&1
|
||||
then
|
||||
sudo timedatectl set-ntp true
|
||||
else
|
||||
die 'No internet connectivity detected, plug in an ethernet cable or run \e[32miwd-connect\e[33m if using wifi and try again'
|
||||
fi
|
||||
|
||||
totalde=21
|
||||
cat <<- menu
|
||||
$(tput setaf 5 bold)
|
||||
Select a desktop$(tput sgr0)
|
||||
$(tput smul setaf 7 dim)# none$(tput sgr0)
|
||||
0) none
|
||||
$(tput smul setaf 7 dim)# wayland$(tput sgr0)
|
||||
1) sway
|
||||
2) hyprland
|
||||
3) qtile-wayland
|
||||
4) river
|
||||
5) plasma-wayland
|
||||
6) gnome-wayland
|
||||
7) cosmic
|
||||
$(tput smul setaf 7 dim)# x11$(tput sgr0)
|
||||
8) qtile-x11
|
||||
9) bspwm
|
||||
10) awesome
|
||||
11) i3
|
||||
12) i3-plasma
|
||||
13) plasma-x11
|
||||
14) gnome-x11
|
||||
15) xfce4
|
||||
16) budgie
|
||||
17) cinnamon
|
||||
18) deepin
|
||||
19) mate
|
||||
20) pantheon
|
||||
21) cutefish
|
||||
22) lxde
|
||||
23) lxqt
|
||||
menu
|
||||
if [ ${1} ]
|
||||
then
|
||||
desktop=${1}
|
||||
else
|
||||
desktop=-1
|
||||
fi
|
||||
until [[ ${desktop} -ge 0 && ${desktop} -le ${totalde} ]]
|
||||
do
|
||||
read -p '> ' desktop
|
||||
[[ ${desktop} -ge 0 && ${desktop} -le ${totalde} ]] ||\
|
||||
echo -e "\n\n\e[1;31mInvalid selection, type an option from 0 to ${totalde}\e[0m"
|
||||
done
|
||||
|
||||
# Configure btrfs
|
||||
if findmnt / | grep -w -q btrfs
|
||||
then
|
||||
desktop_packages+=(btrfs-progs)
|
||||
if pacman -Q | grep -q "^grub"
|
||||
then
|
||||
desktop_packages+=(grub-btrfs inotify-tools)
|
||||
systemd_services+=(grub-btrfsd.service)
|
||||
fi
|
||||
|
||||
# echo -e '\n\e[1;35mConfiguring snapper\e[0m'
|
||||
# sudo pacman --sync --ask 4 snapper snap-pac
|
||||
# echo
|
||||
# sudo umount /.snapshots /home/.snapshots
|
||||
# sudo rm -r /.snapshots /home/.snapshots
|
||||
# sudo snapper -c root create-config /
|
||||
# sudo snapper -c home create-config /home
|
||||
# sudo sed -i 's/TIMELINE_LIMIT_HOURLY="10"/TIMELINE_LIMIT_HOURLY="4"/' /etc/snapper/configs/root
|
||||
# sudo sed -i 's/TIMELINE_LIMIT_DAILY="10"/TIMELINE_LIMIT_DAILY="7"/' /etc/snapper/configs/root
|
||||
# sudo sed -i 's/TIMELINE_LIMIT_MONTHLY="10"/TIMELINE_LIMIT_MONTHLY="1"/' /etc/snapper/configs/root
|
||||
# sudo sed -i 's/TIMELINE_LIMIT_YEARLY="10"/TIMELINE_LIMIT_YEARLY="0"/' /etc/snapper/configs/root
|
||||
# sudo sed -i 's/TIMELINE_CREATE="yes"/TIMELINE_CREATE="no"/' /etc/snapper/configs/home
|
||||
# sudo btrfs subvolume delete /.snapshots
|
||||
# sudo btrfs subvolume delete /home/.snapshots
|
||||
# sudo mkdir -p --mode=750 /.snapshots /home/.snapshots
|
||||
# sudo mount -a
|
||||
# sudo systemctl --quiet enable --now snapper-cleanup.timer snapper-timeline.timer
|
||||
|
||||
# # Create snapshots for fresh installation
|
||||
# sudo snapper -c root create --description "fresh install"
|
||||
# sudo snapper -c home create --description "fresh install"
|
||||
fi
|
||||
|
||||
# Assign DE variables
|
||||
case ${desktop} in
|
||||
0)
|
||||
# TTY only
|
||||
desktop_choice=none
|
||||
echo
|
||||
;;
|
||||
*)
|
||||
systemd_user_services+=(wireplumber.service pipewire-pulse.service pipewire.service)
|
||||
desktop_packages+=(ttf-dejavu pipewire pipewire-audio pipewire-pulse pipewire-jack wireplumber)
|
||||
case ${desktop} in
|
||||
[1-7])
|
||||
# Wayland
|
||||
desktop_packages+=(wayland)
|
||||
case ${desktop} in
|
||||
1)
|
||||
desktop_choice=sway
|
||||
desktop_packages+=(sway seatd swaylock swayidle swaybg bemenu bemenu-wayland i3status foot kate dolphin konsole kompare kcalc breeze-icons kde-cli-tools brightnessctl gnome-keyring fakeroot qt5-wayland polkit-kde-agent)
|
||||
systemd_services+=(seatd.service)
|
||||
;;
|
||||
2)
|
||||
desktop_choice=hyprland
|
||||
desktop_packages+=(hyprland uwsm swaylock swayidle bemenu bemenu-wayland waybar foot kate dolphin konsole kompare kcalc breeze-icons kde-cli-tools ttf-font-awesome brightnessctl gnome-keyring fakeroot qt5-wayland polkit-kde-agent)
|
||||
systemd_user_services+=(foot-server.service)
|
||||
;;
|
||||
3)
|
||||
desktop_choice=qtile-wayland
|
||||
desktop_packages+=(qtile python-pywlroots xorg-xwayland foot)
|
||||
systemd_user_services+=(foot-server.service)
|
||||
;;
|
||||
4)
|
||||
desktop_choice=river
|
||||
desktop_packages+=(river foot)
|
||||
systemd_user_services+=(foot-server.service)
|
||||
;;
|
||||
5)
|
||||
desktop_choice=plasma-wayland
|
||||
desktop_packages+=($(pacman -Sgq plasma | grep -v 'discover\|oxygen\|plasma-nm') konsole foot kate dolphin kompare kcalc)
|
||||
systemd_services+=(sddm.service)
|
||||
systemd_user_services+=(foot-server.service)
|
||||
;;
|
||||
6)
|
||||
desktop_choice=gnome-wayland
|
||||
desktop_packages+=(gnome foot)
|
||||
systemd_services+=(gdm.service)
|
||||
systemd_user_services+=(foot-server.service)
|
||||
;;
|
||||
7)
|
||||
desktop_choice=cosmic
|
||||
desktop_packages+=(cosmic)
|
||||
systemd_services+=(cosmic-greeter.service)
|
||||
if ls -l /dev/disk/* | grep -q 'VBOX\|virtio\|QEMU'
|
||||
then
|
||||
desktop_packages+=(vulkan-virtio)
|
||||
elif lspci | grep VGA | grep -q NVIDIA
|
||||
then
|
||||
desktop_packages+=(nvidia-utils)
|
||||
elif lscpu | grep 'Model name:' | grep -q AMD
|
||||
then
|
||||
desktop_packages+=(amdvlk)
|
||||
elif lscpu | grep 'Model name:' | grep -q Intel
|
||||
then
|
||||
desktop_packages+=(vulkan-intel)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
# Environment
|
||||
sudo tee -a /etc/environment >/dev/null <<- environment
|
||||
QT_QPA_PLATFORM=wayland
|
||||
environment
|
||||
;;
|
||||
*)
|
||||
# Xorg
|
||||
desktop_packages+=(xorg)
|
||||
case ${desktop} in
|
||||
8)
|
||||
desktop_choice=qtile-x11
|
||||
desktop_packages+=(qtile xorg-xinit konsole)
|
||||
;;
|
||||
9)
|
||||
desktop_choice=bspwm
|
||||
desktop_packages+=(bspwm sxhkd xorg-xinit polybar konsole)
|
||||
;;
|
||||
10)
|
||||
desktop_choice=awesome
|
||||
desktop_packages+=(awesome xorg-xinit konsole)
|
||||
;;
|
||||
11)
|
||||
desktop_choice=i3
|
||||
desktop_packages+=(i3-wm i3status i3lock dmenu lightdm lightdm-gtk-greeter pavucontrol konsole kate dolphin kompare breeze-icons)
|
||||
systemd_services+=(lightdm.service)
|
||||
;;
|
||||
12)
|
||||
desktop_choice=i3-plasma
|
||||
desktop_packages+=($(pacman -Sgq plasma | grep -v 'discover\|oxygen\|plasma-nm') konsole kate dolphin kompare kcalc i3-wm i3status dmenu wmctrl feh)
|
||||
systemd_services+=(sddm.service)
|
||||
;;
|
||||
13)
|
||||
desktop_choice=plasma-x11
|
||||
desktop_packages+=($(pacman -Sgq plasma | grep -v 'discover\|oxygen\|plasma-nm') konsole kate dolphin kompare kcalc)
|
||||
systemd_services+=(sddm.service)
|
||||
;;
|
||||
14)
|
||||
desktop_choice=gnome-x11
|
||||
desktop_packages+=(gnome)
|
||||
systemd_services+=(gdm.service)
|
||||
;;
|
||||
15)
|
||||
desktop_choice=xfce4
|
||||
desktop_packages+=(xfce4 lightdm lightdm-gtk-greeter)
|
||||
systemd_services+=(lightdm.service)
|
||||
;;
|
||||
16)
|
||||
desktop_choice=budgie
|
||||
desktop_packages+=(budgie lightdm lightdm-gtk-greeter tilix)
|
||||
systemd_services+=(lightdm.service)
|
||||
;;
|
||||
17)
|
||||
desktop_choice=cinnamon
|
||||
desktop_packages+=(cinnamon lightdm lightdm-gtk-greeter gnome-console)
|
||||
systemd_services+=(lightdm.service)
|
||||
;;
|
||||
18)
|
||||
desktop_choice=deepin
|
||||
desktop_packages+=(deepin deepin-kwin $(pacman -Sgq deepin-extra | grep -v deepin-reader) lightdm lightdm-gtk-greeter gnome-keyring)
|
||||
systemd_services+=(lightdm.service)
|
||||
if uname -r | grep -q 'lts\|hardened\|zen'
|
||||
then
|
||||
desktop_packages+=(deepin-anything-dkms)
|
||||
else
|
||||
desktop_packages+=(deepin-anything-arch)
|
||||
fi
|
||||
;;
|
||||
19)
|
||||
desktop_choice=mate
|
||||
desktop_packages+=(mate mate-extra lightdm lightdm-gtk-greeter)
|
||||
systemd_services+=(lightdm.service)
|
||||
;;
|
||||
20)
|
||||
desktop_choice=pantheon
|
||||
desktop_packages+=(pantheon lightdm-pantheon-greeter lightdm)
|
||||
systemd_services+=(lightdm.service)
|
||||
;;
|
||||
21)
|
||||
desktop_choice=cutefish
|
||||
desktop_packages+=(cutefish sddm)
|
||||
systemd_services+=(sddm.service)
|
||||
;;
|
||||
22)
|
||||
desktop_choice=lxde
|
||||
desktop_packages+=(lxde lxdm)
|
||||
systemd_services+=(lxdm.service)
|
||||
;;
|
||||
23)
|
||||
desktop_choice=lxqt
|
||||
desktop_packages+=(lxqt sddm breeze-icons)
|
||||
systemd_services+=(sddm.service)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
echo -e "\t\e[1mYou have chosen \e[32m${desktop_choice}\e[0m\e[1m desktop\e[0m"
|
||||
echo
|
||||
echo -e '\e[1;35mInstalling base packages\e[0m'
|
||||
sudo pacman --sync --ask 4 ${desktop_packages[@]} || die 'Failed to install required packages'
|
||||
echo
|
||||
;;
|
||||
esac
|
||||
|
||||
case ${desktop_choice} in
|
||||
plasma-wayland)
|
||||
mkdir -p ~/.config/{autostart-scripts,foot}/
|
||||
# install /dev/stdin ~/.config/autostart-scripts/foot.sh <<- foot
|
||||
# #!/bin/sh
|
||||
# foot --server
|
||||
# foot
|
||||
cat >>~/.config/kglobalshortcutsrc <<- shortcuts
|
||||
|
||||
[services][footclient.desktop]
|
||||
_launch=Alt+Return
|
||||
|
||||
[services][org.kde.konsole.desktop]
|
||||
_launch=none
|
||||
shortcuts
|
||||
;;
|
||||
gnome-wayland)
|
||||
mkdir -p ~/.config/{autostart,foot}/
|
||||
# cat > ~/.config/autostart/foot-server.desktop <<- foot
|
||||
# [Desktop Entry]
|
||||
# Type=Application
|
||||
# Name=Foot server
|
||||
# Exec=foot --server
|
||||
# foot
|
||||
gsettings set $(gsettings list-schemas | grep terminal) exec footclient
|
||||
;;
|
||||
cosmic)
|
||||
mkdir -p ~/.config/foot/
|
||||
;;
|
||||
i3|i3-plasma)
|
||||
# i3-config
|
||||
mkdir -p ~/.config/i3/
|
||||
curl --fail -s -L https://raw.githubusercontent.com/i3/i3/next/etc/config | sed 's/exec i3-config-wizard/# &/' > ~/.config/i3/config
|
||||
case ${desktop_choice} in
|
||||
i3-plasma)
|
||||
kwriteconfig6 --file startkderc --group General --key systemdBoot false
|
||||
sudo install /dev/stdin /opt/local/bin/plasma-i3.sh <<- EOF
|
||||
#!/usr/bin/env bash
|
||||
export KDEWM=/usr/bin/i3
|
||||
/usr/bin/startplasma-x11
|
||||
EOF
|
||||
sudo tee /usr/share/xsessions/plasma-i3.desktop >/dev/null <<- EOF
|
||||
[Desktop Entry]
|
||||
Type=XSession
|
||||
Exec=/opt/local/bin/plasma-i3.sh
|
||||
DesktopNames=KDE
|
||||
Name=Plasma (i3)
|
||||
Comment=KDE Plasma with i3 as the WM
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
if ls -l /dev/disk/* | grep -q 'VBOX\|virtio\|QEMU'
|
||||
then
|
||||
cat >> ~/.config/i3/config <<- 'i3'
|
||||
|
||||
exec xrandr --output $(xrandr -q | grep -w 'connected primary' | awk '{print $1}') --mode 1920x1080
|
||||
exec xrandr --dpi 192
|
||||
|
||||
exec spice-vdagent
|
||||
exec VBoxClient-all
|
||||
i3
|
||||
fi
|
||||
;;
|
||||
qtile-x11)
|
||||
echo 'exec qtile start' >~/.xinitrc
|
||||
cat >> ~/.bash_profile <<- 'autostart'
|
||||
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]
|
||||
then
|
||||
exec startx
|
||||
fi
|
||||
autostart
|
||||
;;
|
||||
qtile-wayland)
|
||||
mkdir -p ~/.config/foot/
|
||||
cat >> ~/.bash_profile <<- 'autostart'
|
||||
|
||||
# Start sway on login from tty
|
||||
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" = 1 ]
|
||||
then
|
||||
exec qtile start -b wayland
|
||||
fi
|
||||
autostart
|
||||
;;
|
||||
river)
|
||||
mkdir -p ~/.config/foot/
|
||||
cat >> ~/.bash_profile <<- 'autostart'
|
||||
|
||||
# Start sway on login from tty
|
||||
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" = 1 ]
|
||||
then
|
||||
exec river
|
||||
fi
|
||||
autostart
|
||||
;;
|
||||
bspwm)
|
||||
cat >> ~/.bash_profile <<- 'autostart'
|
||||
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]
|
||||
then
|
||||
exec startx /usr/bin/bspwm
|
||||
fi
|
||||
autostart
|
||||
mkdir -p ~/.config/{bspwm,sxhkd,polybar}/
|
||||
install -Dm755 /usr/share/doc/bspwm/examples/bspwmrc ~/.config/bspwm/bspwmrc
|
||||
install -Dm644 /usr/share/doc/bspwm/examples/sxhkdrc ~/.config/sxhkd/sxhkdrc
|
||||
cp /etc/polybar/config.ini ~/.config/polybar/
|
||||
;;
|
||||
awesome)
|
||||
cat >> ~/.bash_profile <<- 'autostart'
|
||||
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]
|
||||
then
|
||||
exec startx /usr/bin/awesome
|
||||
fi
|
||||
autostart
|
||||
mkdir -p ~/.config/awesome/
|
||||
sed -e '/^terminal =/c terminal = "konsole"' \
|
||||
-e '/^modkey =/c modkey = "Mod1"' /etc/xdg/awesome/rc.lua > ~/.config/awesome/
|
||||
;;
|
||||
sway)
|
||||
# Sway
|
||||
sudo gpasswd -a ${USER} seat >/dev/null
|
||||
|
||||
# Dolphin default apps
|
||||
mkdir -p ~/.config/menus/
|
||||
curl --fail -s -L https://raw.githubusercontent.com/KDE/plasma-workspace/master/menu/desktop/plasma-applications.menu -o ~/.config/menus/applications.menu
|
||||
kbuildsycoca6 >/dev/null 2>&1
|
||||
|
||||
# Dolphin default terminal
|
||||
cat >> ~/.config/kdeglobals <<- foot
|
||||
[General]
|
||||
TerminalApplication=footclient
|
||||
foot
|
||||
|
||||
# Create conf directories
|
||||
mkdir -p ~/.config/{sway/config.d,foot}/
|
||||
|
||||
# Identify conf locations
|
||||
cat > ~/.config/sway/config <<- 'config'
|
||||
include /etc/sway/config.d/*
|
||||
include ~/.config/sway/config.d/*
|
||||
config
|
||||
|
||||
# Default sway config
|
||||
sed -e 's/mod Mod4/mod Mod1/' \
|
||||
-e 's/term foot/&client/' \
|
||||
-e '/set $menu/c set $menu bemenu-run -p "" --no-overlap --tb "#285577" --hb "#285577" --tf "#eeeeee" --hf "#eeeeee" --nf "#bbbbbb"' \
|
||||
/etc/sway/config > ~/.config/sway/config.d/00-config
|
||||
sed -n "/^# Status Bar:$/q;p" -i ~/.config/sway/config.d/00-config
|
||||
|
||||
# Sway config
|
||||
cat > ~/.config/sway/config.d/zz-sway <<- 'config'
|
||||
# Disable xwayland
|
||||
xwayland disable
|
||||
|
||||
# Start foot terminal server
|
||||
exec foot --server
|
||||
|
||||
# Use i3status
|
||||
bar {
|
||||
status_command i3status
|
||||
}
|
||||
|
||||
# Floating windows
|
||||
for_window [window_role="About"] floating enable
|
||||
for_window [window_role="Organizer"] floating enable
|
||||
for_window [window_role="Preferences"] floating enable
|
||||
for_window [window_role="bubble"] floating enable
|
||||
for_window [window_role="page-info"] floating enable
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="task_dialog"] floating enable
|
||||
for_window [window_role="toolbox"] floating enable
|
||||
for_window [window_role="webconsole"] floating enable
|
||||
for_window [window_type="dialog"] floating enable
|
||||
for_window [window_type="menu"] floating enable
|
||||
|
||||
# Floating for KCalc
|
||||
for_window [title="KCalc"] floating enable
|
||||
|
||||
# Bind keys for brightness
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
|
||||
|
||||
# Mouse and keyboard defaults
|
||||
input type:keyboard xkb_numlock enabled
|
||||
input type:touchpad {
|
||||
tap enabled
|
||||
natural_scroll enabled
|
||||
}
|
||||
config
|
||||
|
||||
# Display config
|
||||
cat > ~/.config/sway/config.d/zz-display <<- 'display'
|
||||
# # Declare output
|
||||
# set $laptop eDP-1 (swaymsg -t get_outputs)
|
||||
|
||||
# Swayidle
|
||||
exec swayidle -w \
|
||||
timeout 300 'swaylock -e -f -c 000000' \
|
||||
timeout 315 'swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"' \
|
||||
timeout 600 'systemctl suspend' \
|
||||
before-sleep 'swaylock -e -f -c 000000'
|
||||
|
||||
# Laptop lid switches
|
||||
bindswitch --reload --locked lid:on output * disable
|
||||
bindswitch --reload --locked lid:off output * enable
|
||||
|
||||
# Swaylock
|
||||
bindsym Mod4+l exec swaylock -e -f -c 000000
|
||||
|
||||
# Solid black background
|
||||
output * bg #000000 solid_color
|
||||
|
||||
# Prevent swayidle when a window is in fullscreen
|
||||
for_window [class=".*"] inhibit_idle fullscreen
|
||||
for_window [app_id=".*"] inhibit_idle fullscreen
|
||||
display
|
||||
|
||||
# Polkit
|
||||
cat > ~/.config/sway/config.d/zz-polkit <<- 'polkit'
|
||||
exec "/usr/lib/polkit-kde-authentication-agent-1"
|
||||
polkit
|
||||
|
||||
# Monitor
|
||||
if ls -l /dev/disk/* | grep -q 'VBOX\|virtio\|QEMU'
|
||||
then
|
||||
cat > ~/.config/sway/config.d/zz-virtualmonitor <<- 'monitor'
|
||||
# Virtual monitor
|
||||
output Virtual-1 {
|
||||
pos 0,0
|
||||
mode 1920x1080@60Hz
|
||||
scale 1.25
|
||||
}
|
||||
monitor
|
||||
fi
|
||||
|
||||
# TTY sway autostart
|
||||
cat >> ~/.bash_profile <<- 'sway'
|
||||
|
||||
# Start sway on login from tty
|
||||
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" = 1 ]
|
||||
then
|
||||
exec sway
|
||||
fi
|
||||
sway
|
||||
;;
|
||||
hyprland)
|
||||
# Hyprland
|
||||
mkdir -p ~/.config/{menus,hypr/scripts,foot,waybar}/
|
||||
|
||||
# Dolphin default apps
|
||||
curl --fail -s -L https://raw.githubusercontent.com/KDE/plasma-workspace/master/menu/desktop/plasma-applications.menu -o ~/.config/menus/applications.menu
|
||||
kbuildsycoca6 >/dev/null 2>&1
|
||||
|
||||
# Dolphin default terminal
|
||||
cat >> ~/.config/kdeglobals <<- foot
|
||||
[General]
|
||||
TerminalApplication=footclient
|
||||
foot
|
||||
|
||||
# Swayidle
|
||||
install /dev/stdin ~/.config/hypr/scripts/sleep.sh <<- 'swayidle'
|
||||
swayidle -w timeout 300 'swaylock -f -c 000000' \
|
||||
timeout 600 'systemctl suspend' \
|
||||
before-sleep 'swaylock -f -c 000000' &
|
||||
swayidle
|
||||
|
||||
# Config
|
||||
curl --silent --fail https://raw.githubusercontent.com/hyprwm/Hyprland/refs/heads/main/example/hyprland.conf |\
|
||||
sed -e '/Autostart/i exec-once = /usr/lib/polkit-kde-authentication-agent-1' \
|
||||
-e '/Autostart/i exec-once = waybar -c ~/.config/waybar/waybar.conf' \
|
||||
-e '/Autostart/i exec-once = ~/.config/hypr/scripts/sleep.sh' \
|
||||
-e '/^$terminal =/c $terminal = footclient' \
|
||||
-e '/gaps_in =/c gaps_in = 0' \
|
||||
-e '/gaps_out =/c gaps_out = 0' \
|
||||
-e '/^$menu =/c $menu = bemenu-run -p "" --no-overlap --tb "##285577" --hb "##285577" --tf "##eeeeee" --hf "##eeeeee" --nf "##bbbbbb"' \
|
||||
-e 's/bind = $mainMod, R, exec, $menu/bind = $mainMod, D, exec, $menu/' \
|
||||
-e 's/bind = $mainMod, Q, exec, $terminal/bind = $mainMod, RETURN, exec, $terminal/' \
|
||||
-e 's/bind = $mainMod, C, killactive/bind = $mainMod SHIFT, Q, killactive/' \
|
||||
-e '/$mainMod =/c $mainMod = ALT' \
|
||||
-e '/RETURN/a bind = SUPER, L, exec, swaylock -e -f -c 000000' \
|
||||
> ~/.config/hypr/hyprland.conf
|
||||
# -e '/Autostart/i exec-once = uwsm app -- foot --server' \
|
||||
|
||||
# QEMU monitor
|
||||
if ls -l /dev/disk/* | grep -q 'VBOX\|virtio\|QEMU'
|
||||
then
|
||||
sed -i "/^monitor/c monitor = $(hyprctl monitors all | grep "^Monitor" | awk '{print $2}'), 1920x1080@60, 0x0, 1.5" ~/.config/hypr/hyprland.conf
|
||||
fi
|
||||
|
||||
# Waybar
|
||||
sed -e 's|sway/workspaces|sway/workspaces|g' \
|
||||
-e 's|sway/mode|hyprland/submap|g' \
|
||||
-e '/position/ s|//||' \
|
||||
/etc/xdg/waybar/config.jsonc > ~/.config/waybar/waybar.conf
|
||||
|
||||
# TTY sway autostart
|
||||
cat >> ~/.bash_profile <<- 'hyprland'
|
||||
|
||||
# Start sway on login from tty
|
||||
if uwsm check may-start
|
||||
then
|
||||
exec uwsm start hyprland.desktop
|
||||
fi
|
||||
hyprland
|
||||
;;
|
||||
esac
|
||||
|
||||
# Foot terminal config (/etc/xdg/foot/foot.ini)
|
||||
if [ -d ~/.config/foot/ ]
|
||||
then
|
||||
cat > ~/.config/foot/foot.ini <<- 'foot'
|
||||
[main]
|
||||
include=/usr/share/foot/themes/kitty
|
||||
font=Source Code Pro:size=12
|
||||
workers=32
|
||||
|
||||
[scrollback]
|
||||
# lines=1000
|
||||
foot
|
||||
fi
|
||||
|
||||
# Add user to shared folder group if in virtualbox guest
|
||||
if ls -l /dev/disk/* | grep -q VBOX
|
||||
then
|
||||
sudo gpasswd -a ${USER} vboxsf >/dev/null
|
||||
echo
|
||||
fi
|
||||
|
||||
# iwd status function
|
||||
if pacman -Q | grep -w -q iwd
|
||||
then
|
||||
cat > ~/.local/functions/iwd-status <<- iwd
|
||||
#!/usr/bin/env bash
|
||||
# iwd connection status
|
||||
function iwd-status
|
||||
{
|
||||
iwctl station "$(iwctl station list | grep connected | awk '{print $(NF-1)}')" show
|
||||
}
|
||||
|
||||
alias iwctl='iwctl station $(iwctl station list | grep connected | awk '{print $(NF-1)}')'
|
||||
iwd
|
||||
fi
|
||||
|
||||
if [[ "${desktop_choice}" == "none" ]]
|
||||
then
|
||||
sudo rm -f ${0}
|
||||
echo -e '\e[1;34mSetup complete, press any key to continue\e[5m...\e[0m\n'
|
||||
read -n 1 -s -p ''
|
||||
elif ls /usr/share/*sessions | grep -q desktop
|
||||
then
|
||||
install /dev/stdin ~/.local/bin/startup <<- 'EOF'
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Internet connection check
|
||||
if nc -z -w 1 archlinux.org 443 >/dev/null 2>&1 || nc -z -w 1 google.com 443 >/dev/null 2>&1
|
||||
then
|
||||
vim ~/.local/bin/startupscript
|
||||
~/.local/bin/startupscript
|
||||
rm -f ${0}
|
||||
exit 0
|
||||
else
|
||||
echo -e '\n\e[31mNo internet connectivity detected'
|
||||
echo -e 'Connect to a network and try again'
|
||||
echo -e 'Aborting installer...\e[0m\n'
|
||||
exit 1
|
||||
fi
|
||||
EOF
|
||||
|
||||
install /dev/stdin ~/.local/bin/startupscript <<- EOF
|
||||
$(curl --fail --silent https://git.myvelabs.com/lab/archlinux/raw/branch/master/functions/startup)
|
||||
EOF
|
||||
sudo rm -f ${0}
|
||||
echo -e '\e[1;34mDesktop installed, press any key to load '${desktop_choice}'\e[5m...\e[0m'
|
||||
read -n 1 -s -p ''
|
||||
echo
|
||||
else
|
||||
die 'Something does not feel right'
|
||||
fi
|
||||
|
||||
# Systemd services
|
||||
for service in ${systemd_user_services[@]}
|
||||
do
|
||||
systemctl --quiet --user enable --now ${service}
|
||||
done
|
||||
sudo systemctl --quiet enable --now ${systemd_services[@]}
|
||||
Loading…
Add table
Add a link
Reference in a new issue