XMonad:dmenu在启动时没有启动/生成

aar*_*vin 6 linux haskell xmonad ubuntu-12.04

XMonad的新手并且热爱它到目前为止.我有一个相当普通/常规的XMonad设置,我遇到dmenu问题.当我登录并点击时mod+p没有任何反应.如果我再打开一个终端和命中xmonad --restart,然后mod+p,dmenu将是工作.

我一定有问题xmonad.hs吗?我尝试了XMonad的非自定义设置,并且工作正常(即dmenu登录后正在工作).

我的问题:

  1. 我有什么问题xmonad.hs吗?
  2. dmenu除非我,为什么不行xmonad --restart
  3. 可能会失败,xmonad.start这会阻止dmenu在启动xmonad时正确加载?

这是我的文件(借用过度思考).:

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") ]
Run Code Online (Sandbox Code Playgroud)

xmonad.desktop

[Desktop Entry]
Encoding=UTF-8
Name=Xmonad-****
Comment=Ligthweight, pretentious tiling window manager
Exec=xmonad.start
Icon=xmonad.png
Type=XSession
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

mhw*_*bat 1

我有一种模糊的感觉,当你第一次启动 xmonad 时,它使用一个可执行文件+配置,然后当你重新编译时,它会找到“正确的”一个。在 xmonad.desktop 中,尝试更改该Exec=行以包含 xmonad.start 的完整路径。

Exec=/full/path/to/xmonad.start
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试更改 xmonad.start 中的最后一行以包含 xmonad 可执行文件的完整路径。

dbus-launch --exit-with-session /full/path/to/xmonad
Run Code Online (Sandbox Code Playgroud)

另一件要尝试的事情是将最后两行更改为:

exec xmonad
#dbus-launch --exit-with-session xmonad
Run Code Online (Sandbox Code Playgroud)

如果这些选项中的任何一个改变了您所看到的行为,这可能会给我们提供线索。


编辑:让我们尝试一种不同的启动方式,看看我们是否可以学到任何东西。不要启动任何窗口管理器,而是登录到普通终端。键入命令xinit -- xmonadxinit -- /full/path/to/xmonad.

.xinitrc或者,创建其中包含一行的文件:

xmonad
Run Code Online (Sandbox Code Playgroud)

然后键入命令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。