Come installare e personalizzare GNOME

2025-01-12

Un Desktop Environment minimale (e tiling)

Una volta installato Debian, come precedentemente descritto, possiamo procedere a installare un Desktop Environment. Nello specifico, installeremo GNOME, cercando di renderlo il piú minimale possibile.

Nota: i pacchetti installati e le varie configurazioni rispecchiano il mio utilizzo e il mio gusto personale.

Il risultato finale, dovrebbe essere qualcosa del tipo:

gnome_de

gnome_de

gnome_de

ufw

Prima di procedere, é sempre importante mettere in sicurezza il proprio sistema, configurando il firewall:

sudo apt install ufw && ufw enable
sudo ufw default allow outgoing && sudo ufw default deny incoming

### Per disabilitare ipv6, modificare il file /etc/default/ufw nel modo seguente

cat /etc/default/ufw
IPV6=no

Installazione di GNOME

Per prima cosa, assicurarsi di avere i pacchetti aggiornati e di avere installato sul sistema alcuni pacchetti:

sudo apt update && sudo apt upgrade
sudo apt install wget git apt-transport-https curl

Per un’installazione minimale di GNOME, procedere a installare i seguenti pacchetti:

### Minimal GNOME
sudo apt install gnome-core gnome-tweaks gnome-shell-extension-manager gnome-shell-extensions gnome-extra-icons xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gnome xdg-desktop-portal-gtk wayland-utils wayland-protocols xwayland gnome-keyring gnome-keyring-3 gnome-keyring-daemon mpv dconf-editor pipewire pipewire-pulse upower geoclue-2.0 fwupd ntfs-3g bash-completion zip unzip unrar 7zip eza ncdu alacritty

Network Manager

Nel caso la rete non funzionasse, commentare qualsiasi cosa nel file /etc/network/interfaces, ad eccezione delle righe seguenti:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

Riavviare il servizio NetworkManager col comando: sudo systemctl restart NetworkManager.service

Se si desidera che NetworkManager gestisca le interfacce abilitate in /etc/network/interfaces, impostare managed=true in /etc/NetworkManager/NetworkManager.conf, ottenendo qualcosa del tipo:

cat /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true

Randomizzare i mac-address

Per randomizzare i mac-address, basta creare il seguente file:

cat /etc/NetworkManager/conf.d/00-macrandomize.conf
[device]
wifi.scan-rand-mac-address=yes

[connection]
wifi.cloned-mac-address=random
ethernet.cloned-mac-address=random

Molto interessante la pagina Desktop Linux Hardening, con diversi consigli sul tema.

DNS personalizzati

Per aggiornare i dns predefiniti di sistema, procedere coi seguenti passaggi:

sudo apt install resolvconf
sudo systemctl enable --now resolvconf.service
sudo resolvconf --enable-updates
sudo resolvconf -u

Quindi modificare il file /etc/resolvconf/resolv.conf.d/head con dei dns a scelta (nell’esempio, quelli di Mullvad):

cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "resolvectl status" to see details about the actual nameservers.
nameserver 194.242.2.9

Ora tutto dovrebbe funzionare senza problemi. Possiamo quindi eseguire uno snapshot: sudo snapper -c root create --description "debian SID GNOME minimal edition"

GNOME Tiling

Quindi, istalliamo Pop Shell, in modo da avere un sistema tiling, simile a sway o i3:

sudo apt install node-typescript
cd ~ && mkdir git && cd ~/git
git clone https://github.com/pop-os/shell.git && cd shell
make local-install

Le principali scorciatoie predefinite.

Altri programmi utili

Ora, alcune utilità di sistema, suddivise per categoria:

### Backup
sudo apt install mdadm borgbackup syncthing rsync libnotify-bin screen
### Browser e torrent 
sudo apt install profile-sync-daemon chromium qbittorrent
### Btrfs
sudo apt install udisks2-btrfs btrfs-assistant
### Android
sudo apt install android-sdk-platform-tools-common android-tools-adb android-tools-fastboot

Per installare Firefox-Nightly, basta seguire la procedura ufficiale di Mozilla, che riporto:

# Create a directory to store APT repository keys if it doesn't exist:
sudo install -d -m 0755 /etc/apt/keyrings
# Import the Mozilla APT repository signing key:
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
# The fingerprint should be 35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3
gpg -n -q --import --import-options import-show /etc/apt/keyrings/packages.mozilla.org.asc | awk '/pub/{getline; gsub(/^ +| +$/,""); print "\n"$0"\n"}'
# Next, add the Mozilla APT repository to your sources list:
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
# Update your package list and install the Firefox Nightly .deb package:
sudo apt-get update && sudo apt-get install firefox-nightly

Nel caso si cercasse un file manager piú completo rispetto a Nautilus, Thunar potrebbe essere un’ottima scelta:

### Thunar
sudo apt install thunar thunar-archive-plugin thunar-volman tumbler tumbler-plugins-extra ffmpegthumbnailer thunar-archive-plugin thunar-data

Altri programmi utili per il monitoraggio dei dischi, dell’hardware, dei log e della rete:

### System
sudo apt install gdisk smartmontools hw-probe lshw multitail htop openssh-server dnsutils speedtest-cli ipcalc iptraf-ng nmap network-manager-openvpn

Nuove icone e font personalizzati:

### Icon and fonts
sudo apt install fonts-ubuntu fonts-ubuntu-console fonts-ubuntu-title fonts-font-awesome
cd ~/git
git clone https://github.com/somepaulo/MoreWaita.git && cd MoreWaita && ./install.sh

Font e icone si possono modificare grazie a gnome-tweaks, precedentemente istallato:

tweaks

Interessante, per il mirror dello schermo del cellulare sul proprio pc:

### scrcpy
sudo apt install ffmpeg libsdl2-2.0-0 adb wget gcc git pkg-config meson ninja-build libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev

cd ~/git && git clone https://github.com/Genymobile/scrcpy && cd scrcpy && ./install_release.sh &&

Altri programmi che utilizzo (assolutamente non necessari):

sudo apt install hugo openjdk-21-jre postgresql

Infine, avviamo i vari servizi: systemctl --user enable --now syncthing && sudo systemctl enable --now ssh && systemctl --user enable --now psd

git

Per configurare git correttamente, lanciare i seguenti comandi:

git config --global user.email 'user@mail.me'
git config --global user.name 'user'

Flatpak

Per le applicazioni grafiche, prediligo l’uso dei pacchetti flatpak, facili da installare e da backuppare, in quanto tutti i file si trovano in ~/.var/app/. Una lista di programmi che utilizzo, suddivisi per categoria:

sudo apt install flatpak-xdg-utils flatpak gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

### Programmi per la gestione dei permessi e per il backup
flatpak install flathub com.github.tchx84.Flatseal io.github.vikdevelop.SaveDesktop 
### Messaggistica
flatpak install flathub org.signal.Signal im.dino.Dino io.github.kukuruzka165.materialgram
### Webapp
org.ferdium.Ferdium net.codelogistics.webapps 
### Sistema
io.gitlab.adhami3310.Impression it.mijorus.gearlever net.nokyan.Resources
### Editor di testo, traduzione, video e altri programmi
io.freetubeapp.FreeTube org.libreoffice.LibreOffice com.vscodium.codium com.github.hugolabe.Wike app.drey.Dialect
### Nextcloud
com.nextcloud.desktopclient.nextcloud
### ebook e feed-rss
com.github.johnfactotum.Foliate io.gitlab.news_flash.NewsFlash        

### Per la cifratura della password del db di Signal
flatpak override --user --env=SIGNAL_PASSWORD_STORE=gnome-libsecret --env=SIGNAL_START_IN_TRAY=1 org.signal.Signal

