使用 Linux MLVWM 打造復古蘋果桌面
想像一下穿越到另一段平行歷史,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-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 menu
Menu 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.xpm
END
通過遵循與配置文件中相同的語法,你可以自定義像素圖並將自己的應用添加到菜單中(例如,我將 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/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# Start the window manager:
if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
exec ck-launch-session /usr/local/bin/mlvwm
else
exec /usr/local/bin/mlvwm
fi
根據此文件,startx
命令的默認操作是啟動 MLVWM。但是,你的發行版可能對於圖形伺服器啟動(或被終止以重新啟動)時會發生的情況有其他做法,因此此文件可能對你沒有什麼幫助。在許多發行版上,你可以添加 .desktop 文件到 /usr/share/xsessions
中,以將其列在 GDM 或 KDM 菜單中,因此創建名為 mlvwm.desktop
的文件並輸入:
[Desktop Entry]
Name=Mlvwm
Comment=Macintosh-like virtual window manager
Exec=/usr/local/bin/mlvwm
TryExec=ck-launch-session /usr/local/bin/mlvwm
Type=Application
從桌面會話註銷並重新登錄到 MLVWM。默認情況下,會話管理器(KDM、GDM 或 LightDM,具體取決於你的設置)將繼續登錄到以前的桌面,因此在登錄之前必須覆蓋它。
對於 GDM:
對於 SDDM:
強制啟動
如果 MLVWM 無法啟動,請嘗試安裝 XDM,這是一個輕量級會話管理器,它不會查詢 /usr/share/xsessions
的內容,而是執行經過身份驗證用戶的所有 .xinitrc
操作。
![MLVWM](/data/attachment/album/201912/27/204945bap879hdshhefzmh.jpg "MLVWM")
打造自己的復古蘋果
MLVWM 桌面未經打磨、不完美、模仿到位且充滿樂趣。你看到的許多菜單項都是未實現的,但你可以使它們變得活躍且有意義。
這是一次讓你時光倒流、改變歷史,讓老式蘋果系列電腦成為開源堡壘的機會。成為一名修正主義者,設計你自己的復古蘋果桌面,最重要的是,它有樂趣。
via: https://opensource.com/article/19/12/linux-mlvwm-desktop
作者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive