Skip to content

Instantly share code, notes, and snippets.

@mankyKitty
Created August 8, 2019 00:06
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 mankyKitty/053b03bf29f4f1f59630c1f8cd3d1741 to your computer and use it in GitHub Desktop.
Save mankyKitty/053b03bf29f4f1f59630c1f8cd3d1741 to your computer and use it in GitHub Desktop.
weeee
import qualified Data.Map as M
import Data.Monoid ((<>))
import qualified Graphics.X11.Types as XT
import XMonad (Full (..), Layout,
ManageHook, Mirror (..),
Tall (..), X, XConfig (..),
def, spawn, windows,
xmonad, (.|.), (|||))
import XMonad.Actions.SpawnOn (manageSpawn, spawnOn)
import XMonad.Hooks.EwmhDesktops (ewmh)
import XMonad.Hooks.ManageDocks (avoidStruts, docks,
manageDocks)
import XMonad.ManageHook (className, composeAll,
doShift, (-->), (<+>),
(=?))
-- Taffybar 0.4.6
-- import System.Taffybar.Hooks.PagerHints (pagerHints)
-- Taffybar 3.0.0
import System.Taffybar.Support.PagerHints (pagerHints)
import XMonad.Hooks.DynamicLog
import XMonad.Layout.Circle
import XMonad.Layout.Grid
import XMonad.Layout.ThreeColumns
-- Some keys for later
-- ((0, XT.xK_Print), spawn "maim -c 1,0,0,0.6 -s ~/screenshots/$(date +%F_%T).png")
-- , ((modm, XT.xK_Print), spawn "maim -s --format png -c 1,0,0,0.6 /dev/stdout | xclip -selection clipboard -t image/png -i")
-- , ((XT.controlMask .|. XT.mod1Mask, XT.xK_q), spawn "~/.screenlayout/laptop-only.sh")
-- , ((XT.controlMask .|. XT.mod1Mask, XT.xK_w), spawn "~/.screenlayout/the-fort.sh")
-- , ((modm .|. XT.shiftMask, XT.xK_p), spawn "~/bin/passmenu")
--
spotifySend =
mappend "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player."
myKeys :: XConfig Layout -> M.Map (XT.ButtonMask, XT.KeySym) (X ())
myKeys conf@XConfig {modMask = modm} =
let xK_X86MonBrightnessDown = 0x1008ff03
xK_X86MonBrightnessUp = 0x1008ff02
xK_X86AudioLowerVolume = 0x1008ff11
xK_X86AudioRaiseVolume = 0x1008ff13
xK_X86AudioMute = 0x1008ff12
xK_X86AudioPlay = 0x1008ff14
xK_X86AudioPrev = 0x1008ff16
xK_X86AudioNext = 0x1008ff17
kees =
M.fromList [ ((XT.controlMask .|. XT.mod1Mask, XT.xK_l), spawn "xscreensaver-command -lock")
, ((0, xK_X86MonBrightnessDown), spawn "xbacklight -dec 5")
, ((0, xK_X86MonBrightnessUp), spawn "xbacklight -inc 5")
, ((0, xK_X86AudioLowerVolume), spawn "amixer sset Master 5%-")
, ((0, xK_X86AudioRaiseVolume), spawn "amixer sset Master 5%+")
, ((0, xK_X86AudioMute), spawn "amixer sset Master toggle")
, ((0, xK_X86AudioPlay), spawn (spotifySend "PlayPause"))
, ((0, xK_X86AudioNext), spawn (spotifySend "Next"))
, ((0, xK_X86AudioPrev), spawn (spotifySend "Previous"))
]
in kees <> keys def conf
myLayout
= ThreeColMid 1 (3/100) (1/2)
||| Tall nmaster delta ratio
||| Mirror (Tall nmaster delta ratio)
||| Full
where
nmaster = 1
delta = 3/100
ratio = 1/2
-- docks: add dock (panel) functionality to your configuration
-- ewmh: https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints - lets XMonad talk to panels
main :: IO ()
main = xmonad . docks . pagerHints $ def
{ keys = myKeys
, modMask = XT.mod4Mask
, terminal = "urxvt"
-- avoidStruts tells windows to avoid the "strut" where docks live
, layoutHook = avoidStruts myLayout
, manageHook = manageDocks <+> manageHook def
, workspaces =
[ "1:code"
, "2:browserB"
, "3:browserA"
, "4:musak"
, "5"
, "6:time-wasting"
, "7"
, "8"
, "9"
]
, startupHook = do
spawnOn "1:code" "urxvt"
spawnOn "2:browserB" "firefox"
spawnOn "4:musak" "spotify"
spawnOn "6:time-wasting" "Discord"
spawnOn "6:time-wasting" "slack"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment