想想:用eshells,一个la xmonad平铺我的emacs窗口.这可能吗?我可以Mx eshell打开第一个eshell实例,但是将来的调用只关注第一个实例.
我刚刚开始使用haskell和xmonad.我想知道如何配置它,以便如果没有打开窗口,任何键输入将启动dmenu.所以说如果我有一个空白的屏幕并开始键入"firefox",dmenu将以我的"firefox"启动,例如在其中.
非常重要,但如果我能在正确的方向上获得一些指示,那就太好了:)
我想通过使用组合键在动态切换xmobar配置.我天真地将以下内容标记到我的其他关键mods:
, ((controlMask, xK_l), xmproc <- spawnPipe "/usr/bin/xmobar /home/tony/.xmobarLrc")
, ((controlMask, xK_w), xmproc <- spawnPipe "/usr/bin/xmobar /home/tony/.xmobarWrc")
Run Code Online (Sandbox Code Playgroud)
和< - 的编译器barfs.您可以在代码中阅读我的意图.我不是Haskell专家,我正在慢慢地通过lego方法建立我想要的环境,但这在我这里失败了.
我哪里错了?
TIA
我正在使用xmonad(配置最少main = xmonad gnomeConfig{ modMask = mod4Mask, terminal = "gnome-terminal" }),我的计算机有两个显示器,我正在使用xinerama.
这很有效,但是当我将窗口推向屏幕(shift-mod-N)或将焦点移动到屏幕(mod-N)时,我常常对xmonad屏幕到监视器的映射感到惊讶.
此外,配合面板在虚拟屏幕符号上显示窗口符号 - 但有些东西不正确(这些虚拟屏幕似乎有双倍宽度,我猜因为它是一个X屏幕)
什么是正确的心理模型?
(是否有一个魔术键显示当前(聚焦)窗口的屏幕号?)
注意(由以下答案建议):在xmonad术语中,窗口位于工作空间,工作空间映射到(物理)屏幕.
我正在尝试在haskell中设置一个用于代码开发的NixOS VM,并且在基本安装xmonad和emacs时遇到了麻烦.我的相关部分/etc/nixos/configuration.nix是
environment.systemPackages = with pkgs; [
emacs
emacs24Packages.haskellMode
xlibs.xmessage
haskellPackages.haskellPlatform.ghc
haskellPackages.xmobar
haskellPackages.xmonad
haskellPackages.xmonadContrib
haskellPackages.xmonadExtras
];
Run Code Online (Sandbox Code Playgroud)
xmonad:当我尝试编译代码时,xmonad抱怨它无法找到模块XMonad.Util.EZConfig.xmonad.hs使用ghc 编译是可以的,我也可以将模块加载到ghci中.在#nixos频道上,我被告知使用函数ghcWithPackages,但我无法解决问题.此外,我想首先理解为什么会出现这个问题,因为在我看来这是一个非常简单的用例.xmonad.hs我遇到的最小问题是:
import XMonad
import XMonad.Util.EZConfig
main = xmonad $ defaultConfig
{ modMask = mod4Mask
, terminal = "konsole"
}
`additionalKeysP`
[ ("M-e", spawn "emacs")
, ("M-f", spawn "firefox")
]
Run Code Online (Sandbox Code Playgroud)emacs:在安装包haskellmode之后(查看上面的configuration.nix),我无法在emacs中输入haskell-mode.
我把这些问题放在一起,因为我怀疑它们都是由于我对某些事情的根本不理解造成的,所以原因可能很常见.
我最近切换到xmonad,我试图将它拉长一点.我想将终端设置为透明背景(https://wiki.archlinux.org/index.php/Terminal_as_a_transparent_wallpaper).基本上,我需要一个位于每个工作区底部的窗口,该窗口不能移动,平铺或关闭,只有当它是该工作区中唯一打开的窗口时才能获得焦点.到目前为止,我已经设法使窗口无聊以获得我想要的焦点行为,但我不能让它漂浮并保持低于其他一切.有没有办法实现它?或者也许是一种方法可以对窗口进行操作但是可以专注于它来键入命令?
编辑:原来我的问题只是 Xmobar 中的一个临时错误。请参阅已接受的答案。
谷歌上有很多解决方案,但几乎没有一个对我有用。我正在建立一个 Arch 系统,所以我的第一个倾向是使用Arch wiki 上的配置。这是我的:
import XMonad
import XMonad.Hooks.DynamicLog
main = xmonad =<< xmobar defaultConfig { terminal = "gnome-terminal" }
Run Code Online (Sandbox Code Playgroud)
如果没有 xmobarrc(或我尝试复制的任何),xmobar 在空工作区中是可见的,但打开任何应用程序都会将其完全覆盖。尝试使用 Alt-b 切换栏空间不会将其恢复。我也试过逐字复制John Goerzen 的配置文件,但这也不起作用。
一个有效的 hack(来自 John Goerzen)是在我的 xinitrc 中启动托盘。当托盘运行时,它以某种方式成功地在屏幕顶部保留了空间,xmobar 也可以使用。但我想让 xmobar 自己工作。感谢您的任何建议。
我目前正在使用alt++ctrl和++在工作区之间循环left:altctrlright
...
, ((altModMask .|. controlMask, xK_Left),
prevWS)
, ((altModMask .|. controlMask, xK_Right),
nextWS)
Run Code Online (Sandbox Code Playgroud)
这对于单显示器设置来说效果很好。然而,使用双显示器设置时有点令人困惑。这是因为如果当前在另一个屏幕上可见,则要显示的工作区将更改屏幕。例如,如果我在屏幕 0 上有 ws 1,在屏幕 1 上有 ws 2,并且焦点在屏幕 0 上:
1:term (2:web) 3:txt
Run Code Online (Sandbox Code Playgroud)
当我现在执行 a nextWS, ws 2 时,当前在屏幕 1 上的内容将被绘制到屏幕 0,而屏幕 1 将显示 ws 1。
(1:term) 2:web 3:txt
Run Code Online (Sandbox Code Playgroud)
我想要的是一种行为,其中prexWS和nextWS将跳过当前显示在另一台显示器上的工作区,并仅选择当前未显示的工作区。
是否已经存在这样的命令或者是否有一些xmonad.hs实现此命令的示例?
有几个类似的问题,但没有一个能完全为我解决,例如这个问题解释了如何从全屏浮动窗口中删除边框。
使用XMonad.Layout.NoBorders您可以做很多很酷的事情,例如删除某些窗口的边框或者它是唯一的窗口或唯一的全屏浮动窗口。
我找不到所有浮动窗口的任何内容,但是如果有人可以向我指出一些可以用来检查窗口是否浮动的工具,我相信我可以尝试找到解决方案。
有任何建议欢迎提出