Linux DE installation(s) bash

Chris

Lad
Member
Bash:
# 1. Update system repositories and upgrade existing packages
sudo dnf check-update
sudo dnf upgrade -y

# 2. Install development tools, X11 libraries, i3, and Spectrwm
sudo dnf install dnf-plugins-core git gcc gcc-c++ make bison flex m4 ksh \
  libX11-devel libXext-devel libXt-devel libXmu-devel libXft-devel \
  libXinerama-devel libjpeg-turbo-devel libpng-devel libtirpc-devel \
  rpcbind pam-devel tcl-devel tk-devel libXss-devel libXrandr-devel \
  libXpm-devel ImageMagick openmotif-devel i3 i3status dmenu i3lock \
  spectrwm wget -y

echo "=== NATIVE WINDOW MANAGERS INSTALLED ==="

# 3. Detect Fedora version and install nsCDE
cd /tmp
export FEDORA_VER=$(rpm -E %fedora)

sudo dnf copr enable @szpak/NsCDE -y || \
  wget https://github.com

# CHANGED: Using native 'install' for dnf5 local package delivery
sudo dnf install ./NsCDE*.rpm -y
echo "=== NSCDE INSTALLED ==="

# 4. Add the Trinity Desktop Environment (TDE) repository and install it
sudo rpm -Uvh http://trinitydesktop.org{FEDORA_VER}/trinity-r14/RPMS/noarch/trinity-repo-14.1.6-1.fc${FEDORA_VER}.noarch.rpm
sudo dnf clean all
sudo dnf install trinity-tdebase -y
echo "=== TRINITY INSTALLED ==="

# 5. Clone, compile, and install the Common Desktop Environment (CDE)
cd /tmp
git clone https://sf.net cde-code
cd cde-code/cde
./configure
make -j$(nproc)
sudo make install

echo "=== CDE COMPILED & INSTALLED ==="

# 6. Ensure i3 and its essential bar/menu applications are fully present
sudo dnf install i3 i3status dmenu -y
echo "=== i3 VERIFICATION COMPLETE ==="

echo "=== ALL WINDOW MANAGERS SETUP COMPLETE. REBOOT OR LOG OUT ==="
 

Chris

Lad
Member
Bash:
#!/bin/sh

clear
echo "=================================================="
echo "          SELECT DESKTOP ENVIRONMENT              "
echo "=================================================="
echo "  1) i3 Window Manager"
echo "  2) spectrwm"
echo "  3) NsCDE"
echo "  4) Trinity Desktop Environment (KDE3)"
echo "  5) Common Desktop Environment (CDE)"
echo "=================================================="
echo -n "Enter choice [1-5]: "
read -r choice

case $choice in
    1)
        exec /usr/bin/i3
        ;;
    2)
        exec /usr/bin/spectrwm
        ;;
    3)
        # NsCDE wrapper launch
        if [ -f /opt/NsCDE/bin/nscde ]; then
            exec /opt/NsCDE/bin/nscde
        else
            exec /usr/bin/nscde
        fi
        ;;
    4)
        # Trinity Desktop initialization environment variables
        export TDE_FULL_SESSION=true
        exec /opt/trinity/bin/startkde
        ;;
    5)
        # CDE session manager initialization
        export DT_XINIT_START=1
        if [ -f /etc/X11/Xsession ]; then
            exec /etc/X11/Xsession /usr/dt/bin/Xsession
        else
            exec /usr/dt/bin/Xsession
        fi
        ;;
    *)
        echo "Invalid choice. Defaulting to i3..."
        sleep 1
        exec /usr/bin/i3
        ;;
esac
 
Last edited:

Chris

Lad
Member
Bash:
#!/bin/bash
set -euo pipefail

if [ "$EUID" -ne 0 ]; then
  echo "Run as root."
  exit 1
fi

# Detect distribution
if [ -f /etc/arch-release ]; then
  DISTRO="arch"
elif [ -f /etc/fedora-release ]; then
  DISTRO="fedora"
elif [ -f /etc/debian_version ]; then
  if grep -q "Ubuntu" /etc/os-release; then
    DISTRO="ubuntu"
  else
    DISTRO="debian"
  fi
else
  echo "Unsupported distribution."
  exit 1
