在 Ubuntu 中使用 Flatpak 還原原生 GNOME
如您可能已經知道,自 Ubuntu 18.04 版本起,預設的桌面環境是 GNOME。在此之前,Ubuntu 使用一個名為 Unity 的自訂桌面環境。GNOME 是最受歡迎的桌面環境之一,以簡單、易於使用和可訪問性著稱。雖然 Ubuntu 預設使用 GNOME 桌面環境,但需要注意的是 Ubuntu 的 GNOME 版本被大量自訂。有些人可能不喜歡 Ubuntu 中自訂的 GNOME 版本。如果您是其中之一,本教學將幫助您 在 Ubuntu 中恢復支持 flatpak 的原生 GNOME 桌面,就像在 全新 Fedora 安裝 中所看到的一樣。
Ubuntu GNOME 預設桌面外觀
以下截圖顯示了 Ubuntu 23.04 的預設桌面。
如你所見,Ubuntu 的 GNOME 桌面看起來與標準 GNOME 桌面非常不同。
Ubuntu 開發團隊在 GNOME 桌面環境中實施了一系列變更,以為普通的 Linux 使用者提供獨特且友好的使用體驗。例如,Ubuntu 在螢幕左側包含一個停靠欄,這讓人聯想到 Unity 啟動器。這些自訂化的改動旨在提升可用性,並為從 Ubuntu 以往 Unity 環境過渡的使用者維持熟悉的介面。
正如我已經說過的,你們中的一些人可能更喜歡使用原生 GNOME 桌面,而不是當前版本的 Ubuntu Linux 中的自訂 GNOME。
幸運的是,我找到了一個可以恢復 Ubuntu 並提供乾淨 GNOME 桌面的 shell 腳本,並內建 flatpak,類似全新安裝的 Fedora。該腳本名為 "ubuntu-debullshit"。
什麼是 Ubuntu-debullshit?
Ubuntu-debullshit 是一個自動化的 Shell 腳本,用於移除 snaps、安裝 flatpaks,並在 Ubuntu Linux 中恢復原生的 GNOME 介面。
Ubuntu-debullshit 腳本不僅僅是將 Ubuntu 恢復到原生 GNOME 桌面。它還執行一些額外的操作。以下是它可以做的事情:
- 完全移除按扣。
- 安裝全新、‘原生’的 GNOME 工作階段。
- 設定 flathub 以及帶有 flatpak 外掛的 gnome-software。
- 將 Firefox 的 snap 版本替換為 flatpak 版本。
- 停用 Ubuntu 的預設主題。
- 使用 adw-gtk3 為 gtk3 應用程式啟用 libadwaita 主題。
- 啟用 GNOME 與 QT 應用程式的整合。
- 安裝 Adwaita 43 圖示主題。
- 禁用資料報告元件。
- 停用系統當機後出現的跳出視窗。
這個腳本已經在 Ubuntu 23.04 上進行了官方測試。開發者也聲稱它應該可以在 Ubuntu 22.04 上運行。
在 Ubuntu 中還原原生 GNOME
首先,將你的 Ubuntu 系統更新到最新版本:
$ sudo apt update$ sudo apt full-upgrade重新啟動系統以套用更新:
$ sudo reboot關閉所有正在運行的應用程式,除了終端機,然後執行 'ubuntu-debullshit' 腳本以在 Ubuntu Linux 中還原原生 GNOME 桌面:
$ sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/polkaulfield/ubuntu-debullshit/main/ubuntu-debullshit.sh)"系統將提示你輸入 sudo 密碼。輸入後,你將看到以下選項:
[sudo] password for ostechnix:
▐ ▗ ▐ ▐ ▝▜ ▝▜ ▐ ▝ ▗ ▗
▗ ▗ ▐▄▖ ▗ ▗ ▗▗▖ ▗▟▄ ▗ ▗ ▄▟ ▄▖ ▐▄▖ ▗ ▗ ▐ ▐ ▄▖ ▐▗▖ ▗▄ ▗▟▄ ▐
▐ ▐ ▐▘▜ ▐ ▐ ▐▘▐ ▐ ▐ ▐ ▐▘▜ ▐▘▐ ▐▘▜ ▐ ▐ ▐ ▐ ▐ ▝ ▐▘▐ ▐ ▐ ▐
▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▐ ▀▘ ▐ ▐ ▐▀▀ ▐ ▐ ▐ ▐ ▐ ▐ ▀▚ ▐ ▐ ▐ ▐ ▝
▝▄▜ ▐▙▛ ▝▄▜ ▐ ▐ ▝▄ ▝▄▜ ▝▙█ ▝▙▞ ▐▙▛ ▝▄▜ ▝▄ ▝▄ ▝▄▞ ▐ ▐ ▗▟▄ ▝▄ ▐
By @polkaulfield
Choose what to do:
1 - Apply everything (RECOMMENDED)
2 - Disable Ubuntu report
3 - Remove app crash popup
4 - Remove snaps and snapd
5 - Install flathub and gnome-software
6 - Install firefox flatpak
7 - Install vanilla GNOME session
8 - Install adw-gtk3 and latest adwaita icons
q - Exit
Enter your choice: 1如您所見,您可以單獨選擇要執行的操作,也可以自動運行所有操作。請輸入相應的數字來做出選擇。建議使用第一個選項。只需輸入 '1' 以應用所有操作,然後按下 ENTER 鍵即可。這是完全自動化的。只需坐下來放鬆,讓腳本完成其工作。此過程可能需要一些時間,具體取決於您的網速。
當所有任務完成後,您將看到以下輸出。輸入 'y' 以重新啟動您的系統。
[...]
Removing apport-symptoms (0.24) ...
Removing gdb (13.1-2ubuntu2) ...
Removing libbabeltrace1:amd64 (1.5.11-1build1) ...
Removing libsource-highlight4v5:amd64 (3.1.9-4.2build1) ...
Removing libboost-regex1.74.0:amd64 (1.74.0-18.1ubuntu3) ...
Removing libc6-dbg:amd64 (2.37-0ubuntu2) ...
Removing libdebuginfod1:amd64 (0.188-2.1) ...
Removing libdebuginfod-common (0.188-2.1) ...
Removing libipt2 (2.0.5-1) ...
Removing libsource-highlight-common (3.1.9-4.2build1) ...
Removing python3-systemd (235-1build2) ...
Removing ubuntu-mono (20.10-0ubuntu2) ...
Processing triggers for man-db (2.11.2-1) ...
Processing triggers for libc-bin (2.37-0ubuntu2) ...
[*] Done!
Reboot now? (y/n)
y恭喜!所有與 Ubuntu 相關的自訂設定已消失。您現在將看到一個帶有原生 GNOME 桌面的 Ubuntu 系統。
這裡有幾張截圖,顯示 Ubuntu 23.04 桌面在原生 GNOME 桌面環境下的樣子。
Ubuntu 去除廢話腳本說明
你可以在 這裡 查看 ubuntu-debullshit 腳本的完整程式碼。這個程式碼簡單且相當容易理解。
在底層,ubuntu-debullshit 會運行一系列命令並執行相應的操作。
讓我們快速看看這個腳本中每個部分的功能。
1. 套用所有
如果您選擇此選項,ubuntu-debullshit 腳本將依次自動執行所有後續操作。這是推薦的選項。
2. 停用 Ubuntu 回報
這是 ubuntu-debullshit 腳本的一部分,將會停用 Ubuntu 報告。
disable_ubuntu_report() {
ubuntu-report send no
apt remove ubuntu-report -y
}disable_ubuntu_report() 函數將執行以下兩個指令:
ubuntu-report send no:這個指令告訴 ubuntu-report 不要發送有關您系統的報告。send指令用於發送報告,而no參數表示您選擇不發送它。apt remove ubuntu-report -y:從您的系統中移除 ubuntu-report 套件。-y選項會自動對任何提示回答 『是』。
對於有疑問的人,ubuntu-report 是一個工具,它會收集並報告有關您的 Ubuntu 系統的硬體和其他資訊,以幫助改進 Ubuntu 發行版。
3. 移除應用程式當機彈出窗口
腳本的這部分將禁止生成自動崩潰報告。
remove_appcrash_popup() {
apt remove apport apport-gtk -y
}remove_appcrash_popup() 函數將執行 apt remove apport apport-gtk -y,這將從您的系統中卸載 apport 和 apport-gtk 套件。
- apport:這是一個自動生成崩潰報告的套件。當程式崩潰時,apport 可以建立一份詳細的報告,開發者可以利用這份報告來了解問題原因並修正問題。
- apport-gtk:這是一個 apport 的圖形化前端。它提供了一種使用者友好的方式來查看和管理崩潰報告。
4. 移除 snaps 和 snapd
這部分的腳本將會從你的 Ubuntu 系統中移除 snaps 和 snapd。
remove_snaps() {
while [ "$(snap list | wc -l)" -gt 0 ]; do
for snap in $(snap list | tail -n +2 | cut -d ' ' -f 1); do
snap remove --purge "$snap"
done
done
systemctl stop snapd
systemctl disable snapd
systemctl mask snapd
apt purge snapd -y
rm -rf /snap /var/lib/snapd
for userpath in /home/*; do
rm -rf $userpath/snap
done
cat <<-EOF | tee /etc/apt/preferences.d/nosnap.pref
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
}這個腳本,定義為函數 remove_snaps(),旨在完全從你的 Linux 系統中移除 Snap 及所有已安裝的 Snap 套件。
讓我們拆解上述的程式碼,看看每個部分的功能。
while 迴圈 和 for 迴圈:
while 迴圈透過計算 snap list 命令輸出的行數來檢查是否有安裝任何 Snap 套件。如果有安裝任何 Snap 套件(snap list | wc -l 返回的數字大於 0),則會進入迴圈。
for 迴圈 接著會遍歷每個已安裝的 Snap 套件(snap list | tail -n +2 | cut -d ' ' -f 1 會列出已安裝的 Snap 套件清單)並使用 snap remove --purge "$snap" 指令將其移除。
while 迴圈 會持續執行,直到所有 Snap 套件都已被移除。
systemctl 指令:
這些命令使用 systemctl stop snapd 命令停止 Snap 服務,使用 systemctl disable snapd 命令防止它在啟動時自動啟動,並使用 systemctl mask snapd 命令屏蔽該服務以防止其他服務啟動它。
apt purge 指令:
此命令會從系統中移除 snapd 套件,該套件是管理 Snap 套件的守護進程。-y 選項會自動對任何提示回答 「是」。
rm -rf 指令:
這些命令會移除用於 Snap 的目錄 /snap 和 /var/lib/snapd,以及每個使用者主目錄中的 snap 目錄(即 /home/*)。
帶有 heredoc (<<-EOF … EOF) 的 cat 指令:
此命令會在 /etc/apt/preferences.d/nosnap.pref 建立一個新的 APT 偏好設定檔,以防止 snapd 再次被安裝。Pin-Priority: -10 這一行表示 snapd 將不會被考慮安裝。
總而言之,這個腳本功能用於徹底從系統中移除 Snap,並防止其再次安裝。
5. 安裝 flathub 和 gnome-software
這部分腳本安裝 Flatpak,設置 Flatpak 應用的 Flathub 倉庫,並安裝 GNOME Software 應用及其建議的套件。
setup_flathub() {
apt install flatpak -y
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
apt install --install-suggests gnome-software -y
}函數 setup_flathub() 執行以下命令並執行相應的操作。
apt install flatpak -y:在您的系統上安裝 Flatpak。
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo:此指令將 Flathub 儲存庫新增為 Flatpak 應用程式的來源。Flathub 是 Flatpak 應用程式的應用商店。--if-not-exists 選項可確保僅在尚未新增 Flathub 時才會新增該儲存庫。
apt install --install-suggests gnome-software -y:安裝 GNOME Software 應用程序,以及對其建議的任何套件。--install-suggests選項告訴 apt 也安裝對 gnome-software 建議的任何套件。
給那些好奇的人,GNOME 軟體是一個類似應用商店的介面,用於管理基於 GNOME 系統的應用程式。
建議閱讀:
- Flatpak 初學者指南
6. 安裝 Firefox Flatpak
函數 restore_firefox() 使用 Flatpak 安裝 Firefox 網頁瀏覽器。
restore_firefox() {
flatpak install -y app/org.mozilla.firefox/x86_64/stable
}在這裡,flatpak install -y app/org.mozilla.firefox/x86_64/stable 命令將以 Flatpak 應用程式的形式安裝 Firefox 網頁瀏覽器的穩定版本。
7. 安裝原生 GNOME 會話
這是這個腳本的主要部分。
setup_vanilla_gnome() {
apt install gnome-session fonts-cantarell adwaita-icon-theme-full gnome-backgrounds gnome-tweaks qgnomeplatform-qt5 -y
update-alternatives --set gdm-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource
apt remove ubuntu-session -y
}函數 setup_vanilla_gnome() 將在你的 Ubuntu 系統上安裝原生 GNOME 桌面環境。此函數將依次執行以下命令:
apt install gnome-session fonts-cantarell adwaita-icon-theme-full gnome-backgrounds gnome-tweaks qgnomeplatform-qt5 -y:安裝與 GNOME 桌面環境相關的多個套件。update-alternatives --set gdm-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource:此命令將預設的 GNOME 顯示管理器 (GDM) 主題設定為原生 GNOME 主題。update-alternatives 是一個系統工具,用於管理特定任務的預設命令。--set選項用於手動設定 GDM 主題的.gresource檔案路徑。在這個例子中,/usr/share/gnome-shell/gnome-shell-theme.gresource是你想要設定為預設的 GDM 主題版本的路徑。apt remove ubuntu-session -y: 此指令會從系統中移除 ubuntu-session 套件。此套件提供預設的 Ubuntu 工作階段,移除後將只剩下標準的 GNOME 工作階段。
8. 安裝 adw-gtk3 和最新的 adwaita 圖示
此部分腳本將在您的 Ubuntu 系統中安裝 Adwaita 主題和 Adwaita 圖示集。
install_adwgtk3() 函數會下載並安裝 adw-gtk3 和 adw-gtk3-dark 主題,然後根據當前使用者的色彩方案偏好,將其中一個主題設置為預設主題。
install_adwgtk3() {
logged_user=$(logname)
sudo apt install dbus-x11
wget https://github.com/lassekongo83/adw-gtk3/releases/download/v4.6/adw-gtk3v4-6.tar.xz -O /tmp/adw-gtk3.tar.xz
tar -xvf /tmp/adw-gtk3.tar.xz -C /usr/share/themes
flatpak install -y runtime/org.gtk.Gtk3theme.adw-gtk3-dark/x86_64/3.22
flatpak install -y runtime/org.gtk.Gtk3theme.adw-gtk3/x86_64/3.22
if [ "$(sudo -Hu $logged_user dbus-launch gsettings get org.gnome.desktop.interface color-scheme)" == ''\''prefer-dark'\''' ]; then
sudo -Hu $logged_user dbus-launch gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3-dark'
sudo -Hu $logged_user dbus-launch gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
else
sudo -Hu $logged_user dbus-launch gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3'
fi
}這裡
logged_user=$ (logname): 此指令會取得啟動此工作階段的使用者名稱,並將其存入變數logged_user中。sudo apt install dbus-x11:此命令安裝dbus-x11套件,其中包含腳本稍後更改使用者設定所需的 dbus-launch 工具。wget https://github.com/lassekongo83/adw-gtk3/releases/download/v4.6/adw-gtk3v4-6.tar.xz -O /tmp/adw-gtk3.tar.xz:此命令從 GitHub 下載 adw-gtk3 主題文件並將其保存到/tmp目錄中。tar -xvf /tmp/adw-gtk3.tar.xz -C /usr/share/themes:此指令會將下載的主題檔案解壓到/usr/share/themes目錄。flatpak install -y runtime/org.gtk.Gtk3theme.adw-gtk3-dark/x86_64/3.22和flatpak install -y runtime/org.gtk.Gtk3theme.adw-gtk3/x86_64/3.22:這些命令用於為 Flatpak 應用程式安裝 adw-gtk3 和 adw-gtk3-dark 主題。if陳述式及其內部的指令:這個區塊使用 gsettings 工具檢查當前使用者的色彩方案偏好。如果使用者偏好深色主題,它會將 adw-gtk3-dark 主題設定為預設的 GTK 主題,並將色彩方案偏好設定為 'prefer-dark'。如果使用者不偏好深色主題,它會將 adw-gtk3 主題設定為預設的 GTK 主題。
以下函數 install_icons() 是一個腳本,用於在您的系統上下載並安裝 Adwaita 圖示主題。
install_icons() {
wget https://deb.debian.org/debian/pool/main/a/adwaita-icon-theme/adwaita-icon-theme_43-1_all.deb -O /tmp/adwaita-icon-theme.deb
apt install /tmp/adwaita-icon-theme.deb -y
}這裡
wget https://deb.debian.org/debian/pool/main/a/adwaita-icon-theme/adwaita-icon-theme_43-1_all.deb -O /tmp/adwaita-icon-theme.deb:此命令從 Debian 軟體庫下載 Adwaita 圖示主題 套件,並將其保存為adwaita-icon-theme.deb在/tmp目錄中。apt install /tmp/adwaita-icon-theme.deb -y:此命令安裝在前一步下載的 Adwaita 圖示主題套件。
為什麼不直接安裝 Debian?
如果你不喜歡 Ubuntu,為什麼還在使用它?為什麼不直接安裝 Debian 或 Mint,然後就結束了呢?你可能心中有這些疑問。我能想到兩個原因。
- 驅動程式支援 - Ubuntu 通常與更廣泛範圍的硬體更相容。在 Debian 上使用最新的藍牙和 WiFi 驅動程式,你需要安裝非自由固件套件。此外,在 Debian 上獲取最新的 Mesa 3D 也可能相當具有挑戰性。
- Snap - 一些使用者認為 Snaps 違背開源理念,因為它們由 Canonical 控制,而 Snap 商店並非開源。
除了這兩個原因之外,我看不出有任何特別的理由去使用它。如果你想到任何值得的理由,請透過下面的評論區告訴我。
結論
在本指南中,我們解釋了恢復到原始 Vanilla GNOME 桌面的步驟,並完整支援 flatpak,就像你在全新 Fedora 安裝中會找到的一樣。
Ubuntu-debullshit 腳本是一個為偏好簡單和傳統的 Ubuntu Linux 使用者設計的轉型工具。通過移除 snaps、安裝 flatpaks 並還原原始的 GNOME 桌面環境,這個腳本讓使用者能夠自訂他們的 Ubuntu 體驗,以更好地符合他們的需求。
這不僅是一個簡單的方法,也是整理系統並回到更經典、較不臃腫的 Ubuntu 設置的最快方式。
資源:
- Ubuntu 去除無用軟體的倉庫





