1
0
mirror of https://github.com/tiyn/dotfiles.git synced 2026-05-01 18:11:39 +02:00

Compare commits

..

80 Commits

Author SHA1 Message Date
6714ddc776 Nvim: Updated dictionaries 2026-04-30 20:09:13 +02:00
edf34f3ca5 Nvim: Updated dictionaries 2026-04-29 07:40:16 +02:00
637edf2e96 Nvim: Agentic switched to Codex 2026-04-28 12:13:08 +02:00
a6c219414f Whisper: moved network 2026-04-28 03:35:18 +02:00
aa7161c70a Nvim: Added agentic.nvim 2026-04-28 00:54:05 +02:00
4ad2dd00c0 Merge branch 'master' of github:tiyn/dotfiles 2026-04-26 06:36:03 +02:00
30196f3653 Nvim: Knap now uses shell-escape which works better for some compiled data (for example svg) 2026-04-26 06:35:16 +02:00
6cbc979c4d Nvim: Updated dictionaries 2026-04-26 06:31:56 +02:00
5e54bed174 Nvim: R now instantly and automatically displays plots. 2026-04-25 10:47:49 +02:00
987a39c4b8 Nvim: Updated dictionaries 2026-04-21 01:41:18 +02:00
fc6cedb305 Nvim: Updated dictionaries 2026-04-19 05:54:19 +02:00
7d2523ef2c Nvim: Updated dictionaries 2026-04-18 03:14:59 +02:00
f05a3c5377 Nvim: Fixed K-key behaviour for focussing documentation 2026-04-16 09:13:39 +02:00
0bd4ea6149 Resolved Merge conflict 2026-04-16 07:58:04 +02:00
c859c4cdd9 Merge branch 'master' of github:tiyn/dotfiles 2026-04-16 07:57:16 +02:00
b83432f67e Vifm: Added shortcut for switching panes 2026-04-16 07:57:05 +02:00
17ce699530 Nvim: Updated dictionaries 2026-04-16 07:56:28 +02:00
27f5a735b7 Merge branch 'master' of github:tiyn/dotfiles 2026-04-15 06:40:04 +02:00
279babf016 Nvim: Added plugin for PlatformIO integration 2026-04-15 06:35:14 +02:00
019011572e Nvim: Updated dictionaries 2026-04-14 03:57:32 +02:00
d4e8b5de3e Nvim: Updated dictionaries 2026-04-13 07:45:04 +02:00
156bc111ef Vifm: Fixed bug for pane navigation in view mode 2026-04-12 08:42:41 +02:00
8336c9e76f Nvim: Updated plugins 2026-04-12 08:29:34 +02:00
169a7fcc57 Vifm: Updated image handling
- SVGs are now previewed with white backgrounds
- Displaying are now handled by imv instead of inkscape and therefore have white backgrounds
2026-04-12 08:21:27 +02:00
5282835ae9 Nvim: Colorcolumn is now set more intuitively 2026-04-11 10:04:50 +02:00
63aa8f2db5 Nvim: Moved autocmds into plugins 2026-04-11 09:50:11 +02:00
0b3f41af3a Nvim: Fixed bug with wilder/mason 2026-04-11 09:41:58 +02:00
ec1c20f003 Nvim: Updated plugins 2026-04-11 09:18:08 +02:00
a8e421ec41 Nvim: Updated dictionaries 2026-04-11 08:34:05 +02:00
5802436dc2 Nvim: Updated dictionaries 2026-04-10 04:29:34 +02:00
7d84ac52ec LightDM: Use symbolic links for XSessions 2026-04-09 04:02:52 +02:00
26fc686e56 Nvim: Updated dictionaries 2026-04-09 03:55:06 +02:00
ecb7adb796 Nvim: Updated dictionaries 2026-04-08 06:47:44 +02:00
c49867ebcf Nvim: Updated dictionaries 2026-04-07 00:28:02 +02:00
29c82c6a5a Nvim: Updated dictionaries 2026-04-07 00:27:23 +02:00
9815d86c78 Nvim: Updated dictionaries 2026-04-07 00:26:40 +02:00
352b695c08 Nvim: Fixed bug in live-tex-rendering 2026-04-06 05:31:16 +02:00
a87272d079 Nvim: Updated file-renamer.nvim dependencies 2026-04-06 05:30:55 +02:00
66e81c5275 Nvim: Updated dictionaries 2026-04-04 08:27:46 +02:00
4f9cdf2ed4 MimeApps: Added FreeTube 2026-04-03 03:47:21 +02:00
80d607ef2f Nvim: Updated dictionaries 2026-04-03 03:47:00 +02:00
1e1b53bfee Merge branch 'master' of github:tiyn/dotfiles 2026-03-31 23:27:42 +02:00
dfdefc005b Wayland: Moved autostart to local file 2026-03-31 23:29:40 +02:00
d6c0cda68a Xorg: Autostart EasyEffects as window 2026-03-31 23:27:37 +02:00
804a0d1d2a Pipewire: fixed naming scheme 2026-03-31 08:46:20 +02:00
edd4ef7ebb Pipewire: fixed naming scheme 2026-03-31 08:22:42 +02:00
781cb922c5 Pipewire: Added more virtual devices including virtual microphones 2026-03-31 08:18:49 +02:00
429f14f8b3 Pipewire: Added more default virtual devices 2026-03-31 07:36:44 +02:00
f1561f8847 Added Wireplumber configs 2026-03-31 04:00:46 +02:00
481da28608 Added Pipewire configs 2026-03-31 04:00:25 +02:00
f9c55afcfd Nvim: Update dictionaries 2026-03-31 02:34:24 +02:00
5da287cd34 Alias: Set alias for whisper-cli 2026-03-30 04:29:56 +02:00
a812e95e68 NVIM: Fixed lazy loading bug in viper.nvim 2026-03-27 04:57:07 +01:00
8911a7c241 NVIM: Improved structure and improved lazy loading 2026-03-27 04:45:15 +01:00
17a2e9f0ca NVIM: added optional dependency for Telescope 2026-03-26 08:12:01 +01:00
141988ba94 NVIM: Updated major version of telescope 2026-03-26 08:10:01 +01:00
d1e73e1c7d NVIM: Split opts and config for lazy plugins 2026-03-26 07:53:23 +01:00
3c3cfd333d NVIM: Keymap layout is now Lazy-centric 2026-03-26 07:01:33 +01:00
0f06cc10c8 NVIM: Update dictionaries 2026-03-26 04:51:32 +01:00
5a0286c68b NVIM: Improved hover and preview handeling 2026-03-24 10:36:55 +01:00
b077e877f5 NVIM: Added some plugins 2026-03-24 10:20:11 +01:00
b196e47c10 NVIM: Update dictionary 2026-03-24 06:59:53 +01:00
464c462f53 NVIM: Update lazy-lock 2026-03-24 02:49:03 +01:00
3d16d712b1 NVIM: Added render-markdown.nvim 2026-03-24 02:48:37 +01:00
55268e8655 NVIM: Added neogen 2026-03-24 02:47:58 +01:00
2a08955030 NVIM: Switched to file-renamer.nvim from oil.nvim 2026-03-24 02:46:44 +01:00
9db91ef6a7 NVIM: Updated Dictionaries 2026-03-20 21:48:36 +01:00
ace5eb5baa NVIM: Added session management 2026-03-18 03:55:01 +01:00
513f5afbe6 NVIM: Added resolve.nvim and pantran.nvim 2026-03-17 05:16:32 +01:00
20980c76ca NVIM: Updated Treesitter config for new API 2026-03-17 03:22:32 +01:00
c3fb4c7953 nvim: expanded dictionaries 2026-03-17 03:21:36 +01:00
f7a095d405 nvim: fixed some minor bugs 2026-03-16 03:27:41 +01:00
6ac80bde83 Merge branch 'master' of github:tiyn/dotfiles 2026-03-15 03:13:35 +01:00
e00818ffb6 nvim: updated dictionaries 2026-03-15 03:13:26 +01:00
45729976a7 updated plugins 2026-03-15 01:04:02 +01:00
6431d3b4f0 nvim: updated all plugins 2026-03-15 00:56:54 +01:00
b851688de1 nvim: minor fixes for lilypond plugin 2026-03-15 00:42:10 +01:00
108d14dcf9 mime: added signal handlers 2026-03-14 09:42:55 +01:00
f909309e15 nvim: complete refactoring 2026-03-14 09:42:33 +01:00
63507160ce nvim: added lilypond support 2026-03-14 09:22:36 +01:00
118 changed files with 4081 additions and 1487 deletions

11
.Rprofile Normal file
View File

@@ -0,0 +1,11 @@
if (!interactive()) {
options(device = function(...) pdf("Rplot.pdf"))
.Last <- function() {
if (dev.cur() > 1) {
dev.off()
system("xdg-open Rplot.pdf", wait = FALSE)
Sys.sleep(2)
}
}
}

View File

@@ -138,6 +138,9 @@ alias renamer="nvim +Renamer"
# weather # weather
alias weather="curl wttr.in" alias weather="curl wttr.in"
# whisper.cpp
alias whisper="whisper-cli -m ~/.local/share/whisper-cli/ggml-large-v3-turbo-german-q5_0.bin"
# wget # wget
alias wget="wget --hsts-file=$XDG_CACHE_HOME/wget-hsts" alias wget="wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"
alias wget2c="aria2c" alias wget2c="aria2c"

View File

@@ -1,3 +1,7 @@
[options]
background = #FFFFFF
[binds] [binds]
<plus> = zoom 1 <plus> = zoom 1

View File

@@ -26,6 +26,9 @@ x-scheme-handler/tonsite=org.telegram.desktop.desktop
inode/directory=file-browser.desktop inode/directory=file-browser.desktop
x-scheme-handler/betterdiscord=discord.desktop x-scheme-handler/betterdiscord=discord.desktop
x-scheme-handler/discord=vesktop.desktop x-scheme-handler/discord=vesktop.desktop
x-scheme-handler/sgnl=signal.desktop
x-scheme-handler/signalcaptcha=signal.desktop
x-scheme-handler/freetube=freetube.desktop
[Added Associations] [Added Associations]
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;

View File

@@ -1,7 +1,8 @@
vim.api.nvim_create_autocmd({ 'VimLeave' }, vim.api.nvim_create_autocmd({ "VimLeave" }, {
{ callback = function()
callback = function() os.execute('cclear') end os.execute("cclear")
}) end,
})
vim.o.shiftwidth = 2 vim.o.shiftwidth = 2
vim.o.softtabstop = 2 vim.o.softtabstop = 2

View File

@@ -1,8 +1 @@
vim.api.nvim_create_autocmd({ 'VimEnter' },
{
callback = function()
require("csvview").enable()
end
})
vim.o.textwidth = 0 vim.o.textwidth = 0

View File

@@ -1,41 +1,15 @@
vim.api.nvim_create_autocmd({ 'VimEnter' }, vim.api.nvim_create_autocmd({ "BufEnter" }, {
{
callback = function()
require("tidy").opts.enabled_on_save = false
end
})
vim.api.nvim_create_autocmd({ 'BufEnter' },
{
callback = function() callback = function()
vim.o.foldenable = false vim.o.foldenable = false
end end,
}) })
vim.api.nvim_create_autocmd({ 'BufLeave' }, vim.api.nvim_create_autocmd({ "VimLeave" }, {
{
callback = function() callback = function()
if vim.o.ma then os.execute("mdclear " .. vim.fn.expand("%"))
require("tidy").run() end,
end })
end
}
)
vim.api.nvim_create_autocmd({ 'VimLeave' },
{
callback = function()
os.execute('mdclear ' .. vim.fn.expand('%'))
end
})
vim.o.shiftwidth = 2 vim.o.shiftwidth = 2
vim.o.softtabstop = 2 vim.o.softtabstop = 2
vim.o.textwidth = 100 vim.o.textwidth = 100
-- frabjous/knap
vim.keymap.set('n', '<leader>p', require("knap").toggle_autopreviewing, { noremap = true })
-- benlubas/molten-nvim
require("quarto").activate()

View File

@@ -1,32 +1,9 @@
vim.api.nvim_create_autocmd({ 'VimEnter' }, vim.api.nvim_create_autocmd({ "VimLeave" }, {
{
callback = function() callback = function()
require("tidy").opts.enabled_on_save = false os.execute("texclear " .. vim.fn.expand("%"))
require("knap").toggle_autopreviewing() end,
end })
})
vim.api.nvim_create_autocmd({ 'BufLeave' },
{
callback = function()
if vim.o.ma then
require("tidy").run()
end
end
}
)
vim.api.nvim_create_autocmd({ 'VimLeave' },
{
callback = function()
os.execute('texclear ' .. vim.fn.expand('%'))
end
})
vim.o.shiftwidth = 2 vim.o.shiftwidth = 2
vim.o.softtabstop = 2 vim.o.softtabstop = 2
vim.o.textwidth = 80 vim.o.textwidth = 80
-- frabjous/knap
vim.keymap.set('n', '<leader>p', require("knap").toggle_autopreviewing, { noremap = true })
vim.keymap.set({ 'n', 'v', 'i' },'<F7>', function() require("knap").forward_jump() end)

View File