Appimage

AppImage è un formato open source per la distribuzione di software portable su GNU/Linux. Di conseguenza, un programma in formato AppImage può essere installato ed eseguito su qualsiasi distribuzione GNU/Linux. In questo é simile a Flatpak. Le applicazioni in formato AppImage non supportano l’aggiornamento automatico nativamente; bisogna installare AppImageLauncher:

wget -c https://github.com/TheAssassin/AppImageLauncher/releases/download/v2.2.0/appimagelauncher_2.2.0-travis995.0f91801.bionic_amd64.deb
sudo apt install ./appimagelauncher_2.2.0-travis995.0f91801.bionic_amd64.deb libfuse-dev
rm -rf appimagelauncher_2.2.0-travis995.0f91801.bionic_amd64.deb

Alcuni video sche spiegano molto bene le differenze tra i due formati:

Nessuno dei formati é intrinsecamente migliore dell’altro; tutto dipende dalle proprie esigenze e gusti personali.

Ora, dopo aver installato tutti o quasi i programmi che ci servono, si consiglia di eseguire uno snapshot: sudo snapper -c root create --description "Tiling DE. Installed necessary programs".

Fingerprint authentication

Nel caso il proprio laptop o pc disponesse di un lettore di impronte digitali, per configuralo bisogna innanzitutto installare i seguenti pacchetti:

sudo apt install fprintd libpam-fprintd
sudo pam-auth-update

Dalle impostazioni, registrare l’impronta. Per maggiori informazioni: fingerprint authentication.

Rimozione del blotware

Una lista di programmi preinstallati, ma che possono essere tranquillamente rimossi:

sudo apt remove totem gnome-weather yelp baobab   gnome-terminal nautilus-extension-gnome-terminal debian-reference-it debian-reference-common debian-faq doc-debian gnome-logs gnome-system-monitor && sudo apt autoremove && sudo apt --fix-broken install

Altre informazioni: Remove preinstalled GNOME applications.

Quindi eseguire lo snapshot: sudo snapper -c root create --description "Removed the blotware".

Creazione di un database con Postgresql

Nel caso si utilizzasse, ecco la lista dei comandi:

sudo su postgres
postgres@pc:/home/user$ psql
postgres=# CREATE USER user SUPERUSER CREATEDB;
postgres=# CREATE DATABASE userdb WITH OWNER = user ALLOW_CONNECTIONS = true;
postgres=# ALTER USER user WITH PASSWORD 'PASSWORD';

postgres@pc:/home/user$ psql userdb
userdb=# insert into userdb (value, value) VALUES ('value1', 'value2');

Configurazioni di alcuni programmi

Per le configurazioni di VSCodium, rimando a questo articolo. Ho anche scritto un articolo su come personalizzare Firefox.

Estensioni per GNOME

Una lista di alcune estensioni:

Infine, possono tornare utili le seguenti risorse:

Configurare le estensioni

Ecco le estensioni abilitate sul mio sistema:

gnome_extensions

gnome_system_extensions

Queste le mie configurazioni:

  • pop shell

pop_shell

  • KStatusNotifierItem

KStatusNotifierItem

  • Clipboard Indicator

Clipboard Indicator

  • Wallhub

Wallhub

  • Blur My Shell

blur_my_shell

blur_my_shell

blur_my_shell

blur_my_shell

blur_my_shell

  • Just Perfection

just_perfection

just_perfection

just_perfection

just_perfection

just_perfection

just_perfection

Backup delle configurazioni

Come scritto alla pagina How do I backup all Gnome Tweaks configuration?, la procedura é semplice. Basta infatti eseguire il comando:

dconf dump / > ~/saved_settings.dconf

Per il restore: dconf load -f / < saved_settings.dconf

Inoltre, consiglio l’applicazione SaveDesktop: Save your desktop configuration

dotfiles

I miei dotfiles si possono scaricare sulla nostra istanza Gitea