我无法让 XMonad 在 11.10(x64,全新安装)中使用 gnome fallback 会话运行。我尝试调整了
http://markhansen.co.nz/xmonad-ubuntu-lucid/
和
http://markhansen.co.nz/xmonad-ubuntu-oneiric/
但没有成功。如果有人有想法,我很乐意听听。
答案1
如何在 11.10 中的 GNOME Classic 会话中使用自定义窗口管理器
以 sawfish 窗口管理器为例(抱歉,我不使用 xmonad)。
1. 修复 gnome-classic.session
似乎有 一个错误 在 gnome-classic.session 中。修复方法如下:
直接编辑系统文件 /usr/share/gnome-session/sessions/gnome-classic.session 或在主目录中复制:
mkdir ~/.config/gnome-session/sessions
cp -ai /usr/share/gnome-session/sessions/gnome-classic.session ~/.config/gnome-session/sessions/
进行以下更改:
[GNOME Session]
Name=GNOME Classic
RequiredComponents=gnome-panel;gnome-settings-daemon;
-RequiredProviders=windowmanager;notifications;
+RequiredProviders=windowmanager;
DefaultProvider-windowmanager=gnome-wm
DefaultProvider-notifications=notify-osd
IsRunnableHelper=/usr/lib/gnome-session/gnome-session-check-accelerated
FallbackSession=gnome-fallback
DesktopName=GNOME
2.1. 备选方案 1:在 ~/.gnomerc 中设置 WINDOW_MANAGER
2.1.a. 创建/编辑 ~/.gnomerc 并添加以下内容:
export WINDOW_MANAGER=sawfish
将本例中的“sawfish”替换为您要使用的窗口管理器。如果您现在使用“GNOME Classic”会话登录,您将获得您选择的窗口管理器。
2.1.b. 启动更快:
如果使用上述解决方案登录时遇到 30 秒延迟,则以下步骤将解决该问题(这可能只是锯鳐问题)。
制作启动脚本,例如〜/ bin / my-gnome-wm:
#!/bin/bash
sawfish &
使其可执行:
chmod u+x ~/bin/my-gnome-wm
将 ~/.gnomerc 更改为:
export WINDOW_MANAGER="$HOME/bin/my-gnome-wm"
2.2. 替代方案 2:使用 sawfish.desktop
2.2.a. 再次编辑 gnome-classic.session:
[GNOME Session]
Name=GNOME Classic
RequiredComponents=gnome-panel;gnome-settings-daemon;
RequiredProviders=windowmanager;
-DefaultProvider-windowmanager=gnome-wm
+DefaultProvider-windowmanager=sawfish
DefaultProvider-notifications=notify-osd
IsRunnableHelper=/usr/lib/gnome-session/gnome-session-check-accelerated
FallbackSession=gnome-fallback
DesktopName=GNOME
将本例中的“sawfish”替换为您要使用的窗口管理器。这需要在正确的位置安装“sawfish.desktop”之类的文件,例如 /usr/share/applications/sawfish.desktop。
2.2.b. 启动更快:
如果使用上述解决方案登录时遇到 30 秒延迟,则以下步骤将解决该问题(这可能只是锯鳐问题)。
直接编辑系统文件 /usr/share/applications/sawfish.desktop 或在你的主目录中复制:
mkdir ~/.local/share/applications
cp -ai /usr/share/applications/sawfish.desktop ~/.local/share/applications/
进行以下更改:
[Desktop Entry]
Name=Sawfish
Name[el]=Ðñéïíüøáñï (Sawfish)
Type=Application
-Exec=sawfish
+Exec=bash -c 'sawfish&'
TryExec=sawfish
Terminal=false
NoDisplay=true
X-GNOME-WMName=Sawfish
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=windowmanager
X-GNOME-Autostart-Notify=true
笔记
使用 DefaultProvider-windowmanager=gnome-wm 并且无需在 .gnomerc 中设置 WINDOW_MANAGER,我们似乎可以同时获得 Unity 和 GNOME Classic,并且相互叠加!
~/.xsession-errors 中的这个条目可能说明了为什么会有 30 秒的延迟:
gnome-session[23870]: WARNING: Application 'gnome-wm.desktop' failed to register before timeout
为什么要创建 my-gnome-wm 脚本?因为这似乎不起作用:
export WINDOW_MANAGER='/usr/bin/sawfish&'
这也不行:
export WINDOW_MANAGER='bash -c "/usr/bin/sawfish&"'
答案2
快速修复:登录,然后执行killall metacity & xmonad
。
它似乎有效,但我遇到间歇性的键盘和鼠标问题,这可能与该解决方案有关,也可能无关。
此外,假设这有效,您可能认为我可以直接在 /usr/share/gnome-session/sessions/gnome-classic.session 中交换窗口管理器的值,但是当我更改该值时,什么也没有发生。
答案3
对于较新的 Ubuntu 版本(例如 15.04),这存储库可用。要安装所需的文件:
sudo add-apt-repository ppa:gekkio/xmonad
sudo apt-get update
sudo apt-get install gnome-session-xmonad
对于 Ubuntu 12.04,它几乎可以“开箱即用”——您需要手动安装 gnome 面板:
sudo apt-get 安装 gnome-panel
然后您就可以从登录屏幕使用“GNOME with Xmonad”会话登录。
(来源:http://www.haskell.org/haskellwiki/Xmonad/Using_xmonad_in_Gnome#Ubuntu_Precise)