diff --git a/core/tabs/applications-setup/dwmtitus-setup.sh b/core/tabs/applications-setup/dwmtitus-setup.sh index 5df2a5d1..e00931aa 100755 --- a/core/tabs/applications-setup/dwmtitus-setup.sh +++ b/core/tabs/applications-setup/dwmtitus-setup.sh @@ -1,20 +1,27 @@ -#!/bin/sh -e +#!/bin/sh . ../common-script.sh +. ../common-service-script.sh setupDWM() { printf "%b\n" "${YELLOW}Installing DWM-Titus...${RC}" case "$PACKAGER" in # Install pre-Requisites pacman) - "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2 libxcb git unzip flameshot lxappearance feh mate-polkit meson libev uthash libconfig + "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2 git unzip flameshot lxappearance feh mate-polkit + ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add build-base libxinerama-dev libxft-dev imlib2-dev font-dejavu dbus-x11 git unzip flameshot feh polkit ;; apt-get|nala) "$ESCALATION_TOOL" "$PACKAGER" install -y build-essential libx11-dev libxinerama-dev libxft-dev libimlib2-dev libx11-xcb-dev libfontconfig1 libx11-6 libxft2 libxinerama1 libxcb-res0-dev git unzip flameshot lxappearance feh mate-polkit ;; dnf) - "$ESCALATION_TOOL" "$PACKAGER" groupinstall -y "Development Tools" + "$ESCALATION_TOOL" "$PACKAGER" install -y "@development-tools" || "$ESCALATION_TOOL" "$PACKAGER" group install -y "Development Tools" "$ESCALATION_TOOL" "$PACKAGER" install -y libX11-devel libXinerama-devel libXft-devel imlib2-devel libxcb-devel unzip flameshot lxappearance feh mate-polkit # no need to include git here as it should be already installed via "Development Tools" ;; + zypper) + "$ESCALATION_TOOL" "$PACKAGER" install -y make libX11-devel libXinerama-devel libXft-devel imlib2-devel gcc + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 @@ -22,6 +29,34 @@ setupDWM() { esac } +setupPicomDependencies() { + printf "%b\n" "${YELLOW}Installing Picom dependencies if not already installed${RC}" + + case "$PACKAGER" in + pacman) + "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm libxcb meson libev uthash libconfig + ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add libxcb-dev meson libev-dev uthash-dev libconfig-dev pixman-dev xcb-util-image-dev xcb-util-renderutil-dev pcre2-dev libepoxy-dev dbus-dev xcb-util-dev + ;; + apt-get|nala) + "$ESCALATION_TOOL" "$PACKAGER" install -y libxcb1-dev libxcb-res0-dev libconfig-dev libdbus-1-dev libegl-dev libev-dev libgl-dev libepoxy-dev libpcre2-dev libpixman-1-dev libx11-xcb-dev libxcb1-dev libxcb-composite0-dev libxcb-damage0-dev libxcb-dpms0-dev libxcb-glx0-dev libxcb-image0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-util-dev libxcb-xfixes0-dev libxext-dev meson ninja-build uthash-dev + ;; + dnf) + "$ESCALATION_TOOL" "$PACKAGER" install -y libxcb-devel dbus-devel gcc git libconfig-devel libdrm-devel libev-devel libX11-devel libX11-xcb libXext-devel libxcb-devel libGL-devel libEGL-devel libepoxy-devel meson pcre2-devel pixman-devel uthash-devel xcb-util-image-devel xcb-util-renderutil-devel xorg-x11-proto-devel xcb-util-devel + ;; + zypper) + "$ESCALATION_TOOL" "$PACKAGER" install -y libxcb-devel libxcb-devel dbus-1-devel gcc git libconfig-devel libdrm-devel libev-devel libX11-devel libX11-xcb1 libXext-devel libxcb-devel Mesa-libGL-devel Mesa-libEGL-devel libepoxy-devel meson pcre2-devel uthash-devel xcb-util-image-devel libpixman-1-0-devel xcb-util-renderutil-devel xcb-util-devel + ;; + *) + printf "%b\n" "${RED}Unsupported package manager: $PACKAGER${RC}" + exit 1 + ;; + esac + + printf "%b\n" "${GREEN}Picom dependencies installed successfully${RC}" +} + makeDWM() { cd "$HOME" && git clone https://github.com/ChrisTitusTech/dwm-titus.git # CD to Home directory to install dwm-titus # This path can be changed (e.g. to linux-toolbox directory) @@ -35,8 +70,7 @@ install_nerd_font() { FONT_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip" FONT_INSTALLED=$(fc-list | grep -i "Meslo") - # Replace -n test with standard test - if [ ! -z "$FONT_INSTALLED" ]; then + if [ -n "$FONT_INSTALLED" ]; then printf "%b\n" "${GREEN}Meslo Nerd-fonts are already installed.${RC}" return 0 fi @@ -185,12 +219,18 @@ setupDisplayManager() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm xorg-xinit xorg-server ;; + apk) + "$ESCALATION_TOOL" setup-xorg-base + ;; apt-get|nala) "$ESCALATION_TOOL" "$PACKAGER" install -y xorg xinit ;; dnf) "$ESCALATION_TOOL" "$PACKAGER" install -y xorg-x11-xinit xorg-x11-server-Xorg ;; + zypper) + "$ESCALATION_TOOL" "$PACKAGER" install -y xinit xorg-x11-server + ;; *) printf "%b\n" "${RED}Unsupported package manager: $PACKAGER${RC}" exit 1 @@ -200,44 +240,40 @@ setupDisplayManager() { printf "%b\n" "${YELLOW}Setting up Display Manager${RC}" currentdm="none" for dm in gdm sddm lightdm; do - if systemctl is-active --quiet "$dm.service"; then + if command -v "$dm" >/dev/null 2>&1 || isServiceActive "$dm"; then currentdm="$dm" break fi done printf "%b\n" "${GREEN}Current display manager: $currentdm${RC}" if [ "$currentdm" = "none" ]; then - while : ; do - printf "%b\n" "${YELLOW}--------------------------${RC}" - printf "%b\n" "${YELLOW}Pick your Display Manager ${RC}" - printf "%b\n" "${YELLOW}1. SDDM ${RC}" - printf "%b\n" "${YELLOW}2. LightDM ${RC}" - printf "%b\n" "${YELLOW}3. GDM ${RC}" - printf "%b\n" "${YELLOW}4. None ${RC}" - printf "%b" "${YELLOW}Please select one: ${RC}" - read -r choice - case "$choice" in - 1) - DM="sddm" - break - ;; - 2) - DM="lightdm" - break - ;; - 3) - DM="gdm" - break - ;; - 4) - printf "%b\n" "${GREEN}No display manager will be installed${RC}" - return 0 - ;; - *) - printf "%b\n" "${RED}Invalid selection! Please choose 1, 2, 3, or 4.${RC}" - ;; - esac - done + printf "%b\n" "${YELLOW}--------------------------${RC}" + printf "%b\n" "${YELLOW}Pick your Display Manager ${RC}" + printf "%b\n" "${YELLOW}1. SDDM ${RC}" + printf "%b\n" "${YELLOW}2. LightDM ${RC}" + printf "%b\n" "${YELLOW}3. GDM ${RC}" + printf "%b\n" "${YELLOW}4. None ${RC}" + printf "%b" "${YELLOW}Please select one: ${RC}" + read -r choice + case "$choice" in + 1) + DM="sddm" + ;; + 2) + DM="lightdm" + ;; + 3) + DM="gdm" + ;; + 4) + printf "%b\n" "${GREEN}No display manager will be installed${RC}" + return 0 + ;; + *) + printf "%b\n" "${RED}Invalid selection! Please choose 1, 2, 3, or 4.${RC}" + return 1 + ;; + esac case "$PACKAGER" in pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm "$DM" @@ -245,29 +281,41 @@ setupDisplayManager() { "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm lightdm-gtk-greeter fi ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add "$DM" + if [ "$DM" = "lightdm" ]; then + "$ESCALATION_TOOL" "$PACKAGER" add lightdm-gtk-greeter + fi + ;; apt-get|nala) "$ESCALATION_TOOL" "$PACKAGER" install -y "$DM" ;; dnf) "$ESCALATION_TOOL" "$PACKAGER" install -y "$DM" ;; + zypper) + "$ESCALATION_TOOL" "$PACKAGER" install -y "$DM" + ;; *) printf "%b\n" "${RED}Unsupported package manager: $PACKAGER${RC}" exit 1 ;; esac printf "%b\n" "${GREEN}$DM installed successfully${RC}" - systemctl enable "$DM" + enableService "$DM" fi } install_slstatus() { - printf "Do you want to install slstatus? (y/N): " # using printf instead of 'echo' to avoid newline, -n flag for 'echo' is not supported in POSIX - read -r response # -r flag to prevent backslashes from being interpreted + printf "Do you want to install slstatus? (y/N): " + read -r response if [ "$response" = "y" ] || [ "$response" = "Y" ]; then printf "%b\n" "${YELLOW}Installing slstatus${RC}" - cd "$HOME/dwm-titus/slstatus" || { printf "%b\n" "${RED}Failed to change directory to slstatus${RC}"; return 1; } + cd "$HOME/dwm-titus/slstatus" || { + printf "%b\n" "${RED}Failed to change directory to slstatus${RC}" + return 1 + } if "$ESCALATION_TOOL" make clean install; then printf "%b\n" "${GREEN}slstatus installed successfully${RC}" else @@ -284,6 +332,7 @@ checkEnv checkEscalationTool setupDisplayManager setupDWM +setupPicomDependencies makeDWM install_slstatus install_nerd_font