https://wiki.haskell.org/index.php?title=Xmonad/Config_archive/sykopomp%27s_xmonad.dv-vi.hs&feed=atom&action=history
Xmonad/Config archive/sykopomp's xmonad.dv-vi.hs - Revision history
2024-03-19T01:06:06Z
Revision history for this page on the wiki
MediaWiki 1.35.5
https://wiki.haskell.org/index.php?title=Xmonad/Config_archive/sykopomp%27s_xmonad.dv-vi.hs&diff=20525&oldid=prev
Sykopomp at 03:03, 12 April 2008
2008-04-12T03:03:24Z
<p></p>
<p><b>New page</b></p><div><haskell><br />
import XMonad<br />
import XMonad.Hooks.ManageDocks<br />
import XMonad.Hooks.EwmhDesktops<br />
<br />
import qualified XMonad.StackSet as W <br />
import Data.Bits ((.|.))<br />
import System.Exit<br />
import System.IO<br />
import qualified Data.Map as M<br />
<br />
import XMonad.Layout.TwoPane<br />
import XMonad.Layout.ResizableTile<br />
import XMonad.Layout.Tabbed<br />
import XMonad.Layout.Combo<br />
import XMonad.Layout.WindowNavigation<br />
import XMonad.Layout.Circle<br />
-- Actions<br />
import XMonad.Actions.CycleWS<br />
import XMonad.Actions.SwapWorkspaces<br />
import XMonad.Actions.Submap<br />
<br />
<br />
main = xmonad $ defaultConfig<br />
{ borderWidth = 2<br />
, focusedBorderColor = "#C11B17"<br />
, normalBorderColor = "#2e3436"<br />
, manageHook = myManageHook <+> manageDocks<br />
, workspaces = map show [1 .. 9 :: Int]<br />
, terminal = "urxvtc"<br />
, modMask = mod4Mask<br />
, logHook = myLogHook<br />
, layoutHook = windowNavigation $ (avoidStruts (myTab ||| tall ||| Mirror tall ||| Circle))<br />
, keys = \c -> myKeys c `M.union` keys defaultConfig c<br />
}<br />
<br />
where <br />
<br />
tall = ResizableTall 1 (3/100) (1/2) []<br />
<br />
myTab = tabbed shrinkText myTabConfig<br />
<br />
-- The tab layout config {{{<br />
<br />
myTabConfig = defaultTheme<br />
{ activeColor = "#C11B17"<br />
, inactiveColor = "#7E2217"<br />
, urgentColor = "#C500C5"<br />
, activeBorderColor = "white"<br />
, inactiveBorderColor = "grey"<br />
, activeTextColor = "white"<br />
, inactiveTextColor = "grey"<br />
, decoHeight = 12<br />
, fontName = "-*-terminus-*-*-*-*-12-*-*-*-*-*-iso10646-1"<br />
}<br />
<br />
myLogHook :: X ()<br />
myLogHook = do ewmhDesktopsLogHook<br />
return ()<br />
<br />
-- To find the property name associated with a program, use<br />
-- > xprop | grep WM_CLASS<br />
-- and click on the client you're interested in.<br />
myManageHook = composeAll<br />
[ className =? "MPlayer" --> doFloat<br />
, className =? "Gimp" --> doFloat<br />
, className =? "Thunar" --> doFloat<br />
, className =? "VLC media player" --> doFloat<br />
, className =? "Thunderbird-bin" --> doF(W.shift "3")<br />
, className =? "Pidgin" --> doF(W.shift "1")<br />
, className =? "Minefield" --> doF(W.shift "2")<br />
, resource =? "amarokapp" --> doF(W.shift "5")<br />
, className =? "Gimmix" --> doF(W.shift "5")<br />
, resource =? "desktop_window" --> doIgnore<br />
, className =? "Xfce4-panel" --> doFloat<br />
, className =? "Xfce-mcs-manager" --> doFloat <br />
, className =? "Xfce-mixer" --> doFloat<br />
, className =? "Gui.py" --> doFloat<br />
, manageDocks]<br />
<br />
--------------------------------<br />
-- full dvorak-oriented remap --<br />
--------------------------------<br />
myKeys conf@(XConfig {modMask = modm}) = M.fromList $<br />
<br />
-- Window Navigation<br />
-- select...<br />
[ ((modm, xK_Right), sendMessage $ Go R)<br />
, ((modm, xK_Left ), sendMessage $ Go L)<br />
, ((modm, xK_Up ), sendMessage $ Go U)<br />
, ((modm, xK_Down ), sendMessage $ Go D)<br />
<br />
-- swap...<br />
, ((modm .|. shiftMask, xK_Right), sendMessage $ Swap R)<br />
, ((modm .|. shiftMask, xK_Left ), sendMessage $ Swap L)<br />
, ((modm .|. shiftMask, xK_Up ), sendMessage $ Swap U)<br />
, ((modm .|. shiftMask, xK_Down ), sendMessage $ Swap D) <br />
-- move...<br />
, ((modm .|. controlMask .|. shiftMask, xK_Right), sendMessage $ Move R)<br />
, ((modm .|. controlMask .|. shiftMask, xK_Left), sendMessage $ Move L)<br />
, ((modm .|. controlMask .|. shiftMask, xK_Up), sendMessage $ Move U)<br />
, ((modm .|. controlMask .|. shiftMask, xK_Down), sendMessage $ Move D)<br />
<br />
-- shrink and expand<br />
, ((modm , xK_s), sendMessage MirrorShrink)<br />
, ((modm, xK_z), sendMessage MirrorExpand)<br />
<br />
--multimedia keys<br />
, ((modm , xK_o), spawn "aumix -v -5")<br />
, ((modm , xK_e), spawn "aumix -v +5")<br />
, ((modm , xK_p), spawn "mpc toggle")<br />
, ((modm , xK_apostrophe), spawn "mpc stop")<br />
, ((modm , xK_comma), spawn "mpc prev")<br />
, ((modm , xK_period), spawn "mpc next")<br />
<br />
-- increase transparency<br />
,((modm , xK_a), spawn "transset-df -a --dec .1")<br />
,((modm , xK_u), spawn "transset-df -a --inc .1")<br />
<br />
<br />
--rebindings<br />
-- launch a terminal<br />
, ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)<br />
<br />
-- launch dmenu<br />
, ((modm, xK_l ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")<br />
<br />
-- close focused window <br />
, ((modm, xK_k ), kill)<br />
<br />
-- Rotate through the available layout algorithms<br />
, ((modm, xK_space ), sendMessage NextLayout)<br />
<br />
-- Reset the layouts on the current workspace to default<br />
, ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)<br />
<br />
-- Resize viewed windows to the correct size<br />
, ((modm, xK_b ), refresh)<br />
<br />
-- Move focus to the next window<br />
, ((modm, xK_Tab ), windows W.focusDown)<br />
<br />
-- Move focus to the next window<br />
, ((modm, xK_t ), windows W.focusDown)<br />
, ((modm, xK_Tab ), windows W.focusDown)<br />
-- Move focus to the previous window<br />
, ((modm, xK_h ), windows W.focusUp )<br />
<br />
-- Move focus to the masterh window<br />
, ((modm, xK_m ), windows W.focusMaster )<br />
<br />
-- Swap the focused window and the master window<br />
, ((modm, xK_Return), windows W.swapMaster)<br />
<br />
-- Swap the focused window with the next window<br />
, ((modm .|. shiftMask, xK_h ), windows W.swapDown )<br />
<br />
-- Swap the focused window with the previous window<br />
, ((modm .|. shiftMask, xK_t ), windows W.swapUp )<br />
<br />
-- Shrink the master area<br />
, ((modm, xK_d ), sendMessage Shrink)<br />
<br />
-- Expand the master area<br />
, ((modm, xK_n ), sendMessage Expand)<br />
<br />
-- Push window back into tiling<br />
, ((modm, xK_y ), withFocused $ windows . W.sink)<br />
<br />
-- Increment the number of windows in the master area<br />
, ((modm , xK_w ), sendMessage (IncMasterN 1))<br />
<br />
-- Deincrement the number of windows in the master area<br />
, ((modm , xK_v), sendMessage (IncMasterN (-1)))<br />
<br />
-- toggle the status bar gap<br />
, ((modm , xK_x ), <br />
modifyGap (\i n -> let x = (XMonad.defaultGaps conf ++ repeat (0,0,0,0)) !! i<br />
in if n == x then (0,0,0,0) else x))<br />
<br />
-- Quit xmonad<br />
, ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))<br />
<br />
-- Restart xmonad<br />
, ((modm , xK_q ),<br />
broadcastMessage ReleaseResources >> restart "xmonad" True) ]<br />
<br />
++<br />
<br />
<br />
-- mod-[1..9], Switch to workspace N<br />
-- mod-shift-[1..9], Move client to workspace N<br />
--<br />
[((m .|. modm, k), windows $ f i)<br />
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]<br />
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]<br />
++<br />
<br />
--<br />
-- mod-{ , , . , p}, Switch to physical/Xinerama screens 1, 2, or 3<br />
-- mod-shift-{foo}, Move client to screen 1, 2, or 3<br />
--<br />
[((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))<br />
| (key, sc) <- zip [xK_c, xK_r] [0..]<br />
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]<br />
<br />
</haskell></div>
Sykopomp