From 1bbba1fcec5c8a8867df32d3199aaee48888e12b Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Sun, 16 Oct 2022 00:48:57 +0200 Subject: [PATCH] XMonad & polybar update --- .gitignore | 8 + polybar/.config/polybar/config | 67 ++++++-- xmonad/.xmonad/bin/autostart.sh | 30 ++++ xmonad/.xmonad/xmonad.hs | 265 ++++++++++++++++++++++++++++++++ 4 files changed, 359 insertions(+), 11 deletions(-) create mode 100755 xmonad/.xmonad/bin/autostart.sh create mode 100644 xmonad/.xmonad/xmonad.hs diff --git a/.gitignore b/.gitignore index b52a278..9de7d59 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ +# (n)Vim junk nvim/.config/nvim/plugged/ + +# XMonad junk +xmonad/.xmonad/*.hi +xmonad/.xmonad/*.errors +xmonad/.xmonad/*.o +xmonad/.xmonad/xmonad-x86_64-linux +xmonad/.xmonad/build-x86_64-linux/ diff --git a/polybar/.config/polybar/config b/polybar/.config/polybar/config index 63924c1..4ee87ac 100644 --- a/polybar/.config/polybar/config +++ b/polybar/.config/polybar/config @@ -2,9 +2,9 @@ #compositing-foreground = over [colors] -background = #00141414 -foreground = #efefef -foreground2 = #77fefefe +background = #141414 +foreground = #ebdbb2 +foreground2 = #77ebdbb2 line = #bbb border = #bbb accent = #434d5e @@ -35,13 +35,14 @@ white = #787c99 [bar/top] font-0 = "Fira Code:pixelsize=9:weight=medium;1" -font-1 = "siji:pixelsize=12;1" -font-2 = "Font Awesome 5 Free Regular:size=12;1" -font-3 = "Font Awesome 5 Free Solid:size=12;1" -font-4 = "Font Awesome 5 Brands Regular:size=12;1" +#font-1 = "Feather:pixelsize:12;1" +#font-1 = "siji:pixelsize=12;1" +font-1 = "Font Awesome:size=12;1" monitor = ${env:MONITOR} +line-size = 2 + # fixed-center = true # override-redirect = true @@ -60,9 +61,9 @@ module-margin = 1 #modules-left = dwm #modules-center = title #modules-right = cmus pulseaudio wlan battery time date -modules-left = date time pulseaudio dwm-layout dwm-floating cmus -modules-center = dwm-tags -modules-right = +modules-left = date time pulseaudio +modules-center = workspaces +modules-right = cmus [module/dwm-layout] type = internal/dwm @@ -284,7 +285,7 @@ format-muted = label-muted = %percentage%% label-muted-foreground = ${colors.red} -bar-volume-width = 10 +bar-volume-width = 5 bar-volume-foreground-0 = ${colors.green} bar-volume-foreground-1 = ${colors.green} bar-volume-foreground-2 = ${colors.green} @@ -334,3 +335,47 @@ animation-charging-1 =  animation-charging-2 =  animation-charging-foreground = ${colors.foreground} animation-charging-framerate = 750 + +[module/workspaces] +type = internal/xworkspaces + +# %index% = Index of the workspace +# %name% = Name of the workspace +# %icon% = Icon of the workspace + +pin-workspaces = true +enable-click = true +enable-scroll = true + +format = +label-monitor = %index% +label-monitor-underline = ${colors.cyan} + +label-active = %index% +label-active-foreground = ${colors.blue} +label-active-underline = ${colors.blue} +label-active-padding = 1 + +label-occupied = %index% +label-occupied-foreground = ${colors.foreground2} +label-occupied-padding = 1 + +label-urgent = %index% +label-urgent-foreground = ${colors.red} +label-urgent-padding = 1 + +label-empty = +label-empty-foreground = ${colors.foreground2} +label-empty-padding = 0 + +icon-0 = 1; +icon-1 = 2; +icon-2 = 3; +icon-3 = 4; +icon-4 = 5; +icon-5 = 6; +icon-6 = 7; +icon-7 = 8; +icon-8 = 9; +icon-9 = 10; +icon-default =  diff --git a/xmonad/.xmonad/bin/autostart.sh b/xmonad/.xmonad/bin/autostart.sh new file mode 100755 index 0000000..61bdf2b --- /dev/null +++ b/xmonad/.xmonad/bin/autostart.sh @@ -0,0 +1,30 @@ +# Keyboard layout +setxkbmap se & + +# Display settings +$HOME/.screenlayout/layout.sh & + +# Compositor +$HOME/.config/picom/launch & + +# Background +nitrogen --restore & + +# Notification daemon +dunst & + +# Anti sleep +xset s off & +xset -dpms & + +# EWW widgets etc +#eww daemon +#eww open bar + +# Polybar +$HOME/.config/polybar/launch & + +# Keyring +eval $(gnome-keyring-daemon --start) +export SSH_AUTH_SOCK + diff --git a/xmonad/.xmonad/xmonad.hs b/xmonad/.xmonad/xmonad.hs new file mode 100644 index 0000000..5b14060 --- /dev/null +++ b/xmonad/.xmonad/xmonad.hs @@ -0,0 +1,265 @@ +-- +-- xmonad example config file. +-- +-- A template showing all available configuration hooks, +-- and how to override the defaults in your own xmonad.hs conf file. +-- +-- Normally, you'd only override those defaults you care about. +-- +import Data.Monoid +import System.Exit +import XMonad + +import XMonad.Hooks.ManageDocks +import XMonad.Util.SpawnOnce + +import qualified Data.Map as M +import XMonad.Hooks.EwmhDesktops (ewmh) +import XMonad.Hooks.InsertPosition +import XMonad.Layout.Fullscreen (fullscreenSupport) +import XMonad.Layout.IndependentScreens (withScreens) +import qualified XMonad.StackSet as W +import XMonad.Util.Run (spawnPipe) + +-- The preferred terminal program, which is used in a binding below and by +-- certain contrib modules. +-- +myTerminal = "alacritty" + +-- Whether focus follows the mouse pointer. +myFocusFollowsMouse :: Bool +myFocusFollowsMouse = True + +-- Whether clicking on a window to focus also passes the click to the window +myClickJustFocuses :: Bool +myClickJustFocuses = True + +-- Width of the window border in pixels. +-- +myBorderWidth = 1 + +-- modMask lets you specify which modkey you want to use. The default +-- is mod1Mask ("left alt"). You may also consider using mod3Mask +-- ("right alt"), which does not conflict with emacs keybindings. The +-- "windows key" is usually mod4Mask. +-- +myModMask = mod4Mask + +-- The default number of workspaces (virtual screens) and their names. +-- By default we use numeric strings, but any string may be used as a +-- workspace name. The number of workspaces is determined by the length +-- of this list. +-- +-- A tagging example: +-- +-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9] +-- +myWorkspaces = map show [1 .. 9] + +-- Border colors for unfocused and focused windows, respectively. +-- +myNormalBorderColor = "#282828" + +myFocusedBorderColor = "#484848" + +------------------------------------------------------------------------ +-- Key bindings. Add, modify or remove key bindings here. +-- +myKeys conf@(XConfig {XMonad.modMask = modm}) = + M.fromList $ + -- launch a terminal + [ ((modm, xK_Return), spawn $ XMonad.terminal conf) + -- launch rofi app launcher + , ((modm, xK_d), spawn "rofi -show drun") + -- launch rofi ssh + , ((modm, xK_s), spawn "rofi -show ssh") + -- launch rofi shell + , ((modm, xK_p), spawn "rofi -show run") + -- pause cmus + , ((modm, xK_u), spawn "cmus-remote --pause") + -- spawn firefox + , ((modm, xK_b), spawn "firefox") + -- screenshot + , ((modm, xK_Print), spawn "flameshot gui") + -- launch gmrun + , ((modm .|. shiftMask, xK_p), spawn "gmrun") + -- close focused window + , ((modm .|. shiftMask, xK_q), kill) + -- Rotate through the available layout algorithms + , ((modm, xK_space), sendMessage NextLayout) + -- Reset the layouts on the current workspace to default + , ((modm .|. shiftMask, xK_space), setLayout $ XMonad.layoutHook conf) + -- Resize viewed windows to the correct size + , ((modm, xK_n), refresh) + -- Move focus to the next window + , ((modm, xK_Tab), windows W.focusDown) + -- Move focus to the next window + , ((modm, xK_j), windows W.focusDown) + -- Move focus to the previous window + , ((modm, xK_k), windows W.focusUp) + -- Move focus to the master window + , ((modm, xK_m), windows W.focusMaster) + -- Swap the focused window and the master window + , ((modm .|. shiftMask, xK_Return), windows W.swapMaster) + -- Swap the focused window with the next window + , ((modm .|. shiftMask, xK_j), windows W.swapDown) + -- Swap the focused window with the previous window + , ((modm .|. shiftMask, xK_k), windows W.swapUp) + -- Shrink the master area + , ((modm, xK_h), sendMessage Shrink) + -- Expand the master area + , ((modm, xK_l), sendMessage Expand) + -- Push window back into tiling + , ((modm, xK_t), withFocused $ windows . W.sink) + -- Increment the number of windows in the master area + , ((modm, xK_comma), sendMessage (IncMasterN 1)) + -- Deincrement the number of windows in the master area + , ((modm, xK_period), sendMessage (IncMasterN (-1))) + -- Toggle the status bar gap + -- Use this binding with avoidStruts from Hooks.ManageDocks. + -- See also the statusBar function from Hooks.DynamicLog. + -- + -- , ((modm , xK_b ), sendMessage ToggleStruts) + -- Quit xmonad + --, ((modm .|. shiftMask, xK_q), io exitSuccess) + -- Restart xmonad + , ( (modm .|. shiftMask, xK_x) + , spawn + "xmonad --recompile; xmonad --restart; notify-send \"XMonad\" \"Recompiled & restarted.\"") + ] ++ + -- + -- mod-[1..9], Switch to workspace N + -- mod-shift-[1..9], Move client to workspace N + -- + [ ((m .|. modm, k), windows $ f i) + | (i, k) <- zip (workspaces conf) [xK_1 .. xK_9] + , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)] + ] ++ + -- + -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 + -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 + -- + [ ((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f)) + | (key, sc) <- zip [xK_w, xK_e, xK_r] [0 ..] + , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] + ] + +------------------------------------------------------------------------ +-- Mouse bindings: default actions bound to mouse events +-- +myMouseBindings (XConfig {XMonad.modMask = modm}) = + M.fromList + -- mod-button1, Set the window to floating mode and move by dragging + [ ( (modm, button1) + , \w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster) + -- mod-button2, Raise the window to the top of the stack + , ((modm, button2), \w -> focus w >> windows W.shiftMaster) + -- mod-button3, Set the window to floating mode and resize by dragging + , ( (modm, button3) + , \w -> focus w >> mouseResizeWindow w >> windows W.shiftMaster) + -- you may also bind events to the mouse scroll wheel (button4 and button5) + ] + +------------------------------------------------------------------------ +-- Layouts: +-- You can specify and transform your layouts by modifying these values. +-- If you change layout bindings be sure to use 'mod-shift-space' after +-- restarting (with 'mod-q') to reset your layout state to the new +-- defaults, as xmonad preserves your old layout settings by default. +-- +-- The available layouts. Note that each layout is separated by |||, +-- which denotes layout choice. +-- +myLayout = avoidStruts $ tiled ||| Mirror tiled ||| Full + where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + -- The default number of windows in the master pane + nmaster = 1 + -- Default proportion of screen occupied by master pane + ratio = 3 / 4 + -- Percent of screen to increment by when resizing panes + delta = 3 / 100 + +------------------------------------------------------------------------ +-- Window rules: +-- Execute arbitrary actions and WindowSet manipulations when managing +-- a new window. You can use this to, for example, always float a +-- particular program, or have a client always appear on a particular +-- workspace. +-- +-- To find the property name associated with a program, use +-- > xprop | grep WM_CLASS +-- and click on the client you're interested in. +-- +-- To match on the WM_NAME, you can use 'title' in the same way that +-- 'className' and 'resource' are used below. +-- +myManageHook = + composeAll + [ className =? "MPlayer" --> doFloat + , className =? "Gimp" --> doFloat + , resource =? "desktop_window" --> doIgnore + , resource =? "kdesktop" --> doIgnore + , insertPosition End Newer + ] + +------------------------------------------------------------------------ +-- Event handling +-- * EwmhDesktops users should change this to ewmhDesktopsEventHook +-- +-- Defines a custom handler function for X Events. The function should +-- return (All True) if the default handler is to be run afterwards. To +-- combine event hooks use mappend or mconcat from Data.Monoid. +-- +myEventHook = mempty + +------------------------------------------------------------------------ +-- Status bars and logging +-- Perform an arbitrary action on each internal state change or X event. +-- See the 'XMonad.Hooks.DynamicLog' extension for examples. +-- +myLogHook = return () + +------------------------------------------------------------------------ +-- Startup hook +-- Perform an arbitrary action each time xmonad starts or is restarted +-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize +-- per-workspace layout choices. +-- +-- By default, do nothing. +myStartupHook = spawnOnce "$HOME/.xmonad/bin/autostart.sh" + +------------------------------------------------------------------------ +-- Now run xmonad with all the defaults we set up. +-- Run xmonad with the settings you specify. No need to modify this. +-- +main = xmonad $ fullscreenSupport $ docks $ ewmh defaults + +-- A structure containing your configuration settings, overriding +-- fields in the default config. Any you don't override, will +-- use the defaults defined in xmonad/XMonad/Config.hs +-- +-- No need to modify this. +-- +defaults = + def + -- simple stuff + { terminal = myTerminal + , focusFollowsMouse = myFocusFollowsMouse + , clickJustFocuses = myClickJustFocuses + , borderWidth = myBorderWidth + , modMask = myModMask + , workspaces = withScreens 2 myWorkspaces + , normalBorderColor = myNormalBorderColor + , focusedBorderColor = myFocusedBorderColor + -- key bindings + , keys = myKeys + , mouseBindings = myMouseBindings + -- hooks, layouts + , layoutHook = myLayout + , manageHook = myManageHook + , handleEventHook = myEventHook + , logHook = myLogHook + , startupHook = myStartupHook + }