如何在 11.10 中的 GNOME Classic 会话中使用自定义窗口管理器

如何在 11.10 中的 GNOME Classic 会话中使用自定义窗口管理器

我无法让 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

相关内容