.png)
14.10 にアップグレードした後、gnome-settings-daemon を /usr/share/gnome-session/sessions/xmonad.session に正しくロードできません。同じ問題を抱えている人はいますか?
答え1
Jianingy の回答に基づいた、より詳細な解決策を以下に示します。Ubuntu 14.10 にアップグレードした後に発生したいくつかの問題を修正します。修正される問題は次のとおりです。
- マルチメディアキーが機能しない
- Gnome コントロール センターの表示設定が機能しない
DesktopName=Unity
を追加する必要があります/usr/share/gnome-session/sessions/xmonad.session
。
[GNOME Session]
Name=Xmonad/GNOME
RequiredComponents=gnome-settings-daemon;gnome-panel;xmonad
DesktopName=Unity
また、Ubuntu 14.10 の変更点として、の代わりにdbus-send
を使用する必要があります。これを my に追加し、 main を として定義しました。--print-reply=literal
--print-reply=string
xmonad.hs
main = xmonad $ gnomeConfig2
import XMonad.Config.Desktop
import XMonad.Util.Run (safeSpawn)
import qualified Data.Map as M
import System.Environment (getEnvironment)
data RescreenToggleState = RescreenToggleState Bool deriving Typeable
instance ExtensionClass RescreenToggleState where
initialValue = RescreenToggleState True
gnomeConfig2 = desktopConfig
{ terminal = "gnome-terminal"
, keys = gnomeKeys <+> keys desktopConfig
, startupHook = gnomeRegister2 >> startupHook desktopConfig }
gnomeKeys (XConfig {modMask = modm}) = M.fromList $
[ ((modm, xK_p), gnomeRun)
, ((modm .|. shiftMask, xK_q), spawn "gnome-session-save --kill") ]
-- | Register xmonad with gnome. 'dbus-send' must be in the $PATH with which
-- xmonad is started.
--
-- This action reduces a delay on startup only only if you have configured
-- gnome-session>=2.26: to start xmonad with a command as such:
--
-- > gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type string
gnomeRegister2 :: MonadIO m => m ()
gnomeRegister2 = io $ do
x <- lookup "DESKTOP_AUTOSTART_ID" `fmap` getEnvironment
whenJust x $ \sessionId -> safeSpawn "dbus-send"
["--session"
,"--print-reply=literal"
,"--dest=org.gnome.SessionManager"
,"/org/gnome/SessionManager"
,"org.gnome.SessionManager.RegisterClient"
,"string:xmonad"
,"string:"++sessionId]
答え2
はい、解決策を見つけました。
まず、14.10 から、多くの Unity および gnome アプリケーション構成 (/usr/share/applications および /etc/xdg/autostart 内の *.desktop) に "OnlyShowIn=Unity" が含まれるようになりました。したがって、これらのアプリケーションを実行できるようにするには、/usr/share/gnome-session/sessions/xmonad.session に desktopname=unity を追加する必要があります。
次に、コマンド 'dbus-send --print-reply=string' は、'dbus-send --print-reply=literal' に変更する必要があります。したがって、古い xmonad gnomeConfig は xmonad を wm として登録できません。dbus-send コマンドを =string から =literal に変更する必要があります。
答え3
- https://gist.github.com/bewest/46b849da04684f0ce401
- http://blog.ezyang.com/2014/12/ubuntu-utopic-upgrade-xmonad/コメントページ-1/
構文--print-reply=string
によりエラーが発生します。登録する必要があるアプリケーションの名前は ではなく ですxmonad
。xmonad.desktop
結局、~/.xmonad/hooks
次のコマンドを含むファイルを作成しました。
dbus-send --session --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RegisterClient string:xmonad.desktop string:$DESKTOP_AUTO_START_ID
以前の修正も見つかりました。設定により、DesktopName=Unity
がgnome-control-center
適切に使用されるようになります。
答え4
「xmonad が登録に失敗する」問題を回避する非常に簡単な方法があります (他の回答では、xmonad フックを使用するか、 を記述することで対処されていますgnomeRegister2
)。ファイルで、を にxmonad.desktop
置き換えます。これにより、起動が非常に速くなります。アイデアはわかりました。Exec=xmonad
Exec=sh -c "xmonad &"
ここ-- しかし、他のものを壊してしまう可能性があります。
そのDesktopName=Unity
部分は依然として不可欠です。
更新 (2015 年 11 月 16 日)
私はUbuntuをアップグレードするときにいつもXMonad + Gnomeと戦っています。私の設定ファイルはGitHubで利用可能、私が最近どのようにして XMonad と Gnome をうまく連携させたかをご覧になりたい方がいらっしゃいましたら。
2015年11月16日現在、重要なファイルは
~/.xsession
:https://github.com/ntc2/conf/blob/master/dot.xsession- Gnome
*.desktop
ファイル:https://github.com/ntc2/conf/tree/master/dot.local/share/applications(私はXMonad + Gnomeの設定をホームディレクトリで管理しており、システム*.desktop
ファイルを編集する必要はありません。conf インストール スクリプトこれらのファイルの保存場所については、こちらを参照してください。 - Gnome
*.session
ファイル:https://github.com/ntc2/conf/blob/master/dot.config/gnome-session/sessions/local-xmonad-session.session
Ubuntu 15.04 および 15.10 の場合、最も重要で発見するのが最も困難な変更は、export XDG_CURRENT_DESKTOP=Unity
次のものを追加することでした~/.xsession
。
# Without setting this explicitly, it gets te value "Gnome", which
# makes `unity-settings-daemon` fail to start and we get
# `gnome-settings-daemon` instead. Not sure what this variable does,
# but I got the hint here:
# https://bugzilla.gnome.org/show_bug.cgi?id=729575.
#
# Setting to values other than "Unity" -- e.g. "default", which `env`
# tells me is the value of related variables, or "GNOME-Flashback",
# which is the `DesktopName` I might suspect here -- I get weird
# behavior, e.g. none of the dock items appear in the Gnome panel.
export XDG_CURRENT_DESKTOP=Unity
また、音量キーの押下や画面の明るさ調整などのグラフィカル通知を取得するには、パッケージをインストールする必要がありましたnotify-osd
。