For a full Xubuntu Desktop install: install native Firefox, Google Chrome and Brave Origin, remove Snap, add Flatpak/Flathub and Homebrew, configure passwordless APT, UFW, Caffeine, XFCE usability tweaks, recovery tools, media support, networking utilities, and ongoing maintenance.
Because you installed the normal Xubuntu Desktop edition rather than the Minimal edition, you already have a complete XFCE environment and a substantial set of desktop applications.
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove --purge -y
Reboot if the kernel or major system components were updated:
sudo reboot
sudo apt install -y \
curl wget git nano vim \
build-essential procps file rsync unzip p7zip-full \
htop btop ncdu tree \
software-properties-common
These cover downloads, editing, development tools, file synchronization, archive handling, process monitoring, and general troubleshooting.
Do this before removing Snap, especially if Firefox is currently a Snap.
sudo apt install -y flatpak
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
Log out and back in, or reboot, so desktop integration is fully refreshed.
flatpak remotes
You should see flathub.
flatpak install flathub org.mozilla.firefox
sudo apt install -y gnome-software gnome-software-plugin-flatpak
Install your replacement browsers before removing Snap. This is especially important on Xubuntu because Firefox may currently be installed as a Snap.
.deb package. Chrome and Brave Origin can use their own official repositories so normal apt update / apt upgrade maintenance keeps them current.
Mozilla recommends its own APT repository for Debian- and Ubuntu-based distributions. The steps below are appropriate for modern Xubuntu/Ubuntu releases using the Deb822 .sources format.
sudo install -d -m 0755 /etc/apt/keyrings
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | \
sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
The expected fingerprint is:
35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3
Verify it with:
gpg -n -q --import --import-options import-show \
/etc/apt/keyrings/packages.mozilla.org.asc | \
awk '/pub/{getline; gsub(/^ +| +$/,""); \
if($0 == "35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3") \
print "\nThe key fingerprint matches ("$0").\n"; \
else print "\nVerification failed: the fingerprint ("$0") does not match the expected one.\n"}'
For Ubuntu Resolute and newer, including current Xubuntu releases:
sudo tee /etc/apt/sources.list.d/mozilla.sources > /dev/null << 'EOF'
Types: deb
URIs: https://packages.mozilla.org/apt
Suites: mozilla
Components: main
Signed-By: /etc/apt/keyrings/packages.mozilla.org.asc
EOF
sudo tee /etc/apt/preferences.d/mozilla > /dev/null << 'EOF'
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
Package: firefox
Pin: release o=Ubuntu
Pin-Priority: -1
EOF
This keeps the native Mozilla package preferred while preventing Ubuntu's Firefox package from steering the installation back toward Snap.
snap list firefox 2>/dev/null && sudo snap remove firefox
sudo apt update
sudo apt install -y firefox
apt policy firefox
The selected candidate should come from packages.mozilla.org.
For example, to install French localization:
sudo apt install firefox-l10n-fr
To see all available Firefox language packs:
apt-cache search firefox-l10n
The simplest official method on a typical 64-bit Intel/AMD Xubuntu PC is to install Google's current .deb package. Installing it also configures Google's software repository so Chrome can receive future updates through APT.
cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install -y ./google-chrome-stable_current_amd64.deb
rm -f /tmp/google-chrome-stable_current_amd64.deb
google-chrome --version
apt policy google-chrome-stable
This installs Brave Origin, the standalone Origin build—not the standard Brave Browser release.
curl -fsS https://dl.brave.com/install.sh | FLAVOR=origin sh
Brave's installer configures the required repository and installs the current Brave Origin release.
apt policy brave-origin
sudo apt install -y curl
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg \
https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
sudo curl -fsSLo /etc/apt/sources.list.d/brave-browser-release.sources \
https://brave-browser-apt-release.s3.brave.com/brave-browser.sources
sudo apt update
sudo apt install -y brave-origin
firefox --version
google-chrome --version
apt policy firefox google-chrome-stable brave-origin
Once these repositories are configured, normal system maintenance should update all three native browser packages:
sudo apt update
sudo apt full-upgrade
| Browser | Source | Package |
|---|---|---|
| Firefox | Mozilla official APT repository | firefox |
| Google Chrome | Google official Linux repository | google-chrome-stable |
| Brave Origin | Brave official Linux repository | brave-origin |
Official references: Mozilla — Install Firefox on Linux, Google — Download Chrome, Brave — Brave Origin on Linux.
snap list
sudo systemctl disable --now snapd.socket
sudo systemctl disable --now snapd.service
sudo systemctl disable --now snapd.seeded.service 2>/dev/null
sudo apt purge -y snapd
sudo apt autoremove --purge -y
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
sudo rm -rf /var/cache/snapd
sudo nano /etc/apt/preferences.d/nosnap.pref
Put this in the file:
Package: snapd
Pin: release a=*
Pin-Priority: -10
Save with Ctrl+O, Enter, then exit with Ctrl+X.
Also place the package on hold:
sudo apt-mark hold snapd
apt policy snapd
which snap
which snap should ideally return nothing.
This allows package-management commands to run without asking for your password, without making every sudo command passwordless.
echo "$USER ALL=(root) NOPASSWD: /usr/bin/apt, /usr/bin/apt-get" | \
sudo tee /etc/sudoers.d/apt-nopasswd
Set the correct permissions:
sudo chmod 440 /etc/sudoers.d/apt-nopasswd
Validate the sudoers file:
sudo visudo -cf /etc/sudoers.d/apt-nopasswd
You want to see:
parsed OK
sudo -k
sudo apt update
NOPASSWD: ALL, which is not recommended for a normal desktop.
sudo apt install -y ufw gufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
Allow SSH before enabling the firewall:
sudo ufw allow OpenSSH
Or restrict SSH to your LAN:
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
Change the subnet to match your network.
sudo ufw enable
sudo ufw status verbose
A typical desktop configuration should show:
Status: active
Default: deny (incoming), allow (outgoing)
sudo ufw status numbered
sudo ufw delete 3
gufw
Use APT for system packages, Flatpak for desktop applications, and Homebrew mainly for CLI/development tools where you want newer releases.
sudo apt install -y build-essential procps curl file git
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew --version
brew doctor
brew install fastfetch
| Package system | Best use |
|---|---|
| APT | Operating system, kernel, drivers, libraries, services |
| Flatpak | Desktop applications |
| Homebrew | CLI and development utilities |
sudo apt install -y caffeine
caffeine-indicator
The tray icon lets you temporarily prevent the display from blanking, the screensaver from activating, the session from locking, or the system from suspending.
caffeinate rsync -avh source/ destination/
The machine stays awake until the command finishes.
The full Xubuntu Desktop edition already includes many XFCE extras, so you may already have most or all of these packages.
sudo apt install -y \
xfce4-goodies \
xfce4-whiskermenu-plugin \
xfce4-clipman-plugin \
xfce4-pulseaudio-plugin \
xfce4-screenshooter \
xfce4-notifyd \
xfce4-power-manager \
thunar-archive-plugin \
thunar-media-tags-plugin \
file-roller \
pavucontrol \
catfish \
menulibre
Right-click the panel and open Panel → Panel Preferences. A straightforward layout is:
Whisker Menu
Launchers
Separator [Expand]
Window Buttons
Notification Area / Status Tray
PulseAudio
Power Manager
Clock
Action Buttons
For the separator between launchers and the window list:
Expand: enabled
Style: Transparent
Open Whisker Menu properties and assign:
Super L
Go to Settings → Window Manager → Keyboard and consider:
Alt+F4 Close window
Alt+F10 Maximize
Super+Left Tile left
Super+Right Tile right
Super+Up Maximize
Super+Down Restore/minimize
Alt+Tab Switch windows
sudo apt install -y \
thunar-archive-plugin \
thunar-media-tags-plugin \
samba-common-bin \
smbclient \
gvfs-backends
After logging out and back in, you can use addresses like:
smb://server/share
sudo apt install -y \
fonts-dejavu \
fonts-liberation \
fonts-noto \
fonts-noto-color-emoji \
fonts-ubuntu
sudo apt install -y \
adwaita-icon-theme-full \
papirus-icon-theme \
greybird-gtk-theme
Then open Settings → Appearance. A safe combination is:
Style: Greybird or Adwaita
Icons: Papirus
Font: Ubuntu 10 or 11
Under Settings → Appearance → Fonts:
Anti-aliasing: Enabled
Hinting: Slight
Sub-pixel: RGB
Xubuntu Desktop generally already includes Clipman. Add it to the panel if it is not visible:
Panel → Add New Items → Clipman
You can also start it manually:
xfce4-clipman
This gives you clipboard history instead of only the most recently copied item.
XFCE's built-in application launcher is:
xfce4-appfinder
A good shortcut is Super+Space.
Go to Settings → Keyboard → Application Shortcuts, add:
xfce4-appfinder
and assign:
Super+Space
This gives XFCE a Spotlight/KRunner-style launcher.
sudo apt install -y \
synaptic \
gdebi \
gparted \
baobab \
transmission-gtk \
remmina \
vlc \
flameshot
flatpak install flathub org.videolan.VLC
Avoid installing the same app through APT, Flatpak, Snap, and Brew unless you intentionally need more than one build.
sudo apt install -y timeshift
Launch it with:
sudo timeshift-gtk
Suggested mode:
EXT4 filesystem → RSYNC mode
Btrfs filesystem → BTRFS mode
Example retention policy:
3 daily
2 weekly
2 monthly
sudo apt install -y unattended-upgrades
Configure it:
sudo dpkg-reconfigure --priority=low unattended-upgrades
Check the service:
systemctl status unattended-upgrades
You can still perform normal updates manually:
sudo apt update
sudo apt full-upgrade
Check whether the timer is already active:
systemctl status fstrim.timer
If needed:
sudo systemctl enable --now fstrim.timer
Verify:
systemctl list-timers | grep fstrim
sudo apt install ubuntu-restricted-extras
You may be asked to accept a Microsoft font license during installation.
Install additional multimedia utilities:
sudo apt install -y \
ffmpeg \
libavcodec-extra \
mediainfo
Verify FFmpeg:
ffmpeg -version
sudo apt install -y \
pciutils \
usbutils \
lshw \
lm-sensors \
smartmontools \
ethtool \
iperf3 \
dnsutils \
traceroute \
nmap \
net-tools
sudo sensors-detect
sensors
lspci
lsusb
ip addr
ip route
ethtool enp2s0
Replace enp2s0 with the actual name of your Ethernet interface.
flatpak update
flatpak uninstall --unused
flatpak list --app
flatpak search joplin
flatpak install flathub APP.ID
sudo apt update
sudo apt full-upgrade
sudo apt autoremove --purge
sudo apt clean
flatpak update
flatpak uninstall --unused
brew update
brew upgrade
brew cleanup
Xubuntu / XFCE
│
├── APT
│ └── OS, kernel, drivers, libraries and system services
│
├── Flatpak + Flathub
│ └── Desktop applications
│
├── Homebrew
│ └── CLI and development utilities
│
├── Snap
│ └── Removed and blocked
│
├── UFW
│ └── Deny incoming / allow outgoing
│
├── Timeshift
│ └── System recovery snapshots
│
├── unattended-upgrades
│ └── Automatic security updates
│
└── XFCE
├── Whisker Menu
├── Clipman
├── Caffeine
├── Application Finder
├── Enhanced Thunar
└── XFCE goodies