index — dotfiles @ ac28c60ab3791275b5ffad428e9d4c88e8819559

my dotfiles

Add niri compositor
Christian Krinitsin mail@krinitsin.com
Tue, 06 Jan 2026 10:13:03 +0100
commit

ac28c60ab3791275b5ffad428e9d4c88e8819559

parent

b1a43aa024b3bd6c6f57326d7752144c9775a502

M alacritty/.config/alacritty/alacritty.tomlalacritty/.config/alacritty/alacritty.toml

@@ -33,7 +33,7 @@ [font.normal]

family = "DroidSansM Nerd Font" [font] -size = 12.0 +size = 11.0 [scrolling] history = 2000
M bash/.bash_profilebash/.bash_profile

@@ -4,6 +4,8 @@ #

[[ -f ~/.bashrc ]] && . ~/.bashrc -if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then - exec dbus-run-session sway +if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ] && [ -z "$NIRI_LOADED" ]; then + # exec dbus-run-session sway + export NIRI_LOADED=1 + exec niri-session fi
M bash/.bashrcbash/.bashrc

@@ -21,12 +21,10 @@ alias reload-gpg="gpg-connect-agent reloadagent /bye"

alias zeit-im="zeit import ~/.local/share/zeit-backup/backup" alias zeit-ex="zeit export -b -f json > ~/.local/share/zeit-backup/backup" -# Arrow bindings -bind '"\e[A":history-search-backward' -bind '"\e[B":history-search-forward' - # Start programs -eval "$(zoxide init --cmd='cd' bash)" +if command -v zoxide &> /dev/null; then + eval "$(zoxide init --cmd='cd' bash)" +fi if [[ -f ~/.bash-preexec.sh ]]; then source ~/.bash-preexec.sh
M bin/dmenubin/dmenu

@@ -1,6 +1,10 @@

#!/bin/sh -MONITOR=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused==true).name') +if [ $XDG_CURRENT_DESKTOP == "niri" ]; then + MONITOR=$(niri msg -j focused-output | jq -r '.name') +else + MONITOR=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused==true).name') +fi /usr/local/bin/dmenu-wl $* -nb '#2b3339' -nf '#d3c6aa' -sb '#d3c6aa' -sf '#212736' -i -m "$MONITOR" -fn 'DroidSansM Nerd Font'
M bin/dmenu-wlbin/dmenu-wl

@@ -1,6 +1,10 @@

#!/bin/sh -MONITOR=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused==true).name') +if [ $XDG_CURRENT_DESKTOP == "niri" ]; then + MONITOR=$(niri msg -j focused-output | jq -r '.name') +else + MONITOR=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused==true).name') +fi /usr/local/bin/dmenu-wl $* -nb '#2b3339' -nf '#d3c6aa' -sb '#d3c6aa' -sf '#212736' -i -m "$MONITOR" -fn 'DroidSansM Nerd Font'
M bin/powermenubin/powermenu

@@ -172,7 +172,11 @@ confirmed=$?

fi if [ "${confirmed}" == 0 ]; then - swaymsg -q "exec --no-startup-id ${menu[${selection}]}" + if [ $XDG_CURRENT_DESKTOP == "niri" ]; then + niri msg action spawn-sh -- "${menu[${selection}]}" + else + swaymsg -q "exec --no-startup-id ${menu[${selection}]}" + fi fi }

