Compare commits
2 commits
bd0804ae22
...
cd2ff22e00
Author | SHA1 | Date | |
---|---|---|---|
cd2ff22e00 | |||
1921ea7357 |
5 changed files with 203 additions and 168 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
@ -0,0 +1 @@
|
|||
use flake
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
result
|
||||
.direnv/
|
||||
|
|
11
flake.nix
11
flake.nix
|
@ -30,7 +30,16 @@
|
|||
nixos-hardware,
|
||||
mac-brcm-fw,
|
||||
...
|
||||
} @ inputs: {
|
||||
} @ inputs: let
|
||||
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
||||
in {
|
||||
devShells."x86_64-linux".default = pkgs.mkShell {
|
||||
buildInputs = [
|
||||
(pkgs.haskellPackages.ghcWithPackages
|
||||
(pkgs: with pkgs; [xmonad xmonad-contrib]))
|
||||
pkgs.haskell-language-server
|
||||
];
|
||||
};
|
||||
nixosConfigurations = {
|
||||
monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
|
|
|
@ -7,27 +7,21 @@
|
|||
-- Normally, you'd only override those defaults you care about.
|
||||
--
|
||||
|
||||
import XMonad
|
||||
import Control.Monad (when)
|
||||
import Data.Map qualified as M
|
||||
import Data.Monoid
|
||||
import Graphics.X11.ExtraTypes.XF86
|
||||
import System.Exit
|
||||
|
||||
import XMonad
|
||||
import XMonad.Actions.KeyRemap
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
import XMonad.Hooks.StatusBar
|
||||
import XMonad.Hooks.StatusBar.PP
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
|
||||
import qualified XMonad.StackSet as W
|
||||
import qualified Data.Map as M
|
||||
|
||||
import XMonad.Layout.Spacing
|
||||
import XMonad.Layout.Tabbed
|
||||
|
||||
import XMonad.Actions.KeyRemap
|
||||
|
||||
import XMonad.Prompt
|
||||
import XMonad.Prompt.Layout
|
||||
import Graphics.X11.ExtraTypes.XF86
|
||||
|
||||
import Control.Monad (when)
|
||||
import XMonad.StackSet qualified as W
|
||||
|
||||
-- The preferred terminal program, which is used in a binding below and by
|
||||
-- certain contrib modules.
|
||||
|
@ -67,63 +61,55 @@ myWorkspaces = ["comms","browser","3","4","5","6","7","8","9"]
|
|||
-- Border colors for unfocused and focused windows, respectively.
|
||||
--
|
||||
myNormalBorderColor = "#3c3836"
|
||||
|
||||
myFocusedBorderColor = "#504945"
|
||||
|
||||
myRemaps = KeymapTable [ ((0, xK_a), (0, xK_b)) ]
|
||||
myRemaps = KeymapTable [
|
||||
-- ((0, xK_a), (0, xK_b))
|
||||
]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- Key bindings. Add, modify or remove key bindings here.
|
||||
--
|
||||
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
||||
[ ((modm, xK_Return), spawn $ XMonad.terminal conf)
|
||||
, ((modm .|. shiftMask, xK_q), kill)
|
||||
myKeys conf@(XConfig {XMonad.modMask = modm}) =
|
||||
M.fromList $
|
||||
[ ((modm, xK_Return), spawn $ XMonad.terminal conf),
|
||||
((modm .|. shiftMask, xK_q), kill),
|
||||
-- -- Rotate through the available layout algorithms
|
||||
, ((modm, xK_space ), sendMessage NextLayout)
|
||||
|
||||
((modm, xK_space), sendMessage NextLayout),
|
||||
-- rofiing
|
||||
, ((modm, xK_d), spawn "rofi -show drun")
|
||||
, ((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons")
|
||||
, ((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark")
|
||||
, ((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy")
|
||||
|
||||
((modm, xK_d), spawn "rofi -show drun"),
|
||||
((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons"),
|
||||
((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark"),
|
||||
((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"),
|
||||
-- screenshotting
|
||||
-- TODO: Fix/rewrite window-screenshot.sh
|
||||
, ((modm, xK_w), spawn "window-screenshot.nu")
|
||||
, ((modm, xK_s), spawn "flameshot gui -c -p $HOME/Pictures/screenshots")
|
||||
, ((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots")
|
||||
, ((modm, xK_t), spawn "ocr-screenshot.sh")
|
||||
|
||||
, ((modm .|. shiftMask, xK_t), spawn "DEVICE=\"MELF0410:00 1FD2:7007\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi")
|
||||
|
||||
((modm, xK_w), spawn "window-screenshot.nu"),
|
||||
((modm, xK_s), spawn "flameshot gui -c -p $HOME/Pictures/screenshots"),
|
||||
((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots"),
|
||||
((modm, xK_t), spawn "ocr-screenshot.sh"),
|
||||
((modm .|. shiftMask, xK_t), spawn "DEVICE=\"MELF0410:00 1FD2:7007\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi"),
|
||||
-- Reset the layouts on the current workspace to default
|
||||
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
|
||||
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
|
||||
-- Push window back into tiling
|
||||
, ((modm .|. shiftMask, xK_space ), withFocused $ windows . W.sink)
|
||||
|
||||
|
||||
((modm .|. shiftMask, xK_space), withFocused $ windows . W.sink),
|
||||
-- Resize viewed windows to the correct size
|
||||
, ((modm, xK_n ), refresh)
|
||||
|
||||
((modm, xK_n), refresh),
|
||||
-- Move focus to the next window
|
||||
, ((modm, xK_Tab ), layoutPrompt def)
|
||||
|
||||
((modm, xK_Tab), layoutPrompt def),
|
||||
-- Move focus
|
||||
, ((modm, xK_j ), windows W.focusDown)
|
||||
, ((modm, xK_k ), windows W.focusUp )
|
||||
|
||||
((modm, xK_j), windows W.focusDown),
|
||||
((modm, xK_k), windows W.focusUp),
|
||||
-- Swap the focused window with the next window
|
||||
, ((modm .|. shiftMask, xK_j ), windows W.swapDown )
|
||||
, ((modm .|. shiftMask, xK_k ), windows W.swapUp )
|
||||
|
||||
((modm .|. shiftMask, xK_j), windows W.swapDown),
|
||||
((modm .|. shiftMask, xK_k), windows W.swapUp),
|
||||
-- Shrink the master area
|
||||
, ((modm, xK_h ), sendMessage Shrink)
|
||||
, ((modm, xK_l ), sendMessage Expand)
|
||||
|
||||
((modm, xK_h), sendMessage Shrink),
|
||||
((modm, xK_l), sendMessage Expand),
|
||||
-- Increment the number of windows in the master area
|
||||
, ((modm , xK_comma ), sendMessage (IncMasterN 1))
|
||||
, ((modm , xK_period), sendMessage (IncMasterN (-1)))
|
||||
|
||||
((modm, xK_comma), sendMessage (IncMasterN 1)),
|
||||
((modm, xK_period), sendMessage (IncMasterN (-1)))
|
||||
-- Brightness n stuff
|
||||
-- , ((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+")
|
||||
-- , ((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-")
|
||||
|
@ -147,14 +133,43 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||
-- Run xmessage with a summary of the default keybindings (useful for beginners)
|
||||
]
|
||||
++
|
||||
|
||||
--
|
||||
--
|
||||
--
|
||||
--
|
||||
--
|
||||
--
|
||||
--
|
||||
--
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-[1..9], Switch to workspace N
|
||||
-- mod-shift-[1..9], Move client to workspace N
|
||||
-- mod-shift-[1..9], Move client to workspace N
|
||||
-- mod-shift-[1..9], Move client to workspace N
|
||||
-- mod-shift-[1..9], Move client to workspace N
|
||||
-- mod-shift-[1..9], Move client to workspace N
|
||||
-- mod-shift-[1..9], Move client to workspace N
|
||||
-- mod-shift-[1..9], Move client 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)]]
|
||||
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9],
|
||||
(f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
|
||||
]
|
||||
|
||||
-- ++
|
||||
|
||||
--
|
||||
|
@ -165,22 +180,27 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||
-- | (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 $
|
||||
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))
|
||||
|
||||
[ ( (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))
|
||||
|
||||
((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))
|
||||
|
||||
( (modm, button3),
|
||||
\w ->
|
||||
focus w
|
||||
>> mouseResizeWindow w
|
||||
>> windows W.shiftMaster
|
||||
)
|
||||
-- you may also bind events to the mouse scroll wheel (button4 and button5)
|
||||
]
|
||||
|
||||
|
@ -195,17 +215,19 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||
-- The available layouts. Note that each layout is separated by |||,
|
||||
-- which denotes layout choice.
|
||||
|
||||
tabCfg = def
|
||||
{ activeColor = "#282828"
|
||||
, inactiveColor = "#1d2021"
|
||||
, urgentColor = "#9d0006"
|
||||
, activeBorderColor = "#504945"
|
||||
, inactiveBorderColor = "#3c3836"
|
||||
, urgentBorderColor = "#cc241d"
|
||||
, activeTextColor = "#ebdbb2"
|
||||
, inactiveTextColor = "#bdae93"
|
||||
, urgentTextColor = "#ebdbb2"
|
||||
tabCfg =
|
||||
def
|
||||
{ activeColor = "#282828",
|
||||
inactiveColor = "#1d2021",
|
||||
urgentColor = "#9d0006",
|
||||
activeBorderColor = "#504945",
|
||||
inactiveBorderColor = "#3c3836",
|
||||
urgentBorderColor = "#cc241d",
|
||||
activeTextColor = "#ebdbb2",
|
||||
inactiveTextColor = "#bdae93",
|
||||
urgentTextColor = "#ebdbb2"
|
||||
}
|
||||
|
||||
myLayout = tiled ||| tabbed shrinkText tabCfg ||| Mirror tiled
|
||||
where
|
||||
-- default tiling algorithm partitions the screen into two panes
|
||||
|
@ -235,16 +257,19 @@ myLayout = tiled ||| tabbed shrinkText tabCfg ||| Mirror tiled
|
|||
-- 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 ]
|
||||
myManageHook =
|
||||
composeAll
|
||||
[ className =? "MPlayer" --> doFloat,
|
||||
className =? "Gimp" --> doFloat,
|
||||
resource =? "desktop_window" --> doIgnore,
|
||||
resource =? "kdesktop" --> doIgnore
|
||||
]
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- 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
|
||||
|
@ -282,14 +307,13 @@ myStartupHook = do
|
|||
spawn "feh --bg-fill ~/Pictures/wallpaper.jpg"
|
||||
setDefaultKeyRemap myRemaps [myRemaps]
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- Now run xmonad with all the defaults we set up.
|
||||
|
||||
-- Run xmonad with the settings you specify. No need to modify this.
|
||||
--
|
||||
mySB = statusBarProp "polybar" (pure xmobarPP)
|
||||
|
||||
main = xmonad $ withEasySB mySB defToggleStrutsKey (ewmh defaults)
|
||||
|
||||
-- A structure containing your configuration settings, overriding
|
||||
|
@ -298,24 +322,25 @@ main = xmonad $ withEasySB mySB defToggleStrutsKey (ewmh defaults)
|
|||
--
|
||||
-- No need to modify this.
|
||||
--
|
||||
defaults = def
|
||||
-- simple stuff
|
||||
{ terminal = myTerminal
|
||||
, focusFollowsMouse = myFocusFollowsMouse
|
||||
, clickJustFocuses = myClickJustFocuses
|
||||
, borderWidth = myBorderWidth
|
||||
, modMask = myModMask
|
||||
, workspaces = myWorkspaces
|
||||
, normalBorderColor = myNormalBorderColor
|
||||
, focusedBorderColor = myFocusedBorderColor
|
||||
defaults =
|
||||
def
|
||||
{ -- simple stuff
|
||||
terminal = myTerminal,
|
||||
focusFollowsMouse = myFocusFollowsMouse,
|
||||
clickJustFocuses = myClickJustFocuses,
|
||||
borderWidth = myBorderWidth,
|
||||
modMask = myModMask,
|
||||
workspaces = myWorkspaces,
|
||||
normalBorderColor = myNormalBorderColor,
|
||||
focusedBorderColor = myFocusedBorderColor,
|
||||
-- , clientMask = focusChangeMask .|. XMonad.clientMask
|
||||
-- key bindings
|
||||
, keys = myKeys
|
||||
, mouseBindings = myMouseBindings
|
||||
keys = myKeys,
|
||||
mouseBindings = myMouseBindings,
|
||||
-- hooks, layouts
|
||||
, layoutHook = spacingRaw True (Border 0 0 0 0) True (Border 7 7 7 7) True $ myLayout
|
||||
, manageHook = myManageHook
|
||||
, handleEventHook = myEventHook
|
||||
, logHook = myLogHook
|
||||
, startupHook = myStartupHook
|
||||
layoutHook = spacingRaw True (Border 0 0 0 0) True (Border 7 7 7 7) True myLayout,
|
||||
manageHook = myManageHook,
|
||||
handleEventHook = myEventHook,
|
||||
logHook = myLogHook,
|
||||
startupHook = myStartupHook
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
sessionVariables.EDITOR = "hx";
|
||||
packages = [
|
||||
pkgs.nil
|
||||
pkgs.haskell-language-server
|
||||
pkgs.nodePackages_latest.vscode-html-languageserver-bin
|
||||
pkgs.nodePackages_latest.vscode-json-languageserver-bin
|
||||
pkgs.nodePackages_latest.vscode-css-languageserver-bin
|
||||
|
|
Loading…
Reference in a new issue