aar*_*vin 6 linux haskell xmonad ubuntu-12.04
XMonad的新手并且热爱它到目前为止.我有一个相当普通/常规的XMonad设置,我遇到dmenu问题.当我登录并点击时mod+p
没有任何反应.如果我再打开一个终端和命中xmonad --restart
,然后mod+p
,dmenu
将是工作.
我一定有问题xmonad.hs
吗?我尝试了XMonad的非自定义设置,并且工作正常(即dmenu
登录后正在工作).
我的问题:
xmonad.hs
吗?dmenu
除非我,为什么不行xmonad --restart
?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)
谢谢你的帮助!
我有一种模糊的感觉,当你第一次启动 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 -- xmonad
或xinit -- /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。