1
0
mirror of https://codeberg.org/diginaut/dotfiles.git synced 2026-02-04 21:40:26 +01:00

45 Commits

Author SHA1 Message Date
c656dbbeb3 Support regular tmux 256 colour option 2026-01-27 14:31:32 +01:00
6c496fd2c0 stylua config for neovim config files 2026-01-26 17:07:07 +01:00
23c8c64f48 Lua file config 2026-01-26 17:02:08 +01:00
ec8317ddcd Explicit formatters; cleanup 2026-01-26 16:56:24 +01:00
ce732c7e75 Don't set options, those break layzvim apparently 2026-01-26 16:22:00 +01:00
8dd78f67ee Only open planning doc, and the new markdown version at that 2026-01-26 16:15:21 +01:00
fc926d42cb Cycle through useful checkbox states 2026-01-26 16:15:07 +01:00
19b4fcbc5f I'll use the cycle more anyway 2026-01-26 14:06:11 +01:00
cb0a57be0b Toggle markdown checkboxes, headings etc 2026-01-26 12:01:46 +01:00
75ab018b30 Automatic abbreviation expansion for some headings 2026-01-24 21:57:21 +01:00
6ff9e356c3 Detect when file was updated outside of neovim 2026-01-24 20:14:27 +01:00
443e7c3652 Abbreviation shortcuts for date, time, uuid 2026-01-24 20:14:12 +01:00
cf93d46371 Other bash/shell linter 2026-01-23 18:52:34 +01:00
d8740ddd85 Can I be more clear? 2026-01-22 13:51:58 +01:00
0ed9b0d077 More languages 2026-01-22 13:02:28 +01:00
57c4983148 Changed terminfo so italics etc work in nvim 2026-01-21 17:51:44 +01:00
da63f892c0 Removed 'todo' again, it's not handled by Treesitter 2026-01-21 17:44:04 +01:00
96d4cc6deb Use neovim if available 2026-01-21 14:40:13 +01:00
59f1dbec66 Ported todo file syntax highlighting from vim 2026-01-21 14:12:08 +01:00
e5b2f83f7b Better Markdown support 2026-01-21 12:15:28 +01:00
105d3273fb Treesitter has changed their API 2026-01-21 11:44:10 +01:00
292c44448f Fast finder, alternative for fzf/ripgrep 2026-01-21 11:12:06 +01:00
f9afaad121 Codeblock syntax highlighting 2026-01-21 11:11:34 +01:00
7c5962f7f3 bebop colorscheme with nice colours 2026-01-21 11:10:49 +01:00
99152ac85c Do not conceal quotes, code block openings etc 2026-01-21 11:10:31 +01:00
c3a8f16c53 If eza is installed, use it for pretty file/dir listings 2026-01-19 22:51:02 +01:00
624391f1cc Ignore Obsidian nvim plugin 2026-01-19 22:25:28 +01:00
7c2322d10a Added SUSE font, pretty geeky, nice UI font 2026-01-19 22:23:31 +01:00
8d58ebd8aa luarocks config/install 2026-01-19 11:50:27 +01:00
0ee41c2751 Simplified treesitter plugin to fix import errors 2026-01-19 11:50:00 +01:00
bd46317803 Moved settings to their 'correct lazyvim' places 2026-01-19 11:17:31 +01:00
935fedd711 Better formatting and comment 2026-01-18 22:22:07 +01:00
846398a1d3 Correctly load the colorscheme 2026-01-18 22:20:35 +01:00
d10cbc5336 Ignore lock files for LazyVim 2026-01-18 22:17:22 +01:00
264b8bdb31 Word 2026-01-18 22:15:43 +01:00
Michiel Scholten
165803b3f3 Merge pull request 'neovim' (#3) from neovim into master
Reviewed-on: https://codeberg.org/diginaut/dotfiles/pulls/3
2026-01-18 22:15:31 +01:00
21f8592198 Install neovim config dir 2026-01-18 19:42:57 +01:00
7e9ca8785f Load lazy plugins, don't fail on colorscheme 2026-01-17 22:19:06 +01:00
42a0af7cb3 Some tweaking 2026-01-17 15:32:45 +01:00
300b177d0d First attempt at my own neovim setup, with inspiration from jcorbin 2026-01-16 16:55:21 +01:00
9e943476ad Toggle tablet mode in KDE Plasma 2026-01-11 11:50:17 +01:00
f419adf243 2026! 2026-01-05 09:27:33 +01:00
09a7d645e6 Tell what venv has been enabled 2026-01-04 16:18:22 +01:00
c27a9e6ae3 If a VIRTUAL_ENV is already active, use that 2026-01-04 14:02:49 +01:00
cfd4a1d8e1 Less likely to conflict with another env var 2026-01-02 13:36:59 +01:00
26 changed files with 320 additions and 22 deletions

View File

@@ -1,16 +1,17 @@
layout_uv() {
if [[ -d ".venv" ]]; then
if [[ -z "$VIRTUAL_ENV" && -d ".venv" ]]; then
# No explicit VIRTUAL_ENV was exported (enabled), and a .venv dir exists, use that
VIRTUAL_ENV="$(pwd)/.venv"
fi
if [[ -z $VIRTUAL_ENV || ! -d $VIRTUAL_ENV ]]; then
log_status "No virtual environment exists. Executing \`uv venv\` to create one."
if [[ -z $PYTHON_VERSION ]]; then
if [[ -z $PYTHON_WANTED ]]; then
# No Python version specified, just create a virtualenv
uv venv
else
# Specific Python version requested, use that; will download if needed
uv venv --python $PYTHON_VERSION
uv venv --python $PYTHON_WANTED
fi
VIRTUAL_ENV="$(pwd)/.venv"
fi
@@ -22,4 +23,6 @@ layout_uv() {
fi
export UV_ACTIVE=1 # or VENV_ACTIVE=1
export VIRTUAL_ENV
log_status "Using venv at $VIRTUAL_ENV"
}

View File

@@ -69,6 +69,15 @@ alias la 'ls -A'
alias l 'ls -CF'
alias lll 'ls --color=always -alF | less -R'
# Replace ls with eza, if installed
if type -q eza
alias ll='eza -al --color=always --group-directories-first --icons' # preferred listing
alias ls='eza -a --color=always --group-directories-first --icons' # all files and dirs
alias la='eza -l --color=always --group-directories-first --icons' # long format
alias lt='eza -aT --color=always --group-directories-first --icons' # tree listing
alias l.="eza -a | grep -e '^\.'" # show only dotfiles
end
alias exa 'exa --icons --header --group-directories-first'
alias exatree 'exa --icons --header --group-directories-first --long --tree'
@@ -83,7 +92,7 @@ alias gst "git status"
alias ga "git add -A"
alias gl "git log"
alias gls "git shortlog --summary"
alias gld "git log --follow -p -- " # Shows history with diffs for the filename provided
alias gld "git log --follow -p -- " # Shows history with diffs for the filename provided
alias gr "git reflog"
alias gt 'git tag|less'
#alias gad 'git log --pretty='"'"'%at'"'"' | while read d; do date -d "@$d"; done | awk '"'"'{print $1}'"'"' | sort | uniq -c'
@@ -132,7 +141,7 @@ alias pypitest_up 'python3 -m build; python3 -m twine upload --repository testpy
alias youtube-dl 'youtube-dl -t -f bestvideo+bestaudio/best --merge-output-format mp4'
alias weather 'ansiweather'
alias weather ansiweather
alias wttr 'curl -s wttr.in/Beverwijk | head -17'
# https://www.reddit.com/r/vim/comments/7axmsb/i_cant_believe_how_good_fzf_is/?st=jgm7kba5&sh=590aa1e0
@@ -148,7 +157,7 @@ function imready
# e.g.: longrunning.sh; imready
set laststatus $status
if test $status = 0
set result "success"
set result success
else
set result "failed with result $laststatus"
end

View File

@@ -0,0 +1,9 @@
-- indent_type = "Spaces"
-- indent_width = 4
-- call_parentheses = "Always"
-- column_width = 120
vim.bo.tabstop = 4
vim.bo.softtabstop = 4
vim.bo.shiftwidth = 4
vim.bo.expandtab = true

1
.config/nvim/init.lua Normal file
View File

@@ -0,0 +1 @@
require("config.lazy")

View File

@@ -0,0 +1,37 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
vim.filetype.add({ extension = { todo = "todo" } })
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "bebop" } },
-- automatically check for plugin updates
checker = { enabled = true },
})

