标签: xmonad

xmonad自动切换到应用程序

我非常喜欢xmonad,但有一点会很棒:

如果我打开一个文件gvim -p --remote-tab-silent my-file,它在vim中打开,它始终打开workspace 1,我想自动切换到workspace 1.

我刚刚发现了viewShift-trick,但这只会在gvim生成新内容时更改工作区,因此只是部分地解决了我的问题.

编辑:

感谢Daniel Wagner的评论,我能够做一些研究:

我找到了一个小程序来设置和取消紧急提示:设置.而且xwininifo我可以获得gvim的窗口ID.经过一些试验和错误后,我xprop向我展示了提示标志实际设置了.

GVIMWINID=`xwininfo -tree -root | grep GVIM | cut -d ' ' -f6`
seturgent $GVIMWINID 1
xprop -id $GVIMWINID | grep urgency
Run Code Online (Sandbox Code Playgroud)

现在我补充道

import XMonad.Hooks.UrgencyHook
..
 myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[..
, ((mod4Mask             , xK_x      ), focusUrgent)
..]
..
main = do¬                                                                       
        xmproc <- spawnPipe "/usr/bin/xmobar"¬                                   
        xmonad $ …
Run Code Online (Sandbox Code Playgroud)

haskell xmonad

9
推荐指数
1
解决办法
909
查看次数

XMonad:按下生成键时具有焦点的SpawnOn工作空间

我想让我的程序在屏幕上产生焦点,当它的键绑定被按下而不是在完成加载时当前焦点的屏幕上.

原因: 我目前的设置是Arch Linux + XMonad,我让它在6台显示器上运行.我已经使用XMonad大约一年了,我唯一的问题是需要一段时间才能打开的程序.例如,我第一次开始使用铬时需要3到几秒钟才能加载.我按下我的键绑定chrome,然后转到另一个屏幕做其他事情.但是当镀铬加载时,它会加载到屏幕上,而当前聚焦在屏幕上,而不是在按下生成键绑定时聚焦的屏幕上.

我的哈克尔技能很好......不存在.我以前在Lisp中编程并在C,python和JavaScript上花了很多时间,所以我确定如果需要的话我可以把它拿起来(所以请在答案中明确说明haskell样本).

提前致谢.

linux haskell xmonad

8
推荐指数
1
解决办法
1162
查看次数

使用程序员dvorak键盘布局切换xmonad中的工作区(移位数字)

好吧,我实际上并没有使用Dvorak而是使用Neo2,但是当我使用矩阵型键盘(Truly Ergonomic)时,我也改变了数字.

因此,我的这种结构xmonad.hs不符合人体工程学:

-- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N
--
[((m .|. modMask, k), windows $ f i)
    | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
Run Code Online (Sandbox Code Playgroud)

我想改变这一点,以便能够使用键2到0访问工作区1到9.

我怎么能这样做?我试图改变第三行

    | (i, k) <- zip (XMonad.workspaces conf) [xK_2 .. xK_0]
Run Code Online (Sandbox Code Playgroud)

但后来我无法访问第9个工作区.我该如何改变这个?一个简短的解释会很好,所以要了解一下这个结构(我多年前学过Haskell而忘记了大部分内容).

keyboard ergonomics haskell xmonad

8
推荐指数
1
解决办法
1254
查看次数

xmonad:将所有新窗口移动到当前关注的工作区

我知道可以将某些程序设置为在某些工作空间中生成,如下所示:

myManageHook = composeAll
    [ classname =? "XTerm" --> doShift "3" ]
main = xmonad $ defaultConfig
    { manageHook = myManageHook <+> manageHook defaultConfig }
Run Code Online (Sandbox Code Playgroud)

这样所有的实例Xterm都会在工作区"3"中产生.我想要做的是让所有新程序在工作区中产生,它们在启动时处于焦点,例如,如果我在工作区"1"并启动firefox,则快速切换到工作区"2" ,firefox窗口将保留在工作区"1".

我正在想一些有效的东西

import qualified XMonad.StackSet as W

myManageHook = composeAll
    [ classname =? ".*" --> doShift currentTag ]
main = xmonad $ defaultConfig
    { manageHook = myManageHook <+> manageHook defaultConfig }
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,但希望你能得到这个想法.

我的问题与意图中的这个问题非常相似,但是我希望所有程序都在最初聚焦的工作区中产生,但是我打开它们(dmenu,从终端等)

haskell xmonad xterm

8
推荐指数
0
解决办法
942
查看次数

Xmonad扩展来循环最近的窗口

我觉得xmonad在两个窗口之间来回切换有点尴尬.是否允许这样的扩展(或核心xmonad的一部分)?

例如,我想经常在firefox和emacs之间切换,它们可能不在同一个工作区中.我目前使用gotoMenu通过输入来做这个M-g firefox<cr>,M-g emacs<cr>但这很尴尬,特别是如果有任何一个应用程序的多个实例.理想情况下,我想要一个单一的快捷方式来执行一个动作,比如给焦点到最近最近使用的无焦点窗口,我只需按下来回切换即可.

haskell xmonad

8
推荐指数
1
解决办法
618
查看次数

XMonad mod键在会话期间停止工作

我最近开始在我的Ubuntu 10.04机器上试用XMonad,我有一个主要的抱怨.奇怪的是,我没有发现问题在网络上的其他地方重复.

我的XMonad会话开始超级,但是大约30分钟后,mod键停止工作.如果我然后想要关闭我的电脑...如果我打开一个终端,我可以手动关机,但是否则我一直在使用硬电源按钮关闭我的电脑.

mod键的失败似乎发生在屏幕保护程序激活后,我随后将其取消激活.

我可以从xmonad.hs或其他设置中提供任何进一步的信息

...
, modMask = mod4Mask     -- Rebind Mod to the Windows key
...
Run Code Online (Sandbox Code Playgroud)

提前致谢,

杰米D.

configuration xmonad

7
推荐指数
1
解决办法
1374
查看次数

Xmonad 找不到模块 XMonad(或任何其他)

每当 xmonad 启动、重新启动或重新编译时,我都会收到一条 xmessage:

xmonad.hs:1:8:
Could not find module `XMonad'
 Perhaps you meant
    Monad (needs flag -package haskell98-2.0.0.2)
    CgMonad (needs flag -package ghc-7.6.3)
    DsMonad (needs flag -package ghc-7.6.3)
 Use -v to see a list of the files searched for
Run Code Online (Sandbox Code Playgroud)

这并不能阻止它启动,但我只能在系统重新启动时看到 xmonad 或 xmobar 设置的更新。我目前的 xmonad.hs 只是

import XMonad

main = xmonad defaultConfig
Run Code Online (Sandbox Code Playgroud)

它仍然会产生错误。任何导入其他模块的尝试都会产生类似的结果。我已经从 Arch 存储库安装xmonadxmonad-contrib安装了这两个模块,所以模块应该正确地位于 ghc 搜索路径中,对吗?我试过像其他一些来源建议的那样从 Cabal 重新安装软件包,但它变成了一个完全的混乱,所以我回到了 Arch 存储库,它应该可以工作。从这里去哪里有点不知所措;任何帮助将不胜感激。

编辑:ghc-pkg list xmonad返回

/usr/lib/ghc-7.6.3/packag.conf.d
    xmonad-0.11
/home/decalis/.ghc/x86_64-linux-7.6.3/package.conf.d
Run Code Online (Sandbox Code Playgroud)

ghc-pkg check输出在这里:http : //pastebin.com/BsCPMn8M …

haskell xmonad archlinux

7
推荐指数
2
解决办法
7686
查看次数

xmonad - 使用鼠标按钮6和7切换工作区

我希望能够使用鼠标上的按钮6和7(滚轮两侧的摇杆按钮)移动到上一个和下一个工作区.我猜它有一些关系additionalMouseBindings,如果它跟additionalKeys我一样是金色的.唉,它不是,我不完全了解如何定义新的绑定.天真的:

`additionalMouseBindings`
[ -- get the middle button to switch views
  ((0, button6), spawn "xdotool key super+Down")
, ((0, button7), spawn "xdotool key super+Up")
]
Run Code Online (Sandbox Code Playgroud)

因为对于知道Haskell和xmonad的人来说显而易见的原因是不起作用的.

任何建议的TIA.

haskell xmonad

7
推荐指数
1
解决办法
695
查看次数

有没有办法轻松封装类型堆栈'(f1(f2(f3 .... fn t)))a'为'F t a'?

我一直在撞墙一段时间.我有一堆类型,它们表示基本类型的转换(更具体地说,是XMonad中的布局修饰符).

长话短说,这些类型都很亲切(* -> *) -> * -> *.

我想做的事情,由于我不想在这里讨论的原因,是采取一堆这些转换,并将它们表示为基本类型(实物* -> *)的单一转换.

我的第一个想法是定义一个类型合成运算符

newtype ((f :: (* -> *) -> * -> *) :. (g :: (* -> *) -> * -> *)) l a 
        = Compose (f (g l) a)
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下都有效.但是,给定一个值,比方说v :: f1 (f2 (f3 (... (fn l))) a,我必须应用Compose n-1它来获取v' :: (f1 :. f2 :. ... :. fn) l a,这不是很漂亮,有点烦人.

所以,问题是,有没有办法自动应用,Compose直到我得到我想要的东西?

F.ex.,现在我这样做:

modifyLayout $ Compose . Compose . …
Run Code Online (Sandbox Code Playgroud)

haskell xmonad

7
推荐指数
1
解决办法
115
查看次数

如何在nomachine远程桌面上运行xmonad?

我正在尝试配置NoMachine远程桌面来运行xmonad.我一直遇到的一件事是默认的xmonad 安装说明需要注销并重新登录.在NoMachine等远程桌面应用程序中,无法以用户身份注销 - 只能断开与会话的连接.

我可以选择创建新的Gnome,KDM或XDM桌面,也可以选择自定义会话,例如运行默认的X客户端脚本或启动时的自定义命令.

有没有人有最好的配置经验?

haskell gnome remote-desktop xmonad nomachine

7
推荐指数
1
解决办法
292
查看次数