本文是 24 天 Linux 桌面特別系列的一部分。如果老式的蘋果電腦是用開源 POSIX 構建的呢?你可以通過構建 Macintosh 式的虛擬視窗管理器來實現。
想象一下穿越到另一段平行歷史,Apple II GS 和 MacOS 7 是基於開源 POSIX 構建的,它使用了與現代 Linux 相同的所有慣例,例如純文字組態檔和模組化系統設計。這樣的作業系統將為其使用者帶來什麼?你可以使用 Macintosh 式的虛擬視窗管理器(MLVWM)來回答這些問題(甚至更多!)。
MLVWM 安裝並不容易,並且可能不在你的發行版軟體倉庫中。如果你有時間理解翻譯不佳的 README 檔案,編輯一些組態檔,收集並調整一些舊的 .xpm 圖片,編輯一兩個 Xorg 選項,那麼你就可以體驗 MLVWM。不管怎麼說,這是一個新奇的視窗管理器,其最新版本可以追溯到 2000 年。
要編譯 MLVWM,你必須安裝 imake,它提供了 xmkmf
命令。你可以從發行版的軟體倉庫中安裝 imake,也可以直接從 Freedesktop.org 獲得。假設你已經有 xmkmf
命令,請進入包含 MLVWM 原始碼的目錄,然後執行以下命令進行構建:
$ xmkmf -a$ make
構建後,編譯後的 mlvwm
二進位制檔案位於 mlvwm
目錄中。將其移動到你的 PATH 的任何位置:
$ mv mlvwm/mlvwm /usr/local/bin/
現在已經安裝好 MLVWM,但是如果不調整幾個組態檔並仔細放好所需的影象檔案,它將無法正確啟動。範例組態檔位於你下載的原始碼的 sample_rc
目錄中。將檔案 Mlvwm-Netscape
和 Mlvwm-Xterm
複製到你的主目錄:
$ cp sample_rc/Mlvwm-{Netscape,Xterm} $HOME
將 Mlvwmrc
改名為 $HOME/.mlvwmrc
(是的,即使範例檔案的名稱看似是大寫字母,但你也必須使用小寫的 “m”):
$ cp sample_rc/Mlvwmrc $HOME/.mlvwmrc
開啟 .mlwmrc
並找到第 54-55 行,它們定義了 MLVWM 在選單和 UI 中使用的畫素圖的路徑(IconPath
):
# Set icon search path. It needs before "Style".IconPath /usr/local/include/X11/pixmaps:/home2/tak/bin/pixmap
調整路徑以匹配你填充影象的路徑(我建議使用 $HOME/.local/share/pixmaps
)。MLVWM 不提供畫素圖,因此需要你提供構建桌面所需圖示。
即使你有位於系統其他位置的畫素圖(例如 /usr/share/pixmaps
),也要這樣做,因為你需要調整畫素圖的大小,你可能也不想在系統範圍內執行此操作。
# Set icon search path. It needs before "Style".IconPath /home/seth/.local/share/pixmaps
你已將 .local/share/pixmaps
目錄定義為畫素圖源路徑,但是該目錄和影象均不存在。建立目錄:
$ mkdir -p $HOME/.local/share/pixmaps
現在,組態檔將影象分配給選單項和 UI 元素,但是系統中不存在這些影象。要解決此問題,請通讀組態檔並找到每個 .xpm 影象。對於設定中列出的每個影象,將具有相同檔名的影象(或更改組態檔中的檔名)新增到你的 IconPath 目錄。
.mlvwmrc
檔案的註釋很好,因此你可以大致瞭解要編輯的內容。無論如何,這只是第一步。你可以隨時回來更改桌面外觀。
這有些例子。
此程式碼塊設定螢幕左上角的圖示:
# Register the menuMenu Apple, Icon label1.xpm, Stick
label1.xpm
影象實際上在原始碼的 pixmap
目錄中,但我更喜歡使用來自 /usr/share/pixmaps
的 Penguin.xpm
(在 Slackware 上)。無論使用什麼,都必須將自定義畫素圖放在 ~/.local/share/pixmaps
中,並在設定中更改畫素圖的名稱,或者重新命名畫素圖以匹配組態檔中當前的名稱。
此程式碼塊定義了左側選單中列出的應用:
"About this Workstation..." NonSelect, Gray, Action About"" NonSelect"Terminal" Icon mini-display.xpm, Action Exec "kterm" exec kterm -ls"Editor" Action Exec "mule" exec mule, Icon mini-edit.xpm"calculator" Action Exec "xcal" exec xcalc, Icon mini-calc.xpmEND
通過遵循與組態檔中相同的語法,你可以自定義畫素圖並將自己的應用新增到選單中(例如,我將 mule
更改為 emacs
)。這是你在 MLVWM GUI 中開啟應用的入口,因此請列出你要快速存取的所有內容。你可能還希望包括指向 /usr/share/applications
資料夾的快捷方式。
"Applications" Icon Penguin.xpm, Action Exec "thunar /usr/share/applications" exec thunar /usr/share/applications
完成編輯組態檔並將自己的影象新增到 IconPath 目錄後,必須將所有畫素圖的大小都調整為大約 16x16 畫素。(MLVWM 的預設設定不一致,因此存在變化空間。)你可以使用 ImageMagick 進行批次操作:
$ for i in ~/.local/share/mlvwm-pixmaps/*xpm ; do convert -resize '16x16^' $i; done
最簡單的執行 MLVWM 的方式是讓 Xorg 完成大部分工作。首先,你必須建立一個 $HOME/.xinitrc
檔案。我從 Slackware 複製了這個,它也是從 Xorg 拿來的:
#!/bin/sh# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $userresources=$HOME/.Xresourcesusermodmap=$HOME/.Xmodmapsysresources=/etc/X11/xinit/.Xresourcessysmodmap=/etc/X11/xinit/.Xmodmap# merge in defaults and keymapsif [ -f $sysresources ]; then xrdb -merge $sysresourcesfiif [ -f $sysmodmap ]; then xmodmap $sysmodmapfiif [ -f $userresources ]; then xrdb -merge $userresourcesfiif [ -f $usermodmap ]; then xmodmap $usermodmapfi# Start the window manager:if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then exec ck-launch-session /usr/local/bin/mlvwmelse exec /usr/local/bin/mlvwmfi
根據此檔案,startx
命令的預設操作是啟動 MLVWM。但是,你的發行版可能對於圖形伺服器啟動(或被終止以重新啟動)時會發生的情況有其他做法,因此此檔案可能對你沒有什麼幫助。在許多發行版上,你可以新增 .desktop 檔案到 /usr/share/xsessions
中,以將其列在 GDM 或 KDM 選單中,因此建立名為 mlvwm.desktop
的檔案並輸入:
[Desktop Entry]Name=MlvwmComment=Macintosh-like virtual window managerExec=/usr/local/bin/mlvwmTryExec=ck-launch-session /usr/local/bin/mlvwmType=Application
從桌面對談登出並重新登入到 MLVWM。預設情況下,對談管理器(KDM、GDM 或 LightDM,具體取決於你的設定)將繼續登入到以前的桌面,因此在登入之前必須覆蓋它。
對於 GDM:
對於 SDDM:
如果 MLVWM 無法啟動,請嘗試安裝 XDM,這是一個輕量級對談管理器,它不會查詢 /usr/share/xsessions
的內容,而是執行經過身份驗證使用者的所有 .xinitrc
操作。
MLVWM 桌面未經打磨、不完美、模仿到位且充滿樂趣。你看到的許多選單項都是未實現的,但你可以使它們變得活躍且有意義。
這是一次讓你時光倒流、改變歷史,讓老式蘋果系列電腦成為開源堡壘的機會。成為一名修正主義者,設計你自己的復古蘋果桌面,最重要的是,它有樂趣。