@@ -95,6 +95,9 @@ vim.o.shiftwidth = 4
vim.o.softtabstop = 4 vim.o.softtabstop = 4
vim.o.textwidth = 80 vim.o.textwidth = 80
-- set session options
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
-- read files correctly -- read files correctly
vim.filetype.add({ vim.filetype.add({
extension = { extension = {

View File

@@ -1,85 +1,100 @@
{ {
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" }, "action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
"agentic.nvim": { "branch": "main", "commit": "3e6175c1141cc3cb5cc08e98bff01b06a0a67467" },
"auto-session": { "branch": "main", "commit": "62437532b38495551410b3f377bcf4aaac574ebe" },
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" }, "barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
"blink.download": { "branch": "main", "commit": "86361b98f3c8317904a08e3bd12cf3cdcbe3e925" }, "blink.download": { "branch": "main", "commit": "dda2666685a5ac3598166577d2e34f1fff6b1637" },
"blink.pairs": { "branch": "main", "commit": "d8bf802cca951f0a3b72ddeed21bc5a1d5353f65" }, "blink.pairs": { "branch": "main", "commit": "4e43012356d33a26f69eae475f746fbe9f325f44" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, "cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" },
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" }, "cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"conform.nvim": { "branch": "master", "commit": "fbcb4fa7f34bfea9be702ffff481a8e336ebf6ed" }, "conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
"cpsm": { "branch": "master", "commit": "1a5fc1b6169bb80c29b0b986130c4f3f1a9ed82e" }, "cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" },
"csvview.nvim": { "branch": "main", "commit": "bbab4c2f808fd8e11ec8dfdd128251aadba566a1" }, "csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" },
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" }, "edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" },
"file-renamer.nvim": { "branch": "master", "commit": "da78d496ffb3dd55a4c70b4a9c28686630a57d3a" },
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" }, "fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" }, "fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
"git-blame.nvim": { "branch": "master", "commit": "9874ec1ec8bc53beb33b7cd82c092b85271a578b" }, "git-blame.nvim": { "branch": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
"gitsigns.nvim": { "branch": "main", "commit": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197" }, "gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
"goto-preview": { "branch": "main", "commit": "cf561d10b4b104db20375c48b86cf36af9f96e00" }, "goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
"image.nvim": { "branch": "master", "commit": "446a8a5cc7a3eae3185ee0c697732c32a5547a0b" }, "image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" }, "jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" }, "knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
"lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"leap.nvim": { "branch": "main", "commit": "f5fe479e20d809df7b54ad53142c2bdb0624c62a" }, "leap.nvim": { "branch": "main", "commit": "e7ca7b92f996bcbc34beee8b244ea5ef6692b478" },
"logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" }, "logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
"lsp_signature.nvim": { "branch": "master", "commit": "b58cca003d1d3311213d6db0352f58d8e57bfff0" }, "lsp_signature.nvim": { "branch": "master", "commit": "a65b38f260cc3470a05b4afb84c8d868617d476d" },
"lspkind-nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" }, "lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, "lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" },
"luasnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, "luasnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "6bdb14f230de0904229ec367b410fb817e59b072" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" },
"mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" }, "mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" },
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, "mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" },
"mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" }, "modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" },
"modes.nvim": { "branch": "main", "commit": "0932ba4e0bdc3457ac89a8aeed4d56ca0b36977a" },
"molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" }, "molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" },
"none-ls.nvim": { "branch": "main", "commit": "5cf63841461b49989972d35bf886e076a1ab3649" }, "neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" },
"none-ls.nvim": { "branch": "main", "commit": "8cd333aa66e08492d891bdad272208a620cb93a3" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
"nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" }, "nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
"nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" }, "nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
"nvim-hlslens": { "branch": "main", "commit": "6d42444785ea0d41555d033485910c5e78916f3b" }, "nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
"nvim-lspconfig": { "branch": "master", "commit": "cc2f5f2fa28d240574808e78847978ed6ef20d2a" }, "nvim-lilypond-suite": { "branch": "main", "commit": "e57ced9e0df33773566af795d70919d577c58ce2" },
"nvim-navic": { "branch": "master", "commit": "f887d794a0f4594882814d7780980a949200a238" }, "nvim-lspconfig": { "branch": "master", "commit": "bf5abe69c1874531f359a822d0cff4d73e26113f" },
"nvim-scrollbar": { "branch": "main", "commit": "5b103ef0fd2e8b9b4be3878ed38d224522192c6c" }, "nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
"nvim-surround": { "branch": "main", "commit": "a868c256c861044beb9794b4dd126480dcdfbdad" }, "nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" },
"nvim-tree.lua": { "branch": "master", "commit": "e397756d2a79d74314ea4cd3efc41300e91c0ff0" }, "nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-tree.lua": { "branch": "master", "commit": "24cfcc94372e526fd9e1c2803ede9e0f1715e33f" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
"nvim-ufo": { "branch": "main", "commit": "72d54c31079d38d8dfc5456131b1d0fb5c0264b0" }, "nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" }, "nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
"nvim-web-devicons": { "branch": "master", "commit": "8069e89df2d7259704286a5906a11c5b27d5b440" },
"nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" }, "nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" },
"ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" }, "ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" },
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" }, "otter.nvim": { "branch": "main", "commit": "a455e68a99d395889ab30a25ac3846a135e93c46" },
"otter.nvim": { "branch": "main", "commit": "fc0aa35b1985077d11a20ddf4006bf40f2cd7397" }, "outline.nvim": { "branch": "main", "commit": "c293eb56db880a0539bf9d85b4a27816960b863e" },
"outline.nvim": { "branch": "main", "commit": "6b62f73a6bf317531d15a7ae1b724e85485d8148" }, "pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" },
"papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" }, "papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "platformio.nvim": { "branch": "main", "commit": "546e1e0b5afdd970f140d0ccaf322d41c0f23941" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" }, "popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" },
"projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" }, "projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" }, "promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"quarto-nvim": { "branch": "main", "commit": "0e9491509b38efbd83d3f41dbfacc7fc4bd40191" }, "quarto-nvim": { "branch": "main", "commit": "17f1e5d664bc615478230dc0240666329efacf9b" },
"rustaceanvim": { "branch": "master", "commit": "12504405821c05874d2d1f6b5ec919f9808e2c99" }, "renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" },
"render-markdown.nvim": { "branch": "main", "commit": "3f3eea97b80839f629c951ca660ffd125bfa5b34" },
"resolve.nvim": { "branch": "master", "commit": "1ed8bcc9ce7d43a0e8e05d0001c9cadb822d95a8" },
"rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" },
"spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" }, "spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" },
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" }, "sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" }, "tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
"tccs.nvim": { "branch": "master", "commit": "b729bc7702d67db41898c5d65847a766384fc734" }, "tccs.nvim": { "branch": "master", "commit": "23fabbb0a65517307e571f63fe7a3760670086fe" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
"telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" }, "telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" },
"telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
"tidy.nvim": { "branch": "main", "commit": "c8cd0e6e0108da25c3e10c3f33d8c03b3d8806f1" }, "tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" },
"todo-comments.nvim": { "branch": "main", "commit": "19d461ddd543e938eb22505fb03fa878800270b6" }, "tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "147af4e49f51dd48f41972de26552872b8ba7b25" },
"trouble.nvim": { "branch": "main", "commit": "c098362fe603d3922095e7db595961e020bdf2d0" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" }, "treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" },
"treewalker.nvim": { "branch": "main", "commit": "3680d19fc275f275352e9a3c05f3ec5079dfc0a7" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" }, "vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },
"vim-hug-neovim-rpc": { "branch": "master", "commit": "93ae38792bc197c3bdffa2716ae493c67a5e7957" }, "vim-hug-neovim-rpc": { "branch": "master", "commit": "93ae38792bc197c3bdffa2716ae493c67a5e7957" },
"vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }, "vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" },
"vim-markdown": { "branch": "master", "commit": "8f6cb3a6ca4e3b6bcda0730145a0b700f3481b51" }, "vim-markdown": { "branch": "master", "commit": "1bc9d0cd8e1cc3e901b0a49c2b50a843f1c89397" },
"vim-renamer": { "branch": "master", "commit": "9c6346eb4556cf2d8ca55de6969247ab14fe2383" }, "viper.nvim": { "branch": "master", "commit": "738bf63d98aca63d7def93181eb16d648a6c0edb" },
"viper.nvim": { "branch": "master", "commit": "4f406ae891113fc1bfda308052c835a185188670" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
"which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" },
"wilder.nvim": { "branch": "master", "commit": "679f348dc90d80ff9ba0e7c470c40a4d038dcecf" }, "wilder.nvim": { "branch": "master", "commit": "679f348dc90d80ff9ba0e7c470c40a4d038dcecf" },
"winshift.nvim": { "branch": "main", "commit": "37468ed6f385dfb50402368669766504c0e15583" } "winshift.nvim": { "branch": "main", "commit": "37468ed6f385dfb50402368669766504c0e15583" }
} }

View File

@@ -1,121 +1,6 @@
-- highlighting yanked regions -- highlighting yanked regions
vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd("TextYankPost", {
callback = function() callback = function()
vim.highlight.on_yank({higroup="YankHighlight"}) vim.highlight.on_yank({ higroup = "YankHighlight" })
end, end,
}) })
-- gnikdroy/projections.nvim
local Session = require("projections.session")
vim.api.nvim_create_autocmd({ "VimLeavePre" }, {
callback = function()
Session.store(vim.loop.cwd())
end,
})
vim.api.nvim_create_autocmd({ "VimEnter" }, {
callback = function()
if vim.fn.argc() ~= 0 then
return
end
local session_info = Session.info(vim.loop.cwd())
if session_info ~= nil then
Session.restore(vim.loop.cwd())
end
end,
desc = "Restore last session automatically",
})
-- benlubas/molten-nvim
local imb = function(e)
vim.schedule(function()
local kernels = vim.fn.MoltenAvailableKernels()
local try_kernel_name = function()
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
return metadata.kernelspec.name
end
local ok, kernel_name = pcall(try_kernel_name)
if not ok or not vim.tbl_contains(kernels, kernel_name) then
kernel_name = nil
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
if venv ~= nil then
kernel_name = string.match(venv, "/.+/(.+)")
end
end
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
vim.cmd(("MoltenInit %s"):format(kernel_name))
end
vim.cmd("MoltenImportOutput")
end)
end
vim.api.nvim_create_autocmd("BufAdd", {
pattern = { "*.ipynb" },
callback = imb,
})
vim.api.nvim_create_autocmd("BufEnter", {
pattern = { "*.ipynb" },
callback = function(e)
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
imb(e)
end
end,
})
local default_notebook = [[
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython"
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
]]
local function new_notebook(filename)
local path = filename .. ".ipynb"
local file = io.open(path, "w")
if file then
file:write(default_notebook)
file:close()
vim.cmd("edit " .. path)
else
print("Error: Could not open new notebook file for writing.")
end
end
vim.api.nvim_create_user_command('NewNotebook', function(opts)
new_notebook(opts.args)
end, {
nargs = 1,
complete = 'file'
})
-- stevearc/oil.nvim
vim.api.nvim_create_user_command('Renamer', function(opts)
vim.cmd("Oil " .. opts.args)
end, { nargs = "*" })

View File

@@ -2,8 +2,8 @@
local dictionary_base = "/home/user/.config/nvim/lua/dictionaries/" local dictionary_base = "/home/user/.config/nvim/lua/dictionaries/"
local Dictionary_files = { local Dictionary_files = {
["de-DE"] = {"dictionary_de-de.txt", "dictionary_names.txt"}, ["de-DE"] = { "dictionary_de-de.txt", "dictionary_names.txt" },
["en-US"] = {"dictionary_en-us.txt", "dictionary_names.txt"}, ["en-US"] = { "dictionary_en-us.txt", "dictionary_names.txt" },
} }
function GetDictFiles(lang) function GetDictFiles(lang)
@@ -35,8 +35,8 @@ function ReadFiles(lang)
return dict return dict
end end
for k,v in pairs(Dictionary_files) do for k, v in pairs(Dictionary_files) do
for a,b in pairs(v) do for a, b in pairs(v) do
Dictionary_files[k][a] = dictionary_base .. b Dictionary_files[k][a] = dictionary_base .. b
end end
end end

View File

@@ -4,75 +4,121 @@ Artifacts
Betreuerrolle Betreuerrolle
Bonitur Bonitur
Branch Branch
Crowd-Interaction Branch
Branches
Crowd
Cutie
Destruction Destruction
Developer Developer
Dictation Dictation
Dirt
Diskursartefakten
Dom
Dreams Dreams
Embedding
Entlebucher Entlebucher
Extraction Extraction
For-Loop For
Formatter Formatter
Französischvokabeln Französischvokabeln
GOAT GOAT
Genervtheit Genervtheit
Gestresstheit Gestresstheit
Gym Gym
Handwerksunternehmen
Homeserver Homeserver
Immigrationsgeschichte Immigrationsgeschichte
Impro-Theater Impro
Improtheater Improtheater
Infokratie Infokratie
Informatikstudierende
Informatikstudiun
Interaction
Ira Ira
Jahreszeitenunterschied Jahreszeitenunterschied
Jahreszeitenunterschiede Jahreszeitenunterschiede
Kardinälin Kardinälin
Kreatindosis
Königinnensubstanz Königinnensubstanz
LLM-Paper Loop
Magazinbeute Magazinbeute
Magazinbeuten Magazinbeuten
Merge
Merges
Meta Meta
Mods Mods
Mono
Ne Ne
Orgas Orgas
Paper
Platformer
Poetry Poetry
Poetry-Slam
Poetryslam
Pollenhose Pollenhose
SDS-Plenum Presenter
SPM-Gruppe Quizabend
Renamer
Repositories
Repository
Scammer Scammer
Sennenhund Sennenhund
Slam Slam
Slam
Slammern Slammern
Slams Slams
Soundness Soundness
Speech-to-Text Speech
Speedrun
Speedruns
Spells
Stations Stations
Sub
Terraforming
Torrenting Torrenting
Uni-Theater Trainspotter
Trefferverhältnis
Uni
Unitheater Unitheater
Verification Verification
While-Loop Vokabelkarten
Wrap-Up-Folie While
Wohnungslose
Wrap-Up
Xiayun
Zweifelsfall Zweifelsfall
algenverseucht algenverseucht
aneinandergelehnt aneinandergelehnt
awkward
be
bürgerlicher bürgerlicher
bürgerlichere bürgerlichere
bürgerlicheren bürgerlicheren
cyber-physische cyber
egozentristisch egozentristisch
en
eux
fois
gedätscht gedätscht
gepiekst gepiekst
geupdatet
gonna
histoire histoire
ira ira
kinky
klassistisch
même
performistisch performistisch
physische
pseudomotivierend pseudomotivierend
pseudomotivierende pseudomotivierende
respekt- reingeredet
rumgealbert rumgealbert
shiftete shiftete
temps
this
to
ultra ultra
warpl
well
will
Ça Ça
ça ça

View File

@@ -0,0 +1,3 @@
dockerized
keymap
synaptics

View File

@@ -1,19 +1,27 @@
AI
APV APV
Accuracy Accuracy
Agentic
Akallabêth Akallabêth
Altisaur Altisaur
An An
Anki Anki
Annoyed Annoyed
ApoRed ApoRed
Applied
Arrabbiata Arrabbiata
Asiahung Asiahung
Aule Aule
Aules Aules
Baez
Barros Barros
Beater
Beek Beek
Bela Bela
Bennie
Berim
Betterov Betterov
Bladee
Boarding Boarding
Boelsen Boelsen
Bontjes Bontjes
@@ -21,129 +29,233 @@ Brusch
CAR CAR
CATS CATS
CDSS CDSS
CUDA
Carré
Casper Casper
Caspers Caspers
Cato Cato
CdE CdE
CdEs
Chrysalis Chrysalis
Color
Combi Combi
Commander Commander
Crusader
DFKI
DFKIs
DPU
Daisy's Daisy's
Darth
DeepSeek DeepSeek
Dekarldent Dekarldent
Delivery
Destiny 2 Destiny 2
Doom-Scrolling Distrobox
Doom
Doyma Doyma
EasyEffects
Eckhoff Eckhoff
Edain Edain
Elodie Elodie
Ernsting's
Euphoria
Explainable
Explodes
Eyal Eyal
FIDO-Stick FIDO
Face
Fischerhude
Flac Flac
Forest Forest
Forgejo
Französischmodul
Frevert Frevert
Freverts Freverts
Friedl
Friesenturnier Friesenturnier
Gathering Gathering
GitNex
Glaive
Glenn
Glenns
Gondor
Governikus
GrapheneOS GrapheneOS
Greater Greater
Grixis Grixis
Grosshardt
Gump Gump
Guttersnipe Guttersnipe
Haarentor
Habenhausen Habenhausen
Hailo Hailo
Helldivers
Hellmers Hellmers
Higgers Higgers
Hillmannplatz
Hough Hough
Hue Hue
Hunter
Höper Höper
IFAM IFAM
IFAMs IFAMs
IMRaD IMRaD
Ikigai Ikigai
Immich
Int Int
Ira Ira
JT JT
Jacobin
Jeanine Jeanine
Jojen
Karamasov Karamasov
Keep
Kingdoms
Kluge Kluge
KohakuHub
Kratom Kratom
Kreyenhop Kreyenhop
Kubitschek Kubitschek
Käte Käte
LLM
LLMs LLMs
LabNex
Lanz
Later
Lemmie
Lemmies
LightDM LightDM
LightDM-GTK-Greeter
LightDM-Mini-Greeter
LilyPond
Line Dance
Lounge
MEVIS
MTG MTG
Maarten Maarten
Magic Magic
Maite Maite
Marmelab
Marten Marten
Mathis Mathis
Matvey Matvey
Mauli Mauli
Mentos Mentos
Meret
Meshtastic
Metzener Metzener
MiiMii MiiMii
Mint Mint
MusikAka
MusikAkademie
NVIM
NVIM
NVIM
Nate Nate
NeoVIM Neovim
NetworkManager
NextCloud NextCloud
Nim Nim
Nobody
Noel
North
Novruz
Númenor Númenor
OFFIS OFFIS
Oberhausern
Oberweseler Oberweseler
Odysee Odysee
Opam Opam
OpenCloud OpenCloud
Ove
Overwatch Overwatch
Pane Pane
Papis Papis
Pauper Pauper
Pentakill
Peperaci Peperaci
PfingstAka PfingstAka
PfingstAka PfingstAka
PfingstAkademie PfingstAkademie
Pillion
Pluribus Pluribus
PopOS PopOS
Portainer
Power
Precision Precision
Precon Precon
Precons Precons
PyEnv PyEnv
RStudio
Rebowl Rebowl
Reed
Reeves Reeves
Reichenecker
Rocq Rocq
Ruschenbaum Ruschenbaum
SDS
SPM SPM
Saber
Sagehorn Sagehorn
Sagehorner
Scheller Scheller
Schrang
Schwerdtner
Scrolling
Sedef Sedef
Severance Severance
Shinies Shinies
Shiny Shiny
Skyrim Skyrim
Snape
Softbrod
SommerAka SommerAka
SommerAkademie SommerAkademie
Souleyman Souleyman
SpotiFLAC SpotiFLAC
Sprave
Stina Stina
Stud.IP Stud.IP
Study
Styropyro
TCAV TCAV
Talking
Thinkpad Thinkpad
Till
Timmendorfer
Tjark Tjark
Tornow Tornow
TrackPoint TrackPoint
Traefik
UDEV UDEV
Umbar
V1del
VIM VIM
Verdener
Viano
Wechloy
Weizman Weizman
Whisper
Wife
Willenborg Willenborg
WinterAka WinterAka
WinterAkademie WinterAkademie
Writhing Writhing
X.Org
Years
Ziegeleiweg Ziegeleiweg
Zimin Zimin
and
baseimage-gui
ctop
eKiwi eKiwi
flac flac
glaive
inf inf
jlesages
liquidctl liquidctl
npy npy
ramdisk
systemd
xinput
zedbraxmen zedbraxmen

View File

