Custom Desktop
The custom Ubuntu desktop system.
Copyright (C) 2021, 2022 Natan Junges <natanajunges@gmail.com>
Custom Desktop is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.
Custom Desktop is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Custom Desktop. If not, see <https://www.gnu.org/licenses/>.
It replaces the Ubuntu 22.04 original desktop metapackages (ubuntu-desktop-minimal
and ubuntu-desktop
). Keep in mind that they are also used to help ensure proper upgrades, so it is recommended that they not be removed. Only do this if you know what you are doing, and proceed at your own risk. To avoid any problems, it is recommended to install them in a fresh Ubuntu 22.04 install.
How to use
Install
Download this project's source from the releases page. Extract it and open the terminal in the installer/
folder. Download the .deb
files from the releases page and save them in installer/build/
. Run the main script with:
./main
Which edition should be installed depends on which version of Ubuntu was installed. If the minimal Ubuntu install was done, then the minimal edition should be installed. If the normal Ubuntu install was done instead, then the full edition should be installed. For each execution of the script, select the same option.
In the menu, select "Add repositories and install". When the execution is finished, log out and back in, but into the GNOME session (Wayland) instead of the Ubuntu one.
Reopen the terminal in the installer/
folder and rerun the main script. In the menu, select "Change icon and cursor theme and favorite apps". Then, for each user in the system, reopen the terminal in the installer/
folder and rerun the main script. In the menu, select "Apply changes (per user)". Whether or not the favorite apps layout should be preserved depends on the user's preference. In a fresh install, it should not be preserved. When the execution is finished for each user, log out and back into the GNOME session (Wayland) to apply changes.
If you are not doing this in a fresh install, you might want to replace the installed snaps with their equivalent flatpaks: popey/unsnap. Keep in mind that this tool is still in "pre-alpha" stage, and might not work as intended. You can contribute testing it and reporting bugs or missing flatpaks. Only the generated scripts 00-backup
and 03-install-flatpaks
are required to be run, as the rest is already done here. snap:firefox
is already replaced with the native deb package, so you should remove it from the generated 03-install-flatpaks
script.
Reopen the terminal in the installer/
folder and rerun the main script. In the menu, select "Purge unused packages". After some execution, a list is shown with the suggested packages to be purged. To decide which packages to keep and which to purge, consult the Details section below. The packages to be kept must be uncommented (removing the #
prefix). Save the file with Ctrl
+S
and quit the editor with Ctrl
+X
and the commented packages will be purged. When the execution is finished, restart the system to completely unload the removed software.
If you want to install packages that are not in the official repositories without having to resource to flatpaks, you might want to use wimpysworld/deb-get. You can contribute testing it and reporting bugs or missing packages.
Remove
Reinstall ubuntu-desktop-minimal
:
sudo apt install ubuntu-desktop-minimal
If you only want the packages in the minimal set, reinstall ubuntu-desktop
without the recommends:
sudo apt install --no-install-recommends ubuntu-desktop
If you want all the packages instead, reinstall ubuntu-desktop
with the recommends:
sudo apt install ubuntu-desktop
Now it is time to remove the custom metapackages:
sudo apt purge custom-desktop custom-desktop-minimal
Remove the custom profile from dconf/gsettings:
sudo rm /etc/dconf/db/local.d/01-custom-desktop
sudo rm -r /etc/dconf/db/local.d/
sudo rm /etc/dconf/profile/user
sudo dconf update
Log out and back in, but into the Ubuntu session (the default one is Wayland, but you can also use the X one) instead of the GNOME one.
For each user in the system, run:
gsettings reset org.gnome.desktop.interface icon-theme
gsettings reset org.gnome.desktop.interface cursor-theme
Reinstall snap:snap-store
and snap:firefox
:
sudo snap install snap-store firefox
For each user in the system, do the following:
- If you want to preserve the customizations made to the favorites, run:
gsettings set org.gnome.shell favorite-apps "$(gsettings get org.gnome.shell favorite-apps | sed "s/firefox/firefox_firefox/; s/org.gnome.Software/snap-store_ubuntu-software/")"
- If instead you want to reset them to the default values, run:
gsettings reset org.gnome.shell favorite-apps
Log out and back into the Ubuntu session to apply changes.
Remove the flatpaks that might have been installed:
sudo flatpak remove --all
Remove the packages that remained. If you want to keep any of those packages, remove them from the first command and add them to the second:
sudo apt purge firefox flatpak gnome-session gnome-software linuxmint-keyring qbittorrent ubuntu-restricted-extras
sudo apt-mark manual <packages to keep> # It can be ommited if you do not want to keep any package
sudo apt autoremove --purge
Remove the Linux Mint repositories:
sudo rm /etc/apt/preferences.d/pin-chromium-firefox
sudo rm /etc/apt/sources.list.d/mint-victoria.list
sudo apt update
Suggested GNOME Shell extenstions
- Caffeine: Disable the screensaver and auto suspend;
- Dash to Dock: This extension moves the dash out of the overview transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops;
- GSConnect: GSConnect is a complete implementation of KDE Connect especially for GNOME Shell with Nautilus, Chrome and Firefox integration;
- To integrate with Nautilus, you need to install
python3-nautilus
andgir1.2-nautilus-3.0
:
- To integrate with Nautilus, you need to install
sudo apt install python3-nautilus gir1.2-nautilus-3.0
- Night Theme Switcher: Make your desktop easy on the eye, day and night;
- Sound Input & Output Device Chooser: Shows a list of sound output and input devices in the status menu below the volume slider.
To install the extensions you might need the GNOME Shell integration Firefox extension.
Suggested Firefox extensions
- Bitwarden - Free Password Manager: A secure and free password manager for all of your devices;
- Dark Reader: Take care of your eyes, use dark theme for night and daily browsing;
- GNOME Shell integration: This extension provides integration with GNOME Shell and the corresponding extensions repository;
- First you need to install
chrome-gnome-shell
:
- First you need to install
sudo apt install chrome-gnome-shell
- GSConnect: Share links with GSConnect, direct to the browser or by SMS;
- First you need to install the GSConnect GNOME Shell extension.
- uBlock Origin: Finally, an efficient wide-spectrum content blocker.
Details
custom-desktop-minimal
These are the packages that are added to, removed from or replaced in the custom-desktop-minimal
metapackage:
ubuntu-desktop-minimal | custom-desktop-minimal | Description |
---|---|---|
Style neutral, scalable cursor theme. This should not be in the minimal metapackage, much less as a depend, as it is not used by most people. The Yaru theme is used instead. | ||
High Contrast GTK+ 2 theme and icons. GTK+ 2 is not supported. | ||
Manage and configure disk drives and media. Moved to custom-desktop , as it is not considered minimal. |
||
GNOME session log in and log out sound events. This should not be in the minimal metapackage, much less as a depend, as most people do not care about sounds. | ||
Desktop icon support for GNOME Shell. Active desktop is not supported. | ||
Ubuntu Dock for GNOME Shell. The vanilla dock or the full blown dash-to-dock is preferred. | ||
GStreamer plugin for PulseAudio (transitional package). Transitional packages are not needed. | ||
Intelligent Input Bus - GTK2 support. GTK+ 2 is not supported. | ||
Universal 2nd Factor (U2F) - transitional package. Transitional packages are not needed. | ||
firefox | Safe and easy web browser from Mozilla. Snap is not supported. | |
gnome-software | Software Center for GNOME. Snap is not supported and GNOME Software supports native deb packages, snap and flatpak, while Snap Store only supports snap. | |
flatpak | Application deployment framework for desktop apps. Snap is not supported. Flatpak is used instead. | |
gnome-session | GNOME Session Manager - GNOME 3 session. The custom Ubuntu session is not supported. The vanilla GNOME session is used instead. | |
Base X cursor themes. X is not supported and this should not be in the minimal metapackage, as it is not used by most people. The Yaru theme is used instead. | ||
X.Org X Window System. X is not supported. Wayland is used instead. | ||
Yaru GNOME Shell desktop theme from the Ubuntu Community. The vanilla Adwaita theme is preferred. | ||
Yaru GTK theme from the Ubuntu Community. The vanilla Adwaita theme is preferred. | ||
Yaru sound theme from the Ubuntu Community. This should not be in the minimal metapackage, as most people do not care about sounds. |
There are groups of packages that originally belonged to the ubuntu-desktop-minimal
metapackage but are just suggested by custom-desktop-minimal
. Their removal is optional, depending on whether or not they are necessary.
Accessibility
Function | ubuntu-desktop-minimal | Description |
---|---|---|
at-spi2-core | Assistive Technology Service Provider Interface (dbus core). | |
libatk-adaptor | AT-SPI 2 toolkit bridge. | |
Braille | brltty | Access software for a blind person using a braille display. |
Mouse | mousetweaks | Mouse accessibility enhancements for the GNOME desktop. |
Screen Reader | orca | Scriptable screen reader. |
Screen Reader | speech-dispatcher | Common interface to speech synthesizers. |
Avahi/NSS
ubuntu-desktop-minimal | Description |
---|---|
avahi-autoipd | Avahi IPv4LL network address configuration daemon. |
avahi-daemon | Avahi mDNS/DNS-SD daemon. |
libnss-mdns | NSS module for Multicast DNS name resolution. |
Bluetooth
Function | ubuntu-desktop-minimal | Description |
---|---|---|
bluez | Bluetooth tools and daemons. | |
gnome-bluetooth | GNOME Bluetooth tools. | |
pulseaudio-module-bluetooth | Bluetooth module for PulseAudio sound server. | |
rfkill | Tool for enabling and disabling wireless devices. This package is also used by Wi-Fi devices. It should only be removed if both Bluetooth and Wi-Fi are not used. | |
Printing | bluez-cups | Bluetooth printer driver for CUPS. |
bluez-cups
is repeated in Printing to make visualization easier.
rfkill
is repeated in Wi-Fi to make visualization easier.
Fingerprint
ubuntu-desktop-minimal | Description |
---|---|
libpam-fprintd | PAM module for fingerprint authentication through fprintd. |
Gaming
ubuntu-desktop-minimal | Description |
---|---|
gamemode | Optimise Linux system performance on demand. |
GNOME extras
ubuntu-desktop-minimal | Description |
---|---|
gnome-characters | Character map application. |
gnome-font-viewer | Font viewer for GNOME. |
gnome-logs | Viewer for the systemd journal. |
Language fonts
Function | ubuntu-desktop-minimal | Description |
---|---|---|
Arabic | fonts-kacst-one | TrueType font designed for Arabic language. |
Burmese | fonts-sil-padauk | Burmese Unicode TrueType font with OpenType and Graphite support. |
CJK | fonts-noto-cjk | "No Tofu" font families with large Unicode coverage (CJK regular and bold). |
Ethiopic | fonts-sil-abyssinica | Unicode font for the Ethiopic script. |
Indian | fonts-indic | Meta package to install all Indian language fonts. |
Khmer | fonts-khmeros-core | KhmerOS Unicode fonts for the Khmer language of Cambodia. |
Lao | fonts-lao | TrueType font for Lao language. |
Sinhala | fonts-lklug-sinhala | Unicode Sinhala font by Lanka Linux User Group. |
Thai | fonts-thai-tlwg | Thai fonts maintained by TLWG (metapackage). |
Tibetan | fonts-tibetan-machine | Font for Tibetan, Dzongkha and Ladakhi (OpenType Unicode). |
Legacy hardware
ubuntu-desktop-minimal | Description |
---|---|
pcmciautils | PCMCIA utilities for Linux 2.6. |
inputattach | Utility to connect serial-attached peripherals to the input subsystem. |
LibreOffice support
ubuntu-desktop-minimal | Description |
---|---|
fonts-opensymbol | OpenSymbol TrueType font. |
libwmf0.2-7-gtk | Windows metafile conversion library. |
fonts-opensymbol
and libwmf0.2-7-gtk
are moved to custom-desktop
, as they are used by LibreOffice.
Miscellaneous
ubuntu-desktop-minimal | Description |
---|---|
bc | GNU bc arbitrary precision calculator language. |
ghostscript-x | Interpreter for the PostScript language and for PDF - X11 support. |
gvfs-fuse | Userspace virtual filesystem - fuse server. |
ibus-table | Table engine for IBus. |
memtest86+ | Thorough real-mode memory tester. |
nautilus-sendto | Easily send files via email from within Nautilus. |
nautilus-share | Nautilus extension to share folder using Samba. |
Printing
Function | ubuntu-desktop-minimal | Description |
---|---|---|
cups | Common UNIX Printing System(tm) - PPD/driver support, web interface. | |
cups-bsd | Common UNIX Printing System(tm) - BSD commands. | |
cups-client | Common UNIX Printing System(tm) - client programs (SysV). | |
cups-filters | OpenPrinting CUPS Filters - Main Package. | |
Bluetooth | bluez-cups | Bluetooth printer driver for CUPS. |
Brother/Lenovo | printer-driver-brlaser | Printer driver for (some) Brother laser printers. |
Brother | printer-driver-ptouch | Printer driver Brother P-touch label printers. |
Foomatic | foomatic-db-compressed-ppds | OpenPrinting printer support - Compressed PPDs derived from the database. |
HP | hplip | HP Linux Printing and Imaging System (HPLIP). |
HP | printer-driver-pnm2ppa | Printer driver for HP-GDI printers. |
HP | printer-driver-pxljr | Printer driver for HP Color LaserJet 35xx/36xx. |
Kodak | printer-driver-c2esp | Printer driver for Kodak ESP AiO color inkjet Series. |
Konica Minolta | printer-driver-m2300w | Printer driver for Minolta magicolor 2300W/2400W color laser printers. |
Konica Minolta | printer-driver-min12xxw | Printer driver for KonicaMinolta PagePro 1[234]xxW. |
PostScript | openprinting-ppds | OpenPrinting printer support - PostScript PPD files. |
Ricoh Aficio | printer-driver-sag-gdi | Printer driver for Ricoh Aficio SP 1000s/SP 1100s. |
Samsung/Xerox | printer-driver-splix | Driver for Samsung and Xerox SPL2 and SPLc laser printers. |
Zenographics ZjStream | printer-driver-foo2zjs | Printer driver for ZjStream-based printers. |
bluez-cups
is repeated in Bluetooth to make visualization easier.
Remote desktop
ubuntu-desktop | Description |
---|---|
gnome-remote-desktop | Remote desktop daemon for GNOME using PipeWire. |
VM
ubuntu-desktop-minimal | Description |
---|---|
spice-vdagent | Spice agent for Linux. |
Wi-Fi
ubuntu-desktop-minimal | Description |
---|---|
rfkill | Tool for enabling and disabling wireless devices. This package is also used by Bluetooth devices. It should only be removed if both Bluetooth and Wi-Fi are not used. |
wireless-tools | Tools for manipulating Linux Wireless Extensions. |
wpasupplicant | Client support for WPA and WPA2 (IEEE 802.11i). |
rfkill
is repeated in Bluetooth to make visualization easier.
custom-desktop
These are the packages that are added to, removed from or replaced in the custom-desktop
metapackage:
ubuntu-desktop | custom-desktop | Description |
---|---|---|
fonts-opensymbol | fonts-opensymbol | OpenSymbol TrueType font. Moved from custom-desktop-minimal , as it is used by LibreOffice. |
gnome-disk-utility | gnome-disk-utility | Manage and configure disk drives and media. Moved from custom-desktop-minimal , as it is not considered minimal. |
Transitional package for libreoffice-ogltrans. Transitional packages are not needed. | ||
Transitional package for PDF Import component for LibreOffice. Transitional packages are not needed. | ||
Office productivity suite -- Breeze symbol style. KDE is not supported, so it is not used by most people. | ||
libwmf0.2-7-gtk | libwmf0.2-7-gtk | Windows metafile conversion library. Moved from custom-desktop-minimal , as it is used by LibreOffice. |
qbittorrent | Bittorrent client based on libtorrent-rasterbar with a Qt5 GUI. Transmission is not supported, as it is buggy and lacks several features. qBittorrent is used instead, as it is one of the best torrent clients ever. | |
ubuntu-restricted-extras | Commonly used media codecs and fonts for Ubuntu. Adds proprietary codecs so that Totem and Rhythmbox can play most formats. The extra fonts and unrar are not installed. |
There are groups of packages that originally belonged to the ubuntu-desktop
metapackage but are just suggested by custom-desktop
. Their removal is optional, depending on whether or not they are necessary.
Gaming
ubuntu-desktop | Description |
---|---|
aisleriot | GNOME solitaire card game collection. |
gnome-mahjongg | Classic Eastern tile game for GNOME. |
gnome-mines | Popular minesweeper puzzle game for GNOME. |
gnome-sudoku | Sudoku puzzle game for GNOME. |
GNOME extras
ubuntu-desktop | Description |
---|---|
cheese | Tool to take pictures and videos from your webcam. |
eog | Eye of GNOME graphics viewer program. Removed as Shotwell does what it does and more. |
simple-scan | Simple Scanning Utility. |
ubuntu-desktop | Description |
---|---|
thunderbird | Email, RSS and newsgroup client with integrated spam filter. |
thunderbird-gnome-support | Email, RSS and newsgroup client - GNOME support. |
Miscellaneous
ubuntu-desktop | Description |
---|---|
branding-ubuntu | Replacement artwork with Ubuntu branding. |
usb-creator-gtk | Create a startup disk using a CD or disc image (for GNOME). |
Remote desktop
ubuntu-desktop | Description |
---|---|
remmina | GTK+ Remote Desktop Client. |
Building
To build the metapackages from their control files, you need to install equivs
:
sudo apt install equivs
Build all the packages with:
make all
Or build a specific package with one of:
make custom-desktop-minimal
make custom-desktop
make ubuntu-system-adjustments
Developing
To customize the metapackages, read the README in the builder/
folder.