diff --git a/.xmonad/xmonad-laptop.hs b/.xmonad/xmonad-laptop.hs index 133bccb..c8110e6 100644 --- a/.xmonad/xmonad-laptop.hs +++ b/.xmonad/xmonad-laptop.hs @@ -1,22 +1,28 @@ import qualified Data.Map as M import Data.Monoid import System.Exit + import XMonad + import XMonad.Util.Run import XMonad.Util.SpawnOnce +import XMonad.Util.EZConfig + import XMonad.Layout.Spacing import XMonad.Hooks.ManageDocks + import qualified XMonad.StackSet as W myTerminal :: String myTerminal = "kitty" myBrowser :: String -myBrowser = "brave" +myBrowser = "firefox" +myAltBrowser :: String +myAltBrowser = "brave" myAppMenu :: String myAppMenu = "rofi -show run" - myAppMenuThemes :: String myAppMenuThemes = "rofi-theme-selector" @@ -26,7 +32,7 @@ myFocusFollowsMouse = True myClickJustFocuses :: Bool myClickJustFocuses = False -myBorderWidth = 3 +myBorderWidth = 5 myModMask = mod4Mask @@ -35,79 +41,40 @@ myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9"] myNormalBorderColor = "#dddddd" myFocusedBorderColor = "#ff8700" -myKeys conf@(XConfig {XMonad.modMask = modm}) = - M.fromList $ - -- launch a terminal - [ ((modm, xK_Return), spawn $ XMonad.terminal conf), - -- launch dmenu - ((modm, xK_p), spawn myAppMenu), - -- launch gmrun - ((modm .|. shiftMask, xK_p), spawn myAppMenuThemes), - -- close focused window - ((modm, 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, xK_s), 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) +myKeys :: [(String, X ())] +myKeys = [ + -- spawning keybindings + ("M-" , spawn myTerminal), + ("M-d" , spawn myAppMenu), + ("M-S-d" , spawn myAppMenuThemes), + ("M-i" , spawn myBrowser), + ("M-S-i" , spawn myAltBrowser), + + -- killing, exiting and suspending keybindings + ("M-q" , kill), + ("M-S-q" , io (exitWith ExitSuccess)), + ("M-S-b" , spawn "systemctl suspend"), - -- Launch Browser - ((modm, xK_i), spawn myBrowser), - ((modm .|. shiftMask, xK_s), spawn "systemctl suspend"), - -- Quit xmonad - ((modm .|. shiftMask, xK_q), io (exitWith ExitSuccess)), - -- Restart xmonad - ((modm .|. shiftMask, xK_o), spawn "xmonad --recompile; xmonad --restart") - ] - ++ - -- - -- 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 (XMonad.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)] - ] + -- restarting and recompiling keybindings + ("M-r" , spawn "xmonad --restart"), + ("M-S-r" , spawn "xmonad --recompile; xmonad --restart"), + + -- window keybindings + ("M-" , windows W.focusDown), + ("M-S-" , windows W.focusMaster), + + -- brightness keybindings + ("" , spawn "light -A 2"), + ("" , spawn "light -U 2"), + + -- touchpad keybinding(s) + ("" , spawn "bash -c \"[ \"$(xinput list-props 11 | grep 'Device Enabled' | grep -o '[01]$')\" == \"1\" ] && xinput --disable 11 || xinput --enable 11\""), + + -- multimedia keybindings + ("" , spawn "amixer set Master 2%+"), + ("" , spawn "amixer set Master 2%-"), + ("" , spawn "amixer set Master toggle"), + ("M-" , spawn "bash -c \"gnome-screenshot -af /tmp/screenshot && cat /tmp/screenshot | xclip -i -selection clipboard -target image/png\"") ] ------------------------------------------------------------------------ -- Mouse bindings: default actions bound to mouse events @@ -133,57 +100,47 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = -- you may also bind events to the mouse scroll wheel (button4 and button5) ] -myLayout = spacing 24 $ avoidStruts (tiled ||| Mirror tiled ||| Full) +myLayout = spacing 12 $ avoidStruts (tiled ||| Mirror tiled ||| Full) where tiled = Tall nmaster delta ratio nmaster = 1 ratio = 1/2 delta = 3/100 -myManageHook = - composeAll - [ className =? "MPlayer" --> doFloat, - className =? "Gimp" --> doFloat, - resource =? "desktop_window" --> doIgnore, - resource =? "kdesktop" --> doIgnore - ] +myManageHook = composeAll [ + className =? "Gimp" --> doFloat, + resource =? "desktop_window" --> doIgnore ] myEventHook = mempty myLogHook = return () -myStartupHook = do - spawnOnce "xrandr --output DP-0 --primary --left-of HDMI-0 --auto &" - spawnOnce "nitrogen --restore &" - spawnOnce "killall picom; picom --config ~/.config/picom/picom.conf --vsync &" - spawnOnce "killall jackd;" +myStartupHook = return () main = do - -- xmproc0 <- spawnPipe "" - xmproc0 <- spawnPipe "killall xmobar; xmobar ~/.config/xmobar/xmobar.config" - xmproc1 <- spawnPipe "jackd" + xmproc0 <- spawnPipe "nitrogen --restore" + xmproc1 <- spawnPipe "killall picom; picom --config ~/.config/picom/picom.conf --vsync &" + xmproc2 <- spawnPipe "killall xmobar; xmobar ~/.config/xmobar/xmobar.config" xmonad $ docks defaults - -defaults = - def - { -- simple stuff - terminal = myTerminal, - focusFollowsMouse = myFocusFollowsMouse, - clickJustFocuses = myClickJustFocuses, - borderWidth = myBorderWidth, - modMask = myModMask, - workspaces = myWorkspaces, - normalBorderColor = myNormalBorderColor, - focusedBorderColor = myFocusedBorderColor, - -- key bindings - keys = myKeys, - mouseBindings = myMouseBindings, - -- hooks, layouts - layoutHook = myLayout, - manageHook = myManageHook, - handleEventHook = myEventHook, - logHook = myLogHook, - startupHook = myStartupHook - } +defaults = def { + terminal = myTerminal, + focusFollowsMouse = myFocusFollowsMouse, + clickJustFocuses = myClickJustFocuses, + borderWidth = myBorderWidth, + modMask = myModMask, + workspaces = myWorkspaces, + normalBorderColor = myNormalBorderColor, + focusedBorderColor = myFocusedBorderColor, + + -- bindings + mouseBindings = myMouseBindings, + + -- hooks + layoutHook = myLayout, + manageHook = myManageHook, + handleEventHook = myEventHook, + logHook = myLogHook, + startupHook = myStartupHook + } `additionalKeysP` myKeys diff --git a/scripts/basic-setup b/scripts/basic-setup index 6ba19b6..4869d26 100755 --- a/scripts/basic-setup +++ b/scripts/basic-setup @@ -89,6 +89,9 @@ ipkg picom mkdir -p ~/.config/picom cp $FILEDIR/.config/picom/picom.conf ~/.config/picom/ +# install gnome-screenshot +ipkg gnome-screenshot + # install xmonad and xmobar ipkg xmonad ipkg xmonad-utils @@ -101,6 +104,7 @@ ipkg rofi # install keepassxc ipkg keepassxc -# copy backgrounds +# setup background stuff +ipkg nitrogen mkdir -p ~/.local/share/backgrounds cp $FILEDIR/backgrounds/* ~/.local/share/backgrounds/ diff --git a/scripts/setup-laptop b/scripts/setup-laptop index c4a32b3..80ab316 100755 --- a/scripts/setup-laptop +++ b/scripts/setup-laptop @@ -11,8 +11,6 @@ cp $FILEDIR/.config/xmobar/xmobar-laptop.config ~/.config/xmobar/xmobar.config # setup backlight ipkg_yay light -echo "#\!/bin/sh" > /etc/rc.local -echo "chown $USER /sys/class/backlight/amdgpu_bl0/brightness" >> /etc/rc.local -echo "exit 0" >> /etc/rc.local +sudo sh -c "printf \"#\!/bin/sh\nchown $USER /sys/class/backlight/amdgpu_bl0/brightness\nexit 0\n\" > /etc/rc.local" -sudo reboot \ No newline at end of file +sudo reboot