@@ -1,119 +1,42 @@
-- setup keymap function -- unmap unwanted commands
local wk = require("which-key") vim.keymap.set("n", "Zt", "<NOP>", { noremap = true })
local telescope = require("telescope") vim.keymap.set("n", "ZT", "<NOP>", { noremap = true })
local lazygit = require("FTerm"):new({ cmd = "lazygit" }) vim.keymap.set("n", "<Space>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F1>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F2>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F3>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F4>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F5>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F6>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F7>", "<NOP>", { noremap = true })
-- vim.keymap.set("n", "<F8>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F9>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F10>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F11>", "<NOP>", { noremap = true })
vim.keymap.set("n", "<F12>", "<NOP>", { noremap = true })
wk.add({ -- shortcuts for quitting
-- setup keymap groups vim.keymap.set("n", "ZA", ":xa<CR>", { desc = "Exit: write and quit all buffers", noremap = true })
{mode = "n", "g", desc = "LSP: goto"}, vim.keymap.set("n", "ZQ", ":conf q<CR>", { desc = "Exit: quit current buffer", noremap = true })
{mode = "n", "gp", desc = "LSP: preview"}, vim.keymap.set("n", "ZZ", ":x<CR>", { desc = "Exit: write and quit current buffer", noremap = true })
{mode = "c", "w", desc = "Write"},
{mode = "c", "w!", desc = "Write: overwrite"}, -- shortcut for split navigation
{mode = "n", "<leader>a", desc = "AI"}, vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Navigation: go to left window", noremap = true })
{mode = "n", "<leader>g", desc = "Git"}, vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Navigation: go to lower window", noremap = true })
{mode = "n", "<leader>f", desc = "Telescope: find"}, vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Navigation: go to upper window", noremap = true })
{mode = "n", "<leader>gd", desc = "Git: diff"}, vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Navigation: go to right window", noremap = true })
{mode = "n", "<leader>s", desc = "Substitute"},
{mode = "n", "<leader>t", desc = "Terminal"}, -- remap for dealing with word wrap
{mode = "n", "<leader>r", desc = "Quarto"}, vim.keymap.set("n", "j", "gj", { desc = "Navigation: go down in wrapped lines", silent = true })
{mode = "n", "<C-W>", desc = "Navigation"}, vim.keymap.set("n", "k", "gk", { desc = "Navigation: go up in wrapped lines", silent = true })
-- unmap unwanted commands
{mode = "n", "Zt", "<NOP>", noremap = true}, -- compiler for languages
{mode = "n", "ZT", "<NOP>", noremap = true}, vim.keymap.set("n", "<leader>c", ":w! | !compiler <c-r>%<CR>", {
{mode = "n", "<Space>", "<NOP>", noremap = true}, desc = "Compile: current file",
{mode = "n", "<F1>", "<NOP>", noremap = true}, noremap = true,
{mode = "n", "<F2>", "<NOP>", noremap = true}, })
{mode = "n", "<F3>", "<NOP>", noremap = true},
{mode = "n", "<F4>", "<NOP>", noremap = true}, vim.keymap.set("n", "w!!", 'execute "silent! write !sudo tee % >/dev/null" <bar> edit!', {
{mode = "n", "<F5>", "<NOP>", noremap = true}, desc = "Write: overwrite file over with sudo",
{mode = "n", "<F6>", "<NOP>", noremap = true}, noremap = true,
{mode = "n", "<F7>", "<NOP>", noremap = true},
{mode = "n", "<F8>", "<NOP>", noremap = true},
{mode = "n", "<F9>", "<NOP>", noremap = true},
{mode = "n", "<F10>", "<NOP>", noremap = true},
{mode = "n", "<F11>", "<NOP>", noremap = true},
{mode = "n", "<F12>", "<NOP>", noremap = true},
-- shortcuts for quitting
{mode = "n", "ZA", ":xa<CR>", desc = "Exit: write and quit all buffers", noremap = true},
{mode = "n", "ZQ", ":conf q<CR>", desc = "Exit: quit current buffer", noremap = true},
{mode = "n", "ZZ", ":x<CR>", desc = "Exit: write and quit current buffer", noremap = true},
-- shortcut for split navigation
{mode = "n", "<C-h>", "<C-w>h", desc = "Navigation: go to left window", noremap = true},
{mode = "n", "<C-j>", "<C-w>j", desc = "Navigation: go to lower window", noremap = true},
{mode = "n", "<C-k>", "<C-w>k", desc = "Navigation: go to upper window", noremap = true},
{mode = "n", "<C-l>", "<C-w>l", desc = "Navigation: go to right window", noremap = true},
-- remap for dealing with word wrap
{mode = "n", "j", "gj", desc = "Navigation: go down in wrapped lines", silent = true},
{mode = "n", "k", "gk", desc = "Navigation: go up in wrapped lines", silent = true},
-- compiler for languages
{mode = "n", "<leader>c", ":w! | !compiler <c-r>%<CR>", desc = "Compile: current file", noremap = true},
{mode = "n", "w!!", 'execute "silent! write !sudo tee % >/dev/null" <bar> edit!', desc = "Write: overwrite file over with sudo", noremap = true},
-- tpope/vim-abolish
{mode = "n", "<leader>sa", ":%S//g<Left><Left>", desc = "Substitute: free form", noremap = true},
{mode = "n", "<leader>ss", ":%S/\\<<C-r><C-w>\\>//g<Left><Left>", desc = "Substitute: word under cursor", noremap = true},
-- simrat39/symbols-outline.nvim
{mode = "n", "<F3>", ":Outline<CR>", desc = "CTags: toggle"},
-- nvim-tree/nvim-tree.lua
{mode = "n", "<F2>", ":NvimTreeToggle toggle<CR>", desc = "File tree: toggle"},
-- mbbill/undotree
{mode = "n", "<F1>", ":UndotreeToggle<CR>", desc = "Undo tree: toggle"},
-- amrbashir/nvim-docs-view
{mode = "n", "go", ":DocsViewToggle<CR>", desc = "LSP: toggle documentation window", noremap = true},
-- numtostr/fterm.nvim
{mode = "n", "<leader>tt", require("FTerm").toggle, desc = "Terminal: open", noremap = true},
{mode = "n", "<leader>gt", function() lazygit:toggle() end, desc = "Git: open lazygit", noremap = true},
{mode = "n", "<leader>tg", function() lazygit:toggle() end, desc = "Terminal: open lazygit", noremap = true},
-- sindrets/diffview.nvim
{mode = "n", "<leader>gdo", ":DiffviewOpen<CR>", desc = "Git: open diff"},
{mode = "n", "<leader>gdc", ":DiffviewClose<CR>", desc = "Git: close diff"},
-- folke/trouble.nvim
{mode = "n", "<F4>", ":Trouble diagnostics toggle<CR>", desc = "LSP: toggle error list"},
-- hrsh7th/nvim-cmp
{mode = "n", "gd", function() vim.lsp.buf.definition() end, desc = "LSP: goto definition", noremap = true},
{mode = "n", "gD", function() vim.lsp.buf.declaration() end, desc = "LSP: goto declaration", noremap = true},
{mode = "n", "gT", function() vim.lsp.buf.type_definition() end, desc = "LSP: goto type definition", noremap = true},
{mode = "n", "gi", function() vim.lsp.buf.implementation() end, desc = "LSP: list implementation", noremap = true},
{mode = "n", "gr", function() vim.lsp.buf.references() end, desc = "LSP: list references", noremap = true},
{mode = "n", "K", vim.lsp.buf.hover(), desc = "LSP: show documentation", noremap = true},
{mode = "n", "<F8>", function() require("conform").format({ async = true, lsp_fallback = true }) end, desc = "LSP: format", noremap = true},
-- rmagatti/goto-preview
{mode = "n", "gpd", function() require("goto-preview").goto_preview_definition() end, desc = "LSP: preview definition", noremap = true},
{mode = "n", "gpy", function() require("goto-preview").goto_preview_type_definition() end, desc = "LSP: preview type definition", noremap = true},
{mode = "n", "gpi", function() require("goto-preview").goto_preview_implementation() end, desc = "LSP: list preview implementation", noremap = true},
{mode = "n", "gpD", function() require("goto-preview").goto_preview_declaration() end, desc = "LSP: preview declaration", noremap = true},
{mode = "n", "gpr", function() require("goto-preview").goto_preview_references() end, desc = "LSP: list preview references", noremap = true},
{mode = "n", "gpc", function() require("goto-preview").close_all_win() end, desc = "LSP: close all preview windows", noremap = true},
-- filipdutescu/renamer.nvim
{mode = "n", "<F5>", function() require("renamer").rename() end, desc = "LSP: rename", noremap = true},
-- nvim-telescope/telescope.nvim
{mode = "n", "<leader>ff", ":Telescope find_files<CR>", desc = "Telescope: find files", noremap = true},
{mode = "n", "<leader>ff", ":Telescope find_files<CR>", desc = "Telescope: find files", noremap = true},
-- archie-judd/telescope-words.nvim
{mode = "n", "<leader>wd", telescope.extensions.telescope_words.search_dictionary, desc = "Telescope: search dictionary", noremap = true},
{mode = "n", "<leader>wt", telescope.extensions.telescope_words.search_thesaurus, desc = "Telescope: search thesaurus", noremap = true},
-- gnikdroy/projections.nvim
{mode = "n", "<leader>fp", function() vim.cmd("Telescope projections") end, desc = "Telescope: find projects", noremap = true},
-- kamykn/spelunker.vim
{mode = "n", "<F10>t", ":call spelunker#toggle()<CR>", desc = "Spelunker: toggle spell check", noremap = true},
{mode = "n", "<F10>s", "z=", desc = "Spell: display suggestions"},
-- kevinhwang91/nvim-ufo
{mode = "n", "K", function() local winid = require("ufo").peekFoldedLinesUnderCursor() if not winid then vim.lsp.buf.hover() end end, desc = "LSP: peek folded section", noremap = true},
-- kevinhwang91/nvim-hlslens
{mode = "n", "n", [[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]], desc = "Search: search forward", noremap = true, silent = true},
{mode = "n", "N", [[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]], desc = "Search: search backwards", noremap = true, silent = true},
-- sindrets/winshift.nvim
{mode = "n", "<C-W>m", ":WinShift<CR>", desc = "Navigation: enter window shift mode", noremap = true},
-- ggandor/leap.nvim
{mode = "n", "f", "<Plug>(leap-forward)", desc = "Navigation: enter leap mode for forward movement", noremap = true},
{mode = "n", "F", "<Plug>(leap-backward)", desc = "Navigation: enter leap mode for backwards movement", noremap = true},
{mode = "n", "gf", "<Plug>(leap-from-window)", desc = "Navigation: enter leap mode for other windows", noremap = true},
-- quarto-dev/quarto-nvim
{mode = "n", "<leader>rc", require("quarto.runner").run_cell, desc = "Quarto: Run cell", noremap = true, silent = true},
{mode = "n", "<leader>ra", require("quarto.runner").run_above, desc = "Quarto: Run cell and above", noremap = true, silent = true},
{mode = "n", "<leader>rA", require("quarto.runner").run_all, desc = "Quarto: Run all cells", noremap = true, silent = true},
{mode = "n", "<leader>rl", require("quarto.runner").run_line, desc = "Quarto: Run line", noremap = true, silent = true},
{mode = "n", "<leader>rr", require("quarto.runner").run_range, desc = "Quarto: Run visual range", noremap = true, silent = true},
{mode = "n", "<leader>rL", function() require("quarto.runner").run_all(true) end, desc = "Quarto: Run all cells of all languages", noremap = true, silent = true},
-- huynle/ogpt-nvim
{mode = "n", "<leader>ai", ":OGPT<CR>", desc = "OGTP: Open AI View", noremap = true},
}) })

View File

@@ -12,14 +12,15 @@ if not vim.loop.fs_stat(lazypath) then
end end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
return require("lazy").setup({ return require("lazy").setup(
{
-- import plugins from the plugins directory -- import plugins from the plugins directory
{ import = 'plugins' }, { import = "plugins" },
}, },
-- lazy.nvim configuration -- lazy.nvim configuration
{ {
ui = { ui = {
icons = Lazy_signs icons = Lazy_signs,
} },
} }
) )

View File

@@ -0,0 +1,15 @@
return {
-- display available options for highlighted word
"tiyn/action-hints.nvim",
lazy = true, -- load as dependency
config = function()
require("action-hints").setup({
template = {
-- definition = { text = "D", color = "#add8e6" },
-- references = { text = "R%s", color = "#ff6666" },
definition = { text = Definition_sign, color = "#add8e6" },
references = { text = Reference_sign, color = "#ff6666" },
},
})
end,
}

View File

@@ -0,0 +1,85 @@
return {
-- agentic coding
"carlos-algms/agentic.nvim",
--- @type agentic.PartialUserConfig
opts = {
-- provider = "gemini-acp",
provider = "codex-acp",
diagnostic_icons = {
error = Error_sign,
warn = Warn_sign,
info = Info_sign,
hint = Hint_sign,
},
status_icons = {
pending = "󰄉",
in_progress = "󱥸",
completed = "󰗠",
failed = "󰅙",
},
permission_icons = {
allow_once = "󰄬",
allow_always = "󰄭",
reject_once = "󰅖",
reject_always = "",
},
chat_icons = {
user = "󰀄",
agent = "󰚩",
},
message_icons = {
thinking = "󰧑",
finished = "",
stopped = "",
error = "󰀦",
},
},
keys = {
{
"<leader>aa",
function()
require("agentic").toggle()
end,
mode = { "n", "v" },
desc = "Agentic: Toggle chat",
},
{
"<leader>af",
function()
require("agentic").add_selection_or_file_to_context()
end,
mode = { "n", "v" },
desc = "Agentic: Add file or selection to context",
},
{
"<leader>as",
function()
require("agentic").new_session()
end,
mode = { "n", "v" },
desc = "Agentic: Create new session",
},
{
"<leader>ar",
function()
require("agentic").restore_session()
end,
mode = { "n", "v" },
desc = "Agentic: Restore session",
},
{
"<leader>ad",
function()
require("agentic").add_current_line_diagnostics()
end,
desc = "Agentic: Add current line diagnostic",
},
{
"<leader>aD",
function()
require("agentic").add_buffer_diagnostics()
end,
desc = "Agentic: Add current buffer diagnostic",
},
},
}

View File

@@ -0,0 +1,12 @@
return {
-- session management with git support
"rmagatti/auto-session",
lazy = false,
---enables autocomplete for opts
---@module "auto-session"
---@type AutoSession.Config
opts = {
suppressed_dirs = { "~/", "~/code", "~/downloads", "/" },
-- log_level = 'debug',
},
}

View File

@@ -1,5 +1,5 @@
return { return {
{ -- vs code like topbar
"utilyre/barbecue.nvim", "utilyre/barbecue.nvim",
name = "barbecue", name = "barbecue",
version = "*", version = "*",
@@ -7,10 +7,10 @@ return {
"SmiteshP/nvim-navic", "SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency "nvim-tree/nvim-web-devicons", -- optional dependency
}, },
lazy = false,
opts = { opts = {
theme = { theme = {
normal = { bg = "#272727" }, normal = { bg = "#272727" },
}
}, },
} },
} }

View File

