6

XMonad は初めてで、これまでのところ気に入っています。私はかなりバニラ/通常の XMonad セットアップを使用しており、dmenuに問題があります。ログインしてヒットしてmod+pも何も起こりません。xmonad --restart次にmod+p、ターミナルを開いてヒットdmenuすると、動作します。

私の何かが間違っているに違いないxmonad.hs?XMonad のカスタマイズなしのセットアップを試してみたところ、正常に動作していました (つまりdmenu、ログイン後に動作していました)。

私の質問:

  1. 私に何か問題がありますxmonad.hsか?
  2. 私がしないとうまくいかないdmenuのはなぜxmonad --restartですか?
  3. xmonad.startxmonad の起動時に dmenu が正しくロードされない原因となるものはありますか?

これが私のファイルです(overthinkから借用)。:

xmonad.hs

import System.IO
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.SetWMName
import XMonad.Util.EZConfig(additionalKeys)
import XMonad.Util.Run(spawnPipe)
import XMonad.Hooks.ICCCMFocus

myWorkspaces = ["1", "2", "3", "4", "5", "6"] 

myManageHook = composeAll
  [ className =? "Gimp" --> doFloat
  , className =? "Vncviewer" --> doFloat
  ]

main = do
  xmproc <- spawnPipe "/usr/bin/xmobar /home/aaron/.xmobarrc"
  xmonad $ defaultConfig { terminal = "urxvt" }
      { manageHook = manageDocks <+> manageHook defaultConfig
      , startupHook = takeTopFocus >> setWMName "LG3D" -- fix for Java apps
      , layoutHook = avoidStruts  $  layoutHook defaultConfig
      , logHook = dynamicLogWithPP xmobarPP
                      { ppOutput = hPutStrLn xmproc
                      , ppTitle = xmobarColor "green" "" . shorten 50
                      }
      , modMask = mod4Mask     -- Rebind Mod to the Windows key
      , workspaces = myWorkspaces
      } `additionalKeys`
      [ ((mod4Mask .|. shiftMask, xK_l), spawn "gnome-screensaver-command --lock") ]

xmonad.desktop

[Desktop Entry]
Encoding=UTF-8
Name=Xmonad-****
Comment=Ligthweight, pretentious tiling window manager
Exec=xmonad.start
Icon=xmonad.png
Type=XSession

xmonad.start

#!/bin/bash

xrdb -merge .Xresources

trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --widthtype percent --width 10 --heighttype pixel --height 20 --transparent true --alpha 0 --tint 0x333333 &

# settings daemon is a prereq for some other gnome apps
gnome-settings-daemon &

# Network monitor (connections, vpns) applet in tray
if [ -x /usr/bin/nm-applet ] ; then
    nm-applet --sm-disable &
fi

# volume indicator in tray
if [ -x /usr/bin/gnome-sound-applet ] ; then
  gnome-sound-applet &
fi

eval $(gnome-keyring-daemon --start)
export GNOME_KEYRING_SOCKET
export GNOME_KEYRING_PID

#exec xmonad
dbus-launch --exit-with-session xmonad

ご協力いただきありがとうございます!

4

2 に答える 2

1

xmonad を最初に起動すると、1 つの実行可能ファイルと構成が使用され、再コンパイルすると「正しい」ものが見つかるという漠然とした感覚があります。xmonad.desktop で、Exec=行を変更して、xmonad.start へのフル パスを含めてみてください。

Exec=/full/path/to/xmonad.start

または、xmonad.start の最後の行を変更して、xmonad 実行可能ファイルへのフル パスを含めてみてください。

dbus-launch --exit-with-session /full/path/to/xmonad

もう 1 つ試すことは、最後の 2 行を次のように変更することです。

exec xmonad
#dbus-launch --exit-with-session xmonad

これらのオプションのいずれかによって、表示されている動作が変更された場合、それが手がかりになる可能性があります。


編集: 何かを学ぶことができるかどうかを確認するために、別の起動方法を試してみましょう。ウィンドウマネージャーを起動せず、代わりにプレーンターミナルにログインしてください。コマンドxinit -- xmonadまたはを入力しxinit -- /full/path/to/xmonadます。

.xinitrcまたは、 1 行を含むファイルを作成します。

xmonad

次に、コマンドを入力しstartxます。

Xmonad FAQ でもこれを見つけました。これは役立つかもしれません。

2.6 エラーが見つからないか、xmonad.hs への変更が反映されない

ghc と xmonad 実行可能ファイルの両方が、X を起動する環境 PATH にあることを確認します。または、それらを PATH に既に存在する場所にシンボリック リンクします。ghc-pkg のリストは、ghc、xmonad、X11 などを括弧なしで表示する必要があります。たとえば、{xmonad} は不適切です。ghc-pkg チェックは、一貫性のない依存関係やその他の登録の問題があるかどうかを教えてくれます。

mod-q アクションは xmonad バイナリを呼び出してそれ自体を再コンパイルするため、ディスプレイ マネージャーが /path/to/xmonad で起動している場合は、xmonad.hs mod-q バインディングを編集してフル パスを使用し、再起動する必要があります。 X (または新しいバージョンでは 'xmonad --restart' を使用) を使用して、新しい mod-q フルパス バインディングで xmonad を再起動します。

于 2012-12-20T17:45:30.777 に答える
1

アップデート:

問題を解決したと思われる修正が変更されています。

exec xmonad

に:

touch ~/.xmonad/xmonad.hs
exec xmonad

/usr/local/bin/xmonad.start (or .xinitrc/.xsession if xmonad is started using startx)

年:

変更はどうですか:

} `additionalKeys`
 [ ((mod4Mask .|. shiftMask, xK_l), spawn "gnome-screensaver-command --lock") ]

に:

} `additionalKeys`
  [ ((mod4Mask .|. shiftMask, xK_l), spawn "gnome-screensaver-command --lock") 
  , ((mod4Mask, xK_p), spawn "dmenu_run -b -nb black") ]

私はあなたと同じ問題を抱えていました。それは、次のようなものを使用したためです。

((mod4Mask, xK_p), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")

何らかの理由で、「xmonad --restart」の後でのみ正しく機能します。バインディングを単純に「dmenu-run」に変更すると、問題が修正されました。ただし、あなたの場合、バインディングがまったくないようです。

于 2013-03-05T04:37:25.387 に答える