mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
use XPrompt in WorkspaceDir.
This commit is contained in:
parent
709c2b8573
commit
002b15cb1f
59
DirectoryPrompt.hs
Normal file
59
DirectoryPrompt.hs
Normal file
@ -0,0 +1,59 @@
|
||||
-----------------------------------------------------------------------------
|
||||
-- |
|
||||
-- Module : XMonadContrib.DirectoryPrompt
|
||||
-- Copyright : (C) 2007 Andrea Rossato, David Roundy
|
||||
-- License : BSD3
|
||||
--
|
||||
-- Maintainer : droundy@darcs.net
|
||||
-- Stability : unstable
|
||||
-- Portability : unportable
|
||||
--
|
||||
-- A directory prompt for XMonad
|
||||
--
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
module XMonadContrib.DirectoryPrompt (
|
||||
-- * Usage
|
||||
-- $usage
|
||||
directoryPrompt
|
||||
) where
|
||||
|
||||
import XMonad
|
||||
import XMonadContrib.XPrompt
|
||||
import XMonadContrib.Dmenu ( runProcessWithInput )
|
||||
|
||||
-- $usage
|
||||
--
|
||||
-- 1. In xmonad.cabal change:
|
||||
--
|
||||
-- > build-depends: base>=2.0, X11>=1.2.1, X11-extras>=0.2, mtl>=1.0, unix>=1.0
|
||||
--
|
||||
-- to
|
||||
--
|
||||
-- > build-depends: base>=2.0, X11>=1.2.1, X11-extras>=0.2, mtl>=1.0, unix>=1.0, readline >= 1.0
|
||||
--
|
||||
-- 2. In Config.hs add:
|
||||
--
|
||||
-- > import XMonadContrib.XPrompt
|
||||
-- > import XMonadContrib.ShellPrompt
|
||||
--
|
||||
-- 3. In your keybindings add something like:
|
||||
--
|
||||
-- > , ((modMask .|. controlMask, xK_x), shellPrompt defaultXPConfig)
|
||||
--
|
||||
|
||||
data Dir = Dir String
|
||||
|
||||
instance XPrompt Dir where
|
||||
showXPrompt (Dir x) = x
|
||||
|
||||
directoryPrompt :: XPConfig -> String -> (String -> X ()) -> X ()
|
||||
directoryPrompt c prom job = mkXPrompt (Dir prom) c getDirCompl job
|
||||
|
||||
getDirCompl :: String -> IO [String]
|
||||
getDirCompl s = (filter notboring . lines) `fmap`
|
||||
runProcessWithInput "/bin/bash" [] ("compgen -A directory " ++ s ++ "\n")
|
||||
|
||||
notboring ('.':'.':_) = True
|
||||
notboring ('.':_) = False
|
||||
notboring _ = True
|
@ -28,6 +28,7 @@ import XMonadContrib.Combo ()
|
||||
import XMonadContrib.CopyWindow ()
|
||||
import XMonadContrib.Decoration ()
|
||||
import XMonadContrib.DeManage ()
|
||||
import XMonadContrib.DirectoryPrompt ()
|
||||
import XMonadContrib.Dmenu ()
|
||||
import XMonadContrib.DwmPromote ()
|
||||
import XMonadContrib.DynamicLog ()
|
||||
|
@ -25,13 +25,15 @@ module XMonadContrib.WorkspaceDir (
|
||||
changeDir
|
||||
) where
|
||||
|
||||
import System.Directory ( setCurrentDirectory, getCurrentDirectory )
|
||||
import Data.List ( nub )
|
||||
import System.Directory ( setCurrentDirectory )
|
||||
|
||||
import XMonad
|
||||
import Operations ( sendMessage )
|
||||
import XMonadContrib.Dmenu ( dmenu, runProcessWithInput )
|
||||
import XMonadContrib.Dmenu ( runProcessWithInput )
|
||||
import XMonadContrib.XPrompt ( XPConfig )
|
||||
import XMonadContrib.DirectoryPrompt ( directoryPrompt )
|
||||
import XMonadContrib.LayoutHelpers ( layoutModify )
|
||||
import XMonadContrib.XPrompt ( defaultXPConfig )
|
||||
|
||||
-- $usage
|
||||
-- You can use this module with the following in your Config.hs file:
|
||||
@ -42,7 +44,7 @@ import XMonadContrib.LayoutHelpers ( layoutModify )
|
||||
--
|
||||
-- In keybindings:
|
||||
--
|
||||
-- > , ((modMask .|. shiftMask, xK_x ), changeDir ["~","/tmp"])
|
||||
-- > , ((modMask .|. shiftMask, xK_x ), changeDir defaultXPConfig)
|
||||
|
||||
|
||||
data Chdir = Chdir String deriving ( Typeable )
|
||||
@ -58,7 +60,5 @@ scd :: String -> X ()
|
||||
scd x = do x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` \_ -> return x)
|
||||
catchIO $ setCurrentDirectory x'
|
||||
|
||||
changeDir :: [String] -> X ()
|
||||
changeDir dirs = do thisd <- io getCurrentDirectory
|
||||
dir <- dmenu (nub (thisd:dirs))
|
||||
sendMessage (Chdir dir)
|
||||
changeDir :: XPConfig -> X ()
|
||||
changeDir c = directoryPrompt c "Set working directory: " (sendMessage . Chdir)
|
||||
|
Loading…
x
Reference in New Issue
Block a user