390 lines
15 KiB
Markdown
390 lines
15 KiB
Markdown
---
|
|
title: Come installare e personalizzare GNOME
|
|
date: 2025-01-12
|
|
description: GNOME offre un'interfaccia utente minimale, moderna e personalizzabile. In questo articolo, mostreremo come installare GNOME su Debian e come modificarne l'aspetto e le funzionalità attraverso l'uso di qualche semplice estensione. Inoltre, discuteremo l'importanza del backup delle impostazioni, fornendo le istruzioni necessarie per creare un ambiente di lavoro facilmente riproducibile.
|
|
toc: true
|
|
tags:
|
|
- debian
|
|
- gnome
|
|
- customization
|
|
---
|
|
|
|
## Un Desktop Environment minimale (e tiling)
|
|
|
|
Una volta installato Debian, come [precedentemente descritto](/posts/debian_btrfs.md), 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:
|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|
### ufw
|
|
|
|
Prima di procedere, é sempre importante mettere in sicurezza il proprio sistema, configurando il firewall:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
### 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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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](https://privsec.dev/posts/linux/desktop-linux-hardening/), con diversi consigli sul tema.
|
|
|
|
### DNS personalizzati
|
|
|
|
Per aggiornare i dns predefiniti di sistema, procedere coi seguenti passaggi:
|
|
|
|
```bash
|
|
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](https://mullvad.net/en/help/dns-over-https-and-dns-over-tls)):
|
|
|
|
```bash
|
|
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](https://github.com/pop-os/shell), in modo da avere un sistema tiling, simile a `sway` o `i3`:
|
|
|
|
```bash
|
|
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](https://support.system76.com/articles/pop-keyboard-shortcuts/).
|
|
|
|
### Altri programmi utili
|
|
|
|
Ora, alcune utilità di sistema, suddivise per categoria:
|
|
|
|
```bash
|
|
### 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](https://blog.nightly.mozilla.org/2023/10/30/introducing-mozillas-firefox-nightly-deb-packages-for-debian-based-linux-distributions/), che riporto:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
### 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:
|
|
|
|
```bash
|
|
### 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:
|
|
|
|
```bash
|
|
### 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:
|
|
|
|

|
|
|
|
Interessante, per il mirror dello schermo del cellulare sul proprio pc:
|
|
|
|
```bash
|
|
### 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):
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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`:
|
|
|
|
```bash
|
|
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:
|
|
|
|
{{< youtube tiNDeXGzRd0 >}}
|
|
|
|
Nessuno dei formati é intrinsecamente migliore dell'altro; tutto dipende dalle proprie esigenze e gusti personali.
|
|
|
|
{{< youtube I6Fc6ouqis0 >}}
|
|
|
|
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:
|
|
|
|
```bash
|
|
sudo apt install fprintd libpam-fprintd
|
|
sudo pam-auth-update
|
|
```
|
|
|
|
Dalle impostazioni, registrare l'impronta. Per maggiori informazioni: [fingerprint authentication](https://wiki.debian.org/SecurityManagement/fingerprint%20authentication).
|
|
|
|
### Rimozione del blotware
|
|
|
|
Una lista di programmi preinstallati, ma che possono essere tranquillamente rimossi:
|
|
|
|
```bash
|
|
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](https://unix.stackexchange.com/questions/691386/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:
|
|
|
|
```sql
|
|
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](/posts/vscodium) articolo. Ho anche scritto un articolo su come personalizzare [Firefox](/posts/firefox).
|
|
|
|
### Estensioni per GNOME
|
|
|
|
Una lista di alcune estensioni:
|
|
|
|
- [Forge](https://extensions.gnome.org/extension/4481/forge/), una valida alternativa a `pop-shell`
|
|
- [tilingshell](https://github.com/domferr/tilingshell)
|
|
- [Just Perfection](https://extensions.gnome.org/extension/3843/just-perfection/): Tweak Tool to Customize GNOME Shell, Change the Behavior and Disable UI Elements
|
|
- [Clipboard Indicator](https://extensions.gnome.org/extension/779/clipboard-indicator/)
|
|
- [AppIndicator and KStatusNotifierItem Support](https://extensions.gnome.org/extension/615/appindicator-support/): Adds AppIndicator, KStatusNotifierItem and legacy Tray icons support to the Shell
|
|
- [Wallhub](https://extensions.gnome.org/extension/6661/wallhub/): Dynamic wallpapers in slideshows
|
|
- [Compact Top Bar](https://extensions.gnome.org/extension/5669/compact-top-bar/)
|
|
|
|
Infine, possono tornare utili le seguenti risorse:
|
|
|
|
- [awesome-gnome](https://github.com/Kazhnuz/awesome-gnome): un elenco curato di app, estensioni, moduli, temi e strumenti per GNOME
|
|
- [Top 21 GNOME Extensions to Enhance Your Experience](https://itsfoss.com/best-gnome-extensions/)
|
|
- Dei [dotfiles](https://github.com/felipe-juan/dotfiles) da cui prendere spunto
|
|
|
|
#### Configurare le estensioni
|
|
|
|
Ecco le estensioni abilitate sul mio sistema:
|
|
|
|

|
|
|
|

|
|
|
|
Queste le mie configurazioni:
|
|
|
|
- `pop shell`
|
|
|
|

|
|
|
|
- `KStatusNotifierItem`
|
|
|
|

|
|
|
|
- `Clipboard Indicator`
|
|
|
|

|
|
|
|
- `Wallhub`
|
|
|
|

|
|
|
|
- `Blur My Shell`
|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|
- `Just Perfection`
|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|
## Backup delle configurazioni
|
|
|
|
Come scritto alla pagina [How do I backup all Gnome Tweaks configuration?](https://askubuntu.com/questions/1056386/how-do-i-backup-all-gnome-tweaks-configuration), la procedura é semplice. Basta infatti eseguire il comando:
|
|
|
|
```bash
|
|
dconf dump / > ~/saved_settings.dconf
|
|
```
|
|
|
|
Per il restore: `dconf load -f / < saved_settings.dconf`
|
|
|
|
Inoltre, consiglio l'applicazione [SaveDesktop: Save your desktop configuration](https://flathub.org/apps/io.github.vikdevelop.SaveDesktop)
|
|
|
|
## dotfiles
|
|
|
|
I miei dotfiles si possono scaricare sulla nostra istanza [Gitea](https://git.ilnostropianetaselvaggio.it/dado/GNOMEdotfiles/src/branch/main) |