# Ubuntu 22.04
### 常用工具
```bash
# 編輯器工具
sudo apt install -y vim-gtk3 tmux ctags
# 開發用工具
sudo apt install -y git maven
# 遠端工具
sudo apt install remmina remmina-plugin-rdp
sudo apt install -y python3 python3-pip terminator
# 安裝 openJDK 8 及 11
sudo apt install -y openjdk-8-jdk openjdk-11-jdk
# 切換不同版本的 Java
sudo update-alternatives --config java
```
### 無蝦米輸入法
iBus
```bash
#!/bin/bash
sudo ibus-table-createdb -s liu_ibus_table.txt -n liu.db
sudo cp liu.db /usr/share/ibus-table/tables/
sudo cp liu.png /usr/share/ibus-table/icons/
```
### 鍵盤快速鍵
設定值→鍵盤→鍵盤快速鍵→檢視與自訂快捷鍵
- 輸入→切換至下個輸入來源→Ctrl-Space
- 系統→鎖定螢幕→Pause
### [羅技木星 Ubuntu 設定方式](https://help.ubuntu.com/community/Logitech_Marblemouse_USB)

```bash
sudo vi /usr/share/X11/xorg.conf.d/40-libinput.conf
```
```
Section "InputClass"
Identifier "Marble Mouse"
MatchProduct "Logitech USB Trackball"
Driver "libinput"
Option "ScrollMethod" "button" #press button to enable scroll
Option "ScrollButton" "3" #press button 3 to enable scroll
Option "ButtonMapping" "1 2 3 4 5 6 7 8" #invert scroll direction
EndSection
```
```
Section "InputClass"
Identifier "Marble Mouse"
MatchProduct "Logitech USB Trackball"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "ScrollMethod" "button"
Option "ScrollButton" "3"
Option "MiddleEmulation" "true"
EndSection
```
```bash
gsettings set org.gnome.desktop.peripherals.trackball scroll-wheel-emulation-button 3
```
Settings → Mouse → Natural Scrolling
### 安裝 Powerline
```bash
sudo apt install -y fonts-powerline powerline
source /usr/share/powerline/bindings/bash/powerline.sh
```
# 系統升級
1. **更新** 現有版本中的所有軟體套件。
2. **升級** 到一個**新的 Ubuntu 發行版本** (例如從 22.04 升級到 24.04)。
以下分別說明這兩種情況的指令和步驟:
-----
## 1\. 更新現有版本的軟體套件 (保持最新)
這是最常見的操作,用於確保您目前使用的 Ubuntu 版本中所有已安裝的軟體都是最新狀態。
請依序執行以下三個指令:
1. **更新套件清單 (取得最新資訊):**
```bash
sudo apt update
```
這個指令會從軟體儲存庫下載最新的套件資訊,但不會安裝或升級任何東西。
2. **升級已安裝的套件 (進行實際更新):**
```bash
sudo apt upgrade
```
這個指令會升級所有已安裝的套件到它們的最新版本。它通常不會移除任何套件,也不會安裝新的核心版本。
3. **移除不再需要的套件 (清理):**
```bash
sudo apt autoremove
```
這個指令會自動移除在升級過程中不再被任何軟體依賴的舊套件或檔案,有助於釋放硬碟空間。
-----
## 2\. 升級到新的 Ubuntu 發行版本 (例如從 22.04 升級到 24.04)
這是一個更重大的步驟,通常用於將整個作業系統升級到新的主要版本。
### 步驟概覽:
1. **備份您的重要資料!** (強烈建議,以防升級失敗)
2. **確保現有系統已完全更新** (執行上一個步驟中的指令)。
3. **安裝更新管理器核心套件** (如果尚未安裝):
```bash
sudo apt install update-manager-core
```
4. **執行版本升級指令:**
```bash
sudo do-release-upgrade
```
* 這個指令會檢查是否有新的穩定發行版本可用。
* 如果您使用的是 **LTS (長期支援)** 版本,它通常只會在下一個 LTS 版本的首個小數點版本 (例如 24.04.1) 發布後才提示您升級。
* 如果您想升級到最新的「非 LTS」開發版或即使最新的 LTS 尚未發布,您可以使用 `-d` 參數:
```bash
sudo do-release-upgrade -d
```
5. **依照指示操作:**
升級程式會提示您確認、詢問是否保留或替換某些設定檔、並在過程中可能需要您輸入 `y` 或 `Yes` 來確認操作。請仔細閱讀提示。
6. **重新啟動系統:**
升級完成後,系統會提示您**重新啟動** (reboot) 以完成整個升級程序。
### ⚠️ **重要提醒**
* **備份是關鍵**:版本升級風險較高,請務必在開始前備份重要資料。
* **清理**:在執行 `do-release-upgrade` 之前,最好先執行 `sudo apt clean` 和 `sudo apt autoclean` 清理下載的舊安裝檔案。
* **穩定性**:升級到新的主要版本可能會遇到軟體相容性或驅動程式問題,建議您只在必要時或新版本發布一段時間後再進行。
# Desktop 檔案
## 製作自訂 Firefox 的 .desktop 檔案
你只需要建立一個文字檔案,命名為 `firefox-custom.desktop`(名稱隨你,但必須以 `.desktop` 結尾),然後將它放在特定的目錄下。
### 步驟一:建立 .desktop 檔案
開啟一個終端機,使用文字編輯器(例如 `nano` 或 `gedit`)來建立檔案。你可以將它放在使用者專屬的應用程式目錄:
```bash
nano ~/.local/share/applications/firefox-custom.desktop
```
### 步驟二:編輯 .desktop 檔案內容
將以下內容貼到檔案中,並根據你下載的 Firefox 實際安裝路徑進行修改:
```ini
[Desktop Entry]
Name=Firefox 測試版 (自訂)
Comment=使用自行下載的最新版 Firefox 瀏覽器
# ----------------------------------------------------
# !!!請將 Exec 和 Icon 路徑修改為你的實際路徑!!!
# ----------------------------------------------------
Exec=/opt/firefox-latest/firefox %u
Icon=/opt/firefox-latest/browser/chrome/icons/default/default128.png
# ----------------------------------------------------
Type=Application
Terminal=false
Categories=Network;WebBrowser;
StartupNotify=true
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
```
**重點參數說明:**
* **Name**: 應用程式在選單中顯示的名稱。
* **Comment**: 應用程式的簡短描述。
* **Exec**: **這是最重要的一行**。請替換為你自行下載的 Firefox **可執行檔 (executable)** 的完整路徑。
* `%u` 是參數,允許瀏覽器開啟外部連結(例如點擊網址)。
* **Icon**: 應用程式在選單中顯示的圖示路徑。你可以找到一個合適的 `.png` 或 `.svg` 圖示路徑,通常在 Firefox 安裝目錄的子目錄中可以找到。
* **Type**: 必須是 `Application`。
* **Terminal**: 設定為 `false`,表示不需要在終端機中運行。
> **小提示:** \> 假設你的自訂 Firefox 解壓縮在 `/opt/firefox-latest/` 目錄,那麼可執行檔通常在 `/opt/firefox-latest/firefox`,圖示可能在 `/opt/firefox-latest/browser/chrome/icons/default/default128.png`。**請務必檢查你的實際路徑!**
完成編輯後,儲存並關閉檔案(如果是 nano,按 `Ctrl+O` 儲存,`Ctrl+X` 退出)。
-----
## 步驟三:讓系統識別新的應用程式
通常,將 `.desktop` 檔案放到 `~/.local/share/applications/` 後,系統會很快自動識別。
1. **檢查應用程式選單:** 按下 `Super` 鍵(通常是 Windows 鍵),然後輸入你在 `Name` 中設定的名稱(例如 `Firefox 測試版`)。
2. **啟動測試:** 點擊該圖示,確認它能正確啟動你自行下載的 Firefox 版本。
如果它沒有立即出現,你可能需要登出再登入,或者重新啟動 GNOME Shell (在終端機輸入 `r` 並按 Enter,但這可能會關閉所有開啟的應用程式,請謹慎使用)。
現在,你應該就能透過 Ubuntu 的應用程式選單方便地啟動你的最新版 Firefox 了!
# StartupWMClass
**`StartupWMClass`** 是 `.desktop` 檔案中一個非常重要的參數,它主要的作用就是幫助 Linux 桌面環境(如 Ubuntu 使用的 GNOME)**正確地將您點擊啟動的應用程式圖示,與實際開啟的應用程式視窗連結起來**。
如果沒有這個設定,系統就不知道這個視窗是屬於您點擊的那個自訂應用程式。
---
## StartupWMClass 的功能與重要性
您可以把 `StartupWMClass` 想像成應用程式的「**視窗身份證**」或「**應用程式代號**」。
當您點擊 `.desktop` 檔案啟動程式時,流程如下:
1. **啟動器(Launcher)發出請求:** 您點擊了您自訂 Firefox 的 `.desktop` 檔案。
2. **程式啟動:** 根據 `Exec=` 參數,您自行下載的 Firefox 程式開始運行。
3. **視窗報告身份:** 當 Firefox 的主視窗出現時,它會向桌面環境報告自己的身份代號,這個代號在 X Window 系統中就稱為 **`WM_CLASS`**(Window Manager Class)。
4. **系統比對:** 桌面環境會檢查:
* **是否有 `StartupWMClass` 設定?** → 如果有,系統會用這個值 (`StartupWMClass=firefox`) 去比對新出現的視窗的 `WM_CLASS`。
### 為什麼這會導致您無法釘選?
在您的情況中,如果 **`.desktop` 檔案中**沒有 `StartupWMClass` 或是值不對:
* **無法釘選:** 系統無法確認這個 **正在運行的視窗** (`WM_CLASS` 是 `firefox`) 確實屬於您點選的 **啟動器** (`firefox-custom.desktop`)。因為沒有正確配對,您就不能將這個「**未被識別的視窗**」釘選到 Dock 上。
* **兩個圖示:** 您可能會看到兩個 Firefox 圖示在 Dock 上——一個是您釘選的(點擊後沒反應或啟動另一個視窗),另一個是實際開啟的應用程式的**臨時圖示**。
---
## 總結
| 參數 | 作用 | 舉例 (假設值為 `firefox`) |
| :--- | :--- | :--- |
| **`WM_CLASS`** | **視窗本身**向系統宣告的身份代號。 | 實際運行的 Firefox 視窗告訴系統:「我的身份是 **`firefox`**」。 |
| **`StartupWMClass`** | **`.desktop` 檔案**告訴系統,它啟動的視窗將會具有什麼身份。 | `.desktop` 檔案告訴系統:「我啟動的程式,其身份將會是 **`firefox`**」。 |
透過在 `.desktop` 檔案中設定 **`StartupWMClass=firefox`**,您就是在告訴 Ubuntu:「當這個啟動器被點擊時,請將所有 **`WM_CLASS`** 為 `firefox` 的新視窗都歸類到這個圖示下。」這樣就能解決圖示不顯示和無法釘選的問題。
# 下載相依套件
### 🧩 想「只下載」但不安裝(含相依套件)
如果你要在離線環境安裝,可以這樣做:
```bash
sudo apt install --download-only tmux
```
會把所有 `.deb` 檔下載到 `/var/cache/apt/archives/`,
之後可以複製到另一台機器再安裝。
---
### 🧱 離線安裝範例
如果你在 A 機器下載所有相依套件:
```bash
sudo apt install --download-only tmux
```
然後打包:
```bash
cd /var/cache/apt/archives/
tar czf tmux-packages.tar.gz *.deb
```
到 B 機器後:
```bash
sudo dpkg -i *.deb
```
(若有順序問題再跑一次 `sudo apt -f install` 自動補)