diff --git a/.gitignore b/.gitignore
index e370f25..decb450 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,6 @@
.ssh/*
!.ssh/config
-.xmonad/*
-!.xmonad/xmonad.org
-!.xmonad/picom.conf
-!.xmonad/haskell_20.xpm
-
.emacs.d/*
!.emacs.d/desktop.org
!.emacs.d/emacs.org
diff --git a/.xmonad/scripts/autostart.sh b/.xmonad/scripts/autostart.sh
new file mode 100644
index 0000000..12dfc5d
--- /dev/null
+++ b/.xmonad/scripts/autostart.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+function run {
+ if ! pgrep $1 ;
+ then
+ $@&
+ fi
+}
+
+(sleep 2; run $HOME/.config/polybar/launch.sh) &
+
+# cursor
+xsetroot -cursor_name left_ptr &
+
+# background
+feh --bg-fill /usr/share/backgrounds/arcolinux/arco-wallpaper.jpg &
+
+# other apps
+run variety &
+run nm-applet &
+run pamac-tray &
+run xfce4-power-manager &
+run volumeicon &
+numlockx on &
+blueberry-tray &
+
+fcitx &
+picom -b --config $HOME/.xmonad/scripts/picom.conf &
+/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
+/usr/lib/xfce4/notifyd/xfce4-notifyd &
+seadrive-gui &
diff --git a/.xmonad/picom.conf b/.xmonad/scripts/picom.conf
similarity index 100%
rename from .xmonad/picom.conf
rename to .xmonad/scripts/picom.conf
diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs
new file mode 100644
index 0000000..3dff9d9
--- /dev/null
+++ b/.xmonad/xmonad.hs
@@ -0,0 +1,543 @@
+-- Base
+import XMonad
+import System.Directory
+import System.IO (hPutStrLn)
+import System.Exit (exitSuccess)
+import qualified XMonad.StackSet as W
+
+ -- Actions
+import XMonad.Actions.CopyWindow (kill1)
+import XMonad.Actions.CycleWS (Direction1D(..), moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
+import XMonad.Actions.GridSelect
+import XMonad.Actions.MouseResize
+import XMonad.Actions.Promote
+import XMonad.Actions.RotSlaves (rotSlavesDown, rotAllDown)
+import XMonad.Actions.WindowGo (runOrRaise)
+import XMonad.Actions.WithAll (sinkAll, killAll)
+import qualified XMonad.Actions.Search as S
+
+ -- Data
+import Data.Char (isSpace, toUpper)
+import Data.Maybe (fromJust)
+import Data.Monoid
+import Data.Maybe (isJust)
+import Data.Tree
+import qualified Data.Map as M
+
+ -- Hooks
+import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
+import XMonad.Hooks.EwmhDesktops -- for some fullscreen events, also for xcomposite in obs.
+import XMonad.Hooks.ManageDocks (avoidStruts, docksEventHook, manageDocks, ToggleStruts(..))
+import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
+import XMonad.Hooks.ServerMode
+import XMonad.Hooks.SetWMName
+import XMonad.Hooks.WorkspaceHistory
+
+ -- Layouts
+import XMonad.Layout.Accordion
+import XMonad.Layout.GridVariants (Grid(Grid))
+import XMonad.Layout.SimplestFloat
+import XMonad.Layout.Spiral
+import XMonad.Layout.ResizableTile
+import XMonad.Layout.Tabbed
+import XMonad.Layout.ThreeColumns
+
+ -- Layouts modifiers
+import XMonad.Layout.LayoutModifier
+import XMonad.Layout.LimitWindows (limitWindows, increaseLimit, decreaseLimit)
+import XMonad.Layout.Magnifier
+import XMonad.Layout.MultiToggle (mkToggle, single, EOT(EOT), (??))
+import XMonad.Layout.MultiToggle.Instances (StdTransformers(NBFULL, MIRROR, NOBORDERS))
+import XMonad.Layout.NoBorders
+import XMonad.Layout.Renamed
+import XMonad.Layout.ShowWName
+import XMonad.Layout.Simplest
+import XMonad.Layout.Spacing
+import XMonad.Layout.SubLayouts
+import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
+import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
+import qualified XMonad.Layout.MultiToggle as MT (Toggle(..))
+
+ -- Utilities
+import XMonad.Util.Dmenu
+import XMonad.Util.EZConfig (additionalKeysP)
+import XMonad.Util.NamedScratchpad
+import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
+import XMonad.Util.SpawnOnce
+
+myFont :: String
+myFont = "xft:NanumGothic:regular:size=9:antialias=true:hinting=true"
+
+myEmojiFont :: String
+myEmojiFont = "xft:Noto Fonts Emoji:regular:size=9:antialias=true:hinting=true"
+
+myModMask :: KeyMask
+myModMask = mod4Mask -- Sets modkey to super/windows key
+
+myTerminal :: String
+myTerminal = "alacritty" -- Sets default terminal
+
+myBrowser :: String
+myBrowser = "qutebrowser " -- Sets qutebrowser as browser
+
+myEmacs :: String
+myEmacs = "emacsclient -c -a 'emacs' " -- Makes emacs keybindings easier to type
+
+myEditor :: String
+myEditor = "emacsclient -c -a 'emacs' " -- Sets emacs as editor
+-- myEditor = myTerminal ++ " -e vim " -- Sets vim as editor
+
+myBorderWidth :: Dimension
+myBorderWidth = 2 -- Sets border width for windows
+
+myNormColor :: String
+myNormColor = "#282c34" -- Border color of normal windows
+
+myFocusColor :: String
+myFocusColor = "#46d9ff" -- Border color of focused windows
+
+altMask :: KeyMask
+altMask = mod1Mask -- Setting this for use in xprompts
+
+windowCount :: X (Maybe String)
+windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
+
+myStartupHook :: X ()
+myStartupHook = do
+ --spawnOnce "xrandr --output DP-4 --primary --mode 2560x1440 --pos 0x0 --rotate normal --output HDMI-0 --mode 1920x1080 --pos 2560x0 --rotate normal"
+ spawn "$HOME/.xmonad/scripts/autostart.sh"
+ --spawnOnce "nm-applet &"
+ --spawnOnce "picom -b --config ~/.xmonad/picom.conf &"
+ --spawnOnce "picom --experimental-backends -b --config ~/.xmonad/picom.conf &"
+ --spawnOnce "dwall -s firewatch &"
+ --spawnOnce "fcitx &"
+ --spawnOnce "seafile-applet &"
+ --spawnOnce "seadrive-gui &"
+ --spawnOnce "blueberry-tray &"
+ --spawnOnce "volumeicon &"
+ --spawnOnce "enpass"
+ --spawnOnce "green-tunnel -s &"
+ --spawnOnce "trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 0 --transparent true --alpha 0 --tint 0x282c34 --height 24 &"
+ --spawnOnce "/usr/bin/emacs --daemon &"
+ -- spawnOnce "/usr/bin/emacs --daemon &" -- emacs daemon for the emacsclient
+ -- spawnOnce "kak -d -s mysession &" -- kakoune daemon for better performance
+ -- spawnOnce "urxvtd -q -o -f &" -- urxvt daemon for better performance
+
+ --spawnOnce "xargs xwallpaper --stretch < ~/.xwallpaper" -- set last saved with xwallpaper
+ -- spawnOnce "/bin/ls ~/wallpapers | shuf -n 1 | xargs xwallpaper --stretch" -- set random xwallpaper
+ -- spawnOnce "~/.fehbg &" -- set last saved feh wallpaper
+ -- spawnOnce "feh --randomize --bg-fill ~/wallpapers/*" -- feh set random wallpaper
+ -- spawnOnce "nitrogen --restore &" -- if you prefer nitrogen to feh
+ setWMName "LG3D"
+
+myColorizer :: Window -> Bool -> X (String, String)
+myColorizer = colorRangeFromClassName
+ (0x28,0x2c,0x34) -- lowest inactive bg
+ (0x28,0x2c,0x34) -- highest inactive bg
+ (0xc7,0x92,0xea) -- active bg
+ (0xc0,0xa7,0x9a) -- inactive fg
+ (0x28,0x2c,0x34) -- active fg
+
+-- gridSelect menu layout
+mygridConfig :: p -> GSConfig Window
+mygridConfig colorizer = (buildDefaultGSConfig myColorizer)
+ { gs_cellheight = 40
+ , gs_cellwidth = 200
+ , gs_cellpadding = 6
+ , gs_originFractX = 0.5
+ , gs_originFractY = 0.5
+ , gs_font = myFont
+ }
+
+spawnSelected' :: [(String, String)] -> X ()
+spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
+ where conf = def
+ { gs_cellheight = 40
+ , gs_cellwidth = 200
+ , gs_cellpadding = 6
+ , gs_originFractX = 0.5
+ , gs_originFractY = 0.5
+ , gs_font = myFont
+ }
+
+myAppGrid = [ --("Audacity", "audacity")
+ --, ("Deadbeef", "deadbeef")
+ ("Vivaldi", "vivaldi-stable")
+ , ("Emacs", "emacsclient -c -a emacs")
+ , ("Firefox", "firefox")
+ --, ("Geany", "geany")
+ --, ("Geary", "geary")
+ , ("Gimp", "gimp")
+ , ("Kdenlive", "kdenlive")
+ , ("LibreOffice Impress", "loimpress")
+ , ("LibreOffice Writer", "lowriter")
+ --, ("OBS", "obs")
+ , ("PCManFM", "pcmanfm")
+ ]
+
+myScratchPads :: [NamedScratchpad]
+myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
+ , NS "mocp" spawnMocp findMocp manageMocp
+ , NS "calculator" spawnCalc findCalc manageCalc
+ ]
+ where
+ spawnTerm = myTerminal ++ " -t scratchpad"
+ findTerm = title =? "scratchpad"
+ manageTerm = customFloating $ W.RationalRect l t w h
+ where
+ h = 0.9
+ w = 0.9
+ t = 0.95 -h
+ l = 0.95 -w
+ spawnMocp = myTerminal ++ " -t mocp -e mocp"
+ findMocp = title =? "mocp"
+ manageMocp = customFloating $ W.RationalRect l t w h
+ where
+ h = 0.9
+ w = 0.9
+ t = 0.95 -h
+ l = 0.95 -w
+ spawnCalc = "qalculate-gtk"
+ findCalc = className =? "Qalculate-gtk"
+ manageCalc = customFloating $ W.RationalRect l t w h
+ where
+ h = 0.5
+ w = 0.4
+ t = 0.75 -h
+ l = 0.70 -w
+
+--Makes setting the spacingRaw simpler to write. The spacingRaw module adds a configurable amount of space around windows.
+mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
+mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True
+
+-- Below is a variation of the above except no borders are applied
+-- if fewer than two windows. So a single window has no gaps.
+mySpacing' :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
+mySpacing' i = spacingRaw True (Border i i i i) True (Border i i i i) True
+
+-- Defining a bunch of layouts, many that I don't use.
+-- limitWindows n sets maximum number of windows displayed for layout.
+-- mySpacing n sets the gap size around the windows.
+tall = renamed [Replace "tall"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ limitWindows 12
+ $ mySpacing 8
+ $ ResizableTall 1 (3/100) (1/2) []
+magnify = renamed [Replace "magnify"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ magnifier
+ $ limitWindows 12
+ $ mySpacing 8
+ $ ResizableTall 1 (3/100) (1/2) []
+monocle = renamed [Replace "monocle"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ limitWindows 20 Full
+floats = renamed [Replace "floats"]
+ $ smartBorders
+ $ limitWindows 20 simplestFloat
+grid = renamed [Replace "grid"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ limitWindows 12
+ $ mySpacing 8
+ $ mkToggle (single MIRROR)
+ $ Grid (16/10)
+spirals = renamed [Replace "spirals"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ mySpacing' 8
+ $ spiral (6/7)
+threeCol = renamed [Replace "threeCol"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ limitWindows 7
+ $ ThreeCol 1 (3/100) (1/2)
+threeRow = renamed [Replace "threeRow"]
+ $ smartBorders
+ $ addTabs shrinkText myTabTheme
+ $ subLayout [] (smartBorders Simplest)
+ $ limitWindows 7
+ -- Mirror takes a layout and rotates it by 90 degrees.
+ -- So we are applying Mirror to the ThreeCol layout.
+ $ Mirror
+ $ ThreeCol 1 (3/100) (1/2)
+tabs = renamed [Replace "tabs"]
+ -- I cannot add spacing to this layout because it will
+ -- add spacing between window and tabs which looks bad.
+ $ tabbed shrinkText myTabTheme
+tallAccordion = renamed [Replace "tallAccordion"]
+ $ Accordion
+wideAccordion = renamed [Replace "wideAccordion"]
+ $ Mirror Accordion
+
+-- setting colors for tabs layout and tabs sublayout.
+myTabTheme = def { fontName = myFont
+ , activeColor = "#46d9ff"
+ , inactiveColor = "#313846"
+ , activeBorderColor = "#46d9ff"
+ , inactiveBorderColor = "#282c34"
+ , activeTextColor = "#282c34"
+ , inactiveTextColor = "#d0d0d0"
+ }
+
+-- Theme for showWName which prints current workspace when you change workspaces.
+myShowWNameTheme :: SWNConfig
+myShowWNameTheme = def
+ { swn_font = "xft:Ubuntu:bold:size=60"
+ , swn_fade = 1.0
+ , swn_bgcolor = "#1c1f24"
+ , swn_color = "#ffffff"
+ }
+
+-- The layout hook
+myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats
+ $ mkToggle (NBFULL ?? NOBORDERS ?? EOT) myDefaultLayout
+ where
+ myDefaultLayout = withBorder myBorderWidth tall
+ ||| magnify
+ ||| noBorders monocle
+ ||| floats
+ ||| noBorders tabs
+ ||| grid
+ ||| spirals
+ ||| threeCol
+ ||| threeRow
+ ||| tallAccordion
+ ||| wideAccordion
+
+myWorkspaces = [" 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 "]
+-- myWorkspaces = [" dev ", " www ", " sys ", " doc ", " vbox ", " chat ", " mus ", " vid ", " gfx "]
+myWorkspaceIndices = M.fromList $ zipWith (,) myWorkspaces [1..] -- (,) == \x y -> (x,y)
+
+clickable ws = ""++ws++""
+ where i = fromJust $ M.lookup ws myWorkspaceIndices
+
+myManageHook :: XMonad.Query (Data.Monoid.Endo WindowSet)
+myManageHook = composeAll
+ -- 'doFloat' forces a window to float. Useful for dialog boxes and such.
+ -- using 'doShift ( myWorkspaces !! 7)' sends program to workspace 8!
+ -- I'm doing it this way because otherwise I would have to write out the full
+ -- name of my workspaces and the names would be very long if using clickable workspaces.
+ [ className =? "confirm" --> doFloat
+ , className =? "file_progress" --> doFloat
+ , className =? "dialog" --> doFloat
+ , className =? "download" --> doFloat
+ , className =? "error" --> doFloat
+ , className =? "Gimp" --> doFloat
+ , className =? "notification" --> doFloat
+ , className =? "pinentry-gtk-2" --> doFloat
+ , className =? "splash" --> doFloat
+ , className =? "toolbar" --> doFloat
+ --, title =? "Oracle VM VirtualBox Manager" --> doFloat
+ --, title =? "Mozilla Firefox" --> doShift ( myWorkspaces !! 1 )
+ --, className =? "brave-browser" --> doShift ( myWorkspaces !! 1 )
+ --, className =? "qutebrowser" --> doShift ( myWorkspaces !! 1 )
+ --, className =? "mpv" --> doShift ( myWorkspaces !! 7 )
+ --, className =? "Gimp" --> doShift ( myWorkspaces !! 8 )
+ --, className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 )
+ , (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
+ , (className =? "steam" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
+ ] <+> namedScratchpadManageHook myScratchPads
+
+myKeys :: [(String, X ())]
+myKeys =
+ -- Xmonad
+ [ ("M-C-r", spawn "xmonad --recompile") -- Recompiles xmonad
+ , ("M-S-r", spawn "xmonad --restart") -- Restarts xmonad
+ , ("M-S-q", io exitSuccess) -- Quits xmonad
+
+ -- Run Prompt
+ -- M-p was the default keybinding. I've changed it to M-S-RET because I will use
+ -- M-p as part of the keychord for the other dmenu script bindings.
+ , ("M-S-", spawn "dmenu_run -i -p \"Run: \"") -- Dmenu
+
+ -- Launch Apps
+ , ("M-f", spawn "firefox")
+ , ("M-t", spawn "thunar")
+ , ("M-p", spawn "enpass")
+ --, ("M-e", spawn "emacs")
+ , ("M-e", spawn myEmacs)
+ , ("M-l", spawn "arcolinux-logout")
+
+ -- Useful programs to have a keybinding for launch
+ , ("M-", spawn (myTerminal))
+ --, ("M-b", spawn (myBrowser ++ " www.youtube.com/c/DistroTube/"))
+ --, ("M-M1-h", spawn (myTerminal ++ " -e htop"))
+
+ -- Kill windows
+ , ("M-S-c", kill1) -- Kill the currently focused client
+ --, ("M-S-a", killAll) -- Kill all windows on current workspace
+
+ -- Workspaces
+ --, ("M-.", nextScreen) -- Switch focus to next monitor
+ --, ("M-,", prevScreen) -- Switch focus to prev monitor
+ --, ("M-S-", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next ws
+ --, ("M-S-", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to prev ws
+
+ -- Floating windows
+ --, ("M-f", sendMessage (T.Toggle "floats")) -- Toggles my 'floats' layout
+ --, ("M-t", withFocused $ windows . W.sink) -- Push floating window back to tile
+ --, ("M-S-t", sinkAll) -- Push ALL floating windows to tile
+
+ -- Increase/decrease spacing (gaps)
+ --, ("M-d", decWindowSpacing 4) -- Decrease window spacing
+ --, ("M-i", incWindowSpacing 4) -- Increase window spacing
+ --, ("M-S-d", decScreenSpacing 4) -- Decrease screen spacing
+ --, ("M-S-i", incScreenSpacing 4) -- Increase screen spacing
+
+ -- Grid Select (CTR-g followed by a key)
+ , ("M-g g", spawnSelected' myAppGrid) -- grid select favorite apps
+ , ("M-g t", goToSelected $ mygridConfig myColorizer) -- goto selected window
+ --, ("C-g b", bringSelected $ mygridConfig myColorizer) -- bring selected window
+
+ -- Windows navigation
+ --, ("M-m", windows W.focusMaster) -- Move focus to the master window
+ , ("M-j", windows W.focusDown) -- Move focus to the next window
+ , ("M-k", windows W.focusUp) -- Move focus to the prev window
+ --, ("M-S-m", windows W.swapMaster) -- Swap the focused window and the master window
+ --, ("M-S-j", windows W.swapDown) -- Swap focused window with next window
+ --, ("M-S-k", windows W.swapUp) -- Swap focused window with prev window
+ --, ("M-", promote) -- Moves focused window to master, others maintain order
+ --, ("M-S-", rotSlavesDown) -- Rotate all windows except master and keep focus in place
+ , ("M-C-", rotAllDown) -- Rotate all the windows in the current stack
+
+ -- Layouts
+ --, ("M-", sendMessage NextLayout) -- Switch to next layout
+ --, ("M-C-M1-", sendMessage Arrange)
+ --, ("M-C-M1-", sendMessage DeArrange)
+ --, ("M-S-", sendMessage ToggleStruts) -- Toggles struts
+ --, ("M-S-n", sendMessage $ MT.Toggle NOBORDERS) -- Toggles noborder
+ , ("M-", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
+
+ -- Increase/decrease windows in the master pane or the stack
+ --, ("M-S-", sendMessage (IncMasterN 1)) -- Increase # of clients master pane
+ --, ("M-S-", sendMessage (IncMasterN (-1))) -- Decrease # of clients master pane
+ --, ("M-C-", increaseLimit) -- Increase # of windows
+ --, ("M-C-", decreaseLimit) -- Decrease # of windows
+
+ -- Window resizing
+ --, ("M-h", sendMessage Shrink) -- Shrink horiz window width
+ --, ("M-l", sendMessage Expand) -- Expand horiz window width
+ --, ("M-M1-j", sendMessage MirrorShrink) -- Shrink vert window width
+ --, ("M-M1-k", sendMessage MirrorExpand) -- Expand vert window width
+
+ -- Sublayouts
+ -- This is used to push windows to tabbed sublayouts, or pull them out of it.
+ --, ("M-C-h", sendMessage $ pullGroup L)
+ --, ("M-C-l", sendMessage $ pullGroup R)
+ --, ("M-C-k", sendMessage $ pullGroup U)
+ --, ("M-C-j", sendMessage $ pullGroup D)
+ --, ("M-C-m", withFocused (sendMessage . MergeAll))
+ ---- , ("M-C-u", withFocused (sendMessage . UnMerge))
+ --, ("M-C-/", withFocused (sendMessage . UnMergeAll))
+ --, ("M-C-.", onGroup W.focusUp') -- Switch focus to next tab
+ --, ("M-C-,", onGroup W.focusDown') -- Switch focus to prev tab
+
+ -- Scratchpads
+ -- Toggle show/hide these programs. They run on a hidden workspace.
+ -- When you toggle them to show, it brings them to your current workspace.
+ -- Toggle them to hide and it sends them back to hidden workspace (NSP).
+ --, ("C-s t", namedScratchpadAction myScratchPads "terminal")
+ --, ("C-s m", namedScratchpadAction myScratchPads "mocp")
+ --, ("C-s c", namedScratchpadAction myScratchPads "calculator")
+
+ -- Set wallpaper with 'feh'. Type 'SUPER+F1' to launch sxiv in the wallpapers directory.
+ -- Then in sxiv, type 'C-x w' to set the wallpaper that you choose.
+ --, ("M-", spawn "sxiv -r -q -t -o ~/wallpapers/*")
+ --, ("M-", spawn "/bin/ls ~/wallpapers | shuf -n 1 | xargs xwallpaper --stretch")
+ --, ("M-", spawn "feh --randomize --bg-fill ~/wallpapers/*")
+
+ -- Controls for mocp music player (SUPER-u followed by a key)
+ --, ("M-u p", spawn "mocp --play")
+ --, ("M-u l", spawn "mocp --next")
+ --, ("M-u h", spawn "mocp --previous")
+ --, ("M-u ", spawn "mocp --toggle-pause")
+
+ -- Emacs (CTRL-e followed by a key)
+ -- , ("C-e e", spawn myEmacs) -- start emacs
+ --, ("C-e e", spawn (myEmacs ++ ("--eval '(dashboard-refresh-buffer)'"))) -- emacs dashboard
+ --, ("C-e b", spawn (myEmacs ++ ("--eval '(ibuffer)'"))) -- list buffers
+ --, ("C-e d", spawn (myEmacs ++ ("--eval '(dired nil)'"))) -- dired
+ --, ("C-e i", spawn (myEmacs ++ ("--eval '(erc)'"))) -- erc irc client
+ --, ("C-e m", spawn (myEmacs ++ ("--eval '(mu4e)'"))) -- mu4e email
+ --, ("C-e n", spawn (myEmacs ++ ("--eval '(elfeed)'"))) -- elfeed rss
+ --, ("C-e s", spawn (myEmacs ++ ("--eval '(eshell)'"))) -- eshell
+ --, ("C-e t", spawn (myEmacs ++ ("--eval '(mastodon)'"))) -- mastodon.el
+ ---- , ("C-e v", spawn (myEmacs ++ ("--eval '(vterm nil)'"))) -- vterm if on GNU Emacs
+ --, ("C-e v", spawn (myEmacs ++ ("--eval '(+vterm/here nil)'"))) -- vterm if on Doom Emacs
+ ---- , ("C-e w", spawn (myEmacs ++ ("--eval '(eww \"distrotube.com\")'"))) -- eww browser if on GNU Emacs
+ --, ("C-e w", spawn (myEmacs ++ ("--eval '(doom/window-maximize-buffer(eww \"distrotube.com\"))'"))) -- eww browser if on Doom Emacs
+ ---- emms is an emacs audio player. I set it to auto start playing in a specific directory.
+ --, ("C-e a", spawn (myEmacs ++ ("--eval '(emms)' --eval '(emms-play-directory-tree \"~/Music/Non-Classical/70s-80s/\")'")))
+
+ -- Multimedia Keys
+ --, ("", spawn (myTerminal ++ "mocp --play"))
+ --, ("", spawn (myTerminal ++ "mocp --previous"))
+ --, ("", spawn (myTerminal ++ "mocp --next"))
+ --, ("", spawn "amixer set Master toggle")
+ , ("", spawn "amixer set Master 5%- unmute")
+ , ("", spawn "amixer set Master 5%+ unmute")
+ --, ("", spawn "firefox")
+ --, ("", safeSpawn "firefox" ["https://www.duckduckgo.com/"])
+ --, ("", runOrRaise "thunderbird" (resource =? "thunderbird"))
+ --, ("", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk"))
+ --, ("", spawn "toggleeject")
+ --, ("", spawn "scrotd 0")
+ ]
+ -- The following lines are needed for named scratchpads.
+ where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP"))
+ nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "NSP"))
+
+main :: IO ()
+main = do
+ -- Launching three instances of xmobar on their monitors.
+ -- xmproc0 <- spawnPipe "xmobar -x 0 $HOME/.config/xmobar/xmobarrc_desktop_qhd"
+ -- xmproc1 <- spawnPipe "xmobar -x 1 $HOME/.config/xmobar/xmobarrc_desktop_fhd"
+ xmproc0 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc_labtop_fhd"
+ xmproc0 <- spawnPipe "polyb
+ -- the xmonad, ya know...what the WM is named after!
+ xmonad $ ewmh def
+ { manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageDocks
+ -- Run xmonad commands from command line with "xmonadctl command". Commands include:
+ -- shrink, expand, next-layout, default-layout, restart-wm, xterm, kill, refresh, run,
+ -- focus-up, focus-down, swap-up, swap-down, swap-master, sink, quit-wm. You can run
+ -- "xmonadctl 0" to generate full list of commands written to ~/.xsession-errors.
+ -- To compile xmonadctl: ghc -dynamic xmonadctl.hs
+ , handleEventHook = serverModeEventHookCmd
+ <+> serverModeEventHook
+ <+> serverModeEventHookF "XMONAD_PRINT" (io . putStrLn)
+ <+> docksEventHook
+ <+> fullscreenEventHook -- this does NOT work right if using multi-monitors!
+ , modMask = myModMask
+ , terminal = myTerminal
+ , startupHook = myStartupHook
+ , layoutHook = showWName' myShowWNameTheme $ myLayoutHook
+ , workspaces = myWorkspaces
+ , borderWidth = myBorderWidth
+ , normalBorderColor = myNormColor
+ , focusedBorderColor = myFocusColor
+ , logHook = dynamicLogWithPP $ namedScratchpadFilterOutWorkspacePP $ xmobarPP
+ -- the following variables beginning with 'pp' are settings for xmobar.
+ { ppOutput = \x -> hPutStrLn xmproc0 x -- xmobar on monitor 1
+ -- >> hPutStrLn xmproc1 x -- xmobar on monitor 2
+ -- >> hPutStrLn xmproc2 x -- xmobar on monitor 3
+ , ppCurrent = xmobarColor "#FFFFFF" "" . wrap "●" "" -- Current workspace
+ , ppVisible = xmobarColor "#c0a79a" "" . wrap "♼" "" . clickable -- Visible but not current workspace
+ , ppHidden = xmobarColor "#c0a79a" "" . wrap "○" "" . clickable -- Hidden workspaces
+ , ppHiddenNoWindows = xmobarColor "#c792ea" "" . \s -> "" -- Hidden workspaces (no windows)
+ , ppTitle = xmobarColor "#b3afc2" "" . shorten 60 -- Title of active window
+ , ppSep = " | " -- Separator character
+ , ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
+ , ppExtras = [windowCount] -- # of windows current workspace
+ , ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t] -- order of things in xmobar
+ }
+ } `additionalKeysP` myKeys
diff --git a/.xmonad/xmonad.org b/.xmonad/xmonad.org
index f234f3f..3ce395e 100644
--- a/.xmonad/xmonad.org
+++ b/.xmonad/xmonad.org
@@ -114,19 +114,20 @@
myStartupHook :: X ()
myStartupHook = do
--spawnOnce "xrandr --output DP-4 --primary --mode 2560x1440 --pos 0x0 --rotate normal --output HDMI-0 --mode 1920x1080 --pos 2560x0 --rotate normal"
- spawnOnce "nm-applet &"
- spawnOnce "picom -b --config ~/.xmonad/picom.conf &"
+ spawn "$HOME/.xmonad/scripts/autostart.sh"
+ --spawnOnce "nm-applet &"
+ --spawnOnce "picom -b --config ~/.xmonad/picom.conf &"
--spawnOnce "picom --experimental-backends -b --config ~/.xmonad/picom.conf &"
- spawnOnce "dwall -s firewatch &"
- spawnOnce "fcitx &"
+ --spawnOnce "dwall -s firewatch &"
+ --spawnOnce "fcitx &"
--spawnOnce "seafile-applet &"
- spawnOnce "seadrive-gui &"
- spawnOnce "blueberry-tray &"
- spawnOnce "volumeicon &"
+ --spawnOnce "seadrive-gui &"
+ --spawnOnce "blueberry-tray &"
+ --spawnOnce "volumeicon &"
--spawnOnce "enpass"
- spawnOnce "green-tunnel -s &"
- spawnOnce "trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 0 --transparent true --alpha 0 --tint 0x282c34 --height 24 &"
- spawnOnce "/usr/bin/emacs --daemon &"
+ --spawnOnce "green-tunnel -s &"
+ --spawnOnce "trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 0 --transparent true --alpha 0 --tint 0x282c34 --height 24 &"
+ --spawnOnce "/usr/bin/emacs --daemon &"
-- spawnOnce "/usr/bin/emacs --daemon &" -- emacs daemon for the emacsclient
-- spawnOnce "kak -d -s mysession &" -- kakoune daemon for better performance
-- spawnOnce "urxvtd -q -o -f &" -- urxvt daemon for better performance
@@ -136,7 +137,7 @@
-- spawnOnce "~/.fehbg &" -- set last saved feh wallpaper
-- spawnOnce "feh --randomize --bg-fill ~/wallpapers/*" -- feh set random wallpaper
-- spawnOnce "nitrogen --restore &" -- if you prefer nitrogen to feh
- --setWMName "LG3D"
+ setWMName "LG3D"
#+end_src
** Layout
@@ -208,7 +209,7 @@
h = 0.9
w = 0.9
t = 0.95 -h
- l = 0.95 -w
+ l = 0.95 -w
spawnCalc = "qalculate-gtk"
findCalc = className =? "Qalculate-gtk"
manageCalc = customFloating $ W.RationalRect l t w h
@@ -548,10 +549,10 @@
, focusedBorderColor = myFocusColor
, logHook = dynamicLogWithPP $ namedScratchpadFilterOutWorkspacePP $ xmobarPP
-- the following variables beginning with 'pp' are settings for xmobar.
- { ppOutput = \x -> hPutStrLn xmproc0 x -- xmobar on monitor 1
+ { --ppOutput = \x -> hPutStrLn xmproc0 x -- xmobar on monitor 1
-- >> hPutStrLn xmproc1 x -- xmobar on monitor 2
-- >> hPutStrLn xmproc2 x -- xmobar on monitor 3
- , ppCurrent = xmobarColor "#FFFFFF" "" . wrap "●" "" -- Current workspace
+ ppCurrent = xmobarColor "#FFFFFF" "" . wrap "●" "" -- Current workspace
, ppVisible = xmobarColor "#c0a79a" "" . wrap "♼" "" . clickable -- Visible but not current workspace
, ppHidden = xmobarColor "#c0a79a" "" . wrap "○" "" . clickable -- Hidden workspaces
, ppHiddenNoWindows = xmobarColor "#c792ea" "" . \s -> "" -- Hidden workspaces (no windows)
diff --git a/scripts/init_script_arcolinux.sh b/scripts/init_script_arcolinux.sh
index f1b6778..a721890 100755
--- a/scripts/init_script_arcolinux.sh
+++ b/scripts/init_script_arcolinux.sh
@@ -1,12 +1,10 @@
#!/bin/sh
-sudo pacman -S betterlockscreen
sudo pacman -Syu --noconfirm
-
-git clone https://github.com/JaeYoo-Im/myDots ~/.dotfiles
paru -S stow zsh-autosuggestions-git alacritty trayer --noconfirm
/usr/share/oh-my-zsh/tools/install.sh
rm ~/.zshrc ~/.bashrc ~/.xmonad/xmonad.hs
+rm -rf ~/.config/alacritty ~/.xmonad/scripts
cd ~/.dotfiles
stow .
@@ -29,10 +27,10 @@ TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/scripts/
TMUX_PLUGIN_MANAGER_PATH=~/.config/tmux/plugins/tpm ~/.tmux/plugins/tpm/bin/update_plugins all
# Dynamic wallpaper
-paru -S cronie --noconfirm
-git clone https://github.com/adi1090x/dynamic-wallpaper.git ~/dynamic-wallpaper
-cd dynamic-wallpaper
-./install.sh
+#paru -S cronie --noconfirm
+#git clone https://github.com/adi1090x/dynamic-wallpaper.git ~/dynamic-wallpaper
+#cd dynamic-wallpaper
+#./install.sh
# font
paru -S ttf-fira-code ttf-nanum nerd-fonts-mononoki --noconfirm
@@ -43,7 +41,7 @@ paru -S fcitx-hangul fcitx-configtool --noconfirm
# enpass
paru -S enpass --noconfirm
-paru -S green-tunnel --noconfirm
+#paru -S green-tunnel --noconfirm
#emacs
paru -S ripgrep emacs --noconfirm