├── screenshot.png ├── README.md ├── alacritty.yml ├── xmobarrc ├── xmonad.hs └── picom.conf /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unsafe-andrew-old/dotfiles/HEAD/screenshot.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Screenshot](screenshot.png) 2 | 3 | Colorscheme is generated with [pywal](https://github.com/dylanaraps/pywal) from the wallpaper 4 | 5 | Original wallpaper: https://wallhaven.cc/w/lmm2p2 6 | 7 | My darker version: https://anonfiles.com/12AbW6o6y9/bbwallhaven-lmm2p2.png 8 | 9 | [This script](https://github.com/egeesin/alacritty-color-export) is used for adding the pywal colorscheme into the Alacritty terminal 10 | 11 | NeoVim config coming soon 12 | -------------------------------------------------------------------------------- /alacritty.yml: -------------------------------------------------------------------------------- 1 | window: 2 | padding: 3 | x: 12 4 | y: 12 5 | background_opacity: 0.85 6 | 7 | font: 8 | normal: 9 | # There's no way back from this font 10 | family: Iosevka 11 | style: Regular 12 | 13 | cursor: 14 | style: 15 | shape: Beam 16 | 17 | key_bindings: 18 | # Spawn new window at the same directory 19 | - { key: Return, mods: Control|Shift, action: SpawnNewInstance } 20 | 21 | shell: 22 | program: /bin/fish 23 | 24 | # Inserted by this[https://github.com/egeesin/alacritty-color-export] script 25 | # BEGIN ACE 26 | colors: 27 | primary: 28 | background: '#0d0e0c' 29 | foreground: '#c8b6b8' 30 | cursor: 31 | text: '#0d0e0c' 32 | cursor: '#c8b6b8' 33 | normal: 34 | black: '#0d0e0c' 35 | red: '#693733' 36 | green: '#6A4841' 37 | yellow: '#9F5B50' 38 | blue: '#C15A45' 39 | magenta: '#BE8961' 40 | cyan: '#E4966D' 41 | white: '#c8b6b8' 42 | bright: 43 | black: '#8c7f80' 44 | red: '#693733' 45 | green: '#6A4841' 46 | yellow: '#9F5B50' 47 | blue: '#C15A45' 48 | magenta: '#BE8961' 49 | cyan: '#E4966D' 50 | white: '#c8b6b8' 51 | # END ACE 52 | -------------------------------------------------------------------------------- /xmobarrc: -------------------------------------------------------------------------------- 1 | -- vim: ft=haskell 2 | -- 3 | -- xmobar config - https://github.com/jaor/xmobar 4 | -- depends on: 5 | -- - xmonad 6 | -- 7 | Config { 8 | -- BEHAVIOUR 9 | overrideRedirect = True, 10 | lowerOnStart = True, 11 | persistent = True, 12 | -- APPEARANCE 13 | font = "xft:FiraCode Nerd Font:style=Regular:size=10", 14 | additionalFonts = ["xft:Open Sans:style=Regular:size=10"], 15 | --bgColor = "#0d0e0c", 16 | bgColor = "#181814", 17 | fgColor = "#c8b6b8", 18 | position = TopH 30, 19 | -- MODULES 20 | commands = 21 | [ Run Date "%a %b %d, %H:%M" "date" 10 22 | , Run Cpu [ "-t", "", "-f", ":", "-H", "75", "-L", "25", "-h", "#C15A45", "-n", "#E4966D", "-l", "#BE8961" ] 10 23 | , Run Memory [ "-t", "", "-f", ":", "-H", "75", "-L", "25", "-h", "#C15A45", "-n", "#E4966D", "-l", "#BE8961" ] 10 24 | , Run DynNetwork [ "-t", "", "-x", "none" ] 10 25 | , Run ComX "pamixer" ["--get-volume-human"] "muted" "volume" 1 26 | , Run ComX "tail" ["-n1", "/tmp/.xmonad-workspace-log"] " Xmonad" "ws" 1 27 | , Run ComX "tail" ["-n1", "/tmp/.xmonad-title-log"] "" "title" 1 28 | , Run ComX "xkb-switch" [] "en" "lang" 1 29 | , Run UnsafeStdinReader 30 | ], 31 | -- DISPLAY 32 | alignSep = "}{", 33 | sepChar = "%", 34 | template = "  %ws% %title%}{  %volume% %lang% Cpu: %cpu% Mem: %memory% %date% " 35 | } 36 | -------------------------------------------------------------------------------- /xmonad.hs: -------------------------------------------------------------------------------- 1 | import XMonad 2 | import XMonad.Layout.Gaps 3 | import XMonad.Layout.Spacing 4 | import XMonad.Layout.Spiral 5 | import Data.Monoid 6 | import Data.Function 7 | import System.Exit 8 | 9 | import Data.List (sortBy) 10 | import Control.Monad (forM_, join) 11 | import XMonad.Util.Run (safeSpawn) 12 | import XMonad.Util.NamedWindows (getName) 13 | 14 | import qualified XMonad.StackSet as W 15 | import qualified Data.Map as M 16 | 17 | -- Some basic settings 18 | myTerminal = "alacritty" 19 | myFocusFollowsMouse = True 20 | myClickJustFocuses = False 21 | myBorderWidth = 2 22 | mySpacing = 3 23 | myGaps = [(U, 30), (D, 10), (L, 10), (R, 10)] 24 | myModMask = mod4Mask 25 | myWorkspaces = map show [1..9] 26 | 27 | -- color0 and color12 are declared at the end of 28 | -- the file and are inserted by pywal 29 | myNormalBorderColor = color0 30 | myFocusedBorderColor = color12 31 | 32 | -- Keybindings 33 | myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ 34 | [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) 35 | , ((modm, xK_p ), spawn "dmenu_run") 36 | , ((modm .|. shiftMask, xK_c ), kill) 37 | , ((modm, xK_space ), sendMessage NextLayout) 38 | , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) 39 | , ((modm, xK_n ), refresh) 40 | , ((modm, xK_Tab ), windows W.focusDown) 41 | , ((modm, xK_j ), windows W.focusDown) 42 | , ((modm, xK_k ), windows W.focusUp ) 43 | , ((modm, xK_m ), windows W.focusMaster ) 44 | , ((modm, xK_Return), windows W.swapMaster) 45 | , ((modm .|. shiftMask, xK_j ), windows W.swapDown ) 46 | , ((modm .|. shiftMask, xK_k ), windows W.swapUp ) 47 | , ((modm, xK_h ), sendMessage Shrink) 48 | , ((modm, xK_l ), sendMessage Expand) 49 | , ((modm, xK_t ), withFocused $ windows . W.sink) 50 | , ((modm , xK_comma ), sendMessage (IncMasterN 1)) 51 | , ((modm , xK_period), sendMessage (IncMasterN (-1))) 52 | , ((modm .|. shiftMask, xK_q ), io exitSuccess) 53 | , ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") 54 | ] 55 | ++ 56 | [((m .|. modm, k), windows $ f i) 57 | | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] 58 | , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] 59 | 60 | 61 | myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList 62 | -- Move the window 63 | [ ((modm, button1), \w -> focus w >> mouseMoveWindow w 64 | >> windows W.shiftMaster) 65 | -- Promote window as a master 66 | , ((modm, button2), \w -> focus w >> windows W.shiftMaster) 67 | -- Resize the window 68 | , ((modm, button3), \w -> focus w >> mouseResizeWindow w 69 | >> windows W.shiftMaster) 70 | ] 71 | 72 | -- Layouts configuration 73 | myLayout = tiled ||| Mirror tiled ||| Full ||| spiral (6/7) & 74 | gaps myGaps & 75 | smartSpacing mySpacing 76 | where 77 | tiled = Tall nmaster delta ratio 78 | nmaster = 1 79 | ratio = 1/2 80 | delta = 3/100 81 | 82 | -- Window rules 83 | myManageHook = composeAll 84 | [ className =? "MPlayer" --> doFloat 85 | , className =? "Gimp" --> doFloat 86 | , resource =? "desktop_window" --> doIgnore 87 | , resource =? "kdesktop" --> doIgnore ] 88 | 89 | -- Logging for xmobar 90 | myEventHook = mempty 91 | myLogHook = do 92 | winset <- gets windowset 93 | title <- maybe (return "") (fmap show . getName) . W.peek $ winset 94 | let currWs = W.currentTag winset 95 | let wss = map W.tag $ W.workspaces winset 96 | let wsStr = join $ map (fmt currWs) $ sort' wss 97 | 98 | io $ appendFile "/tmp/.xmonad-title-log" (title ++ "\n") 99 | io $ appendFile "/tmp/.xmonad-workspace-log" (wsStr ++ "\n") 100 | 101 | where fmt currWs ws 102 | -- #C15A45 font color for the current workspace 103 | | currWs == ws = " " ++ ws ++ " " 104 | | otherwise = " " ++ ws ++ " " 105 | sort' = sortBy (compare `on` (!! 0)) 106 | 107 | -- Stuff that will be executed on the startup, i typically just use .xinitrc for that 108 | myStartupHook = return () 109 | 110 | main = do 111 | forM_ [".xmonad-workspace-log", ".xmonad-title-log"] $ \file -> do 112 | safeSpawn "mkfifo" ["/tmp/" ++ file] 113 | xmonad defaults 114 | 115 | -- No need to edit this, it just uses stuff from the functions above 116 | defaults = def { 117 | -- simple stuff 118 | terminal = myTerminal, 119 | focusFollowsMouse = myFocusFollowsMouse, 120 | clickJustFocuses = myClickJustFocuses, 121 | borderWidth = myBorderWidth, 122 | modMask = myModMask, 123 | workspaces = myWorkspaces, 124 | normalBorderColor = myNormalBorderColor, 125 | focusedBorderColor = myFocusedBorderColor, 126 | 127 | -- key bindings 128 | keys = myKeys, 129 | mouseBindings = myMouseBindings, 130 | 131 | -- hooks, layouts 132 | layoutHook = myLayout, 133 | manageHook = myManageHook, 134 | handleEventHook = myEventHook, 135 | logHook = myLogHook, 136 | startupHook = myStartupHook 137 | } 138 | 139 | -- Inserted by cat .cache/wal/colors.hs | grep "color0" | tail -n1 >> .config/xmonad/xmonad.hs 140 | -- cat .cache/wal/colors.hs | grep "color12" | tail -n1 >> .config/xmonad/xmonad.hs 141 | color0="#0d0e0c" 142 | color12="#C15A45" 143 | -------------------------------------------------------------------------------- /picom.conf: -------------------------------------------------------------------------------- 1 | ################################# 2 | # Animations # 3 | ################################# 4 | 5 | transition-length = 10 6 | transition-pow-x = 0.1 7 | transition-pow-y = 0.1 8 | transition-pow-w = 0.1 9 | transition-pow-h = 0.1 10 | size-transition = true 11 | 12 | ################################# 13 | # Fading # 14 | ################################# 15 | 16 | fading = true; 17 | fade-in-step = 0.1; 18 | fade-out-step = 0.1; 19 | 20 | ################################# 21 | # Background-Blurring # 22 | ################################# 23 | 24 | blur: { 25 | method = "kernel"; 26 | strength = 6; 27 | background = false; 28 | background-frame = false; 29 | background-fixed = false; 30 | kern = "3x3box"; 31 | } 32 | 33 | blur-background-exclude = [ 34 | "class_g = 'awakened-poe-trade'", 35 | "class_g = 'poe-overlay'", 36 | "name = 'QtPicker'", 37 | ]; 38 | 39 | ################################# 40 | # General Settings # 41 | ################################# 42 | 43 | # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. 44 | # daemon = false 45 | 46 | # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. 47 | # `xrender` is the default one. 48 | # 49 | experimental-backends = true; 50 | backend = "glx"; 51 | #backend = "xrender"; 52 | 53 | 54 | # Enable/disable VSync. 55 | vsync = false 56 | # vsync = true 57 | 58 | # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. 59 | # dbus = false 60 | 61 | # Try to detect WM windows (a non-override-redirect window with no 62 | # child that has 'WM_STATE') and mark them as active. 63 | # 64 | # mark-wmwin-focused = false 65 | mark-wmwin-focused = true; 66 | 67 | # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. 68 | # mark-ovredir-focused = false 69 | mark-ovredir-focused = true; 70 | 71 | # Try to detect windows with rounded corners and don't consider them 72 | # shaped windows. The accuracy is not very high, unfortunately. 73 | # 74 | # detect-rounded-corners = false 75 | detect-rounded-corners = true; 76 | 77 | # Detect '_NET_WM_OPACITY' on client windows, useful for window managers 78 | # not passing '_NET_WM_OPACITY' of client windows to frame windows. 79 | # 80 | # detect-client-opacity = false 81 | detect-client-opacity = true; 82 | 83 | # Specify refresh rate of the screen. If not specified or 0, picom will 84 | # try detecting this with X RandR extension. 85 | # 86 | refresh-rate = 60 87 | # refresh-rate = 0 88 | 89 | # Limit picom to repaint at most once every 1 / 'refresh_rate' second to 90 | # boost performance. This should not be used with 91 | # vsync drm/opengl/opengl-oml 92 | # as they essentially does sw-opti's job already, 93 | # unless you wish to specify a lower refresh rate than the actual value. 94 | # 95 | # sw-opti = 96 | 97 | # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, 98 | # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, 99 | # provided that the WM supports it. 100 | # 101 | # use-ewmh-active-win = false 102 | 103 | # Unredirect all windows if a full-screen opaque window is detected, 104 | # to maximize performance for full-screen windows. Known to cause flickering 105 | # when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. 106 | # 107 | unredir-if-possible = false 108 | 109 | # Delay before unredirecting the window, in milliseconds. Defaults to 0. 110 | # unredir-if-possible-delay = 0 111 | 112 | # Conditions of windows that shouldn't be considered full-screen for unredirecting screen. 113 | # unredir-if-possible-exclude = [] 114 | 115 | # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows 116 | # in the same group focused at the same time. 117 | # 118 | # detect-transient = false 119 | detect-transient = true 120 | 121 | # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same 122 | # group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if 123 | # detect-transient is enabled, too. 124 | # 125 | detect-client-leader = false 126 | # detect-client-leader = true 127 | 128 | # Resize damaged region by a specific number of pixels. 129 | # A positive value enlarges it while a negative one shrinks it. 130 | # If the value is positive, those additional pixels will not be actually painted 131 | # to screen, only used in blur calculation, and such. (Due to technical limitations, 132 | # with use-damage, those pixels will still be incorrectly painted to screen.) 133 | # Primarily used to fix the line corruption issues of blur, 134 | # in which case you should use the blur radius value here 135 | # (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, 136 | # with a 5x5 one you use `--resize-damage 2`, and so on). 137 | # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. 138 | # 139 | # resize-damage = 1 140 | 141 | # Specify a list of conditions of windows that should be painted with inverted color. 142 | # Resource-hogging, and is not well tested. 143 | # 144 | # invert-color-include = [] 145 | 146 | # GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. 147 | # Might cause incorrect opacity when rendering transparent content (but never 148 | # practically happened) and may not work with blur-background. 149 | # My tests show a 15% performance boost. Recommended. 150 | # 151 | # glx-no-stencil = false 152 | 153 | # GLX backend: Avoid rebinding pixmap on window damage. 154 | # Probably could improve performance on rapid window content changes, 155 | # but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). 156 | # Recommended if it works. 157 | # 158 | # glx-no-rebind-pixmap = false 159 | 160 | # Disable the use of damage information. 161 | # This cause the whole screen to be redrawn everytime, instead of the part of the screen 162 | # has actually changed. Potentially degrades the performance, but might fix some artifacts. 163 | # The opposing option is use-damage 164 | # 165 | # no-use-damage = false 166 | #use-damage = true (Causing Weird Black semi opaque rectangles when terminal is opened) 167 | #Changing use-damage to false fixes the problem 168 | use-damage = false 169 | 170 | # Use X Sync fence to sync clients' draw calls, to make sure all draw 171 | # calls are finished before picom starts drawing. Needed on nvidia-drivers 172 | # with GLX backend for some users. 173 | # 174 | # xrender-sync-fence = false 175 | 176 | # GLX backend: Use specified GLSL fragment shader for rendering window contents. 177 | # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` 178 | # in the source tree for examples. 179 | # 180 | # glx-fshader-win = '' 181 | 182 | # Force all windows to be painted with blending. Useful if you 183 | # have a glx-fshader-win that could turn opaque pixels transparent. 184 | # 185 | # force-win-blend = false 186 | 187 | # Do not use EWMH to detect fullscreen windows. 188 | # Reverts to checking if a window is fullscreen based only on its size and coordinates. 189 | # 190 | # no-ewmh-fullscreen = false 191 | 192 | # Dimming bright windows so their brightness doesn't exceed this set value. 193 | # Brightness of a window is estimated by averaging all pixels in the window, 194 | # so this could comes with a performance hit. 195 | # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) 196 | # 197 | # max-brightness = 1.0 198 | 199 | # Make transparent windows clip other windows like non-transparent windows do, 200 | # instead of blending on top of them. 201 | # 202 | # transparent-clipping = false 203 | 204 | # Set the log level. Possible values are: 205 | # "trace", "debug", "info", "warn", "error" 206 | # in increasing level of importance. Case doesn't matter. 207 | # If using the "TRACE" log level, it's better to log into a file 208 | # using *--log-file*, since it can generate a huge stream of logs. 209 | # 210 | # log-level = "debug" 211 | log-level = "info"; 212 | 213 | # Set the log file. 214 | # If *--log-file* is never specified, logs will be written to stderr. 215 | # Otherwise, logs will to written to the given file, though some of the early 216 | # logs might still be written to the stderr. 217 | # When setting this option from the config file, it is recommended to use an absolute path. 218 | # 219 | # log-file = '/path/to/your/log/file' 220 | 221 | # Show all X errors (for debugging) 222 | # show-all-xerrors = false 223 | 224 | # Write process ID to a file. 225 | # write-pid-path = '/path/to/your/log/file' 226 | 227 | # Window type settings 228 | # 229 | # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: 230 | # "unknown", "desktop", "dock", "toolbar", "menu", "utility", 231 | # "splash", "dialog", "normal", "dropdown_menu", "popup_menu", 232 | # "tooltip", "notification", "combo", and "dnd". 233 | # 234 | # Following per window-type options are available: :: 235 | # 236 | # fade, shadow::: 237 | # Controls window-type-specific shadow and fade settings. 238 | # 239 | # opacity::: 240 | # Controls default opacity of the window type. 241 | # 242 | # focus::: 243 | # Controls whether the window of this type is to be always considered focused. 244 | # (By default, all window types except "normal" and "dialog" has this on.) 245 | # 246 | # full-shadow::: 247 | # Controls whether shadow is drawn under the parts of the window that you 248 | # normally won't be able to see. Useful when the window has parts of it 249 | # transparent, and you want shadows in those areas. 250 | # 251 | # redir-ignore::: 252 | # Controls whether this type of windows should cause screen to become 253 | # redirected again after been unredirected. If you have unredir-if-possible 254 | # set, and doesn't want certain window to cause unnecessary screen redirection, 255 | # you can set this to `true`. 256 | # 257 | wintypes: 258 | { 259 | tooltip = { fade = true; shadow = true; opacity = 1; focus = true; full-shadow = true; }; 260 | }; 261 | --------------------------------------------------------------------------------