fi

# 1. Update system repositories
echo "Updating repositories..."
case "$DISTRO" in
  arch) pacman -Sy ;;
  fedora) dnf check-update || true ;;
  debian|ubuntu) apt-get update ;;
esac

# 2. Install development tools, X11 libraries, and window managers
echo "Installing core packages..."
case "$DISTRO" in
  arch)
    # Note: openmotif is in the AUR; utilizing xorg-server and standard packages
    pacman -S --noconfirm base-devel git bison flex m4 ksh libx11 libxext \
      libxt libxmu libxft libxinerama libjpeg-turbo libpng libtirpc rpcbind \
      pam tcl tk libxss libxrandr libxpm imagemagick i3-wm i3status dmenu \
      i3lock spectrwm wget
    ;;
  fedora)
    dnf upgrade -y
    dnf install -y git gcc gcc-c++ make bison flex m4 ksh libX11-devel \
      libXext-devel libXt-devel libXmu-devel libXft-devel libXinerama-devel \
      libjpeg-turbo-devel libpng-devel libtirpc-devel rpcbind pam-devel \
      tcl-devel tk-devel libXss-devel libXrandr-devel libXpm-devel \
      ImageMagick openmotif-devel i3 i3status dmenu i3lock spectrwm wget
    ;;
  debian|ubuntu)
    apt-get upgrade -y
    apt-get install -y git build-essential bison flex m4 ksh libx11-dev \
      libxext-dev libxt-dev libxmu-dev libxft-dev libxinerama-dev \
      libjpeg-dev libpng-dev libtirpc-dev rpcbind libpam0g-dev tcl-dev \
      tk-dev libxss-dev libxrandr-dev libxpm-dev imagemagick libmotif-dev \
      i3 i3status dmenu i3lock spectrwm wget xorg
    ;;
esac

echo "=== NATIVE WINDOW MANAGERS INSTALLED ==="

# 3. Install nsCDE
echo "Installing nsCDE..."
case "$DISTRO" in
  arch)
    echo "NsCDE on Arch requires AUR installation (nscde package). Skipping binary step."
    ;;
  fedora)
    FEDORA_VER=$(rpm -E %fedora)
    dnf copr enable -y @szpak/NsCDE
    dnf install -y NsCDE
    ;;
  debian|ubuntu)
    # Grab latest release package route from GitHub releases directly
    cd /tmp
    NSCDE_URL=$(wget -qO- https://github.com | grep "browser_download_url.*deb" | cut -d '"' -f 4 | head -n 1)
    if [ -n "$NSCDE_URL" ]; then
      wget "$NSCDE_URL" -O nscde.deb
      apt-get install -y ./nscde.deb
    fi
    ;;
esac

echo "=== NSCDE INSTALLED ==="

# 4. Install Trinity Desktop Environment (TDE)
echo "Installing Trinity..."
case "$DISTRO" in
  arch)
    echo "Trinity on Arch requires AUR building. Skipping binary step."
    ;;
  fedora)
    FEDORA_VER=$(rpm -E %fedora)
    sudo rpm -Uvh --force http://trinitydesktop.org{FEDORA_VER}/trinity-repo-14.1.6-1.fc${FEDORA_VER}.noarch.rpm || true
    dnf clean all
    dnf install -y trinity-tdebase
    ;;
  debian)
    # Set up basic paths for bookworm
    echo "deb http://trinitydesktop.org bookworm main" > /etc/apt/sources.list.d/trinity.list
    echo "deb-src http://trinitydesktop.org bookworm main" >> /etc/apt/sources.list.d/trinity.list
    wget http://trinitydesktop.org
    apt-get install -y ./trinity-keyring.deb
    apt-get update
    apt-get install -y trinity-tdebase
    ;;
  ubuntu)
    # Set up basic paths for noble
    echo "deb http://trinitydesktop.org noble main" > /etc/apt/sources.list.d/trinity.list
    echo "deb-src http://trinitydesktop.org noble main" >> /etc/apt/sources.list.d/trinity.list
    wget http://trinitydesktop.org
    apt-get install -y ./trinity-keyring.deb
    apt-get update
    apt-get install -y trinity-tdebase
    ;;
esac

echo "=== TRINITY INSTALLED ==="

