initial commit
This commit is contained in:
commit
c9dc82165b
4 changed files with 123 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "xmonad-custom"]
|
||||
path = xmonad-custom
|
||||
url = ../xmonad-custom
|
1
xmonad-custom
Submodule
1
xmonad-custom
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit be10c83957d683147da5aa156d3e79d50ab081b7
|
118
xmonad.hs
Normal file
118
xmonad.hs
Normal file
|
@ -0,0 +1,118 @@
|
|||
import XMonad
|
||||
|
||||
import XMonad.Hooks.DynamicLog
|
||||
import XMonad.Hooks.StatusBar
|
||||
import XMonad.Hooks.StatusBar.PP
|
||||
|
||||
import qualified XMonad.StackSet as W
|
||||
|
||||
|
||||
-- DBus for PolyBar support
|
||||
-- import XMonad.Hooks.DynamicLog
|
||||
import qualified XMonad.DBus as D
|
||||
import qualified DBus.Client as DC
|
||||
|
||||
-- important for getting polybar to work
|
||||
import XMonad.Hooks.ManageDocks
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
|
||||
-- additionalKeysP
|
||||
import XMonad.Util.EZConfig
|
||||
|
||||
-- custom imports for clarity
|
||||
import XMonad.Custom.BasicKeyBindings
|
||||
import XMonad.Custom.SystemKeyBindings
|
||||
import XMonad.Custom.AudioKeyBindings
|
||||
import XMonad.Custom.ProgramWorkspaces
|
||||
import XMonad.Custom.NumberWorkspaces
|
||||
import XMonad.Custom.UniversitySetup
|
||||
import XMonad.Custom.Layout
|
||||
import XMonad.Custom.Modifiers
|
||||
import XMonad.Custom.WorkspaceNames
|
||||
import XMonad.Custom.TopicSpace
|
||||
import XMonad.Custom.Prompt
|
||||
|
||||
import XMonad.Util.Loggers
|
||||
|
||||
-- | temporary to try out
|
||||
import XMonad.Actions.TopicSpace
|
||||
import XMonad.Prompt.Workspace
|
||||
|
||||
myTryOutKeyBindings = [
|
||||
]
|
||||
|
||||
myTopicItems :: [TopicItem]
|
||||
myTopicItems = [
|
||||
TI "1:WEB" ".config" (spawn "firefox")
|
||||
]
|
||||
|
||||
myTopicConfig :: TopicConfig
|
||||
myTopicConfig = def {
|
||||
topicDirs = tiDirs myTopicItems
|
||||
, topicActions = tiActions myTopicItems
|
||||
, defaultTopicAction = const (pure ())
|
||||
, defaultTopic = "1:WEB"
|
||||
}
|
||||
|
||||
myTopicWorkspaces = topicNames myTopicItems
|
||||
|
||||
promptedGoto :: X ()
|
||||
promptedGoto = workspacePrompt def goto
|
||||
|
||||
promptedShift :: X ()
|
||||
promptedShift = workspacePrompt def $ windows . W.shift
|
||||
|
||||
-- Toggle between the two most recently used topics, but keep
|
||||
-- screens separate. This needs @workspaceHistoryHook@.
|
||||
toggleTopic :: X ()
|
||||
toggleTopic = switchNthLastFocusedByScreen myTopicConfig 1
|
||||
|
||||
--
|
||||
|
||||
|
||||
myLogHook :: DC.Client -> PP
|
||||
myLogHook dbus = def { ppOutput = D.send dbus }
|
||||
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
-- Connect to DBus
|
||||
dbus <- D.connect
|
||||
-- Request access (needed when sending messages)
|
||||
D.requestAccess dbus
|
||||
-- start xmonad. docks is needed to leave space polybar
|
||||
xmonad . workspaceNamesEwmh . ewmh . ewmhFullscreen . docks $ myXMonadConfig { logHook = dynamicLogWithPP =<< (workspaceNamesPP $ myLogHook dbus) }
|
||||
|
||||
-- potentially add ewmh support here. for now, this does not seem to be needed
|
||||
|
||||
|
||||
myXMonadConfig = def {
|
||||
modMask = myMainModMask
|
||||
, workspaces = myWorkspaces
|
||||
, layoutHook = avoidStruts $ myLayout -- avoidStruts to leave space for polybar
|
||||
, startupHook = spawn "killall polybar; polybar -q main &!" >> topicStartupHook myTopicConfig
|
||||
}
|
||||
`additionalKeysP` myKeyBindings
|
||||
|
||||
|
||||
-- | Collect keybindings from imported modules
|
||||
myKeyBindings :: [(String, X ())]
|
||||
myKeyBindings = concat [
|
||||
myBasicKeyBindings
|
||||
, myUniversitySetupKeyBindings
|
||||
, mySystemKeyBindings
|
||||
, myProgramWorkspacesKeyBindings
|
||||
, myNumberWorkspacesKeyBindings
|
||||
, myAudioKeyBindings
|
||||
, myWorkspaceNamesKeyBindings
|
||||
, myTryOutKeyBindings
|
||||
]
|
||||
|
||||
|
||||
-- | Workspace management (currently just defaults)
|
||||
myWorkspaces :: [WorkspaceId]
|
||||
myWorkspaces = concat [
|
||||
myNumberWorkspaces
|
||||
, myProgramWorkspaces
|
||||
, myTopicWorkspaces
|
||||
]
|
Loading…
Reference in a new issue