使用 Linux MLVWM 打造復古蘋果桌面

2019-12-27 20:49:00

本文是 24 天 Linux 桌面特別系列的一部分。如果老式的蘋果電腦是用開源 POSIX 構建的呢?你可以通過構建 Macintosh 式的虛擬視窗管理器來實現。

想象一下穿越到另一段平行歷史,Apple II GS 和 MacOS 7 是基於開源 POSIX 構建的,它使用了與現代 Linux 相同的所有慣例,例如純文字組態檔和模組化系統設計。這樣的作業系統將為其使用者帶來什麼?你可以使用 Macintosh 式的虛擬視窗管理器(MLVWM)來回答這些問題(甚至更多!)。

安裝 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-NetscapeMlvwm-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/pixmapsPenguin.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

最簡單的執行 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

打造自己的復古蘋果

MLVWM 桌面未經打磨、不完美、模仿到位且充滿樂趣。你看到的許多選單項都是未實現的,但你可以使它們變得活躍且有意義。

這是一次讓你時光倒流、改變歷史,讓老式蘋果系列電腦成為開源堡壘的機會。成為一名修正主義者,設計你自己的復古蘋果桌面,最重要的是,它有樂趣。