# 5. Compile and install CDE from source
echo "Compiling CDE..."
cd /tmp
rm -rf cde-code
git clone https://sf.net cde-code
cd cde-code/cde
./configure
make -j$(nproc)
make install

echo "=== CDE COMPILED & INSTALLED ==="

# 6. Verification
echo "Verifying environment utilities..."
case "$DISTRO" in
  arch) pacman -S --needed --noconfirm i3-wm i3status dmenu ;;
  fedora) dnf install -y i3 i3status dmenu ;;
  debian|ubuntu) apt-get install -y i3 i3status dmenu ;;
esac

echo "=== ALL WINDOW MANAGERS SETUP COMPLETE. REBOOT OR LOG OUT ==="
 

Chris

Lad
Member
Bash:
#!/bin/sh

clear
echo "=================================================="
echo "          SELECT DESKTOP ENVIRONMENT              "
echo "=================================================="
echo "  1) i3 Window Manager"
echo "  2) spectrwm"
echo "  3) NsCDE"
echo "  4) Trinity Desktop Environment (KDE3)"
echo "  5) Common Desktop Environment (CDE)"
echo "=================================================="
echo -n "Enter choice [1-5]: "
read -r choice

case $choice in
    1)
        exec /usr/bin/i3
        ;;
    2)
        exec /usr/bin/spectrwm
        ;;
    3)
        # NsCDE wrapper launch
        if [ -f /opt/NsCDE/bin/nscde ]; then
            exec /opt/NsCDE/bin/nscde
        else
            exec /usr/bin/nscde
        fi
        ;;
    4)
        # Trinity Desktop initialization environment variables
        export TDE_FULL_SESSION=true
        exec /opt/trinity/bin/startkde
        ;;
    5)
        # CDE session manager initialization
        export DT_XINIT_START=1
        if [ -f /etc/X11/Xsession ]; then
            exec /etc/X11/Xsession /usr/dt/bin/Xsession
        else
            exec /usr/dt/bin/Xsession
        fi
        ;;
    *)
        echo "Invalid choice. Defaulting to i3..."
        sleep 1
        exec /usr/bin/i3
        ;;
esac
Bash:
#!/bin/sh

# Clear any previous environment bugs
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

clear
echo "=================================================="
echo "          SELECT DESKTOP ENVIRONMENT              "
echo "=================================================="
echo "  1) i3 Window Manager"
echo "  2) spectrwm"
echo "  3) NsCDE"
echo "  4) Trinity Desktop Environment (KDE3)"
echo "  5) Common Desktop Environment (CDE)"
echo "=================================================="
echo -n "Enter choice [1-5]: "
# Read from standard TTY input because startx can redirect stdin
read -r choice < /dev/tty

case $choice in
    1)
        exec i3
        ;;
    2)
        exec spectrwm
        ;;
    3)
        # Dynamic path detection for NsCDE
        if command -v nscde >/dev/null 2>&1; then
            exec nscde
        elif [ -f /opt/NsCDE/bin/nscde ]; then
            exec /opt/NsCDE/bin/nscde
        else
            echo "NsCDE not found!" && sleep 2
        fi
        ;;
    4)
        export TDE_FULL_SESSION=true
        # Dynamic path detection for Trinity (Arch uses /usr/bin, others use /opt)
        if [ -f /opt/trinity/bin/startkde ]; then
            exec /opt/trinity/bin/startkde
        elif command -v starttde >/dev/null 2>&1; then
            exec starttde
        elif command -v startkde >/dev/null 2>&1; then
            exec startkde
        else
            echo "Trinity not found!" && sleep 2
        fi
        ;;
    5)
        export DT_XINIT_START=1
        # Fix for CDE architecture variations
        if [ -f /etc/X11/Xsession ] && [ -f /usr/dt/bin/Xsession ]; then
            exec /etc/X11/Xsession /usr/dt/bin/Xsession
        elif [ -f /usr/dt/bin/Xsession ]; then
            exec /usr/dt/bin/Xsession
        else
            echo "CDE not found!" && sleep 2
        fi
        ;;
    *)
        echo "Invalid choice. Defaulting to i3..."
        sleep 1
        exec i3
        ;;
esac
 
Top