View File

@@ -0,0 +1,38 @@
-- Default options: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
vim.g.mapleader = ","
vim.g.maplocalleader = ","
vim.opt.number = true
vim.opt.relativenumber = false -- relative line numbers
vim.opt.tabstop = 4 -- tab width in spaces
vim.bo.tabstop = 4 -- tab width in spaces
vim.opt.shiftwidth = 4 -- indent width
vim.bo.shiftwidth = 4 -- indent width
vim.opt.expandtab = true -- spaces instead of tabs
vim.opt.smartindent = true -- smart indentation
vim.opt.termguicolors = true -- true color support
vim.opt.clipboard = "unnamedplus" -- system clipboard
-- vim.opt.smoothscroll = true
vim.opt.conceallevel = 0 -- please don't hide stuff from me
vim.opt.wrap = true -- Enable line wrap
vim.opt.spelllang = { "en", "nl" }
-- Replace 'dayh' with a formatted day header
vim.cmd("iab <expr> dayh strftime('== %Y%m%d %A ======')")
-- Replace 'timeh' with a formatted date/time header
vim.cmd("iab <expr> timeh strftime('## %Y%m%d %a %H:%M:%S')")
-- vim.cmd("iabbrev <expr> ,d strftime('%Y-%m-%d')")
-- vim.cmd("iabbrev <expr> ,t strftime('%Y-%m-%dT%TZ')")
vim.cmd("inoreabbrev <expr> ,u system('uuidgen')->trim()->tolower()")
-- Enable autoread and set up checking triggers
vim.o.autoread = true
vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter" }, {
command = "if mode() != 'c' | checktime | endif",
pattern = "*",
})
-- Colorscheme is set in its plugin file

View File

@@ -0,0 +1,3 @@
return {
'norcalli/nvim-colorizer.lua'
};

View File

@@ -0,0 +1,14 @@
return {
-- { "folke/tokyonight.nvim" },
-- { "rebelot/kanagawa.nvim" },
-- { "Shatur/neovim-ayu" },
{ "ATTron/bebop.nvim" },
-- Configure LazyVim to load our favourite colorscheme
{
"LazyVim/LazyVim",
opts = {
colorscheme = "bebop",
},
},
}

View File

@@ -0,0 +1,12 @@
return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
sh = { "shfmt" },
bash = { "shfmt" },
lua = { "stylua" },
fish = { "fish_indent" },
},
},
}

View File

@@ -0,0 +1,5 @@
return {
"vhyrro/luarocks.nvim",
priority = 1000, -- Very high priority is required, luarocks.nvim should run as the first plugin in your config.
config = true,
}

View File

@@ -0,0 +1,5 @@
return {
"yousefhadder/markdown-plus.nvim",
ft = "markdown",
opts = {},
}

View File

@@ -0,0 +1,23 @@
return {
"roodolv/markdown-toggle.nvim",
config = function()
require("markdown-toggle").setup({
-- cycle through checkboxes
cycle_box_table = true,
-- doing, done, wut, important, forwarded
box_table = { "/", "x", "?", "!", ">" },
keymaps = {
toggle = {
["<C-q>"] = "quote",
["<C-l>"] = "list",
["<Leader><C-l>"] = "list_cycle",
["<C-n>"] = "olist",
["<M-x>"] = "checkbox_cycle",
["<Leader><M-x>"] = "checkbox",
["<C-h>"] = "heading",
["<Leader><C-h>"] = "heading_toggle",
},
},
})
end,
}

View File

@@ -0,0 +1,16 @@
return {
"linux-cultist/venv-selector.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"nvim-telescope/telescope.nvim",
},
ft = "python", -- Load when opening Python files
opts = {
search = {}, -- if you add your own searches, they go here.
options = {} -- if you add plugin options, they go here.
},
event = 'VeryLazy', -- Optional: needed only if you want to type `:VenvSelect` without a keymapping
keys = {
{ "<leader>V", "<cmd>VenvSelect<cr>" }, -- Open picker on keymap
},
}

View File

@@ -0,0 +1,7 @@
return {
"folke/snacks.nvim",
opts = {
scroll = { enabled = false },
-- other stuff
},
}

View File

@@ -0,0 +1,8 @@
return {
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find Files" },
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
},
}

View File