@@ -1,10 +1,9 @@
return { return {
-- rainbow and auto-pairs for parenthesis
"saghen/blink.pairs", "saghen/blink.pairs",
version = "*", -- (recommended) only required with prebuilt binaries version = "*", -- (recommended) only required with prebuilt binaries
dependencies = { "saghen/blink.download" }, -- download prebuilt binaries from github releases
-- download prebuilt binaries from github releases lazy = false,
dependencies = "saghen/blink.download",
--- @module 'blink.pairs' --- @module 'blink.pairs'
--- @type blink.pairs.Config --- @type blink.pairs.Config
opts = { opts = {

View File

@@ -0,0 +1,5 @@
return {
-- nvim-cmp source for lsp
"hrsh7th/cmp-nvim-lsp",
lazy = true, -- load as dependency
}

View File

@@ -1,7 +1,6 @@
return { return {
-- commenting improvements -- commenting improvements
{ "numtostr/comment.nvim",
'numtostr/comment.nvim', lazy = false,
opts = {} opts = {},
}
} }

View File

@@ -1,9 +1,16 @@
return { return {
-- improved refactoring -- improved refactoring
{
"stevearc/conform.nvim", "stevearc/conform.nvim",
config = function() keys = {
require("conform").setup({ {
"<F8>",
function()
require("conform").format({ async = true, lsp_fallback = true })
end,
desc = "LSP: format",
},
},
opts = {
formatters_by_ft = { formatters_by_ft = {
lua = { "stylua" }, lua = { "stylua" },
markdown = { "mdformat" }, markdown = { "mdformat" },
@@ -14,7 +21,5 @@ return {
tex = { "latexindent" }, tex = { "latexindent" },
yaml = { "yamlfmt" }, yaml = { "yamlfmt" },
}, },
})
end,
}, },
} }

View File

@@ -1,6 +1,7 @@
return { return {
{ -- improved csv handling
"hat0uma/csvview.nvim", "hat0uma/csvview.nvim",
ft = { "csv" },
opts = { opts = {
parser = { comments = { "#", "//" } }, parser = { comments = { "#", "//" } },
keymaps = { keymaps = {
@@ -12,6 +13,9 @@ return {
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } }, jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
}, },
}, },
cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" }, config = function(_, opts)
} local csvview = require("csvview")
csvview.setup(opts)
csvview.enable()
end,
} }

View File

@@ -0,0 +1,42 @@
return {
-- improves vims increment and decrement functions
"monaqa/dial.nvim",
keys = {
{
"<C-a>",
function()
require("dial.map").manipulate("increment", "normal")
end,
silent = true,
desc = "Increment value",
},
{
"<C-x>",
function()
require("dial.map").manipulate("decrement", "normal")
end,
silent = true,
desc = "Decrement value",
},
},
config = function()
local augend = require("dial.augend")
require("dial.config").augends:register_group({
default = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
augend.date.alias["%d.%m.%Y"],
augend.date.alias["%d.%m.%y"],
augend.date.alias["%H:%M"],
augend.constant.alias.de_weekday,
augend.constant.alias.de_weekday_full,
augend.constant.alias.bool,
augend.constant.alias.Bool,
augend.semver.alias.semver,
augend.constant.alias.en_weekday,
augend.constant.alias.en_weekday_full,
},
})
end,
}

View File

@@ -1,7 +1,19 @@
return { return {
-- side by side git diffs for merge conflicts -- side by side git diff mode coloring
"sindrets/diffview.nvim",
keys = {
{ {
'sindrets/diffview.nvim', "<leader>gdo",
opts = {} "<cmd>DiffviewOpen<CR>",
} mode = "n",
desc = "Git: open diff",
},
{
"<leader>gdc",
"<cmd>DiffviewClose<CR>",
mode = "n",
desc = "Git: close diff",
},
},
opts = {},
} }

View File

@@ -0,0 +1,117 @@
return {
-- better predefined window layouts
"folke/edgy.nvim",
lazy = true, -- load as dependency
init = function()
vim.opt.laststatus = 3
vim.opt.splitkeep = "screen" -- or "topline" or "screen"
end,
opts = {
exit_when_last = false,
animate = {
enabled = false,
},
wo = {
winbar = true,
winfixwidth = true,
winfixheight = false,
winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
spell = false,
signcolumn = "no",
},
keys = {
-- -- close window
["q"] = function(win)
win:close()
end,
-- close sidebar
["Q"] = function(win)
win.view.edgebar:close()
end,
-- increase width
["<S-Right>"] = function(win)
win:resize("width", 3)
end,
-- decrease width
["<S-Left>"] = function(win)
win:resize("width", -3)
end,
-- increase height
["<S-Up>"] = function(win)
win:resize("height", 3)
end,
-- decrease height
["<S-Down>"] = function(win)
win:resize("height", -3)
end,
},
right = {
{
title = "OGPT Popup",
ft = "ogpt-popup",
size = { width = 0.2 },
wo = {
wrap = true,
},
},
{
title = "OGPT Parameters",
ft = "ogpt-parameters-window",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT Template",
ft = "ogpt-template",
size = { height = 6 },
},
{
title = "OGPT Sessions",
ft = "ogpt-sessions",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT System Input",
ft = "ogpt-system-window",
size = { height = 6 },
},
{
title = "OGPT",
ft = "ogpt-window",
size = { height = 0.5 },
wo = {
wrap = true,
},
},
{
title = "OGPT {{{selection}}}",
ft = "ogpt-selection",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPt {{{instruction}}}",
ft = "ogpt-instruction",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPT Chat",
ft = "ogpt-input",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
},
},
}

View File

@@ -0,0 +1,8 @@
return {
-- rename files in buffer
"tiyn/file-renamer.nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
cmd = { "Ren", "Renamer" },
}

View File

@@ -1,7 +1,31 @@
return { return {
-- floating terminal to toggle -- floating terminal to toggle
"numtostr/fterm.nvim",
keys = {
{ {
'numtostr/fterm.nvim', "<leader>tt",
opts = {} function()
} require("FTerm").toggle()
end,
mode = "n",
desc = "Terminal: open",
},
{
"<leader>gt",
function()
require("FTerm"):new({ cmd = "lazygit" }):toggle()
end,
mode = "n",
desc = "Git: open lazygit",
},
{
"<leader>tg",
function()
require("FTerm"):new({ cmd = "lazygit" }):toggle()
end,
mode = "n",
desc = "Terminal: open lazygit",
},
},
opts = {},
} }

View File

@@ -1,7 +1,6 @@
return { return {
-- display git status per line -- display git status per line
{ "lewis6991/gitsigns.nvim",
'lewis6991/gitsigns.nvim', lazy = true, -- load as dependency
opts = {} opts = {},
}
} }

View File

@@ -1,7 +1,62 @@
return { return {
-- preview definitions using floating windows
"rmagatti/goto-preview", "rmagatti/goto-preview",
dependencies = 'rmagatti/logger.nvim', dependencies = { "rmagatti/logger.nvim" },
config = function() keys = {
require("goto-preview").setup({}) {
"gpd",
function()
require("goto-preview").goto_preview_definition()
end, end,
desc = "LSP: preview definition",
},
{
"gpy",
function()
require("goto-preview").goto_preview_type_definition()
end,
desc = "LSP: preview type definition",
},
{
"gpi",
function()
require("goto-preview").goto_preview_implementation()
end,
desc = "LSP: list preview implementation",
},
{
"gpD",
function()
require("goto-preview").goto_preview_declaration()
end,
desc = "LSP: preview declaration",
},
{
"gpr",
function()
require("goto-preview").goto_preview_references()
end,
desc = "LSP: list preview references",
},
{
"gpc",
function()
require("goto-preview").close_all_win()
end,
desc = "LSP: close all preview windows",
},
},
opts = {
border = "rounded",
preview_window_title = { enable = true, position = "center" },
post_open_hook = function(bufnr, _)
local close = function()
require("goto-preview").close_all_win()
end
vim.keymap.set("n", "<c-h>", close, { buffer = bufnr, silent = true })
vim.keymap.set("n", "q", close, { buffer = bufnr, silent = true })
end,
},
} }

View File

@@ -0,0 +1,14 @@
return {
-- display images inside neovim
"3rd/image.nvim",
lazy = true, -- load as dependency
opts = {
backend = "ueberzug",
max_width = 100,
max_height = 12,
max_height_window_percentage = math.huge,
max_width_window_percentage = math.huge,
window_overlap_clear_enabled = true,
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
},
}

View File

@@ -1,9 +1,7 @@
return { return {
-- show indentation lines -- show indentation lines
{ "lukas-reineke/indent-blankline.nvim",
'lukas-reineke/indent-blankline.nvim', lazy = false,
event = "BufReadPre",
main = "ibl", main = "ibl",
opts = {} opts = {},
}
} }

View File

@@ -0,0 +1,10 @@
return {
-- open jupyter notebooks as their plain text alternatives
"GCBallesteros/jupytext.nvim",
lazy = true, -- load as dependency
opts = {
style = "markdown",
output_extension = "md",
force_ft = "markdown",
},
}

View File

@@ -1,9 +1,15 @@
return { return {
"frabjous/knap",
ft = { "tex", "markdown" },
keys = {
{ {
'frabjous/knap', "<leader>p",
ft = { 'tex' }, function() require("knap").toggle_autopreviewing() end,
desc = "Knap: toggle autopreview",
},
},
config = function() config = function()
local knap = require("knap")
local function detect_engine() local function detect_engine()
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or "" local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
if first_line:match("^%%%s*xelatex") then if first_line:match("^%%%s*xelatex") then
@@ -12,44 +18,49 @@ return {
return "pdflatex" return "pdflatex"
end end
end end
local function set_engine() local function set_engine()
local engine = detect_engine() local engine = detect_engine()
if engine == "xelatex" then if engine == "xelatex" then
vim.g.knap_settings.textopdf = vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
"xelatex -synctex=1 -interaction=batchmode %docroot%"
else else
vim.g.knap_settings.textopdf = vim.g.knap_settings.textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%"
"pdflatex -synctex=1 -interaction=batchmode %docroot%"
end end
end end
vim.g.knap_settings = { vim.g.knap_settings = {
delay = 100, delay = 100,
texoutputext = "pdf", texoutputext = "pdf",
-- textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%",
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%", textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
textopdfviewerlaunch = textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
"zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
textopdfviewerrefresh = "reload", textopdfviewerrefresh = "reload",
textopdfforwardjump = textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
"zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
} }
vim.api.nvim_create_autocmd("User", { vim.api.nvim_create_autocmd("User", {
pattern = "KnapShowView", pattern = "KnapShowView",
callback = set_engine callback = set_engine,
}) })
vim.api.nvim_create_autocmd("User", { vim.api.nvim_create_autocmd("User", {
pattern = "KnapCompile", pattern = "KnapCompile",
callback = set_engine callback = set_engine,
}) })
vim.api.nvim_create_autocmd("BufWritePost", { vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.tex", pattern = "*.tex",
callback = set_engine callback = set_engine,
}) })
vim.api.nvim_create_autocmd("FileType", {
pattern = { "tex", "markdown" },
callback = function(args)
local bufnr = args.buf
vim.keymap.set({ "n", "v", "i" }, "<F7>", function()
knap.forward_jump()
end, {
buffer = bufnr,
desc = "Knap: jump to cursor",
})
if vim.bo[bufnr].filetype == "tex" then
knap.toggle_autopreviewing()
end end
} end,
})
end,
} }

View File

@@ -1,7 +1,26 @@
return { return {
-- improved movement -- improved movement
{
"ggandor/leap.nvim", "ggandor/leap.nvim",
keys = {
{
"f",
"<Plug>(leap-forward)",
mode = "n",
desc = "Navigation: enter leap mode for forward movement",
},
{
"F",
"<Plug>(leap-backward)",
mode = "n",
desc = "Navigation: enter leap mode for backwards movement",
},
{
"gf",
"<Plug>(leap-from-window)",
mode = "n",
desc = "Navigation: enter leap mode for other windows",
},
},
config = function() config = function()
require("leap").opts.highlight_unlabeled_phase_one_targets = true require("leap").opts.highlight_unlabeled_phase_one_targets = true
require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" } require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" }
@@ -11,5 +30,4 @@ return {
require("leap").opts.safe_labels = "sfnut/SFNLHMUGTZ?" require("leap").opts.safe_labels = "sfnut/SFNLHMUGTZ?"
require("leap").opts.labels = "sfnjklhodweimbuyvrgtaqpcxz/SFNJKLHODWEIMBUYVRGTAQPCXZ?" require("leap").opts.labels = "sfnjklhodweimbuyvrgtaqpcxz/SFNJKLHODWEIMBUYVRGTAQPCXZ?"
end, end,
},
} }

View File

@@ -1,14 +1,13 @@
return { return {
-- show function signature while typing -- show function signature while typing
{ "ray-x/lsp_signature.nvim",
'ray-x/lsp_signature.nvim', lazy = false,
opts = { opts = {
bind = true, bind = true,
handler_opts = { handler_opts = {
border = "none" border = "none",
}, },
hint_prefix = Hint_sign, hint_prefix = Hint_sign,
hint_scheme = "DiagnosticSignHint" hint_scheme = "DiagnosticSignHint",
} },
}
} }

View File

@@ -1,35 +1,14 @@
return { return {
-- statusline -- statusline
{
"nvim-lualine/lualine.nvim", "nvim-lualine/lualine.nvim",
dependencies = { dependencies = {
{
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
lazy = true, "tiyn/tccs.nvim",
},
{
"f-person/git-blame.nvim", "f-person/git-blame.nvim",
config = function()
vim.g.gitblame_display_virtual_text = 0
end,
},
{ "tiyn/tccs.nvim" },
{
"tiyn/action-hints.nvim", "tiyn/action-hints.nvim",
config = function()
require("action-hints").setup({
template = {
-- definition = { text = "D", color = "#add8e6" },
-- references = { text = "R%s", color = "#ff6666" },
definition = { text = Definition_sign, color = "#add8e6" },
references = { text = Reference_sign, color = "#ff6666" },
}, },
}) lazy = false,
end, opts = {
},
},
config = function()
require("lualine").setup({
options = { options = {
globalstatus = true, globalstatus = true,
symbols = { symbols = {
@@ -45,13 +24,19 @@ return {
sections = { sections = {
lualine_b = { lualine_b = {
{ {
require("gitblame").get_current_blame_text, function()
cond = require("gitblame").is_blame_text_available, return require("gitblame").get_current_blame_text()
end,
cond = function()
return require("gitblame").is_blame_text_available()
end,
}, },
}, },
lualine_c = {}, lualine_c = {},
lualine_x = { lualine_x = {
require("action-hints").statusline, function()
return require("action-hints").statusline()
end,
"encoding", "encoding",
"fileformat", "fileformat",
{ {
@@ -76,7 +61,5 @@ return {
}, },
lualine_z = { "progress", "location" }, lualine_z = { "progress", "location" },
}, },
})
end,
}, },
} }

View File

@@ -0,0 +1,11 @@
return {
-- snippet support
"l3mon4d3/luasnip",
version = "v2.*",
dependencies = { "saadparwaiz1/cmp_luasnip" },
lazy = true, -- load as dependency
-- build = "make install_jsregexp",
config = function()
require("luasnip.loaders.from_snipmate").lazy_load()
end,
}

View File

@@ -0,0 +1,23 @@
return {
-- bridge mason and null-ls
"jay-babu/mason-null-ls.nvim",
lazy = true, -- load as dependency
opts = {
automatic_installation = true,
ensure_installed = {
-- assembler
"asmfmt",
-- lua
"stylua",
-- markdown
"mdformat",
-- python
"isort",
"yapf",
-- shell
"shfmt",
-- yaml
"yamlfmt",
},
},
}

View File

@@ -1,52 +1,10 @@
return { return {
-- lang server installations -- lang server installations
{
"williamboman/mason.nvim", "williamboman/mason.nvim",
dependencies = { dependencies = {
{
"nvimtools/none-ls.nvim", "nvimtools/none-ls.nvim",
config = function()
require("null-ls").setup({
sources = {
-- assembler
require("null-ls").builtins.formatting.asmfmt,
-- lua
require("null-ls").builtins.formatting.stylua,
-- markdown
require("null-ls").builtins.formatting.mdformat,
-- python
require("null-ls").builtins.formatting.isort,
require("null-ls").builtins.formatting.yapf,
-- shell
require("null-ls").builtins.formatting.shfmt,
-- yaml
require("null-ls").builtins.formatting.yamlfmt,
},
})
end,
},
{
"jay-babu/mason-null-ls.nvim", "jay-babu/mason-null-ls.nvim",
opts = {
automatic_installation = true,
ensure_installed = {
-- assembler
"asmfmt",
-- lua
"stylua",
-- markdown
"mdformat",
-- python
"isort",
"yapf",
-- shell
"shfmt",
-- yaml
"yamlfmt",
},
},
},
}, },
lazy = false,
opts = { ui = { icons = Install_signs } }, opts = { ui = { icons = Install_signs } },
},
} }

View File

@@ -1,8 +1,6 @@
return { return {
{ -- decorations for the current line mode
"mvllow/modes.nvim", "mvllow/modes.nvim",
config = function() lazy = false,
require("modes").setup() opts = {},
end,
},
} }

View File

@@ -1,54 +1,14 @@
return { return {
{ -- jupyter notebook support
"benlubas/molten-nvim", "benlubas/molten-nvim",
build = ":UpdateRemotePlugins",
version = "^1.0.0", version = "^1.0.0",
dependencies = { dependencies = {
{
"3rd/image.nvim", "3rd/image.nvim",
opts = {
backend = "ueberzug",
max_width = 100,
max_height = 12,
max_height_window_percentage = math.huge,
max_width_window_percentage = math.huge,
window_overlap_clear_enabled = true,
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
},
},
{
"quarto-dev/quarto-nvim", "quarto-dev/quarto-nvim",
dependencies = {
"jmbuhr/otter.nvim",
"nvim-treesitter/nvim-treesitter",
},
opts = {
lspFeatures = {
languages = { "python" },
chunks = "all",
diagnostics = {
enabled = true,
triggers = { "BufWritePost" },
},
completion = {
enabled = true,
},
},
codeRunner = {
enabled = true,
default_method = "molten",
},
},
},
{
"GCBallesteros/jupytext.nvim", "GCBallesteros/jupytext.nvim",
opts = {
style = "markdown",
output_extension = "md",
force_ft = "markdown",
}, },
}, lazy = false,
},
build = ":UpdateRemotePlugins",
init = function() init = function()
vim.g.molten_auto_open_output = false vim.g.molten_auto_open_output = false
vim.g.molten_wrap_output = true vim.g.molten_wrap_output = true
@@ -57,5 +17,93 @@ return {
vim.g.molten_image_provider = "image.nvim" vim.g.molten_image_provider = "image.nvim"
vim.g.molten_output_win_max_height = 20 vim.g.molten_output_win_max_height = 20
end, end,
config = function()
local imb = function(e)
vim.schedule(function()
local kernels = vim.fn.MoltenAvailableKernels()
local try_kernel_name = function()
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
return metadata.kernelspec.name
end
local ok, kernel_name = pcall(try_kernel_name)
if not ok or not vim.tbl_contains(kernels, kernel_name) then
kernel_name = nil
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
if venv ~= nil then
kernel_name = string.match(venv, "/.+/(.+)")
end
end
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
vim.cmd(("MoltenInit %s"):format(kernel_name))
end
vim.cmd("MoltenImportOutput")
end)
end
vim.api.nvim_create_autocmd("BufAdd", {
pattern = { "*.ipynb" },
callback = imb,
})
vim.api.nvim_create_autocmd("BufEnter", {
pattern = { "*.ipynb" },
callback = function(e)
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
imb(e)
end
end,
})
local default_notebook = [[
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}, },
"language_info": {
"codemirror_mode": {
"name": "ipython"
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
]]
local function new_notebook(filename)
local path = filename .. ".ipynb"
local file = io.open(path, "w")
if file then
file:write(default_notebook)
file:close()
vim.cmd("edit " .. path)
else
print("Error: Could not open new notebook file for writing.")
end
end
vim.api.nvim_create_user_command("NewNotebook", function(opts)
new_notebook(opts.args)
end, {
nargs = 1,
complete = "file",
})
end,
} }

View File

@@ -0,0 +1,8 @@
return {
-- generate annotations automatically
"danymat/neogen",
lazy = false,
opts = {
snippet_engine = "luasnip",
},
}

View File

@@ -0,0 +1,24 @@
return {
-- inject lsp diagnostics, etc
"nvimtools/none-ls.nvim",
lazy = true, -- load as dependency
config = function()
require("null-ls").setup({
sources = {
-- assembler
require("null-ls").builtins.formatting.asmfmt,
-- lua
require("null-ls").builtins.formatting.stylua,
-- markdown
require("null-ls").builtins.formatting.mdformat,
-- python
require("null-ls").builtins.formatting.isort,
require("null-ls").builtins.formatting.yapf,
-- shell
require("null-ls").builtins.formatting.shfmt,
-- yaml
require("null-ls").builtins.formatting.yamlfmt,
},
})
end,
}

View File

@@ -1,47 +1,38 @@
return { return {
-- autocompletion and its sources and snippets -- autocompletion and its sources and snippets
{ "hrsh7th/nvim-cmp",
'hrsh7th/nvim-cmp',
dependencies = { dependencies = {
'nvim-lua/plenary.nvim', "nvim-lua/plenary.nvim",
'onsails/lspkind-nvim', "onsails/lspkind-nvim",
-- cmp sources "hrsh7th/cmp-buffer",
'hrsh7th/cmp-buffer', "hrsh7th/cmp-path",
'hrsh7th/cmp-path', "uga-rosa/cmp-dictionary",
'lukas-reineke/cmp-under-comparator', "lukas-reineke/cmp-under-comparator",
-- luasnip "l3mon4d3/luasnip",
{
'l3mon4d3/luasnip',
config = function()
require("luasnip.loaders.from_snipmate").lazy_load()
end,
version = "v2.*",
build = "make install_jsregexp",
dependencies = { 'saadparwaiz1/cmp_luasnip' }
},
}, },
lazy = false,
config = function() config = function()
local cmp = require("cmp") local cmp = require("cmp")
cmp.setup { cmp.setup({
sorting = { sorting = {
comparators = { comparators = {
cmp.config.compare.offset, cmp.config.compare.offset,
cmp.config.compare.exact, cmp.config.compare.exact,
cmp.config.compare.score, cmp.config.compare.score,
require "cmp-under-comparator".under, require("cmp-under-comparator").under,
cmp.config.compare.kind, cmp.config.compare.kind,
cmp.config.compare.sort_text, cmp.config.compare.sort_text,
cmp.config.compare.length, cmp.config.compare.length,
cmp.config.compare.order cmp.config.compare.order,
}, },
}, },
snippet = { snippet = {
expand = function(args) expand = function(args)
require("luasnip").lsp_expand(args.body) require("luasnip").lsp_expand(args.body)
end end,
}, },
mapping = { mapping = {
['<S-Tab>'] = cmp.mapping(function(fallback) ["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_prev_item() cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then elseif require("luasnip").jumpable(-1) then
@@ -50,7 +41,7 @@ return {
fallback() fallback()
end end
end, { "i", "s" }), end, { "i", "s" }),
['<Tab>'] = cmp.mapping(function(fallback) ["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_next_item() cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then elseif require("luasnip").expand_or_jumpable() then
@@ -59,17 +50,18 @@ return {
fallback() fallback()
end end
end, { "i", "s" }), end, { "i", "s" }),
['<C-e>'] = cmp.mapping.close(), ["<C-e>"] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm { ["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace, behavior = cmp.ConfirmBehavior.Replace,
select = true select = true,
} }),
}, },
sources = { sources = {
{ name = 'nvim_lsp' }, { name = "nvim_lsp" },
{ name = 'luasnip' }, { name = "luasnip" },
{ name = 'path' }, { name = "path" },
{ name = 'buffer' } { name = "buffer" },
{ name = "dictionary" },
}, },
formatting = { formatting = {
format = require("lspkind").cmp_format({ format = require("lspkind").cmp_format({
@@ -77,10 +69,9 @@ return {
preset = "codicons", preset = "codicons",
maxwidth = 50, maxwidth = 50,
menu = Menu_signs, menu = Menu_signs,
symbol_map = Lsp_signs symbol_map = Lsp_signs,
}),
},
}) })
} end,
}
end
}
} }

View File

@@ -1,11 +1,11 @@
return { return {
-- showing color of hex values, etc -- showing color of hex values, etc
{ "ChristianChiarulli/nvim-colorizer.lua",
'ChristianChiarulli/nvim-colorizer.lua', lazy = false,
opts = { opts = {
filetypes = { filetypes = {
'*', "*",
'!markdown' "!markdown",
}, },
user_default_options = { user_default_options = {
RGB = true, RGB = true,
@@ -22,8 +22,7 @@ return {
buftypes = { buftypes = {
"*", "*",
"!prompt", "!prompt",
"!popup" "!popup",
},
}, },
}
}
} }

View File

@@ -1,7 +1,14 @@
return { return {
-- hover documentation
"tiyn/nvim-docs-view", "tiyn/nvim-docs-view",
lazy = true, keys = {
cmd = "DocsViewToggle", {
"go",
"<cmd>DocsViewToggle<CR>",
mode = "n",
desc = "LSP: toggle documentation window",
},
},
opts = { opts = {
position = "bottom", position = "bottom",
}, },

View File

@@ -1,8 +1,19 @@
return { return {
-- improved virtual text
"kevinhwang91/nvim-hlslens",
keys = {
{ {
'kevinhwang91/nvim-hlslens', "n",
[[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
desc = "Search: search forward",
},
{
"N",
[[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
desc = "Search: search backwards",
},
},
opts = { opts = {
calm_down = true, calm_down = true,
} },
}
} }

View File

@@ -0,0 +1,90 @@
return {
-- lillypond integration
"martineausimon/nvim-lilypond-suite",
dependencies = { "uga-rosa/cmp-dictionary" },
ft = { "lilypond" },
opts = {
lilypond = {
mappings = {
player = "<NOP>",
compile = "<NOP>",
open_pdf = "<NOP>",
switch_buffers = "<NOP>",
insert_version = "<NOP>",
hyphenation = "<NOP>",
hyphenation_change_lang = "<NOP>",
insert_hyphen = "<NOP>",
add_hyphen = "<NOP>",
del_next_hyphen = "<NOP>",
del_prev_hyphen = "<NOP>",
},
},
player = {
options = {
fluidsynth_flags = {
"/usr/share/soundfonts/FluidR3_GM.sf2",
},
},
},
},
config = function(_, opts)
local nvls = require("nvls")
nvls.setup(opts)
local lily_dicts = {
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/keywords",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/musicCommands",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/musicFunctions",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/articulations",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/dynamics",
}
vim.api.nvim_create_autocmd("FileType", {
pattern = "lilypond",
callback = function(args)
local bufnr = args.buf
require("cmp_dictionary").setup({
paths = lily_dicts,
})
local fluidsynth_job = nil
vim.keymap.set("n", "<leader>pm", function()
local midi = vim.fn.expand("%:r") .. ".midi"
if fluidsynth_job then
vim.fn.jobstop(fluidsynth_job)
fluidsynth_job = nil
print("fluidsynth stopped")
return
end
fluidsynth_job = vim.fn.jobstart({ "fluidsynth", "-i", midi })
print("fluidsynth playing (Ctrl-C to stop)")
end, {
buffer = bufnr,
desc = "Lilypond: output MIDI",
})
vim.keymap.set("n", "<leader>pp", "<cmd>Viewer<CR>", {
buffer = bufnr,
desc = "Lilypond: open PDF",
})
vim.keymap.set("n", "<C-c>", function()
if fluidsynth_job then
vim.fn.jobstop(fluidsynth_job)
fluidsynth_job = nil
print("fluidsynth stopped")
else
vim.cmd("normal! <C-c>")
end
end, {
buffer = bufnr,
desc = "Stop MIDI playback",
})
if vim.b[bufnr].first_start_lilypond then
return
end
vim.b[bufnr].first_start_lilypond = true
vim.schedule(function()
if vim.fn.exists(":Viewer") == 2 then
vim.cmd.Viewer()
end
end)
end,
})
end,
}

View File

@@ -1,66 +1,37 @@
return { return {
-- lang server management -- lang server management
{
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
dependencies = { dependencies = {
"williamboman/mason-lspconfig.nvim", "williamboman/mason-lspconfig.nvim",
{
"mrcjkb/rustaceanvim",
version = "^6",
lazy = false,
},
{
"hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-nvim-lsp",
config = function()
Capabilities = require("cmp_nvim_lsp").default_capabilities()
Capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
end,
}, },
}, lazy = false,
config = function() opts = {
require("mason-lspconfig").setup({
automatic_setup = true, automatic_setup = true,
ensure_installed = { ensure_installed = {
-- assembler
"asm_lsp", "asm_lsp",
-- c
"clangd", "clangd",
-- docker
"dockerls", "dockerls",
-- go
"gopls", "gopls",
-- html
"html", "html",
-- json
"jsonls", "jsonls",
-- xml
"lemminx", "lemminx",
-- latex
"ltex", "ltex",
"texlab", "texlab",
-- lua
"lua_ls", "lua_ls",
-- markdown
"marksman", "marksman",
-- nim
"nimls", "nimls",
-- python
"pyright", "pyright",
-- r
"r_language_server", "r_language_server",
-- shell
"bashls", "bashls",
-- sql
"sqlls", "sqlls",
-- typescript / javascript
"ts_ls", "ts_ls",
-- yaml
"yamlls", "yamlls",
}, },
}) },
config = function(_, opts)
local mason_lspconfig = require("mason-lspconfig")
mason_lspconfig.setup(opts)
local default_flags = { local default_flags = {
debounce_text_changes = 150, debounce_text_changes = 150,
allow_incremental_sync = true, allow_incremental_sync = true,
@@ -70,7 +41,6 @@ return {
ltex = { ltex = {
settings = { settings = {
ltex = { ltex = {
-- language = "de-DE",
enabled = { "latex", "markdown" }, enabled = { "latex", "markdown" },
dictionary = Dictionaries, dictionary = Dictionaries,
}, },
@@ -84,15 +54,33 @@ return {
}, },
}, },
}, },
pyright = {} pyright = {},
}
local capabilities = require("cmp_nvim_lsp").default_capabilities()
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
} }
for name, config in pairs(servers) do for name, config in pairs(servers) do
vim.lsp.config(name, vim.tbl_extend("force", config, { vim.lsp.config(
name,
vim.tbl_extend("force", config, {
on_attach = on_attach, on_attach = on_attach,
capabilities = Capabilities, capabilities = capabilities,
flags = default_flags, flags = default_flags,
})) })
)
end end
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local bufnr = args.buf
local opts = { buffer = bufnr }
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, opts)
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
end,
})
end, end,
},
} }

View File

@@ -1,44 +1,23 @@
return { return {
-- scrollbar with git and diagnostics support for easier navigation -- scrollbar with git and diagnostics support for easier navigation
{ "petertriho/nvim-scrollbar",
'petertriho/nvim-scrollbar',
dependencies = { dependencies = {
'kevinhwang91/nvim-hlslens', "kevinhwang91/nvim-hlslens",
'lewis6991/gitsigns.nvim' "lewis6991/gitsigns.nvim",
}, },
config = function() lazy = false,
require("scrollbar").setup({ opts = {
marks = { marks = {
Cursor = { Cursor = { highlight = "Normal" },
highlight = "Normal" Search = { highlight = "Special" },
}, Error = { highlight = "DiagnosticSignError" },
Search = { Warn = { highlight = "DiagnosticSignWarn" },
highlight = "Special" Info = { highlight = "DiagnosticSignInfo" },
}, Hint = { highlight = "DiagnosticSignHint" },
Error = { Misc = { highlight = "Special" },
highlight = "DiagnosticSignError" GitAdd = { highlight = "GitGutterAdd" },
}, GitChange = { highlight = "GitGutterChange" },
Warn = { GitDelete = { highlight = "GitGutterDelete" },
highlight = "DiagnosticSignWarn"
},
Info = {
highlight = "DiagnosticSignInfo"
},
Hint = {
highlight = "DiagnosticSignHint"
},
Misc = {
highlight = "Special"
},
GitAdd = {
highlight = "GitGutterAdd"
},
GitChange = {
highlight = "GitGutterChange"
},
GitDelete = {
highlight = "GitGutterDelete"
}
}, },
excluded_filetypes = { excluded_filetypes = {
"cmp_docs", "cmp_docs",
@@ -51,9 +30,11 @@ return {
"FTerm", "FTerm",
"", "",
}, },
}) },
config = function(_, opts)
local scrollbar = require("scrollbar")
scrollbar.setup(opts)
require("scrollbar.handlers.search").setup() require("scrollbar.handlers.search").setup()
require("scrollbar.handlers.gitsigns").setup() require("scrollbar.handlers.gitsigns").setup()
end end,
}
} }

View File

@@ -1,9 +1,7 @@
return { return {
-- additional quote/parantheses funtions -- additional quote/parantheses funtions
{ "kylechui/nvim-surround",
'kylechui/nvim-surround',
version = "*", version = "*",
event = "VeryLazy", lazy = false,
opts = {} opts = {},
}
} }

View File

@@ -1,12 +1,15 @@
return { return {
-- fileexplorer on the side -- fileexplorer on the side
{
"nvim-tree/nvim-tree.lua", "nvim-tree/nvim-tree.lua",
cmd = "NvimTreeToggle",
dependencies = { dependencies = {
{
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
lazy = true },
cmd = { "NvimTreeToggle" },
keys = {
{
"<F2>",
"<cmd>NvimTreeToggle<CR>",
desc = "File tree: toggle",
}, },
}, },
opts = { opts = {
@@ -21,10 +24,9 @@ return {
group_empty = true, group_empty = true,
icons = { icons = {
glyphs = { glyphs = {
git = Git_signs git = Git_signs,
},
},
}, },
}, },
}
}
}
} }

View File

@@ -1,17 +1,16 @@
return { return {
-- better language highlighting by improved parsing -- better language highlighting by improved parsing
{ "nvim-treesitter/nvim-treesitter",
'nvim-treesitter/nvim-treesitter', build = ":TSUpdate",
build = ':TSUpdate',
dependencies = { dependencies = {
-- automatically close html-tags "windwp/nvim-ts-autotag", -- automatically close html-tags
'windwp/nvim-ts-autotag', "nvim-treesitter/nvim-treesitter-context",
-- color brackets
-- 'p00f/nvim-ts-rainbow',
}, },
lazy = false,
config = function() config = function()
require("nvim-treesitter.configs").setup({ local treesitter = require("nvim-treesitter")
ensure_installed = { treesitter.setup()
treesitter.install({
"bash", "bash",
"css", "css",
"html", "html",
@@ -22,17 +21,6 @@ return {
"rust", "rust",
"lua", "lua",
"yaml", "yaml",
},
-- highlight = { enable = true },
autotag = { enable = false },
-- rainbow = {
-- enable = true,
-- extended_mode = true,
-- max_file_lines = nil,
-- -- colors = {},
-- -- termcolors = {}
-- }
}) })
end end,
}
} }

View File

@@ -0,0 +1,11 @@
return {
-- automatically close tags with treesitter
"windwp/nvim-ts-autotag",
lazy = true, -- load as dependency
opts = {
opts = {
enable_close = true,
enable_rename = true,
},
},
}

View File

@@ -1,20 +1,40 @@
return { return {
-- folding improvements -- folding improvements
"kevinhwang91/nvim-ufo",
dependencies = {
"kevinhwang91/promise-async",
"neovim/nvim-lspconfig",
},
keys = {
{ {
'kevinhwang91/nvim-ufo', "K",
dependencies = { 'kevinhwang91/promise-async' }, function()
config = function() local winid = require("ufo").peekFoldedLinesUnderCursor()
require('ufo').setup() if not winid then
vim.api.nvim_create_autocmd({ 'BufEnter', 'FileType' }, vim.lsp.buf.hover({
{ border = "rounded",
pattern = { '*' }, focusable = true, -- set to false to disable pressing K twice to focus the window
callback = function() require("ufo").closeAllFolds() end max_width = 100,
})
vim.api.nvim_create_autocmd({ 'BufEnter', 'FileType' },
{
pattern = { '*' },
callback = function() require("ufo").openAllFolds() end
}) })
end end
} end,
mode = "n",
desc = "LSP: show documentation / peek folded section",
},
},
config = function()
require("ufo").setup()
vim.api.nvim_create_autocmd({ "BufEnter", "FileType" }, {
pattern = { "*" },
callback = function()
require("ufo").closeAllFolds()
end,
})
vim.api.nvim_create_autocmd({ "BufEnter", "FileType" }, {
pattern = { "*" },
callback = function()
require("ufo").openAllFolds()
end,
})
end,
} }

View File

@@ -0,0 +1,8 @@
return {
-- git blame support
"f-person/git-blame.nvim",
lazy = true,
config = function()
vim.g.gitblame_display_virtual_text = 0
end,
}

View File

@@ -1,7 +1,19 @@
return { return {
{ -- ollama llm integration
"huynle/ogpt.nvim", "huynle/ogpt.nvim",
event = "VeryLazy", dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
"folke/edgy.nvim",
},
keys = {
{
"<leader>ao",
"<cmd>OGPT<CR>",
desc = "OGPT: Toggle chat",
},
},
opts = { opts = {
default_provider = "ollama", default_provider = "ollama",
edgy = true, -- enable this! edgy = true, -- enable this!
@@ -11,129 +23,7 @@ return {
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
api_key = "", api_key = "",
model = "deepseek-r1:7b", model = "deepseek-r1:7b",
}
}
},
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim"
}
},
{
"folke/edgy.nvim",
event = "VeryLazy",
init = function()
vim.opt.laststatus = 3
vim.opt.splitkeep = "screen" -- or "topline" or "screen"
end,
opts = {
exit_when_last = false,
animate = {
enabled = false,
},
wo = {
winbar = true,
winfixwidth = true,
winfixheight = false,
winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
spell = false,
signcolumn = "no",
},
keys = {
-- -- close window
["q"] = function(win)
win:close()
end,
-- close sidebar
["Q"] = function(win)
win.view.edgebar:close()
end,
-- increase width
["<S-Right>"] = function(win)
win:resize("width", 3)
end,
-- decrease width
["<S-Left>"] = function(win)
win:resize("width", -3)
end,
-- increase height
["<S-Up>"] = function(win)
win:resize("height", 3)
end,
-- decrease height
["<S-Down>"] = function(win)
win:resize("height", -3)
end,
},
right = {
{
title = "OGPT Popup",
ft = "ogpt-popup",
size = { width = 0.2 },
wo = {
wrap = true,
},
},
{
title = "OGPT Parameters",
ft = "ogpt-parameters-window",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT Template",
ft = "ogpt-template",
size = { height = 6 },
},
{
title = "OGPT Sessions",
ft = "ogpt-sessions",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT System Input",
ft = "ogpt-system-window",
size = { height = 6 },
},
{
title = "OGPT",
ft = "ogpt-window",
size = { height = 0.5 },
wo = {
wrap = true,
},
},
{
title = "OGPT {{{selection}}}",
ft = "ogpt-selection",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPt {{{instruction}}}",
ft = "ogpt-instruction",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPT Chat",
ft = "ogpt-input",
size = { width = 80, height = 4 },
wo = {
wrap = true,
}, },
}, },
}, },
},
}
} }

View File

@@ -1,10 +0,0 @@
return {
-- rename files in buffer
{
"stevearc/oil.nvim",
---@module 'oil'
---@type oil.setupopts
opts = {},
dependencies = { "nvim-mini/mini.icons" },
},
}

View File

@@ -1,13 +1,19 @@
return { return {
{ -- tree-like outline sidebar
"hedyhli/outline.nvim", "hedyhli/outline.nvim",
keys = {
{
"<F3>",
"<cmd>Outline<CR>",
desc = "CTags: toggle",
},
},
opts = { opts = {
outline_window = { outline_window = {
width = 25 width = 25,
}, },
symbols = { symbols = {
icon_source = 'lspkind', icon_source = "lspkind",
} },
} },
}
} }

View File

@@ -0,0 +1,26 @@
return {
-- translator
"potamides/pantran.nvim",
keys = {
{
"<leader>tr",
"<cmd>Pantran<CR>",
mode = { "n", "v" },
desc = "Pantran: translate",
},
},
opts = {
default_engine = "google",
-- default_engine = "deepl",
engines = {
deepl = {
default_target = "de",
},
google = {
fallback = {
default_target = "de",
},
},
},
},
}

View File

@@ -1,32 +1,18 @@
return { return {
-- support for papis bibliography manager
"jghauser/papis.nvim", "jghauser/papis.nvim",
dependencies = { dependencies = {
"kkharji/sqlite.lua", "kkharji/sqlite.lua",
"MunifTanjim/nui.nvim", "MunifTanjim/nui.nvim",
-- If not already installed, you may also want one of:
"hrsh7th/nvim-cmp", "hrsh7th/nvim-cmp",
-- {
-- "saghen/blink.cmp",
-- config = function()
-- require("blink.cmp").setup({
-- sources = {
-- -- add 'papis' to the list of sources for the yaml filetype
-- per_filetype = {
-- yaml = { "papis" }
-- },
-- }
-- })
-- end,
-- },
-- Choose one of the following two if not already installed:
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
-- "folke/snacks.nvim",
}, },
config = function() lazy = false,
require("papis").setup({ opts = {
-- Your configuration goes here enable_keymaps = false,
enable_keymaps = true, init_filetypes = { "yaml", "tex" }
}) },
config = function(_, opts)
require("papis").setup(opts)
end, end,
} }

View File

@@ -0,0 +1,6 @@
return {
-- integration plugin for platformio
"sbatin/platformio.nvim",
dependencies = { "numToStr/FTerm.nvim" },
cmd = { "PIO" },
}

View File

@@ -1,24 +1,59 @@
return { return {
-- navigate between projects using telescope
"gnikdroy/projections.nvim", "gnikdroy/projections.nvim",
dependencies = { "nvim-telescope/telescope.nvim" },
branch = "pre_release", branch = "pre_release",
config = function() dependencies = {
require("projections").setup({ "nvim-telescope/telescope.nvim",
workspaces = { -- Default workspaces to search for },
keys = {
{
"<leader>fp",
function()
vim.cmd("Telescope projections")
end,
desc = "Telescope: find projects",
},
},
opts = {
workspaces = {
{ "~/code/main", { ".git" } }, { "~/code/main", { ".git" } },
{ "~/code/uni", { ".git" } }, { "~/code/uni", { ".git" } },
}, },
store_hooks = { store_hooks = {
pre = function() pre = function()
-- nvim-tree local ok, api = pcall(require, "nvim-tree.api")
local nvim_tree_present, api = pcall(require, "nvim-tree.api") if ok then
if nvim_tree_present then
api.tree.close() api.tree.close()
end end
end, end,
}, },
},
config = function(_, opts)
local projections = require("projections")
local session = require("projections.session")
projections.setup(opts)
require("telescope").load_extension("projections")
vim.api.nvim_create_autocmd("VimLeavePre", {
callback = function()
session.store(vim.loop.cwd())
end,
}) })
require("telescope").load_extension("projections") vim.api.nvim_create_autocmd("VimEnter", {
callback = function()
if vim.fn.argc() ~= 0 then
return
end
vim.schedule(function()
local session_info = session.info(vim.loop.cwd())
if session_info ~= nil then
session.restore(vim.loop.cwd())
end
end)
end,
desc = "Restore last session automatically",
})
end, end,
} }

View File

@@ -0,0 +1,80 @@
return {
-- quarto support
"quarto-dev/quarto-nvim",
dependencies = {
"jmbuhr/otter.nvim",
"nvim-treesitter/nvim-treesitter",
},
lazy = true, -- load as dependency
keys = {
{
"<leader>rc",
function()
require("quarto.runner").run_cell()
end,
desc = "Quarto: Run cell",
},
{
"<leader>ra",
function()
require("quarto.runner").run_above()
end,
desc = "Quarto: Run cell and above",
},
{
"<leader>rA",
function()
require("quarto.runner").run_all()
end,
desc = "Quarto: Run all cells",
},
{
"<leader>rl",
function()
require("quarto.runner").run_line()
end,
desc = "Quarto: Run line",
},
{
"<leader>rr",
function()
require("quarto.runner").run_range()
end,
desc = "Quarto: Run visual range",
},
{
"<leader>rL",
function()
require("quarto.runner").run_all(true)
end,
desc = "Quarto: Run all cells of all languages",
},
},
opts = {
lspFeatures = {
languages = { "python" },
chunks = "all",
diagnostics = {
enabled = true,
triggers = { "BufWritePost" },
},
completion = {
enabled = true,
},
},
codeRunner = {
enabled = true,
default_method = "molten",
},
},
config = function(_, opts)
local quarto = require("quarto")
quarto.setup(opts)
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
callback = function()
quarto.activate()
end,
})
end,
}

View File

@@ -1,9 +1,16 @@
return { return {
-- improved gui for renaming -- improved gui for renaming
{
"filipdutescu/renamer.nvim", "filipdutescu/renamer.nvim",
branch = "master", branch = "master",
dependencies = { "nvim-lua/plenary.nvim" }, dependencies = { "nvim-lua/plenary.nvim" },
opts = {}, keys = {
{
"<F5>",
function()
require("renamer").rename()
end,
desc = "LSP: rename",
}, },
},
opts = {},
} }

View File

@@ -0,0 +1,21 @@
return {
-- improved display for markdown files
"MeanderingProgrammer/render-markdown.nvim",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-tree/nvim-web-devicons",
},
ft = { "markdown" },
cond = function()
return vim.fn.expand("%:e") ~= "ipynb"
end,
---@module 'render-markdown'
---@type render.md.UserConfig
opts = {
completions = {
lsp = {
enabled = true,
},
},
},
}

View File

@@ -0,0 +1,6 @@
return {
-- color and improve git merge conflicts
"spacedentist/resolve.nvim",
lazy = false,
opts = {},
}

View File

@@ -0,0 +1,6 @@
return {
-- support for rust
"mrcjkb/rustaceanvim",
version = "^6",
lazy = false, -- this plugin is already lazy
}

View File

@@ -1,12 +1,22 @@
return { return {
-- improve spelling check for coding to feature camelcase, etc -- improve spelling check for coding to feature camelcase, etc
"kamykn/spelunker.vim",
dependencies = { "kamykn/popup-menu.nvim" },
keys = {
{ {
'kamykn/spelunker.vim', "<F10>t",
dependencies = { 'kamykn/popup-menu.nvim' }, "<cmd>call spelunker#toggle()<CR>",
desc = "Spelunker: toggle spell check",
},
{
"<F10>s",
"z=",
desc = "Spell: display suggestions",
},
},
config = function() config = function()
-- vim.o.nospell = true -- vim.o.nospell = true
vim.g.enable_spelunker_vim = 0 vim.g.enable_spelunker_vim = 0
vim.g.spelunker_disable_acronym_checking = 1 vim.g.spelunker_disable_acronym_checking = 1
end end,
}
} }

View File

@@ -1,13 +1,9 @@
return { return {
-- colorscheme -- colorscheme
{ "tiyn/tccs.nvim",
'tiyn/tccs.nvim',
lazy = false, lazy = false,
priority = 1000, priority = 1000,
config = function() opts = {
require('tccs').setup({ require("tccs").load(),
require('tccs').load() },
})
end
}
} }

View File

@@ -0,0 +1,6 @@
return {
-- fzf support for telescope
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
lazy = true, -- load as dependency
}

View File

@@ -1,12 +1,32 @@
return { return {
-- fuzzy finder -- fuzzy finder
{ "nvim-telescope/telescope.nvim",
'nvim-telescope/telescope.nvim', version = "*",
version = '0.1.2',
dependencies = { dependencies = {
'nvim-lua/plenary.nvim', "nvim-lua/plenary.nvim",
'archie-judd/telescope-words.nvim' "nvim-telescope/telescope-fzf-native.nvim",
"archie-judd/telescope-words.nvim",
}, },
opts = {} keys = {
} {
"<leader>ff",
"<cmd>Telescope find_files<CR>",
desc = "Telescope: find files",
},
{
"<leader>wd",
function()
require("telescope").extensions.telescope_words.search_dictionary()
end,
desc = "Telescope: search dictionary",
},
{
"<leader>wt",
function()
require("telescope").extensions.telescope_words.search_thesaurus()
end,
desc = "Telescope: search thesaurus",
},
},
opts = {},
} }

View File

@@ -1,10 +1,22 @@
return { return {
-- clean up white spaces and empty lines before writing -- clean up white spaces and empty lines before writing
{
"mcauley-penney/tidy.nvim", "mcauley-penney/tidy.nvim",
branch = "main", branch = "main",
ft = { "markdown", "tex" },
opts = { opts = {
filetype_exclude = { "diff" } filetype_exclude = { "diff" },
} },
} config = function(_, opts)
local tidy = require("tidy")
tidy.setup(opts)
tidy.opts.enabled_on_save = false
vim.api.nvim_create_autocmd("BufLeave", {
pattern = { "*.md", "*.tex" },
callback = function()
if vim.bo.modifiable then
tidy.run()
end
end,
})
end,
} }

View File

@@ -0,0 +1,16 @@
return {
-- display inline diagnostics
"rachartier/tiny-inline-diagnostic.nvim",
lazy = false,
priority = 1000,
opts = {
preset = "classic",
transparent_bg = true,
},
config = function(_, opts)
require("tiny-inline-diagnostic").setup(opts)
vim.diagnostic.config({
virtual_text = false,
})
end,
}

View File

@@ -1,8 +1,8 @@
return { return {
-- todo symbols and highlighting -- todo symbols and highlighting
{ "folke/todo-comments.nvim",
'folke/todo-comments.nvim', dependencies = { "nvim-lua/plenary.nvim" },
dependencies = { 'nvim-lua/plenary.nvim' }, lazy = false,
opts = { opts = {
keywords = { keywords = {
ERRO = { icon = Error_sign, color = "error" }, ERRO = { icon = Error_sign, color = "error" },
@@ -12,11 +12,10 @@ return {
TODO = { icon = Todo_sign, color = "info" }, TODO = { icon = Todo_sign, color = "info" },
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } }, INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
PERF = { icon = Perfect_sign, color = "default" }, PERF = { icon = Perfect_sign, color = "default" },
TEST = { icon = Test_sign, color = "test" } TEST = { icon = Test_sign, color = "test" },
}, },
colors = { colors = {
default = { "Operator" } default = { "Operator" },
} },
} },
}
} }

View File

@@ -0,0 +1,16 @@
return {
-- improves splitting and joining blocks
"Wansmer/treesj",
dependencies = { "nvim-treesitter/nvim-treesitter" },
keys = {
{
"<leader>m",
function()
require("treesj").toggle()
end,
mode = "n",
desc = "Join/split block",
},
},
opts = {},
}

View File

@@ -0,0 +1,54 @@
return {
-- improved movement for code
"aaronik/treewalker.nvim",
keys = {
{
"<leader><C-k>",
"<cmd>Treewalker Up<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-j>",
"<cmd>Treewalker Down<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-h>",
"<cmd>Treewalker Left<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-l>",
"<cmd>Treewalker Right<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-S-k>",
"<cmd>Treewalker SwapUp<CR>",
mode = "n",
silent = true,
},
{
"<leader><C-S-j>",
"<cmd>Treewalker SwapDown<CR>",
mode = "n",
silent = true,
},
{
"<leader><C-S-h>",
"<cmd>Treewalker SwapLeft<CR>",
mode = "n",
silent = true,
},
{
"<leader><C-S-l>",
"<cmd>Treewalker SwapRight<CR>",
mode = "n",
silent = true,
},
},
}

View File

@@ -1,13 +1,14 @@
return { return {
-- list of errors -- list of errors
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
keys = {
{ {
'folke/trouble.nvim', "<F4>",
dependencies = { "<cmd>Trouble diagnostics toggle<CR>",
{ mode = "n",
'nvim-tree/nvim-web-devicons', desc = "LSP: toggle error list",
lazy = true
}
}, },
opts = {} },
} opts = {},
} }

View File

@@ -1,6 +1,12 @@
return { return {
-- tree style undo visualizer -- tree style undo visualizer
"mbbill/undotree",
keys = {
{ {
'mbbill/undotree' "<F1>",
} "<cmd>UndotreeToggle<CR>",
mode = "n",
desc = "Undo tree: toggle",
},
},
} }

View File

@@ -1,8 +1,18 @@
return { return {
-- better substitutions -- better substitutions
"tpope/vim-abolish",
keys = {
{ {
'tpope/vim-abolish', "<leader>sa",
config = function () ":%s//g<Left><Left>",
end mode = "n",
} desc = "Substitute: free form",
},
{
"<leader>ss",
":%s/\\<<C-r><C-w>\\>//g<Left><Left>",
mode = "n",
desc = "Substitute: word under cursor",
},
},
} }

View File

@@ -1,5 +1,5 @@
return { return {
{ -- highlight other occurences of the same word
"RRethy/vim-illuminate" "RRethy/vim-illuminate",
} lazy = false,
} }

View File

@@ -1,10 +1,7 @@
return { return {
-- markdown improvements -- markdown improvements
{ "preservim/vim-markdown",
'preservim/vim-markdown', ft = { "markdown" },
ft = { 'markdown' }, dependencies = { "godlygeek/tabular" },
dependencies = { 'godlygeek/tabular' }, config = function() end, -- needed this way by the plugin
config = function()
end
}
} }

View File

@@ -1,8 +1,7 @@
return { return {
-- highlighting for the viper verification language -- highlighting for the viper verification language
"tiyn/viper.nvim", "tiyn/viper.nvim",
event = { "BufReadPre *.vpr", "FileType viper" }, event = { "BufReadPre", "BufNewFile" },
config = function() pattern = "*.vpr",
require("viper").setup() opts = {},
end,
} }

View File

@@ -1,6 +1,22 @@
return { return {
-- improved keybindings, previewing them -- improved keybindings, previewing them
{
"folke/which-key.nvim", "folke/which-key.nvim",
} lazy = false,
} config = function()
require("which-key").add({
{ mode = "n", "g", desc = "LSP: goto" },
{ mode = "n", "gp", desc = "LSP: preview" },
{ mode = "c", "w", desc = "Write" },
{ mode = "c", "w!", desc = "Write: overwrite" },
{ mode = "n", "<leader>a", desc = "AI" },
{ mode = "n", "<leader>g", desc = "Git" },
{ mode = "n", "<leader>f", desc = "Telescope: find" },
{ mode = "n", "<leader>gd", desc = "Git: diff" },
{ mode = "n", "<leader>s", desc = "Substitute" },
{ mode = "n", "<leader>t", desc = "Terminal" },
{ mode = "n", "<leader>r", desc = "Quarto" },
{ mode = "n", "<C-W>", desc = "Navigation" },
{ mode = "n", "<leader>p", desc = "Lilypond" },
})
end,
}

View File

@@ -1,24 +1,22 @@
return { return {
-- improved wild menu -- improved wild menu
{
"gelguy/wilder.nvim", "gelguy/wilder.nvim",
dependencies = { dependencies = {
{
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
lazy = true,
},
"roxma/nvim-yarp", "roxma/nvim-yarp",
"roxma/vim-hug-neovim-rpc", "roxma/vim-hug-neovim-rpc",
"romgrk/fzy-lua-native", "romgrk/fzy-lua-native",
"nixprime/cpsm", "nixprime/cpsm",
}, },
config = function() lazy = false,
local wilder = require("wilder") opts = {
wilder.setup({
modes = { ":", "/", "?" }, modes = { ":", "/", "?" },
accept_key = "<CR>", accept_key = "<CR>",
reject_key = "<C-e>", reject_key = "<C-e>",
}) },
config = function(_, opts)
local wilder = require("wilder")
wilder.setup(opts)
wilder.set_option("pipeline", { wilder.set_option("pipeline", {
wilder.branch( wilder.branch(
wilder.python_file_finder_pipeline({ wilder.python_file_finder_pipeline({
@@ -65,10 +63,9 @@ return {
"renderer", "renderer",
wilder.popupmenu_renderer({ wilder.popupmenu_renderer({
highlighter = highlighters, highlighter = highlighters,
left = { " ", wilder.popupmenu_devicons() }, -- left = { " ", wilder.popupmenu_devicons() }, -- has problems with mason
right = { " ", wilder.popupmenu_scrollbar() }, right = { " ", wilder.popupmenu_scrollbar() },
}) })
) )
end, end,
},
} }

View File

@@ -1,7 +1,12 @@
return { return {
-- improved movement of windows -- improved movement of windows
{
"sindrets/winshift.nvim", "sindrets/winshift.nvim",
opts = {}, keys = {
{
"<C-W>m",
"<cmd>WinShift<CR>",
desc = "Navigation: enter window shift mode",
}, },
},
opts = {},
} }

View File

@@ -21,7 +21,6 @@ Menu_signs = {
path = "", path = "",
} }
Lsp_signs = { Lsp_signs = {
Array = "", Array = "",
Boolean = "", Boolean = "",
@@ -108,6 +107,7 @@ Lualine_signs = {
} }
vim.diagnostic.config({ vim.diagnostic.config({
virtual_text = false,
severity_sort = true, severity_sort = true,
signs = { signs = {
text = { text = {
@@ -121,7 +121,7 @@ vim.diagnostic.config({
-- enable colorcolumn when textwidth is set -- enable colorcolumn when textwidth is set
vim.o.cursorline = true vim.o.cursorline = true
vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(0, 254), ",+") vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(1, 254), ",+")
-- alternatively highlight only one line for colorcolumn -- alternatively highlight only one line for colorcolumn
-- vim.o.colorcolumn = "-0" -- vim.o.colorcolumn = "-0"

View File

@@ -0,0 +1,136 @@
# Real-time Client config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/client-rt.conf.d/ for system-wide changes or in
# ~/.config/pipewire/client-rt.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
log.level = 0
#default.clock.quantum-limit = 8192
}
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
# Uses realtime scheduling to boost the audio thread priorities
{ name = libpipewire-module-rt
args = {
#rt.prio = 83
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Allows creating devices that run in the context of the
# client. Is used by the session manager.
{ name = libpipewire-module-client-device }
# Makes a factory for wrapping nodes in an adapter with a
# converter and resampler.
{ name = libpipewire-module-adapter }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Provides factories to make session manager objects.
{ name = libpipewire-module-session-manager }
]
filter.properties = {
#node.latency = 1024/48000
}
stream.properties = {
#node.latency = 1024/48000
#node.autoconnect = true
#resample.quality = 4
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150
#channelmix.fc-cutoff = 12000
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#dither.noise = 0
}
stream.rules = [
{ matches = [
{
# all keys must match the value. ! negates. ~ starts regex.
#application.name = "pw-cat"
#node.name = "~Google Chrome$"
}
]
actions = {
update-props = {
#node.latency = 512/48000
}
}
}
]
alsa.properties = {
#alsa.deny = false
# ALSA params take a single value, an array [] of values
# or a range { min=.. max=... }
#alsa.access = [ MMAP_INTERLEAVED MMAP_NONINTERLEAVED RW_INTERLEAVED RW_NONINTERLEAVED ]
#alsa.format = [ FLOAT S32 S24 S24_3 S16 U8 ]
#alsa.rate = { min=1 max=384000 } # or [ 44100 48000 .. ]
#alsa.channels = { min=1 max=64 } # or [ 2 4 6 .. ]
#alsa.period-bytes = { min=128 max=2097152 } # or [ 128 256 1024 .. ]
#alsa.buffer-bytes = { min=256 max=4194304 } # or [ 256 512 4096 .. ]
#alsa.volume-method = cubic # linear, cubic
}
# client specific properties
alsa.rules = [
{ matches = [ { application.process.binary = "resolve" } ]
actions = {
update-props = {
alsa.buffer-bytes = 131072
}
}
}
]

View File

@@ -0,0 +1,86 @@
# Client config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/client.conf.d/ for system-wide changes or in
# ~/.config/pipewire/client.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
log.level = 0
#default.clock.quantum-limit = 8192
}
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Allows creating devices that run in the context of the
# client. Is used by the session manager.
{ name = libpipewire-module-client-device }
# Makes a factory for wrapping nodes in an adapter with a
# converter and resampler.
{ name = libpipewire-module-adapter }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Provides factories to make session manager objects.
{ name = libpipewire-module-session-manager }
]
filter.properties = {
#node.latency = 1024/48000
}
stream.properties = {
#node.latency = 1024/48000
#node.autoconnect = true
#resample.quality = 4
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150
#channelmix.fc-cutoff = 12000
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#dither.noise = 0
}

View File

@@ -0,0 +1,63 @@
# Filter-chain config file for PipeWire version "1.2.7" #
#
# This is a base config file for running filters.
#
# Place filter fragments in /etc/pipewire/filter-chain.conf.d/
# for system-wide changes or in ~/.config/pipewire/filter-chain.conf.d/
# for local changes.
#
# Run the filters with pipewire -c filter-chain.conf
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
log.level = 0
}
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
# Uses realtime scheduling to boost the audio thread priorities
{ name = libpipewire-module-rt
args = {
#rt.prio = 83
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Makes a factory for wrapping nodes in an adapter with a
# converter and resampler.
{ name = libpipewire-module-adapter }
]

139
.config/pipewire/jack.conf Normal file
View File

@@ -0,0 +1,139 @@
# JACK client config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/jack.conf.d/ for system-wide changes or in
# ~/.config/pipewire/jack.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
log.level = 0
#default.clock.quantum-limit = 8192
}
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
support.* = support/libspa-support
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
#
# Boost the data thread priority.
{ name = libpipewire-module-rt
args = {
#rt.prio = 83
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
]
# global properties for all jack clients
jack.properties = {
#node.latency = 1024/48000
#node.rate = 1/48000
#node.quantum = 1024/48000
#node.lock-quantum = true
#node.force-quantum = 0
#jack.show-monitor = true
#jack.merge-monitor = true
#jack.show-midi = true
#jack.short-name = false
#jack.filter-name = false
#jack.filter-char = " "
#
# allow: Don't restrict self connect requests
# fail-external: Fail self connect requests to external ports only
# ignore-external: Ignore self connect requests to external ports only
# fail-all: Fail all self connect requests
# ignore-all: Ignore all self connect requests
#jack.self-connect-mode = allow
#
# allow: Allow connect request of other ports
# fail: Fail connect requests of other ports
# ignore: Ignore connect requests of other ports
#jack.other-connect-mode = allow
#jack.locked-process = true
#jack.default-as-system = false
#jack.fix-midi-events = true
#jack.global-buffer-size = false
#jack.max-client-ports = 768
#jack.fill-aliases = false
#jack.writable-input = true
}
# client specific properties
jack.rules = [
{ matches = [
{
# all keys must match the value. ! negates. ~ starts regex.
#client.name = "Carla"
#application.process.binary = "jack_simple_client"
#application.name = "~jack_simple_client.*"
}
]
actions = {
update-props = {
#node.latency = 512/48000
}
}
}
{ matches = [ { application.process.binary = "jack_bufsize" } ]
actions = {
update-props = {
jack.global-buffer-size = true # quantum set globally using metadata
}
}
}
{ matches = [ { application.process.binary = "qsynth" } ]
actions = {
update-props = {
node.always-process = false # makes qsynth idle
node.pause-on-idle = false # makes audio fade out when idle
node.passive = out # makes the sink and qsynth suspend
}
}
}
{ matches = [ { client.name = "Mixxx" } ]
actions = {
update-props = {
jack.merge-monitor = false
}
}
}
]

View File

@@ -0,0 +1,476 @@
# Simple daemon config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/minimal.conf.d/ for system-wide changes or in
# ~/.config/pipewire/minimal.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#library.name.system = support/libspa-support
#context.data-loop.library.name.system = support/libspa-support
#support.dbus = true
#link.max-buffers = 64
link.max-buffers = 16 # version < 3 clients can't handle more
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
#clock.power-of-two-quantum = true
#log.level = 2
#cpu.zero.denormals = false
core.daemon = true # listening for socket connections
core.name = pipewire-0 # core name and socket name
## Properties for the DSP configuration.
#default.clock.rate = 48000
#default.clock.allowed-rates = [ 48000 ]
#default.clock.quantum = 1024
#default.clock.min-quantum = 32
#default.clock.max-quantum = 2048
#default.clock.quantum-limit = 8192
#default.clock.quantum-floor = 4
#default.video.width = 640
#default.video.height = 480
#default.video.rate.num = 25
#default.video.rate.denom = 1
#
settings.check-quantum = true
settings.check-rate = true
# This config can use udev or hardcoded ALSA devices. Make sure to
# change the alsa device below when disabling udev
minimal.use-udev = true
# Load the pulseaudio emulation daemon
minimal.use-pulse = true
}
context.properties.rules = [
{ matches = [ { cpu.vm.name = !null } ]
actions = {
update-props = {
# These overrides are only applied when running in a vm.
default.clock.min-quantum = 1024
}
}
}
]
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
audio.convert.* = audioconvert/libspa-audioconvert
audio.adapt = audioconvert/libspa-audioconvert
api.alsa.* = alsa/libspa-alsa
support.* = support/libspa-support
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
# Uses realtime scheduling to boost the audio thread priorities. This uses
# RTKit if the user doesn't have permission to use regular realtime
# scheduling.
{ name = libpipewire-module-rt
args = {
nice.level = -11
rt.prio = 88
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# The profile module. Allows application to access profiler
# and performance data. It provides an interface that is used
# by pw-top and pw-profiler.
{ name = libpipewire-module-profiler }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Creates a factory for making nodes that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-node-factory }
{ name = libpipewire-module-spa-device-factory }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# The access module can perform access checks and block
# new clients.
{ name = libpipewire-module-access
args = {
# access.allowed to list an array of paths of allowed
# apps.
#access.allowed = [
# /usr/bin/pipewire-media-session
#]
# An array of rejected paths.
#access.rejected = [ ]
# An array of paths with restricted access.
#access.restricted = [ ]
# Anything not in the above lists gets assigned the
# access.force permission.
#access.force = flatpak
}
}
# Makes a factory for wrapping nodes in an adapter with a
# converter and resampler.
{ name = libpipewire-module-adapter }
# Makes a factory for creating links between ports.
{ name = libpipewire-module-link-factory }
{ name = libpipewire-module-protocol-pulse
condition = [ { minimal.use-pulse = true } ]
}
]
pulse.properties = {
# the addresses this server listens on
server.address = [
"unix:native"
]
}
stream.properties = {
adapter.auto-port-config = { mode = dsp }
}
context.objects = [
#{ factory = <factory-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Creates an object from a PipeWire factory with the given parameters.
# If nofail is given, errors are ignored (and no object is created).
#
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc "Spa:Pod:Object:Param:Props:patternType" = 1 } }
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc } }
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
# Make a default metadata store
{ factory = metadata
args = {
metadata.name = default
# metadata.values = [
# { key = default.audio.sink value = { name = somesink } }
# { key = default.audio.source value = { name = somesource } }
# ]
}
}
# A default dummy driver. This handles nodes marked with the "node.always-process"
# property when no other driver is currently active. JACK clients need this.
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Dummy-Driver
node.group = pipewire.dummy
priority.driver = 20000
}
}
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Freewheel-Driver
priority.driver = 19000
node.group = pipewire.freewheel
node.freewheel = true
#freewheel.wait = 10
}
}
# This creates a ALSA udev device that will enumerate all
# ALSA devices. Because it is using ACP and has the auto-profile
# property set, this will enable a profile and create associated
# nodes, which will be automatically configured to their best
# configuration with the auto-port-config settings.
# Extra node and device params can be given with node.param and
# device.param prefixes.
{ factory = spa-device-factory
args = {
factory.name = api.alsa.enum.udev
alsa.use-acp = true
device.object.properties = {
api.acp.auto-profile = true
api.acp.auto-port = true
device.object.properties = {
node.adapter = audio.adapt
resample.disable = false
adapter.auto-port-config = {
mode = dsp
monitor = false
control = false
position = preserve # unknown, aux
}
#node.param.Props = {
# channelVolumes = [ 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.6 ]
#}
}
#device.param.Profile = {
# #idx = 0
# name = pro-audio
#}
}
}
condition = [ { minimal.use-udev = true } ]
}
# This creates a single PCM source device for the given
# alsa device path hw:0. You can change source to sink
# to make a sink in the same way.
{ factory = adapter
args = {
factory.name = api.alsa.pcm.source
node.name = "system"
node.description = "system"
media.class = "Audio/Source"
api.alsa.path = "hw:4"
#api.alsa.period-size = 0
#api.alsa.period-num = 0
#api.alsa.headroom = 0
#api.alsa.start-delay = 0
#api.alsa.disable-mmap = false
#api.alsa.disable-batch = false
#api.alsa.use-chmap = false
#api.alsa.multirate = true
#latency.internal.rate = 0
#latency.internal.ns = 0
#clock.name = api.alsa.0
node.suspend-on-idle = true
#audio.format = "S32"
#audio.rate = 48000
#audio.allowed-rates = [ ]
#audio.channels = 4
#audio.position = [ FL FR RL RR ]
#resample.quality = 4
resample.disable = true
#monitor.channel-volumes = false
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150
#channelmix.fc-cutoff = 12000
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#channelmix.disable = false
#dither.noise = 0
#node.param.Props = {
# params = [
# audio.channels 6
# ]
#}
adapter.auto-port-config = {
mode = dsp
monitor = false
control = false
position = unknown # aux, preserve
}
#node.param.PortConfig = {
# direction = Output
# mode = dsp
# format = {
# mediaType = audio
# mediaSubtype = raw
# format = F32
# rate = 48000
# channels = 4
# position = [ FL FR RL RR ]
# }
#}
#node.param.Props = {
# channelVolumes = [ 0.5 0.4 0.3 0.5 ]
#}
}
condition = [ { minimal.use-udev = false } ]
}
{ factory = adapter
args = {
factory.name = api.alsa.pcm.sink
node.name = "system"
node.description = "system"
media.class = "Audio/Sink"
api.alsa.path = "hw:4"
#api.alsa.period-size = 0
#api.alsa.period-num = 0
#api.alsa.headroom = 0
#api.alsa.start-delay = 0
#api.alsa.disable-mmap = false
#api.alsa.disable-batch = false
#api.alsa.use-chmap = false
#api.alsa.multirate = true
#latency.internal.rate = 0
#latency.internal.ns = 0
#clock.name = api.alsa.0
node.suspend-on-idle = true
#audio.format = "S32"
#audio.rate = 48000
#audio.allowed-rates = [ ]
#audio.channels = 2
#audio.position = "FL,FR"
#resample.quality = 4
resample.disable = true
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150
#channelmix.fc-cutoff = 12000
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#channelmix.disable = false
#dither.noise = 0
#node.param.Props = {
# params = [
# audio.format S16
# ]
#}
adapter.auto-port-config = {
mode = dsp
monitor = false
control = false
position = unknown # aux, preserve
}
#node.param.PortConfig = {
# direction = Input
# mode = dsp
# monitor = true
# format = {
# mediaType = audio
# mediaSubtype = raw
# format = F32
# rate = 48000
# channels = 4
# }
#}
#node.param.Props = {
# channelVolumes = [ 0.5 0.4 0.3 0.5 ]
#}
}
condition = [ { minimal.use-udev = false } ]
}
# This creates a new Source node. It will have input ports
# that you can link, to provide audio for this source.
#{ factory = adapter
# args = {
# factory.name = support.null-audio-sink
# node.name = "my-mic"
# node.description = "Microphone"
# media.class = "Audio/Source/Virtual"
# audio.position = "FL,FR"
# monitor.passthrough = true
# adapter.auto-port-config = {
# mode = dsp
# monitor = true
# position = preserve # unknown, aux, preserve
# }
# }
#}
# This creates a new link between the source and the virtual
# source ports.
#{ factory = link-factory
# args = {
# link.output.node = system
# link.output.port = capture_1
# link.input.node = my-mic
# link.input.port = input_FL
# }
#}
#{ factory = link-factory
# args = {
# link.output.node = system
# link.output.port = capture_2
# link.input.node = my-mic
# link.input.port = input_FR
# }
#}
]
context.exec = [
#{ path = <program-name>
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Execute the given program with arguments.
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
# It can be interesting to start another daemon here that listens
# on another address with the -a option (eg. -a tcp:4713).
#
##{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
]
node.rules = [
{ matches = [
{
# all keys must match the value. ! negates. ~ starts regex.
#alsa.card_name = "ICUSBAUDIO7D"
#api.alsa.pcm.stream = "playback"
}
]
actions = {
update-props = {
#node.name = "alsa_playback.ICUSBAUDIO7D"
}
}
}
]
device.rules = [
{ matches = [
{
#alsa.card_name = "ICUSBAUDIO7D"
}
]
actions = {
update-props = {
#device.name = "alsa_card.ICUSBAUDIO7D"
#api.acp.auto-profile = false
#api.acp.auto-port = false
#device.param.Profile = {
# #idx = 0
# name = off
#}
}
}
}
]

View File

@@ -0,0 +1,153 @@
# AES67 config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire-aes67.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire-aes67.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
#log.level = 2
#default.clock.quantum-limit = 8192
}
context.spa-libs = {
support.* = support/libspa-support
}
context.objects = [
# An example clock reading from /dev/ptp0. You can also specify the network interface name,
# pipewire will query the interface for the current active PHC index. Another option is to
# sync the ptp clock to CLOCK_TAI and then set clock.id = tai, keep in mind that tai may
# also be synced by a NTP client.
# The precedence is: device, interface, id
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = PTP0-Driver
node.group = pipewire.ptp0
# This driver should only be used for network nodes marked with group
priority.driver = 100000
clock.name = "clock.system.ptp0"
### Please select the PTP hardware clock here
# Interface name is the preferred method of specifying the PHC
clock.interface = "eth0"
#clock.device = "/dev/ptp0"
#clock.id = tai
# Lower this in case of periodic out-of-sync
resync.ms = 1.5
object.export = true
}
}
]
context.modules = [
{ name = libpipewire-module-rt
args = {
nice.level = -11
#rt.prio = 83
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-spa-node-factory }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-rtp-sap
args = {
### Please select the interface here
local.ifname = eth0
sap.ip = 239.255.255.255
sap.port = 9875
net.ttl = 32
net.loop = false
# If you use another PTPv2 daemon supporting management
# messages over a UNIX socket, specify its path here
ptp.management-socket = "/var/run/ptp4lro"
stream.rules = [
{
matches = [
{
rtp.session = "~.*"
}
]
actions = {
create-stream = {
node.virtual = false
media.class = "Audio/Source"
device.api = aes67
# You can adjust the latency buffering here. Use integer values only
sess.latency.msec = 3
node.group = pipewire.ptp0
}
}
},
{
matches = [
{
sess.sap.announce = true
}
]
actions = {
announce-stream = {}
}
}
]
}
},
{ name = libpipewire-module-rtp-sink
args = {
### Please select the interface here
local.ifname = eth0
### If you want to create multiple output streams, please copy the whole
### module-rtp-sink block, but change this multicast IP to another unused
### one keeping 239.69.x.x range unless you know you need another one
destination.ip = 239.69.150.243
destination.port = 5004
net.mtu = 1280
net.ttl = 32
net.loop = false
# These should typically be equal
# You can customize packet length, but 1 ms should work for every device
# Consult receiver documentation to ensure it supports the value you set
sess.min-ptime = 1
sess.max-ptime = 1
### Please change this, especially if you create multiple sinks
sess.name = "PipeWire RTP stream"
sess.media = "audio"
# This property is used if you aren't using ptp4l 4
sess.ts-refclk = "ptp=traceable"
sess.ts-offset = 0
# You can adjust the latency buffering here. Use integer values only
sess.latency.msec = 3
audio.format = "S24BE"
audio.rate = 48000
audio.channels = 2
# These channel names will be visible both to applications and AES67 receivers
node.channel-names = ["CH1", "CH2"]
stream.props = {
### Please change the sink name, this is necessary when you create multiple sinks
node.name = "rtp-sink"
media.class = "Audio/Sink"
node.virtual = false
device.api = aes67
sess.sap.announce = true
node.always-process = true
node.group = pipewire.ptp0
rtp.ntp = 0
rtp.fetch-ts-refclk = true
}
}
},
]

View File

@@ -0,0 +1,80 @@
# PulseAudio config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
#log.level = 2
#default.clock.quantum-limit = 8192
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rt
args = {
nice.level = -11
#rt.prio = 83
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-avb
args = {
# contents of avb.properties can also be placed here
# to have config per server.
}
}
]
# Extra modules can be loaded here. Setup in default.pa can be moved here
context.exec = [
#{ path = "pactl" args = "load-module module-always-sink" }
]
stream.properties = {
#node.latency = 1024/48000
#node.autoconnect = true
#resample.quality = 4
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.lfe-cutoff = 120
#channelmix.fc-cutoff = 6000
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.1
#channelmix.hilbert-taps = 0
}
avb.properties = {
# the addresses this server listens on
#ifname = "eth0.2"
ifname = "enp3s0"
}
avb.properties.rules = [
{ matches = [ { cpu.vm.name = !null } ]
actions = {
update-props = {
# These overrides are only applied when running in a vm.
}
}
}
]

View File

@@ -0,0 +1,180 @@
# PulseAudio config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
#log.level = 2
#default.clock.quantum-limit = 8192
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rt
args = {
nice.level = -11
#rt.prio = 83
#rt.time.soft = -1
#rt.time.hard = -1
#uclamp.min = 0
#uclamp.max = 1024
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-metadata }
{ name = libpipewire-module-protocol-pulse
args = {
# contents of pulse.properties can also be placed here
# to have config per server.
}
}
]
# Extra scripts can be started here. Setup in default.pa can be moved in
# a script or in pulse.cmd below
context.exec = [
#{ path = "pactl" args = "load-module module-always-sink" }
#{ path = "pactl" args = "upload-sample my-sample.wav my-sample" }
#{ path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" }
]
# Extra commands can be executed here.
# load-module : loads a module with args and flags
# args = "<module-name> <module-args>"
# ( flags = [ nofail ] )
pulse.cmd = [
{ cmd = "load-module" args = "module-always-sink" flags = [ ] }
{ cmd = "load-module" args = "module-device-manager" flags = [ ] }
{ cmd = "load-module" args = "module-device-restore" flags = [ ] }
{ cmd = "load-module" args = "module-stream-restore" flags = [ ] }
#{ cmd = "load-module" args = "module-switch-on-connect" }
#{ cmd = "load-module" args = "module-gsettings" flags = [ nofail ] }
]
stream.properties = {
#node.latency = 1024/48000
#node.autoconnect = true
#resample.quality = 4
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150
#channelmix.fc-cutoff = 12000
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#dither.noise = 0
}
pulse.properties = {
# the addresses this server listens on
server.address = [
"unix:native"
#"unix:/tmp/something" # absolute paths may be used
#"tcp:4713" # IPv4 and IPv6 on all addresses
#"tcp:[::]:9999" # IPv6 on all addresses
#"tcp:127.0.0.1:8888" # IPv4 on a single address
#
#{ address = "tcp:4713" # address
# max-clients = 64 # maximum number of clients
# listen-backlog = 32 # backlog in the server listen queue
# client.access = "restricted" # permissions for clients
#}
]
#server.dbus-name = "org.pulseaudio.Server"
#pulse.allow-module-loading = true
#pulse.min.req = 128/48000 # 2.7ms
#pulse.default.req = 960/48000 # 20 milliseconds
#pulse.min.frag = 128/48000 # 2.7ms
#pulse.default.frag = 96000/48000 # 2 seconds
#pulse.default.tlength = 96000/48000 # 2 seconds
#pulse.min.quantum = 128/48000 # 2.7ms
#pulse.idle.timeout = 0 # don't pause after underruns
#pulse.default.format = F32
#pulse.default.position = [ FL FR ]
}
pulse.properties.rules = [
{ matches = [ { cpu.vm.name = !null } ]
actions = {
update-props = {
# These overrides are only applied when running in a vm.
pulse.min.quantum = 1024/48000 # 22ms
}
}
}
]
# client/stream specific properties
pulse.rules = [
{
matches = [
{
# all keys must match the value. ! negates. ~ starts regex.
#client.name = "Firefox"
#application.process.binary = "teams"
#application.name = "~speech-dispatcher.*"
}
]
actions = {
update-props = {
#node.latency = 512/48000
}
# Possible quirks:"
# force-s16-info forces sink and source info as S16 format
# remove-capture-dont-move removes the capture DONT_MOVE flag
# block-source-volume blocks updates to source volume
# block-sink-volume blocks updates to sink volume
#quirks = [ ]
}
}
{
# skype does not want to use devices that don't have an S16 sample format.
matches = [
{ application.process.binary = "teams" }
{ application.process.binary = "teams-insiders" }
{ application.process.binary = "skypeforlinux" }
]
actions = { quirks = [ force-s16-info ] }
}
{
# firefox marks the capture streams as don't move and then they
# can't be moved with pavucontrol or other tools.
matches = [ { application.process.binary = "firefox" } ]
actions = { quirks = [ remove-capture-dont-move ] }
}
{
# speech dispatcher asks for too small latency and then underruns.
matches = [ { application.name = "~speech-dispatcher.*" } ]
actions = {
update-props = {
pulse.min.req = 512/48000 # 10.6ms
pulse.min.quantum = 512/48000 # 10.6ms
pulse.idle.timeout = 5 # pause after 5 seconds of underrun
}
}
}
#{
# matches = [ { application.process.binary = "Discord" } ]
# actions = { quirks = [ block-source-volume ] }
#}
]

View File

@@ -0,0 +1,344 @@
# Daemon config file for PipeWire version "1.2.7" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#library.name.system = support/libspa-support
#context.data-loop.library.name.system = support/libspa-support
#support.dbus = true
#link.max-buffers = 64
link.max-buffers = 16 # version < 3 clients can't handle more
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
#clock.power-of-two-quantum = true
#log.level = 2
#cpu.zero.denormals = false
#loop.rt-prio = -1 # -1 = use module-rt prio, 0 disable rt
#loop.class = data.rt
#thread.affinity = [ 0 1 ] # optional array of CPUs
#context.num-data-loops = 1 # -1 = num-cpus, 0 = no data loops
#
#context.data-loops = [
# { loop.rt-prio = -1
# loop.class = [ data.rt audio.rt ]
# #library.name.system = support/libspa-support
# thread.name = data-loop.0
# #thread.affinity = [ 0 1 ] # optional array of CPUs
# }
#]
core.daemon = true # listening for socket connections
core.name = pipewire-0 # core name and socket name
## Properties for the DSP configuration.
#default.clock.rate = 48000
default.clock.allowed-rates = [ 44100 48000 ] # This is not default because: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#setting-global-sample-rate
#default.clock.quantum = 1024
#default.clock.min-quantum = 32
#default.clock.max-quantum = 2048
#default.clock.quantum-limit = 8192
#default.clock.quantum-floor = 4
#default.video.width = 640
#default.video.height = 480
#default.video.rate.num = 25
#default.video.rate.denom = 1
#
#settings.check-quantum = false
#settings.check-rate = false
# keys checked below to disable module loading
module.x11.bell = true
# enables autoloading of access module, when disabled an alternative
# access module needs to be loaded.
module.access = true
# enables autoloading of module-jackdbus-detect
module.jackdbus-detect = true
}
context.properties.rules = [
{ matches = [ { cpu.vm.name = !null } ]
actions = {
update-props = {
# These overrides are only applied when running in a vm.
default.clock.min-quantum = 1024
}
}
}
]
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
audio.convert.* = audioconvert/libspa-audioconvert
avb.* = avb/libspa-avb
api.alsa.* = alsa/libspa-alsa
api.v4l2.* = v4l2/libspa-v4l2
api.libcamera.* = libcamera/libspa-libcamera
api.bluez5.* = bluez5/libspa-bluez5
api.vulkan.* = vulkan/libspa-vulkan
api.jack.* = jack/libspa-jack
support.* = support/libspa-support
video.convert.* = videoconvert/libspa-videoconvert
#videotestsrc = videotestsrc/libspa-videotestsrc
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
# If condition is given, the module is loaded only when the context
# properties all match the match rules.
#
# Uses realtime scheduling to boost the audio thread priorities. This uses
# RTKit if the user doesn't have permission to use regular realtime
# scheduling. You can also clamp utilisation values to improve scheduling
# on embedded and heterogeneous systems, e.g. Arm big.LITTLE devices.
{ name = libpipewire-module-rt
args = {
nice.level = -11
rt.prio = 88
#rt.time.soft = -1
#rt.time.hard = -1
#uclamp.min = 0
#uclamp.max = 1024
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native
args = {
# List of server Unix sockets, and optionally permissions
#sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" } ]
}
}
# The profile module. Allows application to access profiler
# and performance data. It provides an interface that is used
# by pw-top and pw-profiler.
{ name = libpipewire-module-profiler }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Creates a factory for making devices that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-device-factory }
# Creates a factory for making nodes that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-node-factory }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Allows creating devices that run in the context of the
# client. Is used by the session manager.
{ name = libpipewire-module-client-device }
# The portal module monitors the PID of the portal process
# and tags connections with the same PID as portal
# connections.
{ name = libpipewire-module-portal
flags = [ ifexists nofail ]
}
# The access module can perform access checks and block
# new clients.
{ name = libpipewire-module-access
args = {
# Socket-specific access permissions
#access.socket = { pipewire-0 = "default", pipewire-0-manager = "unrestricted" }
# Deprecated legacy mode (not socket-based),
# for now enabled by default if access.socket is not specified
#access.legacy = true
}
condition = [ { module.access = true } ]
}
# Makes a factory for wrapping nodes in an adapter with a
# converter and resampler.
{ name = libpipewire-module-adapter }
# Makes a factory for creating links between ports.
{ name = libpipewire-module-link-factory }
# Provides factories to make session manager objects.
{ name = libpipewire-module-session-manager }
# Use libcanberra to play X11 Bell
{ name = libpipewire-module-x11-bell
args = {
#sink.name = "@DEFAULT_SINK@"
#sample.name = "bell-window-system"
#x11.display = null
#x11.xauthority = null
}
flags = [ ifexists nofail ]
condition = [ { module.x11.bell = true } ]
}
{ name = libpipewire-module-jackdbus-detect
args = {
#jack.library = libjack.so.0
#jack.server = null
#jack.client-name = PipeWire
#jack.connect = true
#tunnel.mode = duplex # source|sink|duplex
source.props = {
#audio.channels = 2
#midi.ports = 1
#audio.position = [ FL FR ]
# extra sink properties
}
sink.props = {
#audio.channels = 2
#midi.ports = 1
#audio.position = [ FL FR ]
# extra sink properties
}
}
flags = [ ifexists nofail ]
condition = [ { module.jackdbus-detect = true } ]
}
]
context.objects = [
#{ factory = <factory-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Creates an object from a PipeWire factory with the given parameters.
# If nofail is given, errors are ignored (and no object is created).
# If condition is given, the object is created only when the context properties
# all match the match rules.
#
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc "Spa:Pod:Object:Param:Props:patternType" = 1 } }
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc } }
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
# A default dummy driver. This handles nodes marked with the "node.always-process"
# property when no other driver is currently active. JACK clients need this.
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Dummy-Driver
node.group = pipewire.dummy
node.sync-group = sync.dummy
priority.driver = 200000
#clock.id = monotonic # realtime | tai | monotonic-raw | boottime
#clock.name = "clock.system.monotonic"
}
}
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Freewheel-Driver
priority.driver = 190000
node.group = pipewire.freewheel
node.sync-group = sync.dummy
node.freewheel = true
#freewheel.wait = 10
}
}
# This creates a new Source node. It will have input ports
# that you can link, to provide audio for this source.
#{ factory = adapter
# args = {
# factory.name = support.null-audio-sink
# node.name = "my-mic"
# node.description = "Microphone"
# media.class = "Audio/Source/Virtual"
# audio.position = "FL,FR"
# monitor.passthrough = true
# }
#}
# This creates a single PCM source device for the given
# alsa device path hw:0. You can change source to sink
# to make a sink in the same way.
#{ factory = adapter
# args = {
# factory.name = api.alsa.pcm.source
# node.name = "alsa-source"
# node.description = "PCM Source"
# media.class = "Audio/Source"
# api.alsa.path = "hw:0"
# api.alsa.period-size = 1024
# api.alsa.headroom = 0
# api.alsa.disable-mmap = false
# api.alsa.disable-batch = false
# audio.format = "S16LE"
# audio.rate = 48000
# audio.channels = 2
# audio.position = "FL,FR"
# }
#}
# Use the metadata factory to create metadata and some default values.
#{ factory = metadata
# args = {
# metadata.name = my-metadata
# metadata.values = [
# { key = default.audio.sink value = { name = somesink } }
# { key = default.audio.source value = { name = somesource } }
# ]
# }
#}
]
context.exec = [
#{ path = <program-name>
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Execute the given program with arguments.
# If condition is given, the program is executed only when the context
# properties all match the match rules.
#
# You can optionally start the session manager here,
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
#{ path = "/usr/bin/pipewire-media-session" args = ""
# condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
# It can be interesting to start another daemon here that listens
# on another address with the -a option (eg. -a tcp:4713).
#
#{ path = "/usr/bin/pipewire" args = [ "-c" "pipewire-pulse.conf" ]
# condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
]

Some files were not shown because too many files have changed in this diff Show More