Programster's Blog

Tutorials focusing on Linux, programming, and open-source

Xubuntu 22.04 Setup Desktop Script

Below is the script I execute after having performed a fresh installation of Xubuntu Desktop 20.04.

#!/bin/bash

# Update the system
sudo apt update && sudo apt dist-upgrade -y

# Remove nano and parole (installing vim and vlc/mpv later)
sudo apt-get remove nano parole -y


sudo apt install -y \
  byobu vim curl htop nmap nload pydf ncdu sysstat sshfs p7zip expect tcl-expect \
  xclip nfs-common openjdk-19-jdk psensor openvpn engrampa xscreensaver-gl \
  aria2 axel \
  git rabbitvcs-cli \
  php8.1-cli php8.1-curl php8.1-xml php8.1-mysql php8.1-yaml composer \
  postgresql-client-common postgresql-client-14 mariadb-client-core-10.6 \
  clamav clamav-daemon \
  typecatcher fonts-firacode \
  caja nemo mate-calc terminator gedit figlet gparted \
  cheese filezilla seafile-gui chromium-browser virt-manager \
  simplescreenrecorder ksnip gimp ristretto inkscape \
  mplayer ffmpeg mpv vlc mediainfo kazam \
  system-config-printer hplip hplip-gui simple-scan


# Install shutter
#sudo add-apt-repository ppa:linuxuprising/shutter -y
#sudo apt update
#sudo apt install shutter -y


# Install papirus icon theme
# https://www.omgubuntu.co.uk/best-icon-themes-ubuntu
sudo add-apt-repository ppa:papirus/papirus -y \
  && sudo apt update  \
  && sudo apt install papirus-icon-theme -y


# Install sublime 3 PPA
sudo curl -fsSL https://download.sublimetext.com/sublimehq-pub.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sublime.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/sublime.gpg] https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt update
sudo apt install sublime-text -y


# Install discord. There is a snap, but that will have issues with uploading images.
sudo apt update \
  && sudo apt install -y gdebi-core wget \
  && wget -O ~/discord.deb "https://discordapp.com/api/download?platform=linux&format=deb" \
  && sudo gdebi ~/discord.deb -y


# Install draw.io diagramming tool.
sudo snap install drawio


# Install prog-exec
wget https://raw.githubusercontent.com/programster/prog-exec/master/prog-exec
chmod +x prog-exec
sudo mv -i prog-exec /bin/.


# Install node
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - \
  && sudo apt-get install -y nodejs -y


# Install Less through Node
sudo npm install -g less


# Install Sass
sudo apt update &&
  sudo apt install build-essential && \
  sudo apt install -y ruby-full rubygems && \
  sudo gem install sass


# Install libreoffice from PPA
sudo add-apt-repository ppa:libreoffice/ppa -y \
  && sudo apt update \
  && sudo apt install libreoffice -y


# Install prog-exec
wget https://raw.githubusercontent.com/programster/prog-exec/master/prog-exec
chmod +x prog-exec
sudo mv prog-exec /bin/.


# Install spotify through deb package, because snaps suck
KEY_URL="https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg" \
  && curl -sS $KEY_URL | sudo apt-key add - \
  && echo "deb http://repository.spotify.com stable non-free" \
  | sudo tee /etc/apt/sources.list.d/spotify.list \
  && sudo apt update \
  && sudo apt install spotify-client -y


# install chromium browser through snaps (annoying)
sudo snap install chromium -y


# install terraform from PPA
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - \
  && sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" \
  && sudo apt-get update && sudo apt-get install terraform -y


# Add steps to install docker
# here


# Add step to set nemo as default
# file browser


# @TODO - Set keyboard shortcuts
# -  super-q -  terminator
# - super - e  thunar
# - shutter shortcuts
Last updated: 12th August 2023
First published: 26th February 2023

This blog is created by Stuart Page

I'm a freelance web developer and technology consultant based in Surrey, UK, with over 10 years experience in web development, DevOps, Linux Administration, and IT solutions.

Need support with your infrastructure or web services?

Get in touch