xmonad-config/lib/XMonad/Internal/Command/DMenu.hs

92 lines
2.4 KiB
Haskell
Raw Normal View History

2020-04-01 22:06:00 -04:00
--------------------------------------------------------------------------------
-- | Dmenu (Rofi) Commands
2020-04-01 20:17:47 -04:00
module XMonad.Internal.Command.DMenu
( runCmdMenu
, runAppMenu
, runClipMenu
, runWinMenu
, runNetMenu
, runDevMenu
2020-05-02 00:02:29 -04:00
, runBwMenu
2020-04-01 20:17:47 -04:00
, runShowKeys
) where
import Control.Monad.Reader
import Graphics.X11.Types
import System.IO
import XMonad.Core hiding (spawn)
import XMonad.Internal.Process
2020-04-01 20:17:47 -04:00
import XMonad.Internal.Shell
import XMonad.Util.NamedActions
2020-04-01 22:06:00 -04:00
--------------------------------------------------------------------------------
-- | Other internal functions
myDmenuCmd :: String
myDmenuCmd = "rofi"
spawnDmenuCmd :: [String] -> X ()
spawnDmenuCmd = spawnCmd myDmenuCmd
2020-04-01 22:06:00 -04:00
--------------------------------------------------------------------------------
-- | Exported Commands
2020-05-02 00:02:29 -04:00
devSecrets :: [String]
devSecrets = concatMap (\x -> ["-s", x])
[ "/media/ndwar/Roylab:user=ndwarshuis3@gatech.edu,host=outlook.office365.com"
, "/media/ndwar/MC3M:user=ndwarshuis3@gatech.edu,host=outlook.office365.com"
]
runDevMenu :: X ()
runDevMenu = spawnCmd "rofi-dev" $ devSecrets ++ rofiArgs
2020-05-02 00:25:57 -04:00
where
rofiArgs =
[ "--"
, "-theme-str"
, "'#element.selected.normal { background-color: #999933; }'"
]
2020-05-02 00:02:29 -04:00
runBwMenu :: X ()
runBwMenu = spawnCmd "rofi-bw"
2020-05-02 00:31:17 -04:00
["-c"
, "--"
, "-theme-str"
, "'#element.selected.normal { background-color: #bb6600; }'"
]
2020-05-02 00:02:29 -04:00
runShowKeys :: [((KeyMask, KeySym), NamedAction)] -> NamedAction
runShowKeys x = addName "Show Keybindings" $ do
(h, _, _, _) <- io $ createProcess' $ (shell' cmd) { std_in = CreatePipe }
io $ forM_ h $ \h' -> hPutStr h' (unlines $ showKm x) >> hClose h'
where cmd = fmtCmd myDmenuCmd
[ "-dmenu"
2020-04-01 20:17:47 -04:00
, "-p", "commands"
, "-theme-str"
, "'#element.selected.normal { background-color: #a200ff; }'"
]
runCmdMenu :: X ()
runCmdMenu = spawnDmenuCmd ["-show", "run"]
runAppMenu :: X ()
runAppMenu = spawnDmenuCmd ["-show", "drun"]
runClipMenu :: X ()
runClipMenu = spawnDmenuCmd
[ "-modi", "\"clipboard:greenclip print\""
, "-show", "clipboard"
, "-run-command", "'{cmd}'"
, "-theme-str", "'#element.selected.normal { background-color: #00c44e; }'"
]
runWinMenu :: X ()
runWinMenu = spawnDmenuCmd ["-show", "window"]
runNetMenu :: X ()
runNetMenu = spawnCmd "networkmanager_dmenu" []