diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index 898245aa..27a744ad 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -8,7 +8,6 @@ import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.InsertPosition import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers -import XMonad.Hooks.OnPropertyChange import XMonad.Hooks.RefocusLast import XMonad.Hooks.StatusBar import XMonad.Layout.NoBorders @@ -25,12 +24,12 @@ import XMonad.Util.NamedScratchpad import XMonad.Util.SpawnOnce import XMonad.Layout.Magnifier -import Data.Char.Greek -import Data.Semigroup import qualified Data.Map.Strict as M import System.Posix import Graphics.X11.ExtraTypes.XF86 +import Data.Char.Greek + main :: IO () main = xmonad @@ -38,7 +37,6 @@ main = -- https://wiki.archlinux.org/title/java#Gray_window,_applications_not_resizing_with_WM,_menus_immediately_closing . javaHack . withSB xmobarConfig . docks - . setEwmhActivateHook myActivateHook . ewmhFullscreen . ewmh $ def { modMask = superMask @@ -52,7 +50,6 @@ main = , startupHook = myStartupHook , layoutHook = myLayout , manageHook = myManageHook - , handleEventHook = myEventHandleHook } -- Only remove mappings that needs pass through @@ -69,88 +66,31 @@ myLayout = in avoidStruts . smartBorders $ mag tallr ||| Full -isSioyek :: Query Bool -isSioyek = className =? "sioyek" - -isDiscord :: Query Bool -isDiscord = - let electronDiscord = className =? "discord" - firefoxDiscord = isFirefox <&&> title ~? "Discord" - in electronDiscord <||> firefoxDiscord - -isEvolution :: Query Bool -isEvolution = className ~? "gnome.Evolution" - -isFirefox :: Query Bool -isFirefox = className =? "firefox" - -isSpotify :: Query Bool -isSpotify = isFirefox <&&> title ~? "Spotify" - -isFirefoxPip :: Query Bool -isFirefoxPip = isFirefox <&&> title =? "Picture-in-Picture" - -isFeh :: Query Bool -isFeh = className =? "feh" - -isNautilus :: Query Bool -isNautilus = className ~? "Nautilus" - -isNautilusPreviewer :: Query Bool -isNautilusPreviewer = className ~? "NautilusPreviewer" - -isMinder :: Query Bool -isMinder = className =? "Minder" <&&> (not <$> title ~? "Pick a Color") - -isKitty :: Query Bool -isKitty = className =? "kitty" - -myActivateHook :: ManageHook -myActivateHook = - -- Ignore activate request - composeOne - [ isDiscord -?> mempty - , isEvolution -?> mempty - , isSioyek -?> mempty - , isFeh -?> mempty - , return True -?> doFocus - ] +isOneOf :: Eq a => Query a -> [a] -> Query Bool +isOneOf q = fmap or . traverse (q =?) myManageHook :: ManageHook myManageHook = composeAll - [ isNautilusPreviewer --> customFloating centeredFloat - , isFeh --> customFloating buttomRightFloat - , isMinder --> customFloating centeredFloat - , isFirefoxPip --> doFloat - , isDiscord --> (doF $ W.shift chatWS) - , isEvolution --> (doF $ W.shift chatWS) + [ className ~? "NautilusPreviewer" --> customFloating centeredFloat + , className =? "feh" --> customFloating buttomRightFloat + , className =? "Minder" + <&&> not <$> title ~? "Pick a Color" -- ignore the color picker + --> customFloating centeredFloat + , className =? "firefox" + <&&> title =? "Picture-in-Picture" + --> doFloat + , namedScratchpadManageHook myScratchpads ] <> composeOne - [ isFirefox -?> insertPosition Master Newer - , isKitty -?> insertPosition Below Newer - , isNautilus <||> isSioyek -?> insertPosition End Older + [ className =? "firefox" -?> insertPosition Master Newer + , className =? "kitty" -?> insertPosition Below Newer + , className `isOneOf` + [ "sioyek" + , "Nautilus" + ] + -?> insertPosition End Older ] - <> namedScratchpadManageHook myScratchpads - -myEventHandleHook :: Event -> X All -myEventHandleHook = - -- TODO: is there a way to always open certain sites in new windows in firefox? - onTitleChange $ composeAll - [ isSpotify --> doShiftAndViewIfMoved multimediaWS - , isDiscord --> doShiftAndViewIfMoved chatWS - ] - --- If the title changes in the background, we don't want to greedy view that workspace. --- Imagine Spotify playing in the background, a track change would focus that workspace. --- We prevent this by checking if the window is already there. -doShiftAndViewIfMoved :: WorkspaceId -> Query (Endo WindowSet) -doShiftAndViewIfMoved n = doF . shiftAndViewIfMoved n =<< ask - -shiftAndViewIfMoved :: WorkspaceId -> Window -> WindowSet -> WindowSet -shiftAndViewIfMoved n w s = case W.findTag w s of - Just from | n `W.tagMember` s && n /= from -> W.greedyView n $ W.shiftWin n w s - _ -> s myStartupHook :: X () myStartupHook = do @@ -283,15 +223,9 @@ superMask, altMask :: KeyMask superMask = mod4Mask altMask = mod1Mask -myWorkspaces :: [WorkspaceId] +myWorkspaces :: [String] myWorkspaces = map (:[]) $ take 8 greekLower -multimediaWS :: WorkspaceId -multimediaWS = myWorkspaces !! 6 - -chatWS :: WorkspaceId -chatWS = myWorkspaces !! 3 - centeredFloat, smallFloat, fullFloat, buttomRightFloat :: W.RationalRect centeredFloat = W.RationalRect (1/9) (1/9) (7/9) (7/9) smallFloat = W.RationalRect (3/5) (3/5) (2/7) (2/7) diff --git a/nix/disko/vanadium/btrfs.nix b/nix/disko/vanadium/btrfs.nix index 11ae7b66..84b9efb0 100644 --- a/nix/disko/vanadium/btrfs.nix +++ b/nix/disko/vanadium/btrfs.nix @@ -75,10 +75,7 @@ }; "/home" = { - mountOptions = [ - "compress=zstd" - "noatime" - ]; + mountOptions = [ "noatime" ]; mountpoint = "/home"; }; diff --git a/nix/homeModules/common/firefox.nix b/nix/homeModules/common/firefox.nix index 556a528d..157c0a94 100644 --- a/nix/homeModules/common/firefox.nix +++ b/nix/homeModules/common/firefox.nix @@ -56,10 +56,6 @@ in "browser.ctrlTab.sortByRecentlyUsed" = false; "layout.css.devPixelsPerPx" = 1.1; - # open links in new window - # this works a lot better with xmonad where I have a bunch of windows - "browser.link.open_newwindow" = 2; - # Sponsored crap # Yes "browser.newtabpage.activity-stream.showSearch" = true;