Compare commits
16 commits
f160a5b4a7
...
de462a270b
| Author | SHA1 | Date | |
|---|---|---|---|
| de462a270b | |||
| d91bc46d75 | |||
| ff7863b011 | |||
| 8dd268caf2 | |||
| de1591c7a7 | |||
| 7cc7195f9a | |||
| 3d1f925f78 | |||
| 63c6c81f6e | |||
| 6e6f804c08 | |||
| d8458ae010 | |||
| fad8f65214 | |||
| 4e7b64aad0 | |||
| 1397fee17a | |||
| 19f3cd3457 | |||
| d3cdd0b30a | |||
| 9efbcbfa01 |
13 changed files with 228 additions and 99 deletions
72
README.md
72
README.md
|
|
@ -1,19 +1,19 @@
|
||||||
# `~/🌹`
|
# `~/🌹`
|
||||||
|
|
||||||
Note that the below screenshots still show the X configuration from [v0.1](https://gitlab.com/marty-oehme/dotfiles/-/tags/v0.1) which is *very* old by now.
|
Note that the below screenshots still show the X configuration from [v0.1](https://gitlab.com/marty-oehme/dotfiles/-/tags/v0.1) which is _very_ old by now.
|
||||||
The current dotfiles are geared toward wayland for which the setup looks similar but not identical to the previews below.
|
The current dotfiles are geared toward wayland for which the setup looks similar but not identical to the previews below.
|
||||||
|
|
||||||
## What's in these dotfiles
|
## What's in these dotfiles
|
||||||
|
|
||||||
* [x] wayland setup using `riverwm` with quick access to many overlays and picking tools for styles, downloads, browsing history, passwords and more
|
- [x] wayland setup using `riverwm` with quick access to many overlays and picking tools for styles, downloads, browsing history, passwords and more
|
||||||
* [x] vim configuration for simple programming tasks (especially python/bash/lua) and prose (markdown/quarto/latex)
|
- [x] vim configuration for simple programming tasks (especially python/bash/lua) and prose (markdown/quarto/latex)
|
||||||
* [x] academic workflow tools, to allow quick citation, pdf compilation, and preview
|
- [x] academic workflow tools, to allow quick citation, pdf compilation, and preview
|
||||||
* [x] simple, efficient waybar with package update notification and mpris integration
|
- [x] simple, efficient waybar with package update notification and mpris integration
|
||||||
* [x] system-wide color management (terminals, vim, qutebrowser, polybar, xresources) through [`flavours`](https://github.com/Misterio77/flavours) application using [base16](http://chriskempson.com/projects/base16/) themes
|
- [x] system-wide color management (terminals, vim, qutebrowser, polybar, xresources) through [`flavours`](https://github.com/Misterio77/flavours) application using [base16](http://chriskempson.com/projects/base16/) themes
|
||||||
* [x] quick theme switching by activating `flavours` and fuzzy-searching themes with hot-key (default `<Super>=<Shift>+S`)
|
- [x] quick theme switching by activating `flavours` and fuzzy-searching themes with hot-key (default `<Super>=<Shift>+S`)
|
||||||
* [x] quick directory jumping using `z`, with `fzf` integration
|
- [x] quick directory jumping using `z`, with `fzf` integration
|
||||||
* [x] `fzf`-like integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
|
- [x] `fzf`-like integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
|
||||||
* [x] password management with `pass` and picking it with automatic typing into any window
|
- [x] password management with `pass` and picking it with automatic typing into any window
|
||||||
|
|
||||||
[](https://gitlab.com/marty-oehme/dotfiles/-/wikis/uploads/90894e53eff378db4d7f9f49e7a69fab/styler.mp4)
|
[](https://gitlab.com/marty-oehme/dotfiles/-/wikis/uploads/90894e53eff378db4d7f9f49e7a69fab/styler.mp4)
|
||||||
|
|
||||||
|
|
@ -25,19 +25,20 @@ I would recommend doing an initial `git clone --recursive` for this repository,
|
||||||
Of course, you can do it non-recursively and then just pull those modules selectively which you actually want.
|
Of course, you can do it non-recursively and then just pull those modules selectively which you actually want.
|
||||||
|
|
||||||
Once in the repository directory, when you then run `./install.sh` it will install many of the packages I use (though they are probably slightly out-of-date) and link the dotfiles into the home directory.
|
Once in the repository directory, when you then run `./install.sh` it will install many of the packages I use (though they are probably slightly out-of-date) and link the dotfiles into the home directory.
|
||||||
I would mostly recommend this on fresh machines or a test machine first - it *will* link my personal dotfiles and, if you allow it, *will* install quite a few packages.
|
I would mostly recommend this on fresh machines or a test machine first - it _will_ link my personal dotfiles and, if you allow it, _will_ install quite a few packages.
|
||||||
By default it will ask your consent for some steps -- use `./install.sh -f` to force yes to everything.
|
By default it will ask your consent for some steps -- use `./install.sh -f` to force yes to everything.
|
||||||
|
|
||||||
The dotfile installation procedure is based on `dotter`, it will generally *not overwrite* anything already in the home directory, but of course be observant when doing ptentially destructive operations.
|
The dotfile installation procedure is based on `dotter`, it will generally _not overwrite_ anything already in the home directory, but of course be observant when doing ptentially destructive operations.
|
||||||
|
|
||||||
> **NOTE**
|
> **NOTE**
|
||||||
> The same non-destructive installation procedure does *not* apply to the package installation and system setting file linking, where it can potentially overwrite or remove existing files.
|
> The same non-destructive installation procedure does _not_ apply to the package installation and system setting file linking, where it can potentially overwrite or remove existing files.
|
||||||
|
|
||||||
After all files are linked and you open a new shell session, the `dotlink` alias will allow you to re-link all dotfiles from anywhere on the system.[^1]
|
After all files are linked and you open a new shell session, the `dotlink` alias will allow you to re-link all dotfiles from anywhere on the system.[^1]
|
||||||
|
|
||||||
[^1]: This alias only works when the dotfiles are cloned into `~/.dotfiles`, mirroring my setup.
|
[^1]:
|
||||||
|
This alias only works when the dotfiles are cloned into `~/.dotfiles`, mirroring my setup.
|
||||||
This is due to a hard-coded cd into this directory.
|
This is due to a hard-coded cd into this directory.
|
||||||
If your dotfiles lie in another directory and you want to use the dotlink alias, simply change the corresponding line in `bootstrap/.config/sh/alias.d/dotlink.sh`
|
If your dotfiles lie in another directory, and you want to use the dotlink alias, simply change the corresponding line in `bootstrap/.config/sh/alias.d/dotlink.sh`
|
||||||
|
|
||||||
Both automatic installation paths are presumably somewhat brittle. In any case, I would suggest to manually look through the files for things you want instead of copying and activating everything.
|
Both automatic installation paths are presumably somewhat brittle. In any case, I would suggest to manually look through the files for things you want instead of copying and activating everything.
|
||||||
Dotfiles are too personal to be standardized like that.
|
Dotfiles are too personal to be standardized like that.
|
||||||
|
|
@ -48,29 +49,30 @@ Enjoy!
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
* [`wayland`](https://github.com/wayland-project/wayland) - Containing basics for fully functional tiling wayland setup:
|
- [`wayland`](https://github.com/wayland-project/wayland) - Containing basics for fully functional tiling wayland setup:
|
||||||
* [`river`](https://github.com/riverwm/river) - Tiling window manager for wayland
|
- [`river`](https://github.com/riverwm/river) - Tiling window manager for wayland
|
||||||
* [`waybar`](https://github.com/Alexays/Waybar) - Easily customizable statusbar for wayland
|
- [`waybar`](https://github.com/Alexays/Waybar) - Easily customizable statusbar for wayland
|
||||||
* [`bemenu`](https://github.com/Cloudef/bemenu) - Extended dmenu replacement for wayland, X11 and ncurses
|
- [`bemenu`](https://github.com/Cloudef/bemenu) - Extended dmenu replacement for wayland, X11 and ncurses
|
||||||
* [`fontconfig`] - System-wide font replacements and styling settings
|
- [`fontconfig`] - System-wide font replacements and styling settings
|
||||||
* [`wezterm`](https://wezfurlong.org/wezterm/) - Terminal emulator and multiplexer (fast, understandable and lua configurable)
|
- [`wezterm`](https://wezfurlong.org/wezterm/) - Terminal emulator and multiplexer (fast, understandable and lua configurable)
|
||||||
* [`nvim`](https://neovim.io/) - Neovim configuration
|
- [`nvim`](https://neovim.io/) - Neovim configuration
|
||||||
* [`vifm`](https://github.com/vifm/vifm) - vim-like file-manager
|
- [`vifm`](https://github.com/vifm/vifm) - vim-like file-manager
|
||||||
* [`qutebrowser`](https://github.com/qutebrowser/qutebrowser) - vim-key enabled web browser
|
- [`qutebrowser`](https://github.com/qutebrowser/qutebrowser) - vim-key enabled web browser
|
||||||
* [`pass`](pass/README.md) - Password management suite
|
- [`pass`](pass/README.md) - Password management suite
|
||||||
* [`bibtex`] - LateX/BibteX/pandoc plaintext writing & reference suite (slowly migrating toward [typst](https://typst.app))
|
- [`typst`] - LateX/BibteX/pandoc-like plaintext writing & reference suite
|
||||||
* [`git`](git/README.md) - distributed version control system.
|
- [`jujutsu`](vcs/README.md) - distributed version control system, together with git.
|
||||||
* [`office`](office/README.md) - office/productivity software for writing e-mail and setting appointments
|
- [`office`](office/README.md) - office/productivity software for writing e-mail and setting appointments
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
* Generally, most configuration for applications attempts to follow the XDG specifications, keeping configuration in .config directory and supplementary files in .local/share directory. Over time, I am moving more applications to this standard: it keeps the home directory clean, and the separation of configuration, binaries, and data relatively clear.
|
- This are a good sign.
|
||||||
* The `zsh` directory contains all setup for the z-shell, my daily work environment. It should not be required for working with any other module but will add additional functionality to many (such as command auto-completion and so on). `sh` sets some base functionality for any shell you may wish to work in. It is, for now, the only module that is required for some other modules to work.[^shreq]
|
- Generally, most configuration for applications attempts to follow the XDG specifications, keeping configuration in .config directory and supplementary files in .local/share directory. Over time, I am moving more applications to this standard: it keeps the home directory clean, and the separation of configuration, binaries, and data relatively clear.
|
||||||
* `rofi` contains additional scripts and a simple theming framework for rofi and should probably be reorganized to put the correct files into the correct directories (per xdg) at some point.
|
- The `zsh` directory contains all setup for the z-shell, my daily work environment. It should not be required for working with any other module but will add additional functionality to many (such as command auto-completion and so on). `sh` sets some base functionality for any shell you may wish to work in. It is, for now, the only module that is required for some other modules to work.[^shreq]
|
||||||
* Whereas `sh` module scripts are requirements for other scripts, `.local/bin` in the `scripts` module contains most executable user scripts. Most of these have been migrated to other corresponding modules (e.g. if a script exclusively targets git functionality, it will live there), some useful --- or left-over --- stand-alone scripts remain however.
|
- `rofi` contains additional scripts and a simple theming framework for rofi and should probably be reorganized to put the correct files into the correct directories (per xdg) at some point.
|
||||||
* `.local/share/pandoc` contains configuration for academic latex writing (pandoc, really) and is of interest if you want to use this functionality.
|
- Whereas `sh` module scripts are requirements for other scripts, `.local/bin` in the `scripts` module contains most executable user scripts. Most of these have been migrated to other corresponding modules (e.g. if a script exclusively targets git functionality, it will live there), some useful --- or left-over --- stand-alone scripts remain however.
|
||||||
* `.xinitrc` is used for x initialization and program startup. At some point, some of the consistently running applications may be moved to systemd/runit as supervised services.
|
- `.local/share/pandoc` contains configuration for academic latex writing (pandoc, really) and is of interest if you want to use this functionality.
|
||||||
* Generally, top-level directories starting with a . are only meaningful for the *repository* not for the functionality of the machine that these dotfiles are deployed on. That means `.gitlab-ci.yml`, `.assets/`, `.gitignore` and similar files and directories will not show up in the final deployment in any home directory. Perhaps they should be called dotdot-files since they're the dotfiles for my dotfiles. 🙂 (Also, '[dotfiles](https://en.wikipedia.org/wiki/Semantic_satiation)'.)
|
- `.xinitrc` is used for x initialization and program startup. At some point, some of the consistently running applications may be moved to systemd/runit as supervised services.
|
||||||
|
- Generally, top-level directories starting with a . are only meaningful for the _repository_ not for the functionality of the machine that these dotfiles are deployed on. That means `.gitlab-ci.yml`, `.assets/`, `.gitignore` and similar files and directories will not show up in the final deployment in any home directory. Perhaps they should be called dotdot-files since they're the dotfiles for my dotfiles. 🙂 (Also, '[dotfiles](https://en.wikipedia.org/wiki/Semantic_satiation)'.)
|
||||||
|
|
||||||
[^shreq]: I may remove this requirement in the future to make modules more self-contained. However, relying on some base utility scripts makes it easier to avoid duplicating such functionality for each individual script in other modules.
|
[^shreq]: I may remove this requirement in the future to make modules more self-contained. However, relying on some base utility scripts makes it easier to avoid duplicating such functionality for each individual script in other modules.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,6 @@ profile docked {
|
||||||
exec notify-send "💻 Display changed" "Applying docked LG profile"
|
exec notify-send "💻 Display changed" "Applying docked LG profile"
|
||||||
}
|
}
|
||||||
|
|
||||||
profile docked {
|
|
||||||
output "Goldstar Company Ltd W2442 0x000574FD" position 1920,0
|
|
||||||
output "Goldstar Company Ltd W2442 0x000574E1" position 0,0
|
|
||||||
output eDP-1 disable
|
|
||||||
exec notify-send "💻 Display changed" "Applying docked Goldstar profile"
|
|
||||||
}
|
|
||||||
|
|
||||||
profile dockedall {
|
profile dockedall {
|
||||||
output "LG Electronics W2442 0x000574FD" position 1920,0
|
output "LG Electronics W2442 0x000574FD" position 1920,0
|
||||||
output "LG Electronics W2442 0x000574E1" position 0,0
|
output "LG Electronics W2442 0x000574E1" position 0,0
|
||||||
|
|
@ -19,7 +12,7 @@ profile dockedall {
|
||||||
exec notify-send "💻 Display changed" "Applying docked 3-screen profile"
|
exec notify-send "💻 Display changed" "Applying docked 3-screen profile"
|
||||||
}
|
}
|
||||||
|
|
||||||
profile portable {
|
profile portableforce {
|
||||||
output "LG Electronics W2442 0x000574FD" disable
|
output "LG Electronics W2442 0x000574FD" disable
|
||||||
output "LG Electronics W2442 0x000574E1" disable
|
output "LG Electronics W2442 0x000574E1" disable
|
||||||
output eDP-1 enable position 0,0
|
output eDP-1 enable position 0,0
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ riverctl map normal $mod backspace spawn "powermenu"
|
||||||
|
|
||||||
# Open Bookmark search
|
# Open Bookmark search
|
||||||
riverctl map normal None XF86Search spawn "qutedmenu"
|
riverctl map normal None XF86Search spawn "qutedmenu"
|
||||||
riverctl map normal $mod+Shift O spawn "qutedmenu"
|
riverctl map normal $mod+Shift H spawn "qutedmenu"
|
||||||
|
|
||||||
# Clipboard history
|
# Clipboard history
|
||||||
riverctl map normal $mod+Shift Space spawn "clipman pick --tool=bemenu"
|
riverctl map normal $mod+Shift Space spawn "clipman pick --tool=bemenu"
|
||||||
|
|
@ -176,6 +176,7 @@ riverctl map normal $mod+Shift v toggle-float
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
# Make all connected outputs show the desktop and no windows at all
|
# Make all connected outputs show the desktop and no windows at all
|
||||||
riverctl map normal $mod+Shift M spawn 'for i in $(wlopm | wc -l); do riverctl set-focused-tags $((1 << 10)); riverctl focus-output next; done; riverctl set-focused-tags $((1 << 10)); riverctl focus-output next'
|
riverctl map normal $mod+Shift M spawn 'for i in $(wlopm | wc -l); do riverctl set-focused-tags $((1 << 10)); riverctl focus-output next; done; riverctl set-focused-tags $((1 << 10)); riverctl focus-output next'
|
||||||
|
riverctl map normal $mod+Shift O spawn "kanshiswitch"
|
||||||
|
|
||||||
riverctl map normal $mod+Shift F10 spawn "riverctl send-layout-cmd $layout_cmd '--tags all --output all view-padding 0'"
|
riverctl map normal $mod+Shift F10 spawn "riverctl send-layout-cmd $layout_cmd '--tags all --output all view-padding 0'"
|
||||||
riverctl map normal $mod F10 spawn "riverctl send-layout-cmd $layout_cmd '--tags all --output all view-padding 6'"
|
riverctl map normal $mod F10 spawn "riverctl send-layout-cmd $layout_cmd '--tags all --output all view-padding 6'"
|
||||||
|
|
@ -306,7 +307,6 @@ for pad in $(riverctl list-inputs | grep -i touchscreen); do
|
||||||
riverctl input "$pad" pointer-accel 0.5
|
riverctl input "$pad" pointer-accel 0.5
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
# We are not in voidlinux, so no nice turnstile user services will take care of us
|
# We are not in voidlinux, so no nice turnstile user services will take care of us
|
||||||
# have to start everything manually here.
|
# have to start everything manually here.
|
||||||
if ! cat /etc/*-release | grep -q '^NAME=.*Void'; then
|
if ! cat /etc/*-release | grep -q '^NAME=.*Void'; then
|
||||||
|
|
|
||||||
29
desktop/.local/bin/kanshiswitch
Executable file
29
desktop/.local/bin/kanshiswitch
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
if ! exist kanshictl; then
|
||||||
|
printf "Requires command 'kanshictl' on system."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
picker=dmenu
|
||||||
|
if exist bemenu; then
|
||||||
|
picker=bemenu
|
||||||
|
elif exist wofi; then
|
||||||
|
picker=wofi
|
||||||
|
elif exist rofi; then
|
||||||
|
picker=rofi
|
||||||
|
fi
|
||||||
|
|
||||||
|
regex='s/profile \+\(.*\) \+{/\1/p'
|
||||||
|
|
||||||
|
list=$(sed -ne "$regex" "${XDG_CONFIG_HOME:-~/.config}/kanshi/config")
|
||||||
|
profile=$(printf "%s" "$list" | "$picker")
|
||||||
|
if [ -z "$profile" ]; then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
kanshictl switch "$profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = '-v' ]; then
|
||||||
|
notify-send "Kanshi profile set" "Set to: $profile"
|
||||||
|
fi
|
||||||
|
|
@ -8,9 +8,12 @@
|
||||||
"cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" },
|
"cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" },
|
||||||
"cmp-pandoc.nvim": { "branch": "main", "commit": "30faa4456a7643c4cb02d8fa18438fd484ed7602" },
|
"cmp-pandoc.nvim": { "branch": "main", "commit": "30faa4456a7643c4cb02d8fa18438fd484ed7602" },
|
||||||
"cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" },
|
"cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" },
|
||||||
"codecompanion.nvim": { "branch": "main", "commit": "73bac3b52d9b7f52e89ac6698dd7df8962f0454c" },
|
"codecompanion-gitcommit.nvim": { "branch": "main", "commit": "28f05d8e28f1abae4a333f761944119d4080e6ee" },
|
||||||
|
"codecompanion-history.nvim": { "branch": "main", "commit": "66943e78bcacaa27f4ac4a398df4016eb5413ecd" },
|
||||||
|
"codecompanion.nvim": { "branch": "main", "commit": "ecf07d4a914f44455b5098acd49746b8dc5375f0" },
|
||||||
"conform.nvim": { "branch": "master", "commit": "a6f5bdb78caa305496357d17e962bbc4c0b392e2" },
|
"conform.nvim": { "branch": "master", "commit": "a6f5bdb78caa305496357d17e962bbc4c0b392e2" },
|
||||||
"copilot.vim": { "branch": "release", "commit": "7167958954532a0a1b83f2db2f591b43aebff44c" },
|
"copilot-lualine": { "branch": "main", "commit": "6bc29ba1fcf8f0f9ba1f0eacec2f178d9be49333" },
|
||||||
|
"copilot.lua": { "branch": "master", "commit": "c1bb86abbed1a52a11ab3944ef00c8410520543d" },
|
||||||
"dial.nvim": { "branch": "master", "commit": "2c7e2750372918f072a20f3cf754d845e143d7c9" },
|
"dial.nvim": { "branch": "master", "commit": "2c7e2750372918f072a20f3cf754d845e143d7c9" },
|
||||||
"dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" },
|
"dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" },
|
||||||
"fidget.nvim": { "branch": "main", "commit": "b61e8af9b8b68ee0ec7da5fb7a8c203aae854f2e" },
|
"fidget.nvim": { "branch": "main", "commit": "b61e8af9b8b68ee0ec7da5fb7a8c203aae854f2e" },
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,12 @@
|
||||||
-- with their respective names used by lspconfig, nvim-treesitter, nvim-lint and conform.
|
-- with their respective names used by lspconfig, nvim-treesitter, nvim-lint and conform.
|
||||||
--
|
--
|
||||||
|
|
||||||
local nushell = { lsp = { nushell = {} }, ts = { "nu" } }
|
local nushell = function()
|
||||||
if vim.fn.executable("nufmt") == 1 then
|
local nushell = { ts = { "nu" } } -- nushell lsp directly built into `nu` cmd
|
||||||
nushell.format = { nu = { "nufmt" } }
|
if vim.fn.executable("nufmt") == 1 then
|
||||||
|
nushell.format = { nu = { "nufmt" } }
|
||||||
|
end
|
||||||
|
return nushell
|
||||||
end
|
end
|
||||||
|
|
||||||
-- FIXME: This does not work for populating LSP config,
|
-- FIXME: This does not work for populating LSP config,
|
||||||
|
|
@ -52,7 +55,7 @@ local languages = {
|
||||||
docker_compose = { lsp = { docker_compose_language_service = {} } },
|
docker_compose = { lsp = { docker_compose_language_service = {} } },
|
||||||
docker = { lsp = { dockerls = {} }, ts = { "dockerfile" } },
|
docker = { lsp = { dockerls = {} }, ts = { "dockerfile" } },
|
||||||
dot = { ts = { "dot" } },
|
dot = { ts = { "dot" } },
|
||||||
emmet = { lsp = { emmet_ls = {} } },
|
emmet = { lsp = { emmet_language_server = {} } },
|
||||||
javascript = {
|
javascript = {
|
||||||
lsp = { eslint = {} },
|
lsp = { eslint = {} },
|
||||||
ts = { "javascript" },
|
ts = { "javascript" },
|
||||||
|
|
@ -71,7 +74,7 @@ local languages = {
|
||||||
},
|
},
|
||||||
latex = {
|
latex = {
|
||||||
-- TODO: May need to switch to ltex_plus at some point since ltex is unmaintained
|
-- TODO: May need to switch to ltex_plus at some point since ltex is unmaintained
|
||||||
lsp = { ltex = { autostart = false }, texlab = {} },
|
lsp = { ltex = { disable = true }, texlab = {} },
|
||||||
ts = { "latex" },
|
ts = { "latex" },
|
||||||
},
|
},
|
||||||
lua = {
|
lua = {
|
||||||
|
|
@ -96,7 +99,7 @@ local languages = {
|
||||||
format = { markdown = { "prettier", "injected" } },
|
format = { markdown = { "prettier", "injected" } },
|
||||||
},
|
},
|
||||||
nim = { lsp = { nim_langserver = {} }, ts = { "nim", "nim_format_string" }, format = { nim = { "nimpretty" } } },
|
nim = { lsp = { nim_langserver = {} }, ts = { "nim", "nim_format_string" }, format = { nim = { "nimpretty" } } },
|
||||||
nu = nushell,
|
nu = nushell(),
|
||||||
python = {
|
python = {
|
||||||
lsp = { basedpyright = {}, ruff = {} },
|
lsp = { basedpyright = {}, ruff = {} },
|
||||||
ts = { "python" },
|
ts = { "python" },
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,38 @@
|
||||||
return {
|
return {
|
||||||
|
{
|
||||||
|
-- NOTE: Requires manual auth with ':Copilot auth' or 'GH_COPILOT_TOKEN' set as envvar
|
||||||
|
"zbirenbaum/copilot.lua",
|
||||||
|
dependencies = { "AndreM222/copilot-lualine" },
|
||||||
|
cmd = "Copilot",
|
||||||
|
event = "InsertEnter",
|
||||||
|
opts = {
|
||||||
|
panel = { layout = { position = "bottom" } },
|
||||||
|
suggestion = { keymap = { accept = "<M-p>" } },
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>ap",
|
||||||
|
function()
|
||||||
|
-- FIXME: If opening before lazy-loaded, errors
|
||||||
|
require("copilot.panel").open({})
|
||||||
|
require("copilot.panel").refresh()
|
||||||
|
end,
|
||||||
|
desc = "Refresh Copilot Panel",
|
||||||
|
silent = true,
|
||||||
|
mode = { "n" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
-- TODO: Add completion w blink, see https://codecompanion.olimorris.dev/installation.html
|
-- TODO: Add completion w blink, see https://codecompanion.olimorris.dev/installation.html
|
||||||
{
|
{
|
||||||
"olimorris/codecompanion.nvim",
|
"olimorris/codecompanion.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
"github/copilot.vim",
|
"zbirenbaum/copilot.lua",
|
||||||
|
{ "ibhagwan/fzf-lua", optional = true },
|
||||||
|
"ravitemer/codecompanion-history.nvim",
|
||||||
|
"jinzhongjia/codecompanion-gitcommit.nvim",
|
||||||
},
|
},
|
||||||
init = function(_)
|
init = function(_)
|
||||||
if require("core.util").is_available("which-key") then
|
if require("core.util").is_available("which-key") then
|
||||||
|
|
@ -30,7 +57,8 @@ return {
|
||||||
default = "llama-3.1-8b-instant",
|
default = "llama-3.1-8b-instant",
|
||||||
choices = {
|
choices = {
|
||||||
"llama-3.3-70b-versatile",
|
"llama-3.3-70b-versatile",
|
||||||
"mixtral-8x7b-32768",
|
"meta-llama/llama-4-maverick-17b-128e-instruct",
|
||||||
|
"mistral-saba-24b",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -43,6 +71,31 @@ return {
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
display = {
|
||||||
|
action_palette = {
|
||||||
|
provider = "fzf_lua",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
history = {
|
||||||
|
enabled = true,
|
||||||
|
auto_save = false,
|
||||||
|
expiration_days = 7,
|
||||||
|
picker = "fzf-lua",
|
||||||
|
delete_on_clearing_chat = true,
|
||||||
|
},
|
||||||
|
gitcommit = {
|
||||||
|
enabled = true,
|
||||||
|
callback = "codecompanion._extensions.gitcommit",
|
||||||
|
opts = {
|
||||||
|
add_slash_command = true,
|
||||||
|
buffer = {
|
||||||
|
enabled = true,
|
||||||
|
keymap = "<leader>ag",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
keys = {
|
keys = {
|
||||||
{ "<leader>aa", "<cmd>CodeCompanionActions<cr>", desc = "Actions", silent = true, mode = { "n", "v" } },
|
{ "<leader>aa", "<cmd>CodeCompanionActions<cr>", desc = "Actions", silent = true, mode = { "n", "v" } },
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,21 @@ local lsp = {
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
{
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"williamboman/mason-lspconfig.nvim",
|
||||||
opts = { automatic_installation = true },
|
opts = function()
|
||||||
|
local to_install = {}
|
||||||
|
local not_enabled = {}
|
||||||
|
for k, v in pairs(get_all_servers()) do
|
||||||
|
table.insert(to_install, k)
|
||||||
|
if v["disable"] and v["disable"] == true then
|
||||||
|
table.insert(not_enabled, k)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local tbl = {
|
||||||
|
ensure_installed = to_install,
|
||||||
|
automatic_enable = { exclude = not_enabled },
|
||||||
|
}
|
||||||
|
return tbl
|
||||||
|
end,
|
||||||
dependencies = { "williamboman/mason.nvim" },
|
dependencies = { "williamboman/mason.nvim" },
|
||||||
cmd = { "LspInstall", "LspUninstall" },
|
cmd = { "LspInstall", "LspUninstall" },
|
||||||
},
|
},
|
||||||
|
|
@ -31,6 +45,11 @@ local lsp = {
|
||||||
},
|
},
|
||||||
event = { "BufReadPost", "BufNewFile", "BufWritePre" },
|
event = { "BufReadPost", "BufNewFile", "BufWritePre" },
|
||||||
opts = { servers = get_all_servers() },
|
opts = { servers = get_all_servers() },
|
||||||
|
init = function()
|
||||||
|
if require("core.util").is_available("which-key") then
|
||||||
|
require("which-key").add({ "<localleader>l", group = "language" })
|
||||||
|
end
|
||||||
|
end,
|
||||||
config = function(_, lspconfig_opts)
|
config = function(_, lspconfig_opts)
|
||||||
-- Display diagnostics as virtual text only if not in insert mode
|
-- Display diagnostics as virtual text only if not in insert mode
|
||||||
-- /r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/
|
-- /r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/
|
||||||
|
|
@ -51,19 +70,21 @@ local lsp = {
|
||||||
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
|
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
|
||||||
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
||||||
|
|
||||||
local function register(server_name, config)
|
local function register(server_name, config, enabled)
|
||||||
if vim.fn.has("nvim-0.11") == 1 then
|
if vim.fn.has("nvim-0.11") == 1 then
|
||||||
vim.lsp.config(server_name, config)
|
vim.lsp.config(server_name, config or {})
|
||||||
|
if enabled == false or vim.lsp.config[server_name]["autostart"] == false then
|
||||||
|
vim.lsp.enable(server_name, false)
|
||||||
|
else
|
||||||
|
vim.lsp.enable(server_name, true)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
require("lspconfig")[server_name].setup(config)
|
require("lspconfig")[server_name].setup(config)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for server_name, config in pairs(lspconfig_opts.servers) do
|
if vim.fn.executable("nu") == 1 then
|
||||||
register(server_name, config)
|
register("nushell")
|
||||||
if vim.fn.has("nvim-0.11") == 0 then
|
|
||||||
config.capabilities = require("blink.cmp").get_lsp_capabilities(config.capabilities)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
register("marksman", {
|
register("marksman", {
|
||||||
|
|
@ -181,19 +202,28 @@ local lsp = {
|
||||||
vim.api.nvim_create_autocmd("User", {
|
vim.api.nvim_create_autocmd("User", {
|
||||||
pattern = "SpellEnable",
|
pattern = "SpellEnable",
|
||||||
callback = function()
|
callback = function()
|
||||||
register("ltex", {
|
local mapped = {}
|
||||||
on_attach = function(_, _)
|
local lang_map = {
|
||||||
if require("core.util").is_available("ltex_extra") then
|
en_us = "en-US",
|
||||||
require("ltex_extra").setup()
|
en_gb = "en-GB",
|
||||||
end
|
de_de = "de-DE",
|
||||||
end,
|
}
|
||||||
settings = {
|
for _, v in ipairs(vim.opt.spelllang:get()) do
|
||||||
ltex = {
|
table.insert(mapped, lang_map[v])
|
||||||
language = vim.o.spelllang,
|
end
|
||||||
},
|
vim.lsp.config("ltex", {
|
||||||
},
|
settings = { ltex = { language = mapped } },
|
||||||
})
|
})
|
||||||
vim.cmd("LspStart ltex")
|
-- single-shot setup: Enable for this buffer
|
||||||
|
-- but instantly disable again globally
|
||||||
|
vim.lsp.enable("ltex")
|
||||||
|
vim.lsp.enable("ltex", false)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "SpellDisable",
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.enable("ltex", false)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
|
|
@ -225,9 +255,6 @@ vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
o({ desc = "Next error" })
|
o({ desc = "Next error" })
|
||||||
)
|
)
|
||||||
|
|
||||||
if require("core.util").is_available("which-key") then
|
|
||||||
require("which-key").add({ "<localleader>l", group = "language" })
|
|
||||||
end
|
|
||||||
map("n", "<localleader>ld", "<cmd>lua vim.diagnostic.open_float()<cr>", o({ desc = "Show line diagnostics" }))
|
map("n", "<localleader>ld", "<cmd>lua vim.diagnostic.open_float()<cr>", o({ desc = "Show line diagnostics" }))
|
||||||
map("n", "<localleader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", o({ desc = "Codeactions" }))
|
map("n", "<localleader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", o({ desc = "Codeactions" }))
|
||||||
map("n", "<localleader>ln", "<cmd>lua vim.lsp.buf.rename()<cr>", o({ desc = "Rename element" }))
|
map("n", "<localleader>ln", "<cmd>lua vim.lsp.buf.rename()<cr>", o({ desc = "Rename element" }))
|
||||||
|
|
|
||||||
|
|
@ -80,8 +80,9 @@ local prose_plugs = {
|
||||||
},
|
},
|
||||||
checkbox = {
|
checkbox = {
|
||||||
custom = {
|
custom = {
|
||||||
todo = { raw = "[-]", rendered = " ", highlight = "RenderMarkdownTodo" },
|
doing = { raw = "[o]", rendered = " ", highlight = "RenderMarkdownTodo" },
|
||||||
removed = { raw = "[_]", rendered = " ", highlight = "RenderMarkdownTodo" },
|
indeterminate = { raw = "[-]", rendered = " ", highlight = "RenderMarkdownTodo" },
|
||||||
|
removed = { raw = "[~]", rendered = " ", highlight = "RenderMarkdownTodo" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
html = {
|
html = {
|
||||||
|
|
@ -97,6 +98,11 @@ local prose_plugs = {
|
||||||
},
|
},
|
||||||
ft = md_like,
|
ft = md_like,
|
||||||
cmd = "RenderMarkdown",
|
cmd = "RenderMarkdown",
|
||||||
|
init = function()
|
||||||
|
if require("core.util").is_available("which-key") then
|
||||||
|
require("which-key").add({ { "<localleader>p", group = "presentation" } })
|
||||||
|
end
|
||||||
|
end,
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"<localleader>pm",
|
"<localleader>pm",
|
||||||
|
|
@ -160,6 +166,11 @@ local prose_plugs = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
cmd = { "PasteImage" },
|
cmd = { "PasteImage" },
|
||||||
|
init = function()
|
||||||
|
if require("core.util").is_available("which-key") then
|
||||||
|
require("which-key").add({ { "<localleader>p", group = "presentation" } })
|
||||||
|
end
|
||||||
|
end,
|
||||||
keys = {
|
keys = {
|
||||||
{ "<localleader>pp", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" },
|
{ "<localleader>pp", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" },
|
||||||
},
|
},
|
||||||
|
|
@ -169,7 +180,7 @@ local prose_plugs = {
|
||||||
-- bring zettelkasten commands
|
-- bring zettelkasten commands
|
||||||
{
|
{
|
||||||
"zk-org/zk-nvim",
|
"zk-org/zk-nvim",
|
||||||
config = function()
|
init = function()
|
||||||
if require("core.util").is_available("which-key") then
|
if require("core.util").is_available("which-key") then
|
||||||
require("which-key").add({
|
require("which-key").add({
|
||||||
{ "<leader>n", group = "notes" },
|
{ "<leader>n", group = "notes" },
|
||||||
|
|
@ -177,7 +188,8 @@ local prose_plugs = {
|
||||||
{ "<localleader>n", group = "note", mode = "v" },
|
{ "<localleader>n", group = "note", mode = "v" },
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
end,
|
||||||
|
config = function()
|
||||||
require("zk.commands").add("ZkOrphans", function(opts)
|
require("zk.commands").add("ZkOrphans", function(opts)
|
||||||
opts = vim.tbl_extend("force", { orphan = true }, opts or {})
|
opts = vim.tbl_extend("force", { orphan = true }, opts or {})
|
||||||
require("zk").edit(opts, { title = "Zk Orphans" })
|
require("zk").edit(opts, { title = "Zk Orphans" })
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ return {
|
||||||
return ""
|
return ""
|
||||||
elseif has_pynvim == 1 then
|
elseif has_pynvim == 1 then
|
||||||
if molten_ft[vim.bo.filetype] == nil then
|
if molten_ft[vim.bo.filetype] == nil then
|
||||||
return ""
|
return ""
|
||||||
end
|
end
|
||||||
local status_ok, res = pcall(function()
|
local status_ok, res = pcall(function()
|
||||||
return require("molten.status").kernels() ~= ""
|
return require("molten.status").kernels() ~= ""
|
||||||
|
|
@ -60,7 +60,13 @@ return {
|
||||||
lualine_a = { "mode" },
|
lualine_a = { "mode" },
|
||||||
lualine_b = { "branch", "diff", "diagnostics" },
|
lualine_b = { "branch", "diff", "diagnostics" },
|
||||||
lualine_c = { "filename" },
|
lualine_c = { "filename" },
|
||||||
lualine_x = { "encoding", "fileformat", "filetype", molten },
|
lualine_x = {
|
||||||
|
"encoding",
|
||||||
|
{ "copilot", symbols = { status = { icons = { unknown = "", enabled = "" } } } },
|
||||||
|
"fileformat",
|
||||||
|
"filetype",
|
||||||
|
molten,
|
||||||
|
},
|
||||||
lualine_y = { "progress" },
|
lualine_y = { "progress" },
|
||||||
lualine_z = { selectionCount, "location" },
|
lualine_z = { selectionCount, "location" },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,11 @@ return {
|
||||||
|
|
||||||
"nvim-neotest/neotest-python",
|
"nvim-neotest/neotest-python",
|
||||||
},
|
},
|
||||||
|
init = function()
|
||||||
|
if require("core.util").is_available("which-key") then
|
||||||
|
require("which-key").add({ "<localleader>t", group = "test" })
|
||||||
|
end
|
||||||
|
end,
|
||||||
config = function()
|
config = function()
|
||||||
require("neotest").setup({
|
require("neotest").setup({
|
||||||
adapters = {
|
adapters = {
|
||||||
|
|
@ -41,9 +46,6 @@ return {
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
if require("core.util").is_available("which-key") then
|
|
||||||
require("which-key").add({ "<localleader>t", group = "test" })
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
ft = { "python" },
|
ft = { "python" },
|
||||||
keys = {
|
keys = {
|
||||||
|
|
|
||||||
17
sh/README.md
17
sh/README.md
|
|
@ -3,18 +3,17 @@
|
||||||
The bare minimum terminal configuration for a working system.
|
The bare minimum terminal configuration for a working system.
|
||||||
Contains:
|
Contains:
|
||||||
|
|
||||||
* an XDG compliant home directory setup
|
- an XDG compliant home directory setup
|
||||||
* several basic environment variables
|
- several basic environment variables
|
||||||
* simple aliases
|
- simple aliases
|
||||||
* an optional fzf default setup
|
- an optional fzf default setup
|
||||||
* X autostart
|
- X autostart
|
||||||
|
|
||||||
While other modules are largely optional,
|
While other modules are largely optional,
|
||||||
this module is the only one strictly necessary for the system to really work at all.
|
this module is the only one strictly necessary for the system to really work at all.
|
||||||
|
|
||||||
Additionally contains two scripts on which some other modules build:
|
Additionally contains two scripts on which some other modules build:
|
||||||
|
|
||||||
* a simple script to detect if applications exist
|
- a simple script to detect if applications exist
|
||||||
(and optionally warn the user if they don't)
|
(and optionally warn the user if they don't)
|
||||||
* and a script to check if internet connectivity exists
|
- and a script to check if internet connectivity exists
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ file-browser = vifm
|
||||||
# edit info.yaml as new papers are added
|
# edit info.yaml as new papers are added
|
||||||
add-edit = True
|
add-edit = True
|
||||||
# ref-format = {doc[author_list][0][family]}{doc[year]}
|
# ref-format = {doc[author_list][0][family]}{doc[year]}
|
||||||
ref-format = bbt
|
ref-format = bbt:
|
||||||
add-folder-name = {doc[author_list][0][family]}-{doc[title]}
|
add-folder-name = {doc[author_list][0][family]}-{doc[title]} # NOTE: Has issues if no author list
|
||||||
add-file-name = {doc[author_list][0][family]}{doc[year]}
|
add-file-name = {doc[author_list][0][family]}{doc[year]}
|
||||||
header-format-file = ~/.config/papis/headerformat
|
header-format-file = ~/.config/papis/headerformat
|
||||||
extra-bibtex-keys = ["tags", "readstatus", "priority"]
|
extra-bibtex-keys = ["tags", "readstatus", "priority"]
|
||||||
|
|
@ -68,7 +68,7 @@ dir = ~/documents/library/academia
|
||||||
[plugins.extract]
|
[plugins.extract]
|
||||||
tags = {"red": "important", "green": "extra", "blue": "toread"}
|
tags = {"red": "important", "green": "extra", "blue": "toread"}
|
||||||
|
|
||||||
[plugins.bbt-formatter]
|
[plugins.bbt]
|
||||||
full-year = True
|
full-year = True
|
||||||
title-words = 2
|
title-words = 2
|
||||||
title-chars = 20
|
title-chars = 20
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue