Skip to content

Instantly share code, notes, and snippets.

@wavewave
Created February 25, 2019 18:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wavewave/9d98f94f363a1ce30b076113702f1cc8 to your computer and use it in GitHub Desktop.
Save wavewave/9d98f94f363a1ce30b076113702f1cc8 to your computer and use it in GitHub Desktop.
my xmonad
import Control.Concurrent
import Data.Monoid ((<>))
import XMonad hiding ( (|||) )
import XMonad.Actions.CopyWindow
import XMonad.Actions.Navigation2D
import XMonad.Actions.UpdatePointer
import XMonad.Actions.WindowBringer
import XMonad.Config.Gnome
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.SetWMName
import XMonad.Layout.Decoration
import XMonad.Layout.DecorationAddons
import XMonad.Layout.DraggingVisualizer
import XMonad.Layout.Fullscreen
import XMonad.Layout.LayoutCombinators
import XMonad.Layout.Maximize
import XMonad.Layout.MouseResizableTile
import XMonad.Layout.NoBorders
import XMonad.Layout.WindowSwitcherDecoration
import XMonad.Prompt
import XMonad.Prompt.Shell
import XMonad.Prompt.AppendFile
import qualified XMonad.StackSet as W
import XMonad.Util.EZConfig
import XMonad.Util.Loggers
import XMonad.Util.Run (safeSpawn)
toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)
myManageHook = composeAll (
[ manageHook gnomeConfig
, appName =? "hoodle" --> doFloat
, appName =? "onboard" --> doFloat
, appName =? "vncviewer" --> doFloat
, appName =? "evince" --> doFloat
] )
withXmobarAndBorder =
windowSwitcherDecorationWithButtons
shrinkText defaultThemeWithButtons { activeBorderColor = "#ff0000"
, activeColor = "#ff0000"
}
. draggingVisualizer . avoidStruts
myLayout = withXmobarAndBorder (maximize (withBorder 5 myMouseResizableTileMirrored))
||| fullscreenFull Full -- Full
myMouseResizableTile = mouseResizableTile { masterFrac = 0.7, nmaster = 2 }
myMouseResizableTileMirrored = mouseResizableTileMirrored { masterFrac = 0.7, nmaster = 2 }
myFocusedBorderColor = "#0000ff"
myNav2Dconfig = defaultNavigation2DConfig -- { defaultTiledNavigation = centerNavigation }
mouseUpdate = updatePointer (0.5, 0.5) (0, 0)
myconfig = gnomeConfig { startupHook = setWMName "LG3D"
, manageHook = myManageHook
, layoutHook = myLayout
-- , logHook = logHook gnomeConfig <> myLogHook
, focusedBorderColor = myFocusedBorderColor
, terminal = "gnome-terminal" -- "terminator"
}
`additionalKeysP` [ ("M-x", shellPrompt defaultXPConfig)
, ("M-`", safeSpawn "/run/current-system/sw/bin/synclient" ["TouchpadOff=1"])
, ("M-S-`", safeSpawn "/run/current-system/sw/bin/synclient" ["TouchpadOff=0"])
, ("M-z", (liftIO (threadDelay 500000) >> safeSpawn "/home/wavewave/.nix-profile/bin/gnome-screenshot" ["--area", "-f", "/home/wavewave/test.png"] ))
, ("M-S-x", do spawn ("date>>"++"/home/wavewave/Dropbox/memos/log.txt")
appendFilePrompt defaultXPConfig "/home/wavewave/Dropbox/memos/log.txt")
, ("M-C-1", windows (copy "1"))
, ("M-C-2", windows (copy "2"))
, ("M-C-3", windows (copy "3"))
, ("M-C-4", windows (copy "4"))
, ("M-C-5", windows (copy "5"))
, ("M-C-6", windows (copy "6"))
, ("M-C-7", windows (copy "7"))
, ("M-C-8", windows (copy "8"))
, ("M-C-9", windows (copy "9"))
, ("M-S-g", gotoMenu)
, ("M-S-b", bringMenu)
, ("M-S-c", kill0)
, ("M-C-c", kill)
, ("M-<Backspace>", withFocused (sendMessage . maximizeRestore))
]
-- | kill only copied window
kill0 :: X ()
kill0 = do ss <- gets windowset
whenJust (W.peek ss) $ \w -> if W.member w $ delete'' w ss
then windows $ delete'' w
else return ()
where delete'' w = W.modify Nothing (W.filter (/= w))
myPP = xmobarPP { ppExtras = [ loadAvg, battery ] }
main = do
cfg <- statusBar "xmobar" myPP toggleStrutsKey myconfig
-- xmonad cfg
xmonad $ withNavigation2DConfig myNav2Dconfig
$ additionalNav2DKeys (xK_Up, xK_Left, xK_Down, xK_Right)
[ (controlMask , \d b -> windowGo d b >> mouseUpdate)
, (controlMask .|. shiftMask, \d b -> windowSwap d b >> mouseUpdate)]
False
$ cfg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment