├── 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 | 
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 |
--------------------------------------------------------------------------------