Skip to content

Instantly share code, notes, and snippets.

@ozgun
Last active December 28, 2021 20:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ozgun/b752130a3b33a3597b7e to your computer and use it in GitHub Desktop.
Save ozgun/b752130a3b33a3597b7e to your computer and use it in GitHub Desktop.
My XMonad config file
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Config.Desktop
---import XMonad.Config.Gnome
import XMonad.Config.Xfce
import qualified Data.Map as M
import XMonad.Hooks.SetWMName
import XMonad.Actions.CycleWS
import XMonad.Layout.NoBorders
import XMonad.Hooks.ManageHelpers
import XMonad.Prompt (defaultXPConfig)
import XMonad.Prompt.Ssh (sshPrompt)
import XMonad.Prompt
import XMonad.Prompt.Shell
import Data.List ( isInfixOf )
--import XMonad.Actions.CycleWindows -- classic alt-tab
--import XMonad.Actions.CycleWS -- cycle thru WS', toggle last WS
-- ((modkey, key), action)
import XMonad.Util.EZConfig
import System.IO
import System.Exit
--- import qualified XMonad.Layout.IndependentScreens as LIS
--- togglevga = do
--- screencount <- LIS.countScreens
--- if screencount > 1
--- then spawn "xrandr --output VGA1 --off"
--- else spawn "xrandr --output VGA1 --auto --right-of LVDS1"
------------------------------------------------------------------------
-- Terminal
-- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules.
--
myTerminal = "/usr/bin/urxvt"
-- Define amount and names of workspaces
myWorkspaces = ["1:shell","2:code","3:browser","4:pidgin","5:git","6:file_manager","7:chat","8:torrent","9:misc"]
--- xprop |grep WM_CLASS ile listelenenlerden ilki resource, ikincisi classname olur. Ornegin:
-- WM_CLASS(STRING) = "gvim", "Gvim"
-- durumunda "gvim" resource yani appName'dir. "Gvim" ise className.
--- http://xmonad.org/xmonad-docs/xmonad/XMonad-ManageHook.html
-- appName: Return the application name.(WM_CLASS'taki 1. eleman)
-- resource: Backwards compatible alias for appName.
-- className: Return the resource class (WM_CLASS'taki 2. eleman)
-- title: Return the window title. (_NET_WM_NAME, WM_NAME)
myManageHook = composeAll
[ className =? "File Operation Progress" --> doFloat
, resource =? "desktop_window" --> doIgnore
, className =? "xfce4-notifyd" --> doIgnore
--, className =? "Iron" --> doShift "1:main"
---, className =? "Firefox" --> doShift "3:trades"
, className =? "URxvt" --> doShift "1:shell"
---, appName =? "README.rdoc (~/Projects/yh/parkweb) - GVIM" --> doShift "2:code"
---, name =? "project (~/Projects/yh/parkweb/tmp) - GVIM" --> doShift "2:code"
---, netName =? "project (~/Projects/yh/parkweb/tmp) - GVIM" --> doShift "2:code"
---, title =? "project (~/Projects/yh/parkweb/tmp) - GVIM" --> doShift "2:code"
---, title ~? "my_project" --> doShift "2:code"
---, title ~? "Calcu" --> doShift "2:code"
---, appName ~? "gcalct" --> doShift "2:code"
---, appName ~? ".my_project" --> doShift "2:code"
---, stringProperty "WM_NAME" ~? ".my_project" --> doShift "2:code"
---, className =? "Gvim" <&&>
--- fmap ( ".my_project" `isInfixOf` ) ( stringProperty "WM_NAME" ) --> doShift "2:code"
, className =? "Google-chrome" --> doShift "3:browser"
, className =? "Pidgin" --> doShift "4:pidgin"
, className =? "Git-gui" --> doShift "5:git"
, className =? "Worker" --> doShift "6:file_manager"
, className =? "Thunar" --> doShift "6:file_manager"
, className =? "Xchat" --> doShift "7:chat"
, className =? "Transmission-gtk" --> doShift "8:torrent"
---, className =? "Shotwell" --> doShift "5:graphic"
---, className =? "Skype" --> doFloat
---, className =? "push_setup" --> doFloat
---, className =? "TopLevel" --> doFloat
---, className =? "Push" --> doFloat
, appName =? "push_setup" --> doFloat -- git push penceresi
, appName =? "__console____o1____d" --> doFloat --- git push yaptiktan sonraki process penceresi
, className =? "Toplevel" --> doFloat --- git push yaptiktan sonraki process penceresi
, className =? "Gimp" --> doFloat
, className =? "Pidgin" --> doFloat
, className =? "Vlc" --> doFloat
, className =? "Xmessage" --> doFloat
, className =? "Transmission-gtk" --> doFloat
, className =? "Gcr-viewer" --> doFloat
, appName =? "Delete" --> doFloat --- worker file delete window
, appName =? "Copy" --> doFloat --- worker file copy window
, appName =? "Move" --> doFloat --- worker file move window
, appName =? "Worker Configuration" --> doFloat --- worker configurtion window
, appName =? "Edit type" --> doFloat --- worker configurtion window
, appName =? "Hotkeys" --> doFloat --- worker configurtion window
, appName =? "Edit button" --> doFloat --- worker configurtion window
, appName =? "Save File" --> doFloat --- Chrome download/save file
, title =? "Add New Items" --> doFloat --- Xfce4-panel add new items
, isFullscreen --> doFullFloat
, className =? "TheSwapper.bin.x86" --> doFullFloat
, isDialog --> doFloat
--, className =? "Gimp" --> doShift "5:graphic"
--, className =? "Vlc" --> doShift "7:media"
--, className =? "Minitube" --> doShift "7:media"
] where name = stringProperty "WM_NAME"
netName = stringProperty "_NET_WM_NAME"
role = stringProperty "WM_WINDOW_ROLE"
customKeys (XConfig {modMask = modm}) = M.fromList $
[ ((modm, xK_p) , spawn "dmenu_run")
, ((modm .|. shiftMask, xK_q) , spawn "gnome-session-quit")
]
myKeys =
[ (("M1-C-w"), spawn "google-chrome")
, (("M1-C-v"), spawn "gvim")
---, (("M1-z"), spawn "xkill")
, (("M1-C-f" ), spawn "worker") -- file manager
, (("M1-C-t" ), spawn myTerminal) -- terminal
, (("M1-<F4>"), kill) -- to kill applications
, (("M1-C-l"), spawn "xscreensaver-command -lock") -- lock
, (("M1-C-<Backspace>"), io (exitWith ExitSuccess)) --- logout, CTRL+ALT+Backspace
---, (("M1-C-<End>"), spawn("gksudo shutdown -h now")) --- halt, CTRL+ALT+End
, (("M1-C-<End>"), spawn("gksudo pm-hibernate")) --- halt, CTRL+ALT+End
, (("M1-C-k"), spawn "/home/ozgun/bin/commands.sh" ) -- komutlar
, (("M1-C-u"), spawn "/home/ozgun/bin/uye_siteler.sh")
, (("M1-C-s"), sshPrompt defaultXPConfig) --- ssh baglantisi acmak icin. CTRL+ALT+s
, (("M1-C-r"), shellPrompt defaultXPConfig) --- Shell'de program calistirma icin. CTRL+ALT+r
, ("C-<Print>", spawn "sleep 0.2; scrot -s")
, ("<Print>", spawn "scrot")
, ("M-<Esc>", toggleWS) -- <-- Really really usefull!!!. Son 2 workspace arasinda toggle.
]
--, ("M1-<Tab>", cycleRecentWindows [xK_Alt_L] xK_Tab xK_Tab) -- %! Alt+TAB
--, ((modMask, xK_Tab), windows W.focusDown) -- %! Move focus to the next window
--- myKeys =
--- [ (("M4-c"), spawn "google-chrome") -- mod+c chrome acar
--- , (("M4-z"), spawn "xkill")
--- , ((mod1Mask .|. controlMask, xK_l), spawn "xscreensaver-command -lock")
--- , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
--- , ((controlMask .|. mod1Mask, xK_BackSpace), io (exitWith ExitSuccess))
--- , (( mod4Mask, xK_f), spawn "firefox") -- to open firefox
--- , (( mod4Mask, xK_F4), kill) -- to kill applications
--- , (( controlMask, xK_KP_Add), sendMessage Expand) -- Ctrl + the plus (+) button to expand the master pane
--- , ((mod1Mask .|. controlMask, xK_k), spawn "/home/ozgun/bin/commands.sh" )
--- , ((mod1Mask .|. controlMask, xK_v), spawn "gvim" )
--- , ((mod1Mask .|. controlMask, xK_u), spawn "/home/ozgun/bin/uye_siteler.sh" )
--- , ((0, xK_Print), spawn "scrot")
--- ]
main = do
xmonad $ xfceConfig
{ modMask = mod4Mask
, borderWidth = 1
, terminal = myTerminal
, workspaces = myWorkspaces
---, manageHook = manageDocks <+> manageHook defaultConfig
, manageHook = manageDocks <+> myManageHook
, startupHook = setWMName "LG3D"
, layoutHook = smartBorders . avoidStruts $ layoutHook defaultConfig
, keys = customKeys <+> keys desktopConfig
} `additionalKeysP` myKeys
-- Query operators
q ~? x = fmap (x `isInfixOf`) q -- haystack includes needle?
--- main = do
--- xmonad $ defaultConfig
--- { modMask = mod4Mask
--- , borderWidth = 1
--- , terminal = myTerminal
--- , workspaces = myWorkspaces
--- ---, manageHook = manageDocks <+> manageHook defaultConfig
--- , manageHook = manageDocks <+> myManageHook
--- , startupHook = setWMName "LG3D"
--- , layoutHook = smartBorders . avoidStruts $ layoutHook defaultConfig
--- , keys = customKeys <+> keys desktopConfig
--- } `additionalKeysP` myKeys
---
--- main = do
--- xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmobarrc"
--- xmonad $ defaultConfig
--- { modMask = mod4Mask
--- , borderWidth = 1
--- , terminal = myTerminal
--- , workspaces = myWorkspaces
--- , manageHook = manageDocks <+> manageHook defaultConfig
--- , layoutHook = avoidStruts $ layoutHook defaultConfig
--- }`additionalKeys`
--- [ ((mod1Mask .|. controlMask, xK_l), spawn "xscreensaver-command -lock")
--- , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
--- , ((controlMask .|. mod1Mask, xK_BackSpace), io (exitWith ExitSuccess))
--- , (( mod4Mask, xK_f), spawn "firefox") -- to open firefox
--- , (( mod4Mask, xK_F4), kill) -- to kill applications
--- , (( controlMask, xK_KP_Add), sendMessage Expand) -- Ctrl + the plus (+) button to expand the master pane
--- , ((mod1Mask .|. controlMask, xK_k), spawn "/home/ozgun/bin/commands.sh" )
--- , ((mod1Mask .|. controlMask, xK_v), spawn "gvim" )
--- , ((mod1Mask .|. controlMask, xK_u), spawn "/home/ozgun/bin/uye_siteler.sh" )
--- , ((0, xK_Print), spawn "scrot")
--- ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment