2026/10/26

魔獸爭霸3

《魔獸爭霸III:混亂之治》(Warcraft III: Reign of Chaos)是暴雪娛樂出品的即時戰略遊戲,於 2002 年發行。 2003 年 5 月暴雪公司又發行了《魔獸爭霸III:寒冰霸權》(Warcraft III: The Frozen Throne),它是本作的資料片。 《魔獸爭霸III》在 1.21b 移除了光碟檢查機制,1.27b 則是其最後一版能夠線下更新的版本, 在 1.28 之後因為機制改變的關係,只能夠線上更新。

如果使用 WINE 執行,在 1.29 版以前可以嘗試加上 -opengl 選項。因為只是用來懷舊,所以我並沒有持續更新版本, 而是停留在 1.27b 版。

可以參考的資料:

玩家可以選擇在《魔獸爭霸III》中操控四個種族,分別是 Human, Orc, Undead 與 Night Elf。Naga 在製作時曾經設想作為第五個可操控的種族,但在遊戲測試時刪去。而官方解釋是:加上 Naga 族之後很難保證遊戲的平衡性,因為那迦族的部隊可直接跨過水域。而今它則出現在戰役模式和中立生物當中。

  • Human
    • Well-rounded units
    • Buildings can be built anywhere
    • Peasants can become Militia at the main Town Hall
    • Multiple workers can be used to construct buildings faster
  • Orc
    • Very beefy and expensive units
    • Burrows coupled with Peons are used as a defense
    • Orc peons are immune while constructing buildings
    • Several orc units can be upgraded to salvage gold and lumber when attacking enemy buildings
  • Night Elf
    • Several buildings (called "Ancients") can uproot to move and attack land units
    • Night elf units have improved vision during nighttime after researching Ultravision
    • Wisps are immune while harvesting gold and can harvest lumber anywhere without needing to return their resources
    • Wisps sacrifice themselves when building Ancients
  • Undead
    • Can use corpses as a resource
    • Buildings must be built upon Blight
    • Acolytes only need to begin a building's summoning
    • Acolytes can harvest gold at Haunted Gold Mines without returning their resources

《魔獸爭霸III:混亂之治》的人口限制為 90,資料片則增加到 100。 《魔獸爭霸III》使玩家集中注意力於「控制戰鬥單位」而非「生產戰鬥單位」,因此遊戲要求玩家關注於小規模的戰鬥而非宏觀的調兵。 遊戲增加了可透過獲取經驗值升級並增強能力的超級戰鬥單位,也就是英雄,而英雄又可以分為本族英雄和中立英雄。 每當己方殺滅一個敵方單位或中立生物時 (creeping),英雄便可獲取相當的經驗值而累積一定程度時其等級就會上升。 等級每當上升時,英雄便可通過添加技能點學習或加強一項技能。 除此以外,英雄們亦可以攜帶於商店購得或戰勝中立生物後獲取之物品,而此等物品則可提高英雄或整體的作戰能力。

《魔獸爭霸III》採用三級科技樹,所以一場遊戲玩家最多可以同時控制三名英雄(本族英雄或者是雇用的中立英雄)。 英雄有 Strength, Agility, Intelligence 三種屬性,並且以其中一個為主要屬性。 在《魔獸爭霸III:混亂之治》中四個種族都有三名英雄,資料片又各增加了一名英雄,以及加入中立英雄的設計。 Orc 有趣的地方在於,《魔獸爭霸III:混亂之治》中 Far Seer 的主要屬性為 Intelligence, Blademaster 的主要屬性為 Agility,Tauren Chieftain 的主要屬性為 Strength,因此是三種主要屬性英雄都有的種族。

Faction Heroes
Human Alliance Paladin, Archmage, Mountain King, Blood Mage
Orcish Horde Blademaster, Far Seer, Tauren Chieftain, Shadow Hunter
Undead Scourge Death Knight, Lich, Dreadlord, Crypt Lord
Night Elf Sentinels Keeper of the Grove, Priestess of the Moon, Demon Hunter, Warden
Neutral Naga Sea Witch, Dark Ranger, Pandaren Brewmaster, Beastmaster, Pit Lord, Tinker, Firelord

中立英雄在 Tavern 中雇用。

地圖裡的中立生物可視為遊戲中創新之處。即便多人遊戲中,亦存有完全由電腦控制的中立生物,以守衛地圖中關鍵的位置及中立的建築物。 它也成為選手間爭奪的資源,擊殺中立生物後便可獲得相當的經驗值、金錢及物品。

《魔獸爭霸III》需要採集的資源為 Gold 與 Lumber,Gold 的採集人數固定為 5 人。 而另一影響遊戲策略的操施就是維護費徵取 (upkeep),此操施源於一種概念——擁有越多戰鬥單位就須要付出越多的資源去滿足部隊的需要, 如士兵需要補給、武器需要打造、盔甲需要鍛鍊等。該遊戲則以上稅實行此概念。當玩家部隊的數目到達一定程度時,就須於每採集十塊黃金上繳其中三塊。 當部隊數目抵達更高程度時,每十塊就須上繳六塊。

Human 的工人 Peasant,Orc 的工人 Peon,Night Elf 的工人 Wisp 負責採集 Gold 與 Lumber。 Undead 略有不同,工人 Acolyte 只負責採集 Gold,初級攻擊單位 Ghoul 同時也兼具採集 Lumber 的工作。 所以 Undead 建議的建築順序與其它種族略為不同,通常可以先建造 Crypt,而不是先建造英雄祭壇。

Human 增加人口的建築為主堡 Town Hall 與 Farm (+6),英雄生產的建築為 Altar of Kings, 資料片新增加的商店建築為 Arcane Vault。當遇到危急情況的時候, 可以使用 Call to Arms 讓 Peasant 變成 Militia 進行防禦。 在防禦建築方面,Human 需要先建立 Scout Tower(沒有攻擊能力), 需要升級為 Guard Tower, Arcane Tower 或者是 Cannon Tower。
Orc 增加人口的建築為主堡 Great Hall 與 Orc Burrow (+10),英雄生產的建築為 Altar of Storms, 資料片新增加的商店建築為 Voodoo Lounge。Peon 可以躲在 Orc Burrow 中進行防禦, Grunt 與 Raider 可以在研發 Pillage 之後,在攻擊的時候掠奪資源。
Night Elf 增加人口的建築為主堡 Tree of Life 與 Moon Well (+10),英雄生產的建築為 Altar of Elders, 資料片新增加的商店建築為 Ancient of Wonders。 有些建築(Ancients)需要犧牲一個 Wisp 建造。 Night Elf 如果要採集 Gold,需要 Tree of Life 使用 Entangle Gold Mine 技能(在第一個主堡不需要玩家做這個動作), 完成後 Wisp 才能夠進入 Entangled Gold Mine 採集 Gold。 Moon Well 具有恢復友方 life 與 mana 的能力。
Undead 增加人口的建築為主堡 Necropolis 與 Ziggurat (+10),英雄生產的建築為 Altar of Darkness, 資料片新增加的商店建築為 Tomb of Relics。Undead 的建築除了主堡以及用來讓 Acolyte 收集 Gold 的 Haunted Gold Mine, 都需要建在 Blight 上才行,而在建造建築的時候 Acolyte 可以繼續下一個動作,不需要等待建築完成。 Ziggurat 可以升級為有攻擊力的 Nerubian Tower 或者是 Spirit Tower, 而 Undead 的主堡在升為第二級之後就具有攻擊能力。

Human 在第一級的初級攻擊單位為生產自 Barracks 的 Footman 與 Rifleman(在建造 Blacksmith 後解鎖); Orc 在第一級的初級攻擊單位為生產自 Barracks 的 Grunt 與 Troll Headhunter(在建造 War Mill 後解鎖); Undead 在第一級的初級攻擊單位為生產自 Crypt 的 Ghoul 與 Crypt Fiend(在建造 Graveyard 後解鎖); Night Elf 在第一級的初級攻擊單位為生產自 Ancient of War 的 Archer 與 Huntress(在建造 Hunter's Hall 後解鎖)。 Night Elf 比較特別的地方是,一開始的初級攻擊單位是遠程攻擊的弓箭手 Archer, 而攻城單位 Glaive Thrower 也是第一級主堡就可以生產。 Archer 可以與生產自 Ancient of Wind 的 Hippogryph 組合成為 Hippogryph Rider,

Human 在第二級的生產建築為 Arcane Sanctum 與 Workshop, 法師 Priest, Sorceress 與資料片新增的反魔單位 Spell Breaker 生產自 Arcane Sanctum, Priest 具有 Heal 技能,Sorceress 具有 Slow 技能,Spell Breaker 具有 Spell Steal 技能以及被動的 Spell Immunity 能力, Flying Machine 與 Mortar Team 則生產自 Workshop。 Human 在第三級主堡可以在 Barracks 生產 Knight,以及在 Workshop 生產 Siege Engine。 因為 1.10 的變更,資料片新增的單位 Dragonhawk Rider 在第二級主堡就可以生產,也因此 Gryphon Aviary 在第二級主堡就可以建造;
Orc 在第二級的生產建築為 Spirit Lodge 與 Beastiary, 法師 Shaman 與 Witch Doctor 生產自 Spirit Lodge, Raider, Wind Rider, Kodo Beast, Troll Batrider 生產自 Beastiary,Raider 是個很有用的單位, 攻擊型態與攻城車相同(對於建築有攻擊加成),Ensnare 能力可以網住空軍單位、讓敵人無法移動以及中斷施法, Kodo Beast 的能力 Devour 可以吞食一些對手的陸軍單位並且緩慢的傷害,War Drums Aura 則可以增加攻擊。 注意在 1.30.0 將 Spirit Walker 從 Spirit Lodge 改為從 Tauren Totem 生產, Tauren Totem 也變成在第二級主堡就可以建造;
Undead 在第二級的生產建築為 Temple of the Damned 與 Slaughterhouse, 法師 Necromancer 與 Banshee 生產自 Temple of the Damned, Necromancer 的技能 Raise Dead 可以自屍體產生 Skeleton Warrior/Skeletal Mage, 攻城單位 Meat Wagon 生產自 Slaughterhouse,而在第三級主堡 Undead 可以在 Slaughterhouse 生產 Abomination, 反魔單位 Destroyer 則是從 Slaughterhouse 生產的 Obsidian Statue 變身產生, Destroyer 具有被動的 Spell Immunity 能力;
Night Elf 在第二級的生產建築為 Ancient of Lore 與 Ancient of Wind。 Druid of the Claw(生產自 Ancient of Lore)與 Druid of the Talon(生產自 Ancient of Wind)為 Night Elf 的法師, 二者都有變身的能力,Druid of the Claw 可以變身為 bear,Druid of the Talon 可以變身為 Crow。 而 Dryad 是 Night Elf 的反魔單位,擁有被動的 Spell Immunity 能力, Faerie Dragon 則是資料片新增、用來傷害法師的飛行單位。 生產自 Ancient of Lore 的 Mountain Giant 具有 Taunt 技能可以暫時吸引敵人的火力。

有些法術的施法類型為 Channel(例如 Priestess of the Moon 的 Starfall 法術), Channel 施法類型的技能要求單位在法術生效期間保持不動。 在過程中如果因為使用者執行其他的動作或者因敵方的打斷,法術效果就會被取消,並且法術隨之結束。 中斷的技能例如英雄單位 Mountain King 的 Storm Bolt 技能,Sorceress 的 Polymorph 法術, 英雄單位 Tauren Chieftain 的 War Stomp 技能,英雄單位 Shadow Hunter 的 Hex 技能,Raider 的 Ensnare 技能, 英雄單位 Keeper of the Grove 的 Entangling Roots 技能,Druid of the Talon 的 Cyclone 法術, 英雄單位 Crypt Lord 的 Impale 技能以及英雄單位 Dreadlord 的 Sleep 技能。

一些法術可以讓使用者設定自動施法(Autocast),允許單位在符合條件時自動釋放特定的技能,而不需手動點擊。 例如 Priest 的 Heal 與 Inner Fire 技能,Sorceress 的 Slow 技能,Shaman 的 Bloodlust 技能。 有些技能則可以對召喚生物造成傷害,例如 Priest 的 Dispel Magic 造成範圍內召喚生物 200 點傷害, Shaman 的 Purge 造成單體的召喚生物 400 點傷害,Spirit Walker 的 Disenchant 造成範圍內召喚生物 250 點傷害, Dryad 的 Abolish Magic 造成範圍內召喚生物 250 點傷害, Destroyer 的 Devour Magic 造成範圍內召喚生物 180 點傷害(在 1.30.0 降為 160)。

遊戲有靈氣 (Aura) 的設計,包含英雄單位 Paladin 的 Devotion Aura,Archmag 的 Brilliance Aura, Death Knight 的 Unholy Aura,Dreadlord 的 Vampiric Aura, Keeper of the Grove 的 Thorns Aura,Priestess of the Moon 的 Trueshot Aura, Tauren Chieftain 的 Endurance Aura,以及非英雄單位 Kodo Beast 的 War Drums Aura。 另外,也有道具可以提供靈氣的能力

Human 的終極兵種為飛行單位、可對空對地的 Gryphon Rider; Orc 的終極兵種為陸軍單位 Tauren(在資料片可以與 Spirit Walker 的法術 Ancestral Spirit 配合); Undead 的終極兵種為飛行單位、可對空對地的 Frost Wyrm;Night Elf 的終極兵種為飛行單位、但是只能對地 Chimaera。 Orc 的終極兵種為陸軍單位,又只有 Orc 沒有 Spell Immunity 的反魔單位, 雖然 Spirit Walker 在 1.19 加入了被動的 Resistant Skin 能力,但是只能免疫一部份的法術, 因此 Orc 在反魔以及對空上比起其它三族是較為弱勢的。

2026/10/09

IceWM Window Manager

IceWM 是一個專為 X Window System 設計的視窗管理員, 由 Marko Maček 於 1997 年開始開發。 IceWM 是個十分輕量的視窗管理員,通常一些設定需要自行修改文字設定檔才行。 要考量的是 IceWM 只是一個視窗管理員,而不是一個桌面環境, 因此缺少檔案管理員 (File Manager) 等內建程式, 需要安裝某個桌面環境提供的程式或者是外部的應用程式。應該也有為了能夠在老舊硬體也能夠執行良好, 使用 IceWM 作為核心,組合其它的應用程式加上自己的設定以後的 Linux Distribution。 因為 Gnome 與 KDE 都相繼轉向 Wayland-only 的環境,但是我仍然需要一個 X Window System 的環境, 所以開始嘗試使用 IceWM。

在安裝完成之後,建立 ~/.config/icewm 目錄(openSUSE 可以使用此目錄進行設定), 再複製下列的設定檔:

cp -a /usr/share/icewm/{prefoverride,toolbar,menu} ~/.config/icewm/

檔案 prefoverride 可以作為主設定檔(包含 theme 設定的項目可以在這裡再設定一次覆蓋掉); 工具列設定在 toolbar;主選單在 menu。

IceWM 支援 theme,在 ~/.config/icewm 下建立 theme 檔案, OpenSUSE 內建的 theme 在 /usr/share/icewm/themes,設定的方式如下:

Theme="win95/default.theme"

下面是我工具列 toolbar 的設定:

prog "xterm" utilities-terminal xterm
prog "Firefox" firefox firefox file:///home/danilo/public_html/index.html
prog PCManFM-Qt pcmanfm-qt pcmanfm-qt

(在 prog 後面的項目是:程式名稱 程式圖示 程式執行路徑與參數,menu 與 toolbar prog 的設定語法相同)

下面是我主選單 menu 的設定:

prog XTerm utilities-terminal xterm
prog PCManFM-Qt pcmanfm-qt pcmanfm-qt
menu Favorites folder {
    prog Firefox firefox firefox
    prog Thunderbird thunderbird thunderbird
    prog LibreOffice libreoffice-main libreoffice
    prog "SciTE Editor" Sci48M SciTE
    prog QPdfView qpdfview qpdfview
    prog Nomacs org.nomacs.ImageLounge nomacs
    prog DeaDBeeF deadbeef deadbeef
    prog "VLC Player" vlc vlc
    prog "Volume Control"  multimedia-volume-control pavucontrol-qt
}
includeprog icewm-menu-fdo --seps -d1400 -D1650 -S --limit-max-len=42
#menufile Programs folder programs
menufile Tool_bar folder toolbar
menuprog SUSE folder xdg_menu --format icewm

icewm-menu-fdo 指令可以從系統資料自動產生選單與子選單。 IceWM 有個很有趣的功能, 可以使用 icesh 這個命令列工具組合選取條件、過濾器與動作來控制視窗屬性或 IceWM 本身。 因此我們可以使用 icesh restart 重新啟動 IceWM, 觀察是否有正確修改 theme 或者是選單。


我修改的主要設定檔 prefoverride 設定項目為:

#  Command to lock display/screensaver.
LockCommand="xautolock -locknow"

#  Opaque window move.
OpaqueMove=0 # 0/1

#  Opaque window resize.
OpaqueResize=0 # 0/1

#  Favour Xft fonts over core X11 fonts where possible.
PreferFreetypeFonts=1 # 0/1

#  Enable Alt+Tab window switching.
QuickSwitch=1 # 0/1

#  Show mailbox status on task bar.
TaskBarShowMailboxStatus=0 # 0/1

#  Show 'show desktop' button on taskbar (value of 2 to put after the clock)
TaskBarShowShowDesktopButton=2 # [0-2]

#  Desktop background color(s), comma separated.
DesktopBackgroundColor=""

#  Desktop background image(s), comma separated.
# DesktopBackgroundImage=""
DesktopBackgroundImage="/home/danilo/Pictures/orange-cat.jpg"

在 prefoverride 設定完桌面的背景桌布以後,可以使用 icewmbg -r 重新載入觀察結果。

PulseAudio and PipeWire

二者我都有用過,都工作的很好。

PipeWire 是目前 openSUSE Tumbleweed 的預設值 (在 20220708 之後,不過如果是從 openSUSE Leap 升上來的,如果使用者沒有手動變更,便用的仍然是 PulseAudio)。 PulseAudio 的問題在於其設計者腦子裡並沒有考慮軟體相容性, 在當時已經有延屬較低而且被不少專業音訊軟體採用的 JACK 存在, 但是其設計者卻完全不考慮軟體相容性並且與 JACK 並不相容,而 Redhat 也不管軟體相容問題直接力推 PulseAudio, 造成一些軟體相容性的問題。 就我來說,建議使用 PipeWire,PipeWire 優越的地方就是提供了 PulseAudio 與 JACK 相容的軟體介面,但是延遲比 PulseAudio 較低且通常使用的資源比較少。

下面是安裝 PipeWire 的指令:

sudo zypper in pipewire-pulseaudio pipewire-alsa

要注意 PipeWire 與 PulseAudio 無法共存,所以要選擇 deinstallation PulseAudio 的套件。


因為 IceWM 本身不包含音訊管理功能,需要在啟動時設定自動執行 PipeWire 服務。 不過好像不設定也可以,在我設定之前,音訊功能似乎也可以正常工作。 IceWM 的自動啟動檔案為 ~/.config/icewm/startup (記得使用 chmod +x startup 設定檔案屬性為可執行)。 使用 systemd 的系統,startup 檔案內容如下:

# Pass environment variables to systemd --user session
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
    dbus-update-activation-environment --systemd --all
fi

# For PireWire (systemd)
systemctl --user start pipewire pipewire-pulse wireplumber

如果使用非 systemd 系統,則改為如下:

#!/bin/bash

pipewire &
pipewire-pulse &
wireplumber &

檢查是否設定成功:

pactl info

如果輸出結果中的 Server Name 顯示為 PulseAudio (on PipeWire x.y.z), 就代表設定成功。

如果想要設定音量,可以安裝 pavucontrol-qt (適合 PulseAudio 以及有安裝 PulseAudio 相容軟體層的 PipeWire 使用)。

NetworkManager

接下來加入網路設定的部份。如果使用 NetworkManager 設定網路,可以安裝 NetworkManager-applet 來更方便的設定網路。 修改 startup 檔案:

#!/bin/bash

# start network manager
sleep 1 && nm-applet &

# allow notifications
/usr/libexec/notification-daemon &

# Pass environment variables to systemd --user session
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
    dbus-update-activation-environment --systemd --all
fi

# For PipeWire
systemctl --user start pipewire pipewire-pulse wireplumber

Lock screen

接下來設定螢幕鎖定功能。 這裡使用 xautolock 與 xscreensaver 結合使用的方式,因此需要二個套件都有安裝。

修改主要設定檔 prefoverride,設定 LockCommand:

#  Command to lock display/screensaver.
LockCommand="xautolock -locknow"

修改 startup 檔案:

#!/bin/bash

# pcmanfm-qt desktop icon manager
#pcmanfm-qt --desktop &

# start network manager
sleep 1 && nm-applet &

# enable screensaver
xscreensaver -nosplash &

# allow notifications
/usr/libexec/notification-daemon &

# enable lockscreen
xautolock -detectsleep -time 10 -locker "xscreensaver-command -lock" &

# Pass environment variables to systemd --user session
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
    dbus-update-activation-environment --systemd --all
fi

# For PireWire
systemctl --user start pipewire pipewire-pulse wireplumber

xautolock 的 -time 用來設定時間,這裡的 10 就是 10 分鐘; -locker 用來呼叫執行螢幕鎖定功能的程式。 在使用 xautolock 控制 xscreensaver 時,需要調整 xscreensaver 本身的設定, 避免二個套件在螢幕鎖定時間的衝突, 執行 xscreensaver-demo(xscreensaver 的設定界面),取消勾選 Lock Screen After。

Theme (Gtk/Qt)

下面嘗試設定 Gtk 以及 Qt 的 theme 設定,讓使用 Gtk 以及 Qt 撰寫的程式看起來比較美觀; 以及 LibreOffice 的相關設定。設定方式為在 ~/.config/icewm/env 這個檔案設定環境變數:

GTK_THEME="Adwaita"
#GTK_THEME="Adwaita:dark"
QT_QPA_PLATFORMTHEME="qt6ct"
SAL_USE_VCLPLUGIN="qt6"

原本我 QT_QPA_PLATFORMTHEME 嘗試使用 platform theme 並且設為 gtk3, 但是在使用中發現這並不是正確的設法,還是需要使用 qt6ct 處理 Qt6 在非 Qt 開發的環境下的視覺設定, 不過也一樣需要設定 QT_QPA_PLATFORMTHEME 為正確的值 (qt6ct) 才行。

xdg-desktop-portal

我發現 xdg-desktop-portal service 並沒有正確啟動(有安裝 xdg-desktop-portal-gtk 但是沒有啟動成功), 而原因是 graphical-session.target 沒有正確啟動服務。 嘗試採用 workaround 避開這個問題, 修改 /usr/lib/systemd/user/xdg-desktop-portal.service:

[Unit]
Description=Portal service
#PartOf=graphical-session.target
#Requisite=graphical-session.target
#After=graphical-session.target

[Service]
Type=dbus
BusName=org.freedesktop.portal.Desktop
ExecStart=/usr/libexec/xdg-desktop-portal
Slice=session.slice

使用下列的指令檢查目前的服務狀態:

systemctl --user status xdg-desktop-portal.service

PCManFM-Qt

PCManFM-Qt 是一個輕量的檔案管理以及桌面管理程式。 檔案管理方面有二個地方要設定,Edit > Preference > Advanced, 選擇要使用的 Terminal emulator 以及 Archiver integration(如果沒有安裝其它桌面環境的 archive manager, 可以安裝同樣是 LXQt 桌面環境組件的 lxqt-archiver 並且設定使用)。

IceWM 使用 icewmbg 處理桌面上的桌布。如果要讓 pcmanfm-qt 處理, 那麼要在 prefoverride 將 DesktopBackgroundImage 與 DesktopBackgroundColor 都設為空白, 並且在 startup 設定啟動 pcmanfm-qt desktop manager。加入下面的設定內容:

#!/bin/bash

# pcmanfm-qt desktop icon manager
pcmanfm-qt --desktop &

在 pcmanfm-qt 管理桌面以後,按右鍵選擇 Desktop Preferences 就可以設定桌面選項 (我使用的版本行為是這樣)。 但是有個麻煩的地方是 desktop icon 不管什麼桌面環境都會放在家目錄下的 Desktop 目錄, 所以彼此可能會發生衝突。在考慮以後,我決定使用 IceWM 原來的 icewmbg 管理桌布, 而不使用 pcmanfm-qt(在 startup 關於 pcmanfm-qt 的設定需要移除或者是註解掉)。

XTerm

X Window 內建的終端模擬器為 XTerm,其設定檔可以使用家目錄下的 .Xresources。

! Set font and anti-aliasing
xterm*faceName: Monospace
XTerm*faceSize: 16

! Enable a scrollbar on the right side
XTerm*scrollBar: true
XTerm*rightScrollBar: true

! Configuring the maximized window size
XTerm*maximized: true

! Set color scheme (Black background, white text)
XTerm*vt100.background: black
XTerm*vt100.foreground: white

! Display Scrollbar
XTerm.vt100.scrollBar: true
XTerm.vt100.scrollbar.width: 8

! Increase history scrollback buffer
XTerm*saveLines: 4096

! Selections are available via the standard clipboard
XTerm*selectToClipboard: false

! Fix backspace behavior
XTerm*vt100.backarrowKey: false

! Custom Key Bindings for copy and paste
XTerm*vt100*translations:      #override \n\
Shift <Key>Insert:  insert-selection(CLIPBOARD) \n\
Ctrl <Key>Insert:   copy-selection(CLIPBOARD) \n\
Ctrl Shift <Key>C:  copy-selection(CLIPBOARD) \n\
Ctrl Shift <Key>V:  insert-selection(CLIPBOARD)

(原本我將 XTerm*selectToClipboard 設為 true,這樣只要選取文字就會自動複製到 clipboard。 不過後來我決定採取更手動的方式,所以使用 custom key bindings 的方式,設定 Ctrl+Insert 用來複製文字; 並且加入 Shfit+Ctrl+C 與 Shfit+Ctrl+V 這組按鍵。)

如果要立即生效,使用下列的指令:

xrdb -merge ~/.Xresources

XTerm 讀取環境變數 SHELL 作為執行命令時的命令列介面程式,如果需要使用指定的 SHELL, 可以設定環境變數 SHELL 以後再執行 xterm:

SHELL=/usr/bin/tcsh xterm

Mozilla Firefox

Firefox 支援佈景主題 (Themes) 與內建 PDF.js。下面是我目前有在使用的套件:

  • uBlock Origin: 高效率的廣告攔截工具
  • Decentraleyes: 用於保護使用者免遭集中的內容交付網路(CDN)的跟蹤
  • Privacy Badger: 用於阻止那些不遵守 DNT 協定的廣告商跟蹤行為
  • Flagfox: 以旗幟圖示顯示出目前網頁伺服器實際位置的擴充套件
  • Livemarks: Get auto-updated RSS feed bookmark folders

Thunderbird

下面是 gmail 的設定資料,Thunderbird 本身已經有設定資料,只是用來檢查設定是否正確。

內送郵件伺服器 (IMAP)

  • 伺服器名稱 (Host):imap.gmail.com
  • 通訊埠 (Port):993
  • 安全性加密類型:SSL 或 TLS
  • 使用者名稱 (Username):Gmail 電子郵件地址
  • 密碼 (Password):Gmail 密碼或應用程式密碼(若已開啟兩步驟驗證)

外寄郵件伺服器 (SMTP)

  • 伺服器名稱 (Host):smtp.gmail.com
  • 通訊埠 (Port):465(搭配 SSL)
  • 安全性加密類型:TLS 或 SSL
  • 需要驗證:勾選「我的外寄伺服器 (SMTP) 需要驗證」(設定與內送相同)

從 2025 年開始,Google 帳戶已全面不支援僅用「使用者名稱與密碼」登入的低安全性第三方應用程式, 第三方郵件端需改用 OAuth 2.0 或「應用程式密碼」來進行身分驗證。

下面是 Account Settings 要注意的部份。
在 Server Settings 中,不要勾選 Clean up ("Expunge") Inbox on Exit 與 Empty Trash on Exit。
在 Copies & Folders 中,不要勾選 Place a copy in 選項, 在 Drafts and Templates 的 Keep message drafts in: 選項中,選擇 Other, Drafts on [Your Gmail address]。
在 Spam Settings,不要勾選 Enable adaptive junk mail controls for this account。


下面是 hotmail 的設定資料,Thunderbird 本身已經有設定資料,只是用來檢查設定是否正確。

內送郵件伺服器 (IMAP)

  • 伺服器名稱 (Host):outlook.office365.com
  • 通訊埠 (Port):993
  • 加密方法:SSL / TLS
  • 使用者名稱 (Username):Hotmail 電子郵件地址
  • 密碼 (Password):Hotmail 密碼或應用程式密碼(若已開啟兩步驟驗證)

外寄郵件伺服器 (SMTP)

  • 伺服器名稱 (Host):smtp-mail.outlook.com
  • 通訊埠 (Port):587
  • 加密方法:STARTTLS
  • 驗證方式:OAuth2

注意需要啟用 IMAP 功能:登入 Outlook 網頁版,前往 設定 > 郵件 > 轉寄和 IMAP,確認已勾選 開啟 IMAP 並儲存。

下面是 Account Settings 要注意的部份。
在 Copies & Folders 中,在 Place a copy in 選項 選擇 Other 選項。

SciTE

選單 Options > Open User Options File, 然後加入要設定的選項(可以先複製 global options 的內容到此處再設定)。 User Option file 檔案為家目錄下的 .SciTEUser.properties。 下面只是目前修改的結果,主要修改使用者介面、code page 以及字型設定。

# Window sizes and visibility
position.maximize=1
#position.tile=1
#full.screen.hides.menu=1
#minimize.to.tray=1
#icon.busy=1
split.vertical=0
#split.wide=1
#output.horizontal.size=200
#output.vertical.size=60
#output.initial.hide=1
#horizontal.scrollbar=0
#horizontal.scroll.width=10000
#horizontal.scroll.width.tracking=0
#output.horizontal.scrollbar=0
#output.horizontal.scroll.width=10000
#output.horizontal.scroll.width.tracking=0
#output.scroll=0
#error.select.line=1
#end.at.last.line=0
tabbar.visible=1
#tabbar.hide.one=1
#tabbar.hide.index=1
#tabbar.multiline=1
toolbar.visible=1
#toolbar.usestockicons=1
#toolbar.large=1
#menubar.detachable=1
#undo.redo.lazy=1
undo.selection.history=1
statusbar.visible=1

# Sizes and visibility in edit pane
line.margin.visible=1
line.margin.width=2+

view.whitespace=1

check.if.already.open=1
#temp.files.sync.load=1
default.file.ext=.txt
#source.default.extensions=.h|.cxx|.bat
title.full.path=1
open.dialog.in.file.directory=1
save.check.modified.time=1

# Indentation
tabsize=4
indent.size=4
use.tabs=1

# Wrapping of long lines
wrap=1
wrap.style=2

# Behaviour
#eol.mode=LF
eol.auto=1
clear.before.execute=1

# Unicode
code.page=65001
output.code.page=65001

# Give symbolic names to the set of fonts used in the standard styles.
font.base=$(font.monospace)
font.small=font:Noto Sans Mono CJK TC, size:10
font.comment=$(font.monospace)
font.code.comment.box=$(font.monospace)
font.code.comment.line=$(font.monospace)
font.code.comment.doc=$(font.monospace)
font.code.comment.nested=$(font.monospace)
font.text=$(font.monospace)
font.text.comment=$(font.monospace)
font.embedded.base=$(font.monospace)
font.embedded.comment=$(font.monospace)
font.monospace=font:Noto Sans Mono CJK TC, size:12
font.monospace.small=font:Noto Sans Mono CJK TC, size:10
font.vbs=$(font.monospace)

Tips

OpenGL Software render

如果因為 OpenGL 版本的關係, 需要使用 Mesa 的 OpenGL Software render 實作(或者是因為應用程式所使用的 OpenGL 版本的關係),使用下列的環境變數設定:

export __GLX_VENDOR_LIBRARY_NAME=mesa
export LIBGL_ALWAYS_SOFTWARE=1 

加入字型

英文字體分類通常可以分為三類:Serif(襯線體)、Sans-serif(無襯線體)與 Monospace(等寬字體)。 而中文最常用的明體(與宋體)、黑體、仿宋、楷體這四大經典印刷字體,黑體是無襯線體字型, 明體(與宋體) 則是襯線體字型。

因為漢字文字眾多,所以會有缺字的問題, Google Noto 字型已經讓自由軟體環境缺字的情況大幅度減少,已可以滿足大多數的使用情境。 如果要在 openSUSE 使用 zypper 安裝 Google Noto 字型繁體中文的部份:

sudo zypper in google-noto-sans-tc-fonts google-noto-sans-tc-mono-fonts google-noto-serif-tc-fonts

目前就我所知,支援到 Unicode 17.0 全部漢字的字型為 Jigmo(字雲)。 在 Linux 將字型加入個人使用環境的方式如下:

  • 首先把字型複製到 ~/.local/share/fonts/ 目錄下面
  • 執行 fc-cache -v -f

而後使用 fc-list 配合 grep 觀察是否有成功安裝。

Clear the GTK/FreeDesktop History File

使用下列的指令:

rm -f ~/.local/share/recently-used.xbel
touch ~/.local/share/recently-used.xbel