@@ -0,0 +1,57 @@
return {
"nvim-treesitter/nvim-treesitter",
lazy = false, -- Keep false to ensure loading for Neo-tree
build = ":TSUpdate",
config = function()
local treesitter = require("nvim-treesitter")
treesitter.setup()
treesitter.install({
"java",
"c",
"lua",
"vim",
"vimdoc",
"query",
-- "elixir",
-- "heex",
"markdown",
"markdown_inline",
"bash",
"javascript",
"typescript",
"html",
"toml",
"yaml",
})
vim.api.nvim_create_autocmd("FileType", {
pattern = {
"java",
"c",
"lua",
"vim",
"vimdoc",
"query",
-- "elixir",
-- "heex",
"markdown",
"markdown_inline",
"bash",
"javascript",
"typescript",
"html",
"toml",
"yaml",
},
callback = function()
-- syntax highlighting, provided by Neovim
vim.treesitter.start()
-- folds, provided by Neovim (I don't like folds)
-- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
-- vim.wo.foldmethod = 'expr'
-- indentation, provided by nvim-treesitter
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})
end,
}

5
.config/nvim/stylua.toml Normal file
View File

@@ -0,0 +1,5 @@
indent_type = "Spaces"
indent_width = 2
column_width = 120
[sort_requires]
enabled = true

View File

@@ -0,0 +1 @@
../../../.vim/syntax/todo.vim

6
.gitignore vendored
View File

@@ -1,3 +1,9 @@
# Neovim
.config/nvim/lazy-lock.json
.config/nvim/lazyvim.json
# Contains some personal stuff
.config/nvim/lua/plugins/obsidian.lua
# Vim
.vim/bundle
*.spl

View File

@@ -2,9 +2,9 @@
set -g bell-action any
# Default termtype. If the rcfile sets $TERM, that overrides this value.
set -g default-terminal tmux-256color-italic
set -g default-terminal "tmux-256color"
#set -g terminal-overrides ',tmux-256color-italic:Tc'
set -ga terminal-overrides ',*256col*:Tc'
set -ga terminal-overrides ',*256col*:Tc:RGB'
# Keep your finger on ctrl, or don't
bind-key ^D detach-client

View File

@@ -20,3 +20,4 @@ jailbreaking
plugin
Readeck
enshittification
Garmin

9
.vimrc
View File

@@ -633,7 +633,7 @@ set hidden
set cryptmethod=blowfish2
" Ensure 256 colour support if the terminal supports it
if has("gui_running") || &term == "xterm" || &term == "xterm-256color" || &term == "screen-bce" || &term == "screen-256color" || &term == "screen" || &term == "tmux-256color-italic"
if has("gui_running") || &term == "xterm" || &term == "xterm-256color" || &term == "screen-bce" || &term == "screen-256color" || &term == "screen" || &term == "tmux-256color" || &term == "tmux-256color-italic"
set background=dark
let g:enable_bold_font = 1
@@ -674,6 +674,13 @@ iab <expr> dayh strftime("== %Y%m%d %A ======")
" Replace 'timeh' with a formatted date/time header
iab <expr> timeh strftime("## %Y%m%d %a %H:%M:%S")
iabbrev <expr> ,d strftime('%Y-%m-%d')
iabbrev <expr> ,t strftime('%Y-%m-%dT%TZ')
inoreabbrev <expr> ,u system('uuidgen')->trim()->tolower()
" vim.cmd("iabbrev <expr> ,d strftime('%Y-%m-%d')")
" vim.cmd("iabbrev <expr> ,t strftime('%Y-%m-%dT%TZ')")
" vim.cmd("inoreabbrev <expr> ,u system('uuidgen')->trim()->tolower()")
" Fly through buffers instead of cycling
" nnoremap <leader>l :ls<cr>:b<space>

View File

@@ -120,6 +120,9 @@ Rubik-MediumItalic.ttf
Rubik-Medium.ttf
Rubik-Regular.ttf'
FONTS_SUSE=$'SUSE-Italic-VariableFont_wght.ttf
SUSE-VariableFont_wght.ttf'
# https://github.com/eosrei/emojione-color-font/
# FONTS_VARIOUS=$'EmojiOneColor-SVGinOT.ttf'
@@ -175,7 +178,7 @@ if [ -e ~/.dot_is_server ]; then
while read -r FONT; do
echo "Copied font: $FONT"
cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR"
done <<< "$FONTS_CODING"
done <<<"$FONTS_CODING"
else
echo "$PARENT_DIR, $SOURCE_DIR or $DEST_DIR not found, aborting"
fi
@@ -190,7 +193,7 @@ if [ -e ~/.dot_is_server ]; then
while read -r FONT; do
echo "Copied font: $FONT"
cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR"
done <<< "$FONTS_JETBRAINS"
done <<<"$FONTS_JETBRAINS"
else
echo "$SOURCE_DIR or $DEST_DIR not found, aborting"
fi
@@ -205,7 +208,7 @@ if [ -e ~/.dot_is_server ]; then
while read -r FONT; do
echo "Copied font: $FONT"
cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR"
done <<< "$FONTS_OVERPASS"
done <<<"$FONTS_OVERPASS"
else
echo "$SOURCE_DIR or $DEST_DIR not found, aborting"
fi
@@ -220,7 +223,7 @@ if [ -e ~/.dot_is_server ]; then
while read -r FONT; do
echo "Copied font: $FONT"
cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR"
done <<< "$FONTS_GO"
done <<<"$FONTS_GO"
else
echo "$SOURCE_DIR or $DEST_DIR not found, aborting"
fi
@@ -237,22 +240,25 @@ else
while read -r FONT; do
FONT_FILE=$(basename "${SOURCE_DIR}/${FONT}")
install_font "$SOURCE_DIR/$FONT_FILE" "$DEST_DIR/$FONT_FILE"
done <<< "$FONTS_CODING"
done <<<"$FONTS_CODING"
while read -r FONT; do
install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
done <<< "$FONTS_JETBRAINS"
done <<<"$FONTS_JETBRAINS"
while read -r FONT; do
install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
done <<< "$FONTS_FUTURA"
done <<<"$FONTS_FUTURA"
while read -r FONT; do
install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
done <<< "$FONTS_OVERPASS"
done <<<"$FONTS_OVERPASS"
while read -r FONT; do
install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
done <<< "$FONTS_GO"
done <<<"$FONTS_GO"
while read -r FONT; do
install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
done <<< "$FONTS_RUBIK"
done <<<"$FONTS_RUBIK"
while read -r FONT; do
install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
done <<<"$FONTS_SUSE"
# while read -r FONT; do
# install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT"
# done <<< "$FONTS_VARIOUS"
@@ -269,7 +275,7 @@ else
echo "Deleting symlink $DEST_DIR/$FONT"
rm "$DEST_DIR/$FONT"
fi
done <<< "$FONTS_DELETE"
done <<<"$FONTS_DELETE"
# Just to be sure, clear and refresh your font cache and restart Firefox
fc-cache -f -v
echo

21
bin/plasma_toggle_tablet_mode Executable file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env python3
import subprocess
import gi
gi.require_version('Gio', '2.0')
from gi.repository import Gio, GLib
KDE_VERSION = 6
OBJECT_PATH = '/kwinrc'
INTERFACE_NAME = 'org.kde.kconfig.notify'
SIGNAL_NAME = 'ConfigChanged'
current_mode: str = subprocess.check_output([f"kreadconfig{KDE_VERSION}", "--file", "kwinrc", "--group", "Input", "--key", "TabletMode", "--default", "auto"]).decode(encoding='utf-8').strip()
if current_mode == "on":
subprocess.check_call([f"kwriteconfig{KDE_VERSION}", "--file", "kwinrc", "--group", "Input", "--key", "TabletMode", "off"])
else:
subprocess.check_call([f"kwriteconfig{KDE_VERSION}", "--file", "kwinrc", "--group", "Input", "--key", "TabletMode", "on"])
connection = Gio.bus_get_sync(Gio.BusType.SESSION, None)
Gio.DBusConnection.emit_signal(connection, None, OBJECT_PATH, INTERFACE_NAME, SIGNAL_NAME, GLib.Variant.new_tuple(GLib.Variant('a{saay}', {'Input': [b'TabletMode']})))

View File

@@ -6,4 +6,8 @@ git pull
cd ~/divaultwiki
git pull
#vim -c ":vsp planning_2015.todo" notes_2015.md notes_2014.md
vim -c "set nofoldenable" ~/divaultplan/planning_2025.todo ~/divaultphren/index.md ~/divaultwiki/home.md
if ! command -v nvim >/dev/null 2>&1; then
vim -c "set nofoldenable" ~/divaultplan/planning_2026.md
else
nvim -c "set nofoldenable" ~/divaultplan/planning_2026.md
fi

View File

@@ -66,7 +66,7 @@ cd || exit
mkdir -p .config/direnv
# Symlink all the things
for TARGET in .bash_aliases .bashrc bin .gitconfig .gitignore_global .gitmodules .hgauthors.txt .hgignore .hgrc .ideavimrc .ignore .screenrc .terminfo .tmux.conf .vim .vimrc install.sh .config/direnv/direnvrc
for TARGET in .bash_aliases .bashrc bin .gitconfig .gitignore_global .gitmodules .hgauthors.txt .hgignore .hgrc .ideavimrc .ignore .screenrc .terminfo .tmux.conf .vim .vimrc install.sh .config/direnv/direnvrc .config/nvim
do
make_link $DIR $TARGET
done