@@ -181,6 +185,10 @@ if [[ "${enable_confirmation}" = true && \

${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then ask_confirmation else - swaymsg -q "exec --no-startup-id ${menu[${selection}]}" + if [ $XDG_CURRENT_DESKTOP == "niri" ]; then + niri msg action spawn-sh -- "${menu[${selection}]}" + else + swaymsg -q "exec --no-startup-id ${menu[${selection}]}" + fi fi fi
M bin/random-wallpaperbin/random-wallpaper

@@ -10,4 +10,5 @@ cd ~/.dotfiles/wallpaper

IMAGE=$(find *'.png' | sort -R | tail -n 1) -swaymsg output "*" bg ~/.dotfiles/wallpaper/$IMAGE fill +killall swaybg +swaybg -m fill -i ~/.dotfiles/wallpaper/$IMAGE
M minimal-nvim/.config/nvim/init.luaminimal-nvim/.config/nvim/init.lua

@@ -41,5 +41,30 @@ cmd = { 'rust-analyzer' },

filetypes = { 'rust' }, } vim.lsp.enable('rust_ls') -vim.cmd('autocmd BufWritePre *.rs lua vim.lsp.buf.format({ async = false })') +vim.lsp.config['c_cpp_ls'] = { + cmd = { 'clangd' }, + filetypes = { 'c', 'cpp' }, +} +vim.lsp.enable('c_cpp_ls') + +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('my.lsp', {}), + callback = function(args) + local client = assert(vim.lsp.get_client_by_id(args.data.client_id)) + if client:supports_method('textDocument/completion') then + vim.lsp.completion.enable(true, client.id, args.buf, {autotrigger = true}) + vim.cmd[[set completeopt=noinsert,menuone,fuzzy]] + end + if not client:supports_method('textDocument/willSaveWaitUntil') + and client:supports_method('textDocument/formatting') then + vim.api.nvim_create_autocmd('BufWritePre', { + group = vim.api.nvim_create_augroup('my.lsp', {clear=false}), + buffer = args.buf, + callback = function() + vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 }) + end, + }) + end + end, +})
M qutebrowser/.config/qutebrowser/autoconfig.ymlqutebrowser/.config/qutebrowser/autoconfig.yml

@@ -6,6 +6,8 @@ # Instead, create a config.py - see :help for details.

config_version: 2 settings: + content.javascript.enabled: + global: true content.notifications.enabled: https://www.netflix.com: false downloads.prevent_mixed_content:
M qutebrowser/.config/qutebrowser/bookmarks/urlsqutebrowser/.config/qutebrowser/bookmarks/urls

@@ -3,3 +3,7 @@ https://www.ikea.com/de/de/p/malm-bettgestell-hoch-mit-2-schubkaesten-weiss-s19175957/ MALM Bettgestell hoch mit 2 Schubkästen, weiß, 180x200 cm - IKEA Deutschland

https://maddie.wtf/posts/2025-07-21-jujutsu-for-busy-devs Jujutsu For Busy Devs | maddie, wtf?! https://chubbiesbyash.com/crochet-miffy-in-overalls-free-amigurumi-pattern/ haha https://blog.trailofbits.com/2024/05/16/understanding-addresssanitizer-better-memory-safety-for-your-code/ Understanding AddressSanitizer: Better memory safety for your code - The Trail of Bits Blog +https://notes.krinitsin.com/ccc ccc +https://duckduckgo.com/?q=rust+iterate+two+times+over+vector&ia=web rust iterate two times over vector at DuckDuckGo +https://github.com/ckrinitsin/ccc ckrinitsin/ccc: chris' c compiler +https://thegameslayer.com/lists/best-pokemon-rom-hacks-of-2025-ranked/ 10 Best Pokemon ROM Hacks of 2025, Ranked
M qutebrowser/.config/qutebrowser/config.pyqutebrowser/.config/qutebrowser/config.py

@@ -11,7 +11,8 @@

# Bindings config.bind('J', ':tab-prev') config.bind('K', ':tab-next') -config.bind('wq', 'session-save ;; close') +config.bind("wd", "set content.javascript.enabled false") +config.bind("we", "set content.javascript.enabled true") c.content.javascript.clipboard="access-paste"
M waybar/.config/waybar/configwaybar/.config/waybar/config

@@ -3,7 +3,7 @@ // "layer": "top", // Waybar at top layer

"position": "bottom", // Waybar position (top|bottom|left|right) "height": 20, // Waybar height (to be removed for auto height) "spacing": 2, // Gaps between modules (4px) - "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad", "custom/media"], + "modules-left": ["sway/workspaces", "niri/workspaces", "sway/mode", "sway/scratchpad", "custom/media"], "modules-right": ["custom/zeit", "custom/pomodoro", "pulseaudio", "network", "cpu", "memory", "disk", "temperature", "battery", "clock", "tray"], "keyboard-state": {