我无法按照我的预期让这个功能正常工作.
setScreenAndWorkspace i =
windows (viewOnScreen screenId workspaceId)
where
screenId = ((i-1) `mod` numberOfScreens)
-- workspaceId = show i -- doesn't work for some reason
workspaceId =
case i of
1 -> "1"
2 -> "2"
3 -> "3"
4 -> "4"
5 -> "5"
6 -> "6"
7 -> "7"
8 -> "8"
9 -> "9"
Run Code Online (Sandbox Code Playgroud)
我正在调用这样的函数:
myKeys =
[
("M-1" , setScreenAndWorkspace 1),
("M-2" , setScreenAndWorkspace 2),
("M-3" , setScreenAndWorkspace 3),
("M-4" , setScreenAndWorkspace 4),
("M-5" , setScreenAndWorkspace …Run Code Online (Sandbox Code Playgroud) 当我在ubuntu中使用xmonad时,我遵循Xmonad的教程,但是没有应用程序菜单栏.我怎么解决这个问题?
我的配置文件在这里:
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO
--import XMonad.Config.Gnome
import XMonad.Layout.Gaps
myLayouts = gaps [(U, 24)] -- $ layoutHook gnomeConfig
main = do
-- xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmobarrc"
xmonad $ defaultConfig
{manageHook = composeAll [
-- other hooks,
manageDocks
, className =? "Unity-2d-panel" --> doIgnore
--, className =? "Unity-2d-launcher" --> doIgnore
-- more hooks
]
-- for gnome begin
--manageDocks <+> manageHook defaultConfig
-- for gnome end
, layoutHook = avoidStruts $ …Run Code Online (Sandbox Code Playgroud) 我有一个使用xmonad的XMonad.Prompt.Input的新想法.我认为这真的很酷,如果一个人可以制作一个简单的计算器来计算用户输入的内容并在下一个提示的文本中返回结果,当用户按下escape时结束......问题是,我没有非常知道如何处理类型......
到目前为止我有这个:
runAndGetOutput cmd = do
(_, pout, _, phandle) <- runInteractiveCommand cmd
waitForProcess phandle
a <- hGetContents pout
return a
calcPrompt :: XPConfig -> String -> X ()
calcPrompt c ans =
inputPrompt c ans ?+ \ next ->
calcPrompt c (runAndGetOutput ("calc" ++ next))
Run Code Online (Sandbox Code Playgroud)
哪个不起作用.我明白了:
Couldn't match expected type `[Char]' with actual type `IO String'
Expected type: String
Actual type: IO String
In the return type of a call of `runAndGetOutput'
In the second argument of `calcPrompt', namely …Run Code Online (Sandbox Code Playgroud) 我是 Haskell 初学者,我正在使用 xmonad。我试图让它在退出之前提示我,因为我偶尔会意外地按 mod+q。我找到了两种方法,但我一定做错了什么,因为它们都不适合我: https://bbs.archlinux.org/viewtopic.php? id=120298 http://comments.gmane。 org/gmane.comp.lang.haskell.xmonad/11699
这是我的 xmonad.hs:
import XMonad
import XMonad.Config.Gnome
import XMonad.Actions.Plane
import XMonad.Util.EZConfig
import XMonad.Util.Run(spawnPipe)
import qualified Data.Map as M
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.UrgencyHook
import System.IO(Handle, hPutStrLn)
import System.Exit
import Control.Monad
import XMonad
import XMonad.Util.EZConfig
import XMonad.Util.Dmenu
import XMonad.Util.Run
workspaces' = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
quit_confirm :: X ()
quit_confirm = do
let m = "confirm restart"
s <- dmenu [m]
when (m == s) (spawn …Run Code Online (Sandbox Code Playgroud) 我使用的是dynamicLogWithPP从XMonad.Hooks.DynamicLog与dzen2作为下xmonad状态栏在一起.我希望在栏中显示的其中一项内容是当前播放曲目的大胆时间(如果有的话).获取此信息很简单:
audStatus :: Player -> X (Maybe String)
audStatus p = do
info <- liftIO $ tryS $ withPlayer p $ do
ispaused <- paused
md <- getMetadataString
timeleftmillis <- (-) <$> (getCurrentTrack >>= songFrames) <*> time
let artist = md ! "artist"
title = md ! "title"
timeleft = timeleftmillis `quot` 1000
(minutes, seconds) = timeleft `quotRem` 60
disp = artist ++ " - " ++ title ++ " (-"++(show minutes)++":"++(show seconds)++")" -- will be …Run Code Online (Sandbox Code Playgroud) 
您可以看到 Gnome 终端的默认紫色背景显示在终端的边缘。是否有已知的修复方法?我的窗口管理器是 Xmonad。
我最近进入了 XMonad,不幸的是,我对 Haskell 知之甚少。我正在尝试配置我的 xmonad.hs 文件,以便我可以控制音量。然而,现在,即使我的 xmonad.hs 文件编译没有错误,我也无法控制音量。
我从这个链接得到了音量控制代码:http://dmwit.com/volume/
这是我的配置文件:
import XMonad
import XMonad.Util.Run(spawnPipe)
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Actions.Volume
import XMonad.Util.Dzen
import Data.Map (fromList)
import Data.Monoid (mappend)
import System.IO
alert = dzenConfig centered . show . round
centered =
onCurr (center 150 66)
>=> font "-*-helvetica-*-r-*-*-64-*-*-*-*-*-*-*"
>=> addArgs ["-fg", "#80c0ff"]
>=> addArgs ["-bg", "#000040"]
main = do
xmproc <- spawnPipe "xmobar /home/david/.xmobarrc"
xmonad $ defaultConfig
{
manageHook = manageDocks <+> manageHook defaultConfig
, layoutHook = avoidStruts $ layoutHook …Run Code Online (Sandbox Code Playgroud) 我正在XMonad作为窗口管理器,试图在ubuntu上使用nix。我可以在使用nixOS的一台主机上很好地工作,但是我还没有第二台设备可用于nixOS。在Ubuntu之上的nix在那里通常可以很好地工作,但是xmonad无法找到贡献性库。
相关软件包已安装:
$ nix-env -q | grep xmonad
xmonad-0.13
xmonad-contrib-0.13
xmonad-extras-0.12.1
Run Code Online (Sandbox Code Playgroud)
但是重新编译我的xmonad.hs,它找不到contrib库:
$ xmonad --recompile
Error detected while loading xmonad configuration file: /home/martyn/.xmonad/xmonad.hs
xmonad.hs:32:1: error:
Failed to load interface for ‘XMonad.Layout.NoBorders’
Use -v to see a list of the files searched for.
...
Please check the file for errors.
Run Code Online (Sandbox Code Playgroud)
相关文件已安装:
$ ls /nix/store/*xmonad-contrib*/lib/**/NoBorders*
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Actions/NoBorders.dyn_hi
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Actions/NoBorders.hi
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Layout/NoBorders.dyn_hi
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Layout/NoBorders.hi
Run Code Online (Sandbox Code Playgroud)
通过将xmonad-contrib添加到我的nixpkgs config.nix中,我将这些库添加到了ghc软件包注册表中:
$ cat ~/.config/nixpkgs/config.nix
with (import <nixpkgs> {});
{
packageOverrides = pkgs: with pkgs; {
myHaskellEnv = pkgs.haskellPackages.ghcWithPackages (haskellPackages: with haskellPackages; [ …Run Code Online (Sandbox Code Playgroud) 要将窗口一出现就放置在浮动层上,可以使用doFloat中的函数ManageHooks。此外,还有一些附加功能,doCenterFloat例如ManageHelpers.
但是有没有办法指定窗口的特定大小呢?
现在我有一个应用程序,它只占用整个窗口空间。我想指定一个更舒适的尺寸。
ManageHelpers确实有一个名为 的函数doRectFloat,它接受一个RationalRect. 在其描述doRectFloat中指出以下内容:
浮动窗口的矩形。0 到 1;x、y、w、h。
但我不知道如何使用这个。
我在基于 arch 的系统上使用 xmonad。但升级后我无法通过编译我的 xmonad.hs 文件
\n\n$ xmonad --recompile
我似乎在 xmonad 的每个模块上都遇到错误,甚至 import XMonad 似乎也不起作用。\n如果有人以某种方式解决了这个问题,请告诉我。
\n\nError detected while loading xmonad configuration file: \n/home/arya/.xmonad/xmonad.hs\n\nxmonad.hs:2:1: error:\n Could not find module \xe2\x80\x98XMonad\xe2\x80\x99\n Use -v to see a list of the files searched for.\n |\n2 | import XMonad\n | ^^^^^^^^^^^^^\n\nxmonad.hs:3:1: error:\n Could not find module \xe2\x80\x98XMonad.Config.Mate\xe2\x80\x99\n Use -v to see a list of the files searched for.\n |\n3 | import XMonad.Config.Mate\n | ^^^^^^^^^^^^^^^^^^^^^^^^^\n\nxmonad.hs:5:1: error:\n Could not find module \xe2\x80\x98XMonad.StackSet\xe2\x80\x99\n …Run Code Online (Sandbox Code Playgroud)