├── .chezmoiignore ├── .git-blame-ignore-revs ├── .gitignore ├── README.md ├── dot_bashrc ├── dot_config ├── environment.d │ └── 10-wayland.conf ├── fontconfig │ └── fonts.conf ├── ghostty │ └── config ├── helix │ └── config.toml ├── kanshi │ └── config ├── niri │ └── config.kdl ├── systemd │ └── user │ │ ├── kanshi.service │ │ ├── mako.service │ │ ├── niri.service.wants │ │ ├── symlink_kanshi.service │ │ ├── symlink_mako.service │ │ ├── symlink_plasma-powerdevil.service │ │ ├── symlink_swaybg.service │ │ ├── symlink_swayidle.service │ │ ├── symlink_waybar.service │ │ ├── symlink_wlsunset.service │ │ └── symlink_xwayland-satellite.service │ │ ├── plasma-polkit-agent.service │ │ ├── swaybg.service │ │ ├── swayidle.service │ │ ├── theme-switch.service │ │ ├── theme-switch.timer │ │ ├── timers.target.wants │ │ └── symlink_theme-switch.timer │ │ ├── wlsunset.service │ │ └── xwayland-satellite.service ├── waybar │ ├── config │ └── style.css └── xdg-desktop-portal │ └── niri-portals.conf ├── dot_gitconfig ├── dot_gitignore ├── dot_local ├── bin │ └── executable_theme-switch └── share │ └── konsole │ ├── Dark.profile │ ├── Gruvbox_dark.colorscheme │ ├── Gruvbox_light.colorscheme │ ├── Light.profile │ └── Modus-Vivendi.colorscheme ├── dot_profile ├── dot_tmux.conf ├── private_dot_ssh └── private_config ├── run_onchange_after_reload-waybar.sh.tmpl ├── run_onchange_initial-install.sh └── run_onchange_systemd_user.sh.tmpl /.chezmoiignore: -------------------------------------------------------------------------------- 1 | README.md 2 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # https://stackoverflow.com/a/69118451 2 | 323708531114b1c15614e3769fbbf63bd1a8dc1c 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tudor's Dotfiles 2 | 3 | Tools of the trade: 4 | 5 | * [chezmoi](https://www.chezmoi.io) 6 | * [mise](https://mise.jdx.dev) 7 | * [homebrew](https://brew.sh) 8 | 9 | OS of choice: [openSUSE Tumbleweed](https://www.opensuse.org/#Tumbleweed) 10 | 11 | ## Installing 12 | 13 | 1. Install Chezmoi 14 | 2. `chezmoi init ` 15 | 3. `chezmoi apply`. This will also take care of installing brew and mise. 16 | -------------------------------------------------------------------------------- /dot_bashrc: -------------------------------------------------------------------------------- 1 | . "$HOME/.profile" 2 | 3 | type direnv &>/dev/null && eval "$(direnv hook bash)" 4 | eval "$(mise activate bash)" 5 | 6 | if type brew &>/dev/null; then 7 | HOMEBREW_PREFIX="$(brew --prefix)" 8 | if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]; then 9 | source "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" 10 | else 11 | for COMPLETION in "${HOMEBREW_PREFIX}/etc/bash_completion.d/"*; do 12 | [[ -r "${COMPLETION}" ]] && source "${COMPLETION}" 13 | done 14 | fi 15 | fi 16 | -------------------------------------------------------------------------------- /dot_config/environment.d/10-wayland.conf: -------------------------------------------------------------------------------- 1 | ELECTRON_OZONE_PLATFORM_HINT=auto 2 | SAL_USE_VCLPLUGIN=qt6 3 | -------------------------------------------------------------------------------- /dot_config/fontconfig/fonts.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Arial 9 | 10 | 11 | 12 | 13 | ~/.local/share/fonts 14 | 15 | -------------------------------------------------------------------------------- /dot_config/ghostty/config: -------------------------------------------------------------------------------- 1 | command = fish 2 | font-family = "Berkeley Mono" 3 | window-decoration = auto 4 | theme = light:GruvboxLight,dark:GruvboxDark 5 | window-padding-x = 9 6 | window-padding-y = 7 7 | -------------------------------------------------------------------------------- /dot_config/helix/config.toml: -------------------------------------------------------------------------------- 1 | theme = "base16_terminal" 2 | 3 | [editor] 4 | bufferline = "multiple" 5 | indent-guides.render = true 6 | -------------------------------------------------------------------------------- /dot_config/kanshi/config: -------------------------------------------------------------------------------- 1 | profile laptop { 2 | output "BOE 0x09DE Unknown" scale 1.25 3 | } 4 | 5 | profile dock { 6 | output "BOE 0x09DE Unknown" { 7 | scale 1.25 8 | position 4000,750 9 | } 10 | output "LG Electronics LG HDR 4K 0x00083A3A" { 11 | scale 1.5 12 | transform 90 13 | position 0,0 14 | } 15 | output "LG Electronics LG HDR 4K 0x0008D101" { 16 | scale 1.5 17 | position 1440,750 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dot_config/niri/config.kdl: -------------------------------------------------------------------------------- 1 | // Input device configuration. 2 | // Find the full list of options on the wiki: 3 | // https://github.com/YaLTeR/niri/wiki/Configuration:-Input 4 | input { 5 | keyboard { 6 | xkb { 7 | // You can set rules, model, layout, variant and options. 8 | // For more information, see xkeyboard-config(7). 9 | 10 | // For example: 11 | layout "ro" 12 | options "compose:rctrl" 13 | // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" 14 | } 15 | } 16 | 17 | // Next sections include libinput settings. 18 | // Omitting settings disables them, or leaves them at their default values. 19 | touchpad { 20 | // off 21 | tap 22 | dwt 23 | dwtp 24 | natural-scroll 25 | // accel-speed 0.6 26 | // accel-profile "flat" 27 | // scroll-method "two-finger" 28 | // disabled-on-external-mouse 29 | } 30 | 31 | mouse { 32 | // off 33 | // natural-scroll 34 | // accel-speed 0.2 35 | // accel-profile "flat" 36 | // scroll-method "no-scroll" 37 | } 38 | 39 | // Uncomment this to make the mouse warp to the center of newly focused windows. 40 | // warp-mouse-to-focus 41 | 42 | // Focus windows and outputs automatically when moving the mouse into them. 43 | // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. 44 | // focus-follows-mouse max-scroll-amount="0%" 45 | } 46 | 47 | // Settings that influence how windows are positioned and sized. 48 | // Find more information on the wiki: 49 | // https://github.com/YaLTeR/niri/wiki/Configuration:-Layout 50 | layout { 51 | // Set gaps around windows in logical pixels. 52 | gaps 16 53 | 54 | // When to center a column when changing focus, options are: 55 | // - "never", default behavior, focusing an off-screen column will keep at the left 56 | // or right edge of the screen. 57 | // - "always", the focused column will always be centered. 58 | // - "on-overflow", focusing a column will center it if it doesn't fit 59 | // together with the previously focused column. 60 | center-focused-column "never" 61 | 62 | // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. 63 | preset-column-widths { 64 | // Proportion sets the width as a fraction of the output width, taking gaps into account. 65 | // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. 66 | // The default preset widths are 1/3, 1/2 and 2/3 of the output. 67 | proportion 0.33333 68 | proportion 0.5 69 | proportion 0.66667 70 | 71 | // Fixed sets the width in logical pixels exactly. 72 | // fixed 1920 73 | } 74 | 75 | // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. 76 | // preset-window-heights { } 77 | 78 | // You can change the default width of the new windows. 79 | default-column-width { proportion 0.5; } 80 | // If you leave the brackets empty, the windows themselves will decide their initial width. 81 | // default-column-width {} 82 | 83 | // By default focus ring and border are rendered as a solid background rectangle 84 | // behind windows. That is, they will show up through semitransparent windows. 85 | // This is because windows using client-side decorations can have an arbitrary shape. 86 | // 87 | // If you don't like that, you should uncomment `prefer-no-csd` below. 88 | // Niri will draw focus ring and border *around* windows that agree to omit their 89 | // client-side decorations. 90 | // 91 | // Alternatively, you can override it with a window rule called 92 | // `draw-border-with-background`. 93 | 94 | // You can change how the focus ring looks. 95 | focus-ring { 96 | // Uncomment this line to disable the focus ring. 97 | // off 98 | 99 | // How many logical pixels the ring extends out from the windows. 100 | width 4 101 | 102 | // Colors can be set in a variety of ways: 103 | // - CSS named colors: "red" 104 | // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" 105 | // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. 106 | 107 | // Color of the ring on the active monitor. 108 | active-color "#7fc8ff" 109 | 110 | // Color of the ring on inactive monitors. 111 | inactive-color "#505050" 112 | 113 | // You can also use gradients. They take precedence over solid colors. 114 | // Gradients are rendered the same as CSS linear-gradient(angle, from, to). 115 | // The angle is the same as in linear-gradient, and is optional, 116 | // defaulting to 180 (top-to-bottom gradient). 117 | // You can use any CSS linear-gradient tool on the web to set these up. 118 | // Changing the color space is also supported, check the wiki for more info. 119 | // 120 | // active-gradient from="#80c8ff" to="#bbddff" angle=45 121 | 122 | // You can also color the gradient relative to the entire view 123 | // of the workspace, rather than relative to just the window itself. 124 | // To do that, set relative-to="workspace-view". 125 | // 126 | // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" 127 | } 128 | 129 | // You can also add a border. It's similar to the focus ring, but always visible. 130 | border { 131 | // The settings are the same as for the focus ring. 132 | // If you enable the border, you probably want to disable the focus ring. 133 | off 134 | 135 | width 4 136 | active-color "#ffc87f" 137 | inactive-color "#505050" 138 | 139 | // active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view" 140 | // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" 141 | } 142 | 143 | // Struts shrink the area occupied by windows, similarly to layer-shell panels. 144 | // You can think of them as a kind of outer gaps. They are set in logical pixels. 145 | // Left and right struts will cause the next window to the side to always be visible. 146 | // Top and bottom struts will simply add outer gaps in addition to the area occupied by 147 | // layer-shell panels and regular gaps. 148 | struts { 149 | // left 64 150 | // right 64 151 | // top 64 152 | // bottom 64 153 | } 154 | } 155 | 156 | // Add lines like this to spawn processes at startup. 157 | // Note that running niri as a session supports xdg-desktop-autostart, 158 | // which may be more convenient to use. 159 | // See the binds section below for more spawn examples. 160 | // spawn-at-startup "alacritty" "-e" "fish" 161 | // spawn-at-startup "swaybg" "-m" "fill" "-i" "/home/tudor/Pictures/tomasz-filipek-59OA9ycJhpI-unsplash.jpg" 162 | // spawn-at-startup "waybar" 163 | // spawn-at-startup "kanshi" 164 | // spawn-at-startup "kwalletd6" 165 | // spawn-at-startup "sh" "-c" "systemctl --user stop xdg-desktop-portal-gtk.service && systemctl --user start plasma-xdg-desktop-portal-kde.service" 166 | // spawn-at-startup "sh" "-c" "lxqt-session && niri msg action quit -s" 167 | spawn-at-startup "/usr/libexec/pam_kwallet_init" 168 | spawn-at-startup "nm-applet" 169 | 170 | environment { 171 | QT_QPA_PLATFORM "wayland" 172 | QT_QPA_PLATFORMTHEME "qt6ct" 173 | DISPLAY ":69" 174 | // DISPLAY ":0" 175 | } 176 | 177 | // Uncomment this line to ask the clients to omit their client-side decorations if possible. 178 | // If the client will specifically ask for CSD, the request will be honored. 179 | // Additionally, clients will be informed that they are tiled, removing some rounded corners. 180 | prefer-no-csd 181 | 182 | // You can change the path where screenshots are saved. 183 | // A ~ at the front will be expanded to the home directory. 184 | // The path is formatted with strftime(3) to give you the screenshot date and time. 185 | screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" 186 | 187 | // You can also set this to null to disable saving screenshots to disk. 188 | // screenshot-path null 189 | 190 | // Animation settings. 191 | // The wiki explains how to configure individual animations: 192 | // https://github.com/YaLTeR/niri/wiki/Configuration:-Animations 193 | animations { 194 | // Uncomment to turn off all animations. 195 | // off 196 | 197 | // Slow down all animations by this factor. Values below 1 speed them up instead. 198 | // slowdown 3.0 199 | } 200 | 201 | // Window rules let you adjust behavior for individual windows. 202 | // Find more information on the wiki: 203 | // https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules 204 | 205 | // Indicate screencasted windows with red colors. 206 | window-rule { 207 | match is-window-cast-target=true 208 | 209 | focus-ring { 210 | active-color "#f38ba8" 211 | inactive-color "#7d0d2d" 212 | } 213 | 214 | border { 215 | inactive-color "#7d0d2d" 216 | } 217 | 218 | shadow { 219 | color "#7d0d2d70" 220 | } 221 | 222 | tab-indicator { 223 | active-color "#f38ba8" 224 | inactive-color "#7d0d2d" 225 | } 226 | } 227 | 228 | // Example: block out two password managers from screen capture. 229 | // (This example rule is commented out with a "/-" in front.) 230 | /-window-rule { 231 | match app-id=r#"^org\.keepassxc\.KeePassXC$"# 232 | match app-id=r#"^org\.gnome\.World\.Secrets$"# 233 | 234 | block-out-from "screen-capture" 235 | 236 | // Use this instead if you want them visible on third-party screenshot tools. 237 | // block-out-from "screencast" 238 | } 239 | 240 | binds { 241 | // Keys consist of modifiers separated by + signs, followed by an XKB key name 242 | // in the end. To find an XKB name for a particular key, you may use a program 243 | // like wev. 244 | // 245 | // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt 246 | // when running as a winit window. 247 | // 248 | // Most actions that you can bind here can also be invoked programmatically with 249 | // `niri msg action do-something`. 250 | 251 | // Mod-Shift-/, which is usually the same as Mod-?, 252 | // shows a list of important hotkeys. 253 | Mod+Shift+A { show-hotkey-overlay; } 254 | 255 | // Suggested binds for running programs: terminal, app launcher, screen locker. 256 | Mod+T { spawn "ghostty"; } 257 | F12 { spawn "qterminal" "-d"; } 258 | Alt+Space { spawn "fuzzel"; } 259 | // Mod+P { spawn "pcmanfm-qt"; } 260 | Mod+P { spawn "dolphin"; } 261 | Super+Alt+L { spawn "systemctl" "suspend"; } 262 | Super+Shift+Escape { quit; } 263 | // Super+Alt+L { spawn "lxqt-leave"; } 264 | // Super+Shift+Escape { spawn "lxqt-leave" "--lockscreen"; } 265 | 266 | // You can also use a shell. Do this if you need pipes, multiple commands, etc. 267 | // Note: the entire command goes as a single argument in the end. 268 | // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } 269 | 270 | // Example volume keys mappings for PipeWire & WirePlumber. 271 | // The allow-when-locked=true property makes them work even when the session is locked. 272 | XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } 273 | XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } 274 | XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } 275 | XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } 276 | 277 | //Brightness 278 | XF86MonBrightnessUp { spawn "brightnessctl" "s" "10%+"; } 279 | XF86MonBrightnessDown { spawn "brightnessctl" "s" "10%-"; } 280 | 281 | Mod+Q { close-window; } 282 | 283 | Mod+Left { focus-column-left; } 284 | Mod+Down { focus-window-down-or-top; } 285 | Mod+Up { focus-window-up-or-bottom; } 286 | Mod+Right { focus-column-right; } 287 | Mod+H { focus-column-left; } 288 | Mod+J { focus-window-down-or-top; } 289 | Mod+K { focus-window-up-or-bottom; } 290 | Mod+L { focus-column-right; } 291 | 292 | Mod+Ctrl+Left { move-column-left; } 293 | Mod+Ctrl+Down { move-window-down; } 294 | Mod+Ctrl+Up { move-window-up; } 295 | Mod+Ctrl+Right { move-column-right; } 296 | Mod+Ctrl+H { move-column-left; } 297 | Mod+Ctrl+J { move-window-down; } 298 | Mod+Ctrl+K { move-window-up; } 299 | Mod+Ctrl+L { move-column-right; } 300 | 301 | // Alternative commands that move across workspaces when reaching 302 | // the first or last window in a column. 303 | // Mod+J { focus-window-or-workspace-down; } 304 | // Mod+K { focus-window-or-workspace-up; } 305 | // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } 306 | // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } 307 | 308 | Mod+Home { focus-column-first; } 309 | Mod+End { focus-column-last; } 310 | Mod+Ctrl+Home { move-column-to-first; } 311 | Mod+Ctrl+End { move-column-to-last; } 312 | 313 | Mod+Shift+Left { focus-monitor-left; } 314 | Mod+Shift+Down { focus-monitor-down; } 315 | Mod+Shift+Up { focus-monitor-up; } 316 | Mod+Shift+Right { focus-monitor-right; } 317 | Mod+Shift+H { focus-monitor-left; } 318 | Mod+Shift+J { focus-monitor-down; } 319 | Mod+Shift+K { focus-monitor-up; } 320 | Mod+Shift+L { focus-monitor-right; } 321 | 322 | Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } 323 | Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } 324 | Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } 325 | Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } 326 | Mod+Shift+Ctrl+H { move-column-to-monitor-left; } 327 | Mod+Shift+Ctrl+J { move-column-to-monitor-down; } 328 | Mod+Shift+Ctrl+K { move-column-to-monitor-up; } 329 | Mod+Shift+Ctrl+L { move-column-to-monitor-right; } 330 | 331 | // Alternatively, there are commands to move just a single window: 332 | // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } 333 | // ... 334 | 335 | // And you can also move a whole workspace to another monitor: 336 | // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } 337 | // ... 338 | 339 | Mod+Page_Down { focus-workspace-down; } 340 | Mod+Page_Up { focus-workspace-up; } 341 | Mod+U { focus-workspace-down; } 342 | Mod+I { focus-workspace-up; } 343 | Mod+Ctrl+Page_Down { move-column-to-workspace-down; } 344 | Mod+Ctrl+Page_Up { move-column-to-workspace-up; } 345 | Mod+Ctrl+U { move-column-to-workspace-down; } 346 | Mod+Ctrl+I { move-column-to-workspace-up; } 347 | 348 | // Alternatively, there are commands to move just a single window: 349 | // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } 350 | // ... 351 | 352 | Mod+Shift+Page_Down { move-workspace-down; } 353 | Mod+Shift+Page_Up { move-workspace-up; } 354 | Mod+Shift+U { move-workspace-down; } 355 | Mod+Shift+I { move-workspace-up; } 356 | 357 | // You can bind mouse wheel scroll ticks using the following syntax. 358 | // These binds will change direction based on the natural-scroll setting. 359 | // 360 | // To avoid scrolling through workspaces really fast, you can use 361 | // the cooldown-ms property. The bind will be rate-limited to this value. 362 | // You can set a cooldown on any bind, but it's most useful for the wheel. 363 | Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } 364 | Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } 365 | Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } 366 | Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } 367 | 368 | Mod+WheelScrollRight { focus-column-right; } 369 | Mod+WheelScrollLeft { focus-column-left; } 370 | Mod+Ctrl+WheelScrollRight { move-column-right; } 371 | Mod+Ctrl+WheelScrollLeft { move-column-left; } 372 | 373 | // Usually scrolling up and down with Shift in applications results in 374 | // horizontal scrolling; these binds replicate that. 375 | Mod+Shift+WheelScrollDown { focus-column-right; } 376 | Mod+Shift+WheelScrollUp { focus-column-left; } 377 | Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } 378 | Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } 379 | 380 | // Similarly, you can bind touchpad scroll "ticks". 381 | // Touchpad scrolling is continuous, so for these binds it is split into 382 | // discrete intervals. 383 | // These binds are also affected by touchpad's natural-scroll, so these 384 | // example binds are "inverted", since we have natural-scroll enabled for 385 | // touchpads by default. 386 | // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } 387 | // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } 388 | 389 | // You can refer to workspaces by index. However, keep in mind that 390 | // niri is a dynamic workspace system, so these commands are kind of 391 | // "best effort". Trying to refer to a workspace index bigger than 392 | // the current workspace count will instead refer to the bottommost 393 | // (empty) workspace. 394 | // 395 | // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on 396 | // will all refer to the 3rd workspace. 397 | Mod+1 { focus-workspace 1; } 398 | Mod+2 { focus-workspace 2; } 399 | Mod+3 { focus-workspace 3; } 400 | Mod+4 { focus-workspace 4; } 401 | Mod+5 { focus-workspace 5; } 402 | Mod+6 { focus-workspace 6; } 403 | Mod+7 { focus-workspace 7; } 404 | Mod+8 { focus-workspace 8; } 405 | Mod+9 { focus-workspace 9; } 406 | Mod+Ctrl+1 { move-column-to-workspace 1; } 407 | Mod+Ctrl+2 { move-column-to-workspace 2; } 408 | Mod+Ctrl+3 { move-column-to-workspace 3; } 409 | Mod+Ctrl+4 { move-column-to-workspace 4; } 410 | Mod+Ctrl+5 { move-column-to-workspace 5; } 411 | Mod+Ctrl+6 { move-column-to-workspace 6; } 412 | Mod+Ctrl+7 { move-column-to-workspace 7; } 413 | Mod+Ctrl+8 { move-column-to-workspace 8; } 414 | Mod+Ctrl+9 { move-column-to-workspace 9; } 415 | 416 | // Alternatively, there are commands to move just a single window: 417 | // Mod+Ctrl+1 { move-window-to-workspace 1; } 418 | 419 | // Switches focus between the current and the previous workspace. 420 | // Mod+Tab { focus-workspace-previous; } 421 | 422 | Mod+Comma { consume-window-into-column; } 423 | Mod+Period { expel-window-from-column; } 424 | 425 | // There are also commands that consume or expel a single window to the side. 426 | Mod+BracketLeft { consume-or-expel-window-left; } 427 | Mod+BracketRight { consume-or-expel-window-right; } 428 | 429 | Mod+R { switch-preset-column-width; } 430 | Mod+Shift+R { switch-preset-window-height; } 431 | Mod+Ctrl+R { reset-window-height; } 432 | Mod+F { maximize-column; } 433 | Mod+Shift+F { fullscreen-window; } 434 | Mod+Ctrl+F { expand-column-to-available-width; } 435 | Mod+C { center-column; } 436 | 437 | // Finer width adjustments. 438 | // This command can also: 439 | // * set width in pixels: "1000" 440 | // * adjust width in pixels: "-5" or "+5" 441 | // * set width as a percentage of screen width: "25%" 442 | // * adjust width as a percentage of screen width: "-10%" or "+10%" 443 | // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, 444 | // set-column-width "100" will make the column occupy 200 physical screen pixels. 445 | Mod+Minus { set-column-width "-10%"; } 446 | Mod+Equal { set-column-width "+10%"; } 447 | 448 | // Finer height adjustments when in column with other windows. 449 | Mod+Shift+Minus { set-window-height "-10%"; } 450 | Mod+Shift+Equal { set-window-height "+10%"; } 451 | 452 | Mod+W { toggle-column-tabbed-display; } 453 | 454 | // Actions to switch layouts. 455 | // Note: if you uncomment these, make sure you do NOT have 456 | // a matching layout switch hotkey configured in xkb options above. 457 | // Having both at once on the same hotkey will break the switching, 458 | // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). 459 | // Mod+Space { switch-layout "next"; } 460 | // Mod+Shift+Space { switch-layout "prev"; } 461 | 462 | Print { screenshot; } 463 | Ctrl+Print { screenshot-screen; } 464 | Alt+Print { screenshot-window; } 465 | 466 | // The quit action will show a confirmation dialog to avoid accidental exits. 467 | Mod+Shift+E { quit; } 468 | 469 | // Powers off the monitors. To turn them back on, do any input like 470 | // moving the mouse or pressing any other key. 471 | Mod+Shift+P { power-off-monitors; } 472 | } 473 | -------------------------------------------------------------------------------- /dot_config/systemd/user/kanshi.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=graphical-session.target 3 | After=graphical-session.target 4 | Requisite=graphical-session.target 5 | 6 | [Service] 7 | ExecStart=/usr/bin/kanshi 8 | Restart=on-failure 9 | -------------------------------------------------------------------------------- /dot_config/systemd/user/mako.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Lightweight Wayland notification daemon 3 | Documentation=man:mako(1) 4 | PartOf=graphical-session.target 5 | After=graphical-session.target 6 | 7 | [Service] 8 | Type=dbus 9 | BusName=org.freedesktop.Notifications 10 | ExecCondition=/bin/sh -c '[ -n "$WAYLAND_DISPLAY" ]' 11 | ExecStart=/usr/bin/mako 12 | ExecReload=/usr/bin/makoctl reload 13 | 14 | [Install] 15 | WantedBy=graphical-session.target 16 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_kanshi.service: -------------------------------------------------------------------------------- 1 | ../kanshi.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_mako.service: -------------------------------------------------------------------------------- 1 | ../mako.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_plasma-powerdevil.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/user/plasma-powerdevil.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_swaybg.service: -------------------------------------------------------------------------------- 1 | ../swaybg.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_swayidle.service: -------------------------------------------------------------------------------- 1 | ../swayidle.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_waybar.service: -------------------------------------------------------------------------------- 1 | /usr/lib/systemd/user/waybar.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_wlsunset.service: -------------------------------------------------------------------------------- 1 | ../wlsunset.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/niri.service.wants/symlink_xwayland-satellite.service: -------------------------------------------------------------------------------- 1 | ../xwayland-satellite.service 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/plasma-polkit-agent.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=KDE PolicyKit Authentication Agent 3 | PartOf=graphical-session.target 4 | After=plasma-core.target 5 | After=graphical-session.target 6 | 7 | [Service] 8 | ExecStart=/usr/libexec/polkit-kde-authentication-agent-1 9 | BusName=org.kde.polkit-kde-authentication-agent-1 10 | Slice=background.slice 11 | TimeoutStopSec=5sec 12 | Restart=on-failure 13 | -------------------------------------------------------------------------------- /dot_config/systemd/user/swaybg.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=graphical-session.target 3 | After=graphical-session.target 4 | Requisite=graphical-session.target 5 | 6 | [Service] 7 | ExecStart=/usr/bin/swaybg -m fill -i "%h/Pictures/tomasz-filipek-59OA9ycJhpI-unsplash.jpg" 8 | Restart=on-failure 9 | -------------------------------------------------------------------------------- /dot_config/systemd/user/swayidle.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=graphical-session.target 3 | After=graphical-session.target 4 | Requisite=graphical-session.target 5 | 6 | [Service] 7 | ExecStart=/usr/bin/swayidle -w timeout 601 'niri msg action power-off-monitors' timeout 600 'swaylock -f' before-sleep 'swaylock -f' 8 | Restart=on-failure 9 | -------------------------------------------------------------------------------- /dot_config/systemd/user/theme-switch.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description="Switch to light or dark theme" 3 | 4 | [Service] 5 | Type=oneshot 6 | ExecStart=%h/.local/bin/theme-switch 7 | -------------------------------------------------------------------------------- /dot_config/systemd/user/theme-switch.timer: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description="Trigger light/dark theme switching" 3 | 4 | [Timer] 5 | OnCalendar=*-*-* 8:00:00 6 | OnCalendar=*-*-* 20:00:00 7 | Persistent=true 8 | 9 | [Install] 10 | WantedBy=timers.target 11 | -------------------------------------------------------------------------------- /dot_config/systemd/user/timers.target.wants/symlink_theme-switch.timer: -------------------------------------------------------------------------------- 1 | /home/tudor/.config/systemd/user/theme-switch.timer 2 | -------------------------------------------------------------------------------- /dot_config/systemd/user/wlsunset.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=graphical-session.target 3 | After=graphical-session.target 4 | Requisite=graphical-session.target 5 | 6 | [Service] 7 | ExecStart=wlsunset -l 52.00993 -L 4.36047 8 | Restart=on-failure 9 | -------------------------------------------------------------------------------- /dot_config/systemd/user/xwayland-satellite.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Xwayland outside your Wayland 3 | BindsTo=graphical-session.target 4 | PartOf=graphical-session.target 5 | After=graphical-session.target 6 | Requisite=graphical-session.target 7 | 8 | [Service] 9 | ExecStart=/usr/bin/xwayland-satellite :69 10 | StandardOutput=journal 11 | 12 | [Install] 13 | WantedBy=graphical-session.target 14 | -------------------------------------------------------------------------------- /dot_config/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", // Waybar at top layer 3 | // "position": "bottom", // Waybar position (top|bottom|left|right) 4 | "height": 30, // Waybar height (to be removed for auto height) 5 | // "width": 1280, // Waybar width 6 | // "gtk-layer-shell": "false", 7 | // Choose the order of the modules 8 | "modules-left": ["niri/workspaces", "tray"], 9 | "modules-center": ["niri/window"], 10 | "modules-right": ["custom/zypper", "idle_inhibitor", "network", "bluetooth", "cpu", "memory", "temperature", "backlight", "battery", "wireplumber", "clock"], 11 | "niri/workspaces": { 12 | "all-outputs": false, 13 | "disable-scroll": true, 14 | "format": "{index} {icon}", 15 | "format-icons": { 16 | "urgent": "", 17 | "focused": "", 18 | "default": "" 19 | } 20 | }, 21 | "custom/zypper": { 22 | "format": "{} ", 23 | "interval": 3600, 24 | "exec": "zypper lu | grep 'v \\+|' | wc -l; echo 'packages to update'", 25 | "exec-if": "exit 0", 26 | "on-click": "exec alacritty -e sudo sh -c 'zypper ref; zypper dup; pkill -SIGRTMIN+8 waybar'", 27 | "signal": 8 28 | }, 29 | "idle_inhibitor": { 30 | "format": "{icon}", 31 | "format-icons": { 32 | "activated": "", 33 | "deactivated": "" 34 | } 35 | }, 36 | "tray": { 37 | // "icon-size": 21, 38 | "spacing": 10, 39 | "show-passive-items": true 40 | }, 41 | "clock": { 42 | // "timezone": "America/New_York", 43 | "format": " {:%b %d %Y %R}", 44 | "format-alt": "{:%a %d %b w:%V %H:%M}", 45 | "tooltip-format": "{calendar}", 46 | "calendar": { 47 | "mode-mon-col" : 4, 48 | "weeks-pos" : "left", 49 | "on-scroll" : 1, 50 | "on-click-right" : "mode", 51 | "format": { 52 | "months": "{}", 53 | "weeks": "{}", 54 | "weekdays": "{}", 55 | "today": "{}" 56 | } 57 | }, 58 | "actions": { 59 | "on-click-right" : "mode", 60 | "on-scroll-up" : "shift_up", 61 | "on-scroll-down" : "shift_down" 62 | }, 63 | "interval": 10 64 | }, 65 | "cpu": { 66 | "format": "{usage}% ", 67 | "tooltip": false 68 | }, 69 | "memory": { 70 | "format": "{}% " 71 | }, 72 | "temperature": { 73 | // "thermal-zone": 2, 74 | // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", 75 | "critical-threshold": 80, 76 | // "format-critical": "{temperatureC}°C {icon}", 77 | "format": "{temperatureC}°C {icon}", 78 | "format-icons": ["", "", ""] 79 | }, 80 | "backlight": { 81 | // "device": "acpi_video1", 82 | "format": "{percent}% {icon}", 83 | "format-icons": ["", ""] 84 | }, 85 | "battery": { 86 | "states": { 87 | // "good": 95, 88 | "warning": 30, 89 | "critical": 15 90 | }, 91 | "format": "{icon}", 92 | "format-charging": "", 93 | "format-plugged": "", 94 | "format-alt": "{capacity}% {time}", 95 | "format-icons": ["", "", "", "", ""] 96 | }, 97 | "network": { 98 | // "interface": "wlp2*", // (Optional) To force the use of this interface 99 | "format-wifi": "", 100 | "format-ethernet": "", 101 | "format-linked": "", 102 | "format-disconnected": "⚠", 103 | "format-alt": "{ifname} {essid} ({signalStrength}%)" 104 | }, 105 | "bluetooth": { 106 | "format": "", 107 | "format-disabled": "", 108 | "format-off": "", 109 | "format-connected": " {num_connections}", 110 | // "format-connected": " {device_alias}", 111 | "tooltip-format": "{controller_address} {status}\n\n{num_connections} connected", 112 | "tooltip-format-disabled": "{status}", 113 | "tooltip-format-connected": "{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", 114 | "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", 115 | "format-connected-battery": " {device_alias} {device_battery_percentage}%", 116 | "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%", 117 | // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device 118 | "on-click": "bluetooth toggle; pkill -SIGRTMIN+8 waybar", 119 | "on-click-right": "exec alacritty -e sh -c 'bluetoothctl'" 120 | }, 121 | "wireplumber": { 122 | "format": "{icon}", 123 | "format-alt": "{volume} {icon}", 124 | "format-alt-click": "click-middle", 125 | "format-muted": "", 126 | "format-icons": { 127 | "headphones": "", 128 | "handsfree": "", 129 | "headset": "", 130 | "phone": "", 131 | "portable": "", 132 | "car": "", 133 | "default": ["", "", ""] 134 | }, 135 | "scroll-step": 10, 136 | "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle", 137 | "on-click-right": "pavucontrol-qt", 138 | "tooltip": true 139 | }, 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /dot_config/waybar/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | border: none; 3 | border-radius: 0; 4 | font-family: "Adwaita Sans", "Source Sans Pro", "FontAwesome 6 Free"; 5 | font-size: 15px; 6 | box-shadow: none; 7 | text-shadow: none; 8 | transition-duration: 0s; 9 | } 10 | 11 | window#waybar { 12 | color: rgba(53, 185, 171, 1); 13 | background-color: rgba(23, 63, 79, 0.4); 14 | border-bottom: 2px solid rgba(53, 185, 171, 0.4); 15 | } 16 | 17 | window#waybar.solo { 18 | color: rgba(53, 185, 171, 1); 19 | } 20 | 21 | #workspaces { 22 | margin: 0 5px; 23 | } 24 | 25 | #custom-scratchpad { 26 | margin: 0px 5px; 27 | padding: 0px 5px; 28 | } 29 | 30 | #workspaces button { 31 | padding: 0 5px; 32 | color: rgba(53, 185, 171, 1); 33 | } 34 | 35 | #workspaces button.focused { 36 | color: rgba(115, 186, 37, 1); 37 | } 38 | 39 | #workspaces button.visible { 40 | color: rgba(115, 186, 37, 1); 41 | } 42 | 43 | #workspaces button.urgent { 44 | color: rgba(33, 164, 223, 1); 45 | } 46 | 47 | #mode, 48 | #battery, 49 | #cpu, 50 | #memory, 51 | #network, 52 | #bluetooth, 53 | #pulseaudio, 54 | #idle_inhibitor, 55 | #temperature, 56 | #custom-layout, 57 | #backlight { 58 | margin: 0px 6px 0px 10px; 59 | /* min-width: 30px;*/ 60 | } 61 | 62 | #clock { 63 | margin: 0px 6px 0px 10px; 64 | } 65 | 66 | #battery.warning { 67 | color: rgba(255, 210, 4, 1); 68 | } 69 | 70 | #battery.critical { 71 | color: rgba(238, 46, 36, 1); 72 | } 73 | 74 | #battery.charging { 75 | color: rgba(217, 216, 216, 1); 76 | } 77 | 78 | #bluetooth.disabled { 79 | color: rgba(128, 128, 128, 1); 80 | } 81 | 82 | #bluetooth.off { 83 | color: rgba(128, 128, 128, 1); 84 | } 85 | 86 | #bluetooth.connected { 87 | color: rgba(115, 186, 37, 1); 88 | } 89 | -------------------------------------------------------------------------------- /dot_config/xdg-desktop-portal/niri-portals.conf: -------------------------------------------------------------------------------- 1 | [preferred] 2 | default=gnome;gtk; 3 | # org.freedesktop.impl.portal.ScreenCast=gnome 4 | org.freedesktop.impl.portal.Access=gtk; 5 | org.freedesktop.impl.portal.Notification=gtk; 6 | org.freedesktop.impl.portal.Secret=kwallet 7 | -------------------------------------------------------------------------------- /dot_gitconfig: -------------------------------------------------------------------------------- 1 | [core] 2 | excludesFile = ~/.gitignore 3 | 4 | [push] 5 | autoSetupRemote = true 6 | 7 | [user] 8 | name = Tudor Roman 9 | email = tudor@tudorr.ro 10 | signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPL0/8jCHkisIGcEIztViShls0iANZwL/W6v5xwPAKkZ 11 | [gpg] 12 | format = ssh 13 | [gpg "ssh"] 14 | program = /opt/1Password/op-ssh-sign 15 | [commit] 16 | gpgsign = true 17 | -------------------------------------------------------------------------------- /dot_gitignore: -------------------------------------------------------------------------------- 1 | .mise.local.* 2 | -------------------------------------------------------------------------------- /dot_local/bin/executable_theme-switch: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env fish 2 | 3 | set -l current_hour (date +%k) 4 | echo "Current hour is $current_hour" >&2 5 | if test $current_hour -ge 8 -a $current_hour -lt 20 6 | set theme_type light 7 | set gsettings_prefer prefer-light 8 | set qt_theme org.kde.breeze.desktop 9 | else 10 | set theme_type dark 11 | set gsettings_prefer prefer-dark 12 | set qt_theme org.kde.breezedark.desktop 13 | end 14 | echo "Set theme to $theme_type" >&2 15 | 16 | /usr/bin/gsettings set org.gnome.desktop.interface color-scheme \'$gsettings_prefer\' 17 | /usr/bin/lookandfeeltool -a $qt_theme 18 | notify-send "Switched to $theme_type mode!" 19 | -------------------------------------------------------------------------------- /dot_local/share/konsole/Dark.profile: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | ColorScheme=Modus-Vivendi 3 | Font=Berkeley Mono,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 4 | 5 | [General] 6 | Command=/usr/bin/env fish 7 | Name=Dark 8 | Parent=FALLBACK/ 9 | -------------------------------------------------------------------------------- /dot_local/share/konsole/Gruvbox_dark.colorscheme: -------------------------------------------------------------------------------- 1 | [Background] 2 | Color=40,40,40 3 | 4 | [BackgroundIntense] 5 | Color=40,40,40 6 | 7 | [Color0] 8 | Color=40,40,40 9 | 10 | [Color0Intense] 11 | Color=146,131,116 12 | 13 | [Color1] 14 | Color=204,36,29 15 | 16 | [Color1Intense] 17 | Color=251,73,52 18 | 19 | [Color2] 20 | Color=152,151,26 21 | 22 | [Color2Intense] 23 | Color=184,187,38 24 | 25 | [Color3] 26 | Color=215,153,33 27 | 28 | [Color3Intense] 29 | Color=250,189,47 30 | 31 | [Color4] 32 | Color=69,133,136 33 | 34 | [Color4Intense] 35 | Color=131,165,152 36 | 37 | [Color5] 38 | Color=177,98,134 39 | 40 | [Color5Intense] 41 | Color=211,134,155 42 | 43 | [Color6] 44 | Color=104,157,106 45 | 46 | [Color6Intense] 47 | Color=142,192,124 48 | 49 | [Color7] 50 | Color=168,153,132 51 | 52 | [Color7Intense] 53 | Color=235,219,178 54 | 55 | [Foreground] 56 | Color=235,219,178 57 | 58 | [ForegroundIntense] 59 | Color=235,219,178 60 | 61 | [General] 62 | Description=Gruvbox 63 | Opacity=1 64 | Wallpaper= 65 | -------------------------------------------------------------------------------- /dot_local/share/konsole/Gruvbox_light.colorscheme: -------------------------------------------------------------------------------- 1 | [Background] 2 | Color=251,241,199 3 | 4 | [BackgroundIntense] 5 | Color=251,241,199 6 | 7 | [Color0] 8 | Color=251,241,199 9 | 10 | [Color0Intense] 11 | Color=146,131,116 12 | 13 | [Color1] 14 | Color=204,36,29 15 | 16 | [Color1Intense] 17 | Color=157,0,6 18 | 19 | [Color2] 20 | Color=152,151,26 21 | 22 | [Color2Intense] 23 | Color=121,116,14 24 | 25 | [Color3] 26 | Color=215,153,33 27 | 28 | [Color3Intense] 29 | Color=181,118,20 30 | 31 | [Color4] 32 | Color=69,133,136 33 | 34 | [Color4Intense] 35 | Color=7,102,120 36 | 37 | [Color5] 38 | Color=177,98,134 39 | 40 | [Color5Intense] 41 | Color=143,63,113 42 | 43 | [Color6] 44 | Color=104,157,106 45 | 46 | [Color6Intense] 47 | Color=66,123,88 48 | 49 | [Color7] 50 | Color=168,153,132 51 | 52 | [Color7Intense] 53 | Color=60,56,54 54 | 55 | [Foreground] 56 | Color=60,56,54 57 | 58 | [ForegroundIntense] 59 | Color=60,56,54 60 | 61 | [General] 62 | Description=Gruvbox Light 63 | Opacity=1 64 | Wallpaper= 65 | -------------------------------------------------------------------------------- /dot_local/share/konsole/Light.profile: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | AntiAliasFonts=true 3 | BorderWhenActive=false 4 | ColorScheme=Gruvbox_light 5 | EmojiFont=Noto Color Emoji,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 6 | Font=Berkeley Mono,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1 7 | LineSpacing=0 8 | UseFontLineChararacters=true 9 | 10 | [General] 11 | Command=/usr/bin/env fish 12 | DimWhenInactive=false 13 | Name=Light 14 | Parent=FALLBACK/ 15 | TerminalCenter=false 16 | TerminalMargin=10 17 | 18 | [Interaction Options] 19 | TrimLeadingSpacesInSelectedText=true 20 | TrimTrailingSpacesInSelectedText=true 21 | 22 | [Keyboard] 23 | KeyBindings=default 24 | 25 | [Terminal Features] 26 | LineNumbers=0 27 | -------------------------------------------------------------------------------- /dot_local/share/konsole/Modus-Vivendi.colorscheme: -------------------------------------------------------------------------------- 1 | [Background] 2 | Color=0,0,0 3 | 4 | [BackgroundFaint] 5 | Color=0,0,0 6 | 7 | [BackgroundIntense] 8 | Color=0,0,0 9 | 10 | [Color0] 11 | Color=0,0,0 12 | 13 | [Color0Faint] 14 | Color=0,0,0 15 | 16 | [Color0Intense] 17 | Color=89,89,89 18 | 19 | [Color1] 20 | Color=255,95,89 21 | 22 | [Color1Faint] 23 | Color=255,95,89 24 | 25 | [Color1Intense] 26 | Color=255,127,159 27 | 28 | [Color2] 29 | Color=68,188,68 30 | 31 | [Color2Faint] 32 | Color=68,188,68 33 | 34 | [Color2Intense] 35 | Color=112,185,0 36 | 37 | [Color3] 38 | Color=208,188,0 39 | 40 | [Color3Faint] 41 | Color=208,188,0 42 | 43 | [Color3Intense] 44 | Color=254,196,63 45 | 46 | [Color4] 47 | Color=47,175,255 48 | 49 | [Color4Faint] 50 | Color=47,175,255 51 | 52 | [Color4Intense] 53 | Color=121,168,255 54 | 55 | [Color5] 56 | Color=254,172,208 57 | 58 | [Color5Faint] 59 | Color=254,172,208 60 | 61 | [Color5Intense] 62 | Color=182,160,255 63 | 64 | [Color6] 65 | Color=0,211,208 66 | 67 | [Color6Faint] 68 | Color=0,211,208 69 | 70 | [Color6Intense] 71 | Color=106,228,185 72 | 73 | [Color7] 74 | Color=152,152,152 75 | 76 | [Color7Faint] 77 | Color=152,152,152 78 | 79 | [Color7Intense] 80 | Color=255,255,255 81 | 82 | [Foreground] 83 | Color=255,255,255 84 | 85 | [ForegroundFaint] 86 | Color=255,255,255 87 | 88 | [ForegroundIntense] 89 | Color=255,255,255 90 | 91 | [General] 92 | Anchor=0.5,0.5 93 | Blur=false 94 | ColorRandomization=false 95 | Description=Modus Vivendi 96 | FillStyle=Tile 97 | Opacity=1 98 | Wallpaper= 99 | WallpaperFlipType=NoFlip 100 | WallpaperOpacity=1 101 | -------------------------------------------------------------------------------- /dot_profile: -------------------------------------------------------------------------------- 1 | test -z "$PROFILEREAD" && . /etc/profile || true 2 | 3 | eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 4 | 5 | export EDITOR=hx 6 | export VISUAL=hx 7 | export MANPAGER='nvim +Man!' 8 | 9 | eval "$(mise env -s bash)" 10 | -------------------------------------------------------------------------------- /dot_tmux.conf: -------------------------------------------------------------------------------- 1 | set -sg escape-time 0 2 | 3 | setw -g mode-key vi 4 | set -g status-keys vi 5 | 6 | bind h split-window -v 7 | bind v split-window -h 8 | 9 | set -g default-command "/usr/bin/env fish" 10 | -------------------------------------------------------------------------------- /private_dot_ssh/private_config: -------------------------------------------------------------------------------- 1 | Host * 2 | IdentityAgent ~/.1password/agent.sock 3 | 4 | Include work_config 5 | Include private 6 | -------------------------------------------------------------------------------- /run_onchange_after_reload-waybar.sh.tmpl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Reload waybar if config changes 4 | 5 | # waybar config hash: {{ include "dot_config/waybar/config" | sha256sum }} 6 | # waybar style.css hash: {{ include "dot_config/waybar/style.css" | sha256sum }} 7 | systemctl --user reload waybar 8 | -------------------------------------------------------------------------------- /run_onchange_initial-install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | type brew &>/dev/null || \ 4 | bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 5 | eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 6 | 7 | brew install \ 8 | mise \ 9 | helix \ 10 | tmux \ 11 | jq \ 12 | ripgrep \ 13 | fd \ 14 | direnv \ 15 | fish \ 16 | libnotify \ 17 | neovim 18 | -------------------------------------------------------------------------------- /run_onchange_systemd_user.sh.tmpl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | systemctl --user daemon-reload 4 | 5 | for unit_symlink_file in {{ .chezmoi.sourceDir }}/dot_config/systemd/user/timers.target.wants/*; do 6 | unit="${unit_symlink_file##*/symlink_}" 7 | echo "Starting timer unit $unit" 8 | systemctl --user start "$unit" 9 | done 10 | --------------------------------------------------------------------------------