想象一下进入另一个替代历史,在该历史中,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目录中。 将其移动到路径中的任何位置以进行安装:
$ 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目录定义为pixmap的源,但是该目录和图像都还不存在。 创建目录:
$ 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 (在Slackware上)使用Penguin.xpm 。 无论使用什么,都必须将自定义像素图放置在〜/ .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进行安装和运行的最简单方法是让Xorg完成大部分工作。 首先,您必须创建一个$ HOME / .xinitrc文件。 我是从Slackware借来的,而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禁止的操作。
这是您时光倒流,更改历史记录以及使老式的Apple计算机产品线成为开源堡垒的机会。 成为修正主义者,设计自己的复古Apple台式机,最重要的是,玩得开心。
翻译自: https://opensource.com/article/19/12/linux-mlvwm-desktop