1
0
mirror of https://github.com/tiyn/dotfiles.git synced 2026-05-01 10:01: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
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
alias wget="wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"
alias wget2c="aria2c"

View File

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

View File

@@ -26,6 +26,9 @@ x-scheme-handler/tonsite=org.telegram.desktop.desktop
inode/directory=file-browser.desktop
x-scheme-handler/betterdiscord=discord.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]
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;

View File

@@ -1,7 +1,8 @@
vim.api.nvim_create_autocmd({ 'VimLeave' },
{
callback = function() os.execute('cclear') end
})
vim.api.nvim_create_autocmd({ "VimLeave" }, {
callback = function()
os.execute("cclear")
end,
})
vim.o.shiftwidth = 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

View File

@@ -1,41 +1,15 @@
vim.api.nvim_create_autocmd({ 'VimEnter' },
{
callback = function()
require("tidy").opts.enabled_on_save = false
end
})
vim.api.nvim_create_autocmd({ "BufEnter" }, {
callback = function()
vim.o.foldenable = false
end,
})
vim.api.nvim_create_autocmd({ 'BufEnter' },
{
callback = function()
vim.o.foldenable = false
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('mdclear ' .. vim.fn.expand('%'))
end
})
vim.api.nvim_create_autocmd({ "VimLeave" }, {
callback = function()
os.execute("mdclear " .. vim.fn.expand("%"))
end,
})
vim.o.shiftwidth = 2
vim.o.softtabstop = 2
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' },
{
callback = function()
require("tidy").opts.enabled_on_save = false
require("knap").toggle_autopreviewing()
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.api.nvim_create_autocmd({ "VimLeave" }, {
callback = function()
os.execute("texclear " .. vim.fn.expand("%"))
end,
})
vim.o.shiftwidth = 2
vim.o.softtabstop = 2
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.textwidth = 80
-- set session options
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
-- read files correctly
vim.filetype.add({
extension = {

View File

@@ -1,85 +1,100 @@
{
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
"agentic.nvim": { "branch": "main", "commit": "3e6175c1141cc3cb5cc08e98bff01b06a0a67467" },
"auto-session": { "branch": "main", "commit": "62437532b38495551410b3f377bcf4aaac574ebe" },
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
"blink.download": { "branch": "main", "commit": "86361b98f3c8317904a08e3bd12cf3cdcbe3e925" },
"blink.pairs": { "branch": "main", "commit": "d8bf802cca951f0a3b72ddeed21bc5a1d5353f65" },
"blink.download": { "branch": "main", "commit": "dda2666685a5ac3598166577d2e34f1fff6b1637" },
"blink.pairs": { "branch": "main", "commit": "4e43012356d33a26f69eae475f746fbe9f325f44" },
"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-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"conform.nvim": { "branch": "master", "commit": "fbcb4fa7f34bfea9be702ffff481a8e336ebf6ed" },
"cpsm": { "branch": "master", "commit": "1a5fc1b6169bb80c29b0b986130c4f3f1a9ed82e" },
"csvview.nvim": { "branch": "main", "commit": "bbab4c2f808fd8e11ec8dfdd128251aadba566a1" },
"conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
"cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" },
"csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" },
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" },
"file-renamer.nvim": { "branch": "master", "commit": "da78d496ffb3dd55a4c70b4a9c28686630a57d3a" },
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
"git-blame.nvim": { "branch": "master", "commit": "9874ec1ec8bc53beb33b7cd82c092b85271a578b" },
"gitsigns.nvim": { "branch": "main", "commit": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197" },
"goto-preview": { "branch": "main", "commit": "cf561d10b4b104db20375c48b86cf36af9f96e00" },
"image.nvim": { "branch": "master", "commit": "446a8a5cc7a3eae3185ee0c697732c32a5547a0b" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"git-blame.nvim": { "branch": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
"gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
"goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
"image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
"lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" },
"leap.nvim": { "branch": "main", "commit": "f5fe479e20d809df7b54ad53142c2bdb0624c62a" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"leap.nvim": { "branch": "main", "commit": "e7ca7b92f996bcbc34beee8b244ea5ef6692b478" },
"logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
"lsp_signature.nvim": { "branch": "master", "commit": "b58cca003d1d3311213d6db0352f58d8e57bfff0" },
"lspkind-nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"luasnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "6bdb14f230de0904229ec367b410fb817e59b072" },
"mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" },
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
"mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" },
"modes.nvim": { "branch": "main", "commit": "0932ba4e0bdc3457ac89a8aeed4d56ca0b36977a" },
"lsp_signature.nvim": { "branch": "master", "commit": "a65b38f260cc3470a05b4afb84c8d868617d476d" },
"lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
"lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" },
"luasnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" },
"mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" },
"mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" },
"modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" },
"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" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
"nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
"nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
"nvim-hlslens": { "branch": "main", "commit": "6d42444785ea0d41555d033485910c5e78916f3b" },
"nvim-lspconfig": { "branch": "master", "commit": "cc2f5f2fa28d240574808e78847978ed6ef20d2a" },
"nvim-navic": { "branch": "master", "commit": "f887d794a0f4594882814d7780980a949200a238" },
"nvim-scrollbar": { "branch": "main", "commit": "5b103ef0fd2e8b9b4be3878ed38d224522192c6c" },
"nvim-surround": { "branch": "main", "commit": "a868c256c861044beb9794b4dd126480dcdfbdad" },
"nvim-tree.lua": { "branch": "master", "commit": "e397756d2a79d74314ea4cd3efc41300e91c0ff0" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
"nvim-ufo": { "branch": "main", "commit": "72d54c31079d38d8dfc5456131b1d0fb5c0264b0" },
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" },
"nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
"nvim-lilypond-suite": { "branch": "main", "commit": "e57ced9e0df33773566af795d70919d577c58ce2" },
"nvim-lspconfig": { "branch": "master", "commit": "bf5abe69c1874531f359a822d0cff4d73e26113f" },
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
"nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" },
"nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
"nvim-tree.lua": { "branch": "master", "commit": "24cfcc94372e526fd9e1c2803ede9e0f1715e33f" },
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
"nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
"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" },
"ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" },
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
"otter.nvim": { "branch": "main", "commit": "fc0aa35b1985077d11a20ddf4006bf40f2cd7397" },
"outline.nvim": { "branch": "main", "commit": "6b62f73a6bf317531d15a7ae1b724e85485d8148" },
"otter.nvim": { "branch": "main", "commit": "a455e68a99d395889ab30a25ac3846a135e93c46" },
"outline.nvim": { "branch": "main", "commit": "c293eb56db880a0539bf9d85b4a27816960b863e" },
"pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" },
"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" },
"projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"quarto-nvim": { "branch": "main", "commit": "0e9491509b38efbd83d3f41dbfacc7fc4bd40191" },
"rustaceanvim": { "branch": "master", "commit": "12504405821c05874d2d1f6b5ec919f9808e2c99" },
"quarto-nvim": { "branch": "main", "commit": "17f1e5d664bc615478230dc0240666329efacf9b" },
"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" },
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
"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.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" },
"tidy.nvim": { "branch": "main", "commit": "c8cd0e6e0108da25c3e10c3f33d8c03b3d8806f1" },
"todo-comments.nvim": { "branch": "main", "commit": "19d461ddd543e938eb22505fb03fa878800270b6" },
"trouble.nvim": { "branch": "main", "commit": "c098362fe603d3922095e7db595961e020bdf2d0" },
"undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" },
"telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
"tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "147af4e49f51dd48f41972de26552872b8ba7b25" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"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-hug-neovim-rpc": { "branch": "master", "commit": "93ae38792bc197c3bdffa2716ae493c67a5e7957" },
"vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" },
"vim-markdown": { "branch": "master", "commit": "8f6cb3a6ca4e3b6bcda0730145a0b700f3481b51" },
"vim-renamer": { "branch": "master", "commit": "9c6346eb4556cf2d8ca55de6969247ab14fe2383" },
"viper.nvim": { "branch": "master", "commit": "4f406ae891113fc1bfda308052c835a185188670" },
"which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" },
"vim-markdown": { "branch": "master", "commit": "1bc9d0cd8e1cc3e901b0a49c2b50a843f1c89397" },
"viper.nvim": { "branch": "master", "commit": "738bf63d98aca63d7def93181eb16d648a6c0edb" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
"wilder.nvim": { "branch": "master", "commit": "679f348dc90d80ff9ba0e7c470c40a4d038dcecf" },
"winshift.nvim": { "branch": "main", "commit": "37468ed6f385dfb50402368669766504c0e15583" }
}

View File

@@ -1,121 +1,6 @@
-- highlighting yanked regions
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank({higroup="YankHighlight"})
vim.highlight.on_yank({ higroup = "YankHighlight" })
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_files = {
["de-DE"] = {"dictionary_de-de.txt", "dictionary_names.txt"},
["en-US"] = {"dictionary_en-us.txt", "dictionary_names.txt"},
["de-DE"] = { "dictionary_de-de.txt", "dictionary_names.txt" },
["en-US"] = { "dictionary_en-us.txt", "dictionary_names.txt" },
}
function GetDictFiles(lang)
@@ -35,8 +35,8 @@ function ReadFiles(lang)
return dict
end
for k,v in pairs(Dictionary_files) do
for a,b in pairs(v) do
for k, v in pairs(Dictionary_files) do
for a, b in pairs(v) do
Dictionary_files[k][a] = dictionary_base .. b
end
end

View File

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

View File

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

View File

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

View File

@@ -1,119 +1,42 @@
-- setup keymap function
local wk = require("which-key")
local telescope = require("telescope")
local lazygit = require("FTerm"):new({ cmd = "lazygit" })
-- unmap unwanted commands
vim.keymap.set("n", "Zt", "<NOP>", { noremap = true })
vim.keymap.set("n", "ZT", "<NOP>", { noremap = true })
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({
-- setup keymap groups
{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"},
-- unmap unwanted commands
{mode = "n", "Zt", "<NOP>", noremap = true},
{mode = "n", "ZT", "<NOP>", noremap = true},
{mode = "n", "<Space>", "<NOP>", noremap = true},
{mode = "n", "<F1>", "<NOP>", noremap = true},
{mode = "n", "<F2>", "<NOP>", noremap = true},
{mode = "n", "<F3>", "<NOP>", noremap = true},
{mode = "n", "<F4>", "<NOP>", noremap = true},
{mode = "n", "<F5>", "<NOP>", noremap = true},
{mode = "n", "<F6>", "<NOP>", 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},
-- shortcuts for quitting
vim.keymap.set("n", "ZA", ":xa<CR>", { desc = "Exit: write and quit all buffers", noremap = true })
vim.keymap.set("n", "ZQ", ":conf q<CR>", { desc = "Exit: quit current buffer", noremap = true })
vim.keymap.set("n", "ZZ", ":x<CR>", { desc = "Exit: write and quit current buffer", noremap = true })
-- shortcut for split navigation
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Navigation: go to left window", noremap = true })
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Navigation: go to lower window", noremap = true })
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Navigation: go to upper window", noremap = true })
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Navigation: go to right window", noremap = true })
-- remap for dealing with word wrap
vim.keymap.set("n", "j", "gj", { desc = "Navigation: go down in wrapped lines", silent = true })
vim.keymap.set("n", "k", "gk", { desc = "Navigation: go up in wrapped lines", silent = true })
-- compiler for languages
vim.keymap.set("n", "<leader>c", ":w! | !compiler <c-r>%<CR>", {
desc = "Compile: current file",
noremap = true,
})
vim.keymap.set("n", "w!!", 'execute "silent! write !sudo tee % >/dev/null" <bar> edit!', {
desc = "Write: overwrite file over with sudo",
noremap = true,
})

View File

@@ -12,14 +12,15 @@ if not vim.loop.fs_stat(lazypath) then
end
vim.opt.rtp:prepend(lazypath)
return require("lazy").setup({
return require("lazy").setup(
{
-- import plugins from the plugins directory
{ import = 'plugins' },
{ import = "plugins" },
},
-- lazy.nvim configuration
{
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,16 +1,16 @@
return {
{
"utilyre/barbecue.nvim",
name = "barbecue",
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency
-- vs code like topbar
"utilyre/barbecue.nvim",
name = "barbecue",
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency
},
lazy = false,
opts = {
theme = {
normal = { bg = "#272727" },
},
opts = {
theme = {
normal = { bg = "#272727" },
}
},
}
},
}

View File

@@ -1,10 +1,9 @@
return {
-- rainbow and auto-pairs for parenthesis
"saghen/blink.pairs",
version = "*", -- (recommended) only required with prebuilt binaries
-- download prebuilt binaries from github releases
dependencies = "saghen/blink.download",
dependencies = { "saghen/blink.download" }, -- download prebuilt binaries from github releases
lazy = false,
--- @module 'blink.pairs'
--- @type blink.pairs.Config
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 {
-- commenting improvements
{
'numtostr/comment.nvim',
opts = {}
}
"numtostr/comment.nvim",
lazy = false,
opts = {},
}

View File

@@ -1,20 +1,25 @@
return {
-- improved refactoring
{
"stevearc/conform.nvim",
config = function()
require("conform").setup({
formatters_by_ft = {
lua = { "stylua" },
markdown = { "mdformat" },
python = { "isort", "yapf" },
sh = { "shfmt" },
bash = { "shfmt" },
zsh = { "shfmt" },
tex = { "latexindent" },
yaml = { "yamlfmt" },
},
})
end,
"stevearc/conform.nvim",
keys = {
{
"<F8>",
function()
require("conform").format({ async = true, lsp_fallback = true })
end,
desc = "LSP: format",
},
},
opts = {
formatters_by_ft = {
lua = { "stylua" },
markdown = { "mdformat" },
python = { "isort", "yapf" },
sh = { "shfmt" },
bash = { "shfmt" },
zsh = { "shfmt" },
tex = { "latexindent" },
yaml = { "yamlfmt" },
},
},
}

View File

@@ -1,17 +1,21 @@
return {
{
"hat0uma/csvview.nvim",
opts = {
parser = { comments = { "#", "//" } },
keymaps = {
textobject_field_inner = { "if", mode = { "o", "x" } },
textobject_field_outer = { "af", mode = { "o", "x" } },
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
jump_next_row = { "<Enter>", mode = { "n", "v" } },
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
},
-- improved csv handling
"hat0uma/csvview.nvim",
ft = { "csv" },
opts = {
parser = { comments = { "#", "//" } },
keymaps = {
textobject_field_inner = { "if", mode = { "o", "x" } },
textobject_field_outer = { "af", mode = { "o", "x" } },
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
jump_next_row = { "<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 {
-- side by side git diffs for merge conflicts
{
'sindrets/diffview.nvim',
opts = {}
}
-- side by side git diff mode coloring
"sindrets/diffview.nvim",
keys = {
{
"<leader>gdo",
"<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 {
-- floating terminal to toggle
{
'numtostr/fterm.nvim',
opts = {}
}
"numtostr/fterm.nvim",
keys = {
{
"<leader>tt",
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 {
-- display git status per line
{
'lewis6991/gitsigns.nvim',
opts = {}
}
"lewis6991/gitsigns.nvim",
lazy = true, -- load as dependency
opts = {},
}

View File

@@ -1,7 +1,62 @@
return {
-- preview definitions using floating windows
"rmagatti/goto-preview",
dependencies = 'rmagatti/logger.nvim',
config = function()
require("goto-preview").setup({})
end,
dependencies = { "rmagatti/logger.nvim" },
keys = {
{
"gpd",
function()
require("goto-preview").goto_preview_definition()
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 {
-- show indentation lines
{
'lukas-reineke/indent-blankline.nvim',
event = "BufReadPre",
main = "ibl",
opts = {}
}
"lukas-reineke/indent-blankline.nvim",
lazy = false,
main = "ibl",
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,55 +1,66 @@
return {
{
'frabjous/knap',
ft = { 'tex' },
config = function()
local function detect_engine()
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
if first_line:match("^%%%s*xelatex") then
return "xelatex"
else
return "pdflatex"
end
"frabjous/knap",
ft = { "tex", "markdown" },
keys = {
{
"<leader>p",
function() require("knap").toggle_autopreviewing() end,
desc = "Knap: toggle autopreview",
},
},
config = function()
local knap = require("knap")
local function detect_engine()
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
if first_line:match("^%%%s*xelatex") then
return "xelatex"
else
return "pdflatex"
end
local function set_engine()
local engine = detect_engine()
if engine == "xelatex" then
vim.g.knap_settings.textopdf =
"xelatex -synctex=1 -interaction=batchmode %docroot%"
else
vim.g.knap_settings.textopdf =
"pdflatex -synctex=1 -interaction=batchmode %docroot%"
end
end
vim.g.knap_settings = {
delay = 100,
texoutputext = "pdf",
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
textopdfviewerlaunch =
"zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
textopdfviewerrefresh = "reload",
textopdfforwardjump =
"zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
}
vim.api.nvim_create_autocmd("User", {
pattern = "KnapShowView",
callback = set_engine
})
vim.api.nvim_create_autocmd("User", {
pattern = "KnapCompile",
callback = set_engine
})
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.tex",
callback = set_engine
})
end
}
local function set_engine()
local engine = detect_engine()
if engine == "xelatex" then
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
else
vim.g.knap_settings.textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%"
end
end
vim.g.knap_settings = {
delay = 100,
texoutputext = "pdf",
-- textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%",
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
textopdfviewerrefresh = "reload",
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
}
vim.api.nvim_create_autocmd("User", {
pattern = "KnapShowView",
callback = set_engine,
})
vim.api.nvim_create_autocmd("User", {
pattern = "KnapCompile",
callback = set_engine,
})
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.tex",
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,
}

View File

@@ -1,15 +1,33 @@
return {
-- improved movement
{
"ggandor/leap.nvim",
config = function()
require("leap").opts.highlight_unlabeled_phase_one_targets = true
require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" }
require("leap").opts.special_keys.prev_target = "<backspace>"
require("leap").opts.special_keys.prev_group = "<backspace>"
require("leap.user").set_repeat_keys("<enter>", "<backspace>")
require("leap").opts.safe_labels = "sfnut/SFNLHMUGTZ?"
require("leap").opts.labels = "sfnjklhodweimbuyvrgtaqpcxz/SFNJKLHODWEIMBUYVRGTAQPCXZ?"
end,
"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()
require("leap").opts.highlight_unlabeled_phase_one_targets = true
require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" }
require("leap").opts.special_keys.prev_target = "<backspace>"
require("leap").opts.special_keys.prev_group = "<backspace>"
require("leap.user").set_repeat_keys("<enter>", "<backspace>")
require("leap").opts.safe_labels = "sfnut/SFNLHMUGTZ?"
require("leap").opts.labels = "sfnjklhodweimbuyvrgtaqpcxz/SFNJKLHODWEIMBUYVRGTAQPCXZ?"
end,
}

View File

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

View File

@@ -1,82 +1,65 @@
return {
-- statusline
{
"nvim-lualine/lualine.nvim",
dependencies = {
{
"nvim-tree/nvim-web-devicons",
lazy = true,
},
{
"f-person/git-blame.nvim",
config = function()
vim.g.gitblame_display_virtual_text = 0
end,
},
{ "tiyn/tccs.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" },
},
})
end,
"nvim-lualine/lualine.nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
"tiyn/tccs.nvim",
"f-person/git-blame.nvim",
"tiyn/action-hints.nvim",
},
lazy = false,
opts = {
options = {
globalstatus = true,
symbols = {
error = Error_sign,
warn = Warn_sign,
hint = Hint_sign,
info = Info_sign,
},
theme = "tccs",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
},
config = function()
require("lualine").setup({
options = {
globalstatus = true,
sections = {
lualine_b = {
{
function()
return require("gitblame").get_current_blame_text()
end,
cond = function()
return require("gitblame").is_blame_text_available()
end,
},
},
lualine_c = {},
lualine_x = {
function()
return require("action-hints").statusline()
end,
"encoding",
"fileformat",
{
"filetype",
icon_only = true,
},
},
lualine_y = {
{
"filename",
file_status = true,
newfile_status = true,
path = 1,
shorting_target = 50,
symbols = {
error = Error_sign,
warn = Warn_sign,
hint = Hint_sign,
info = Info_sign,
modified = Lualine_signs["modified"],
readonly = Lualine_signs["readonly"],
unnamed = Lualine_signs["unnamed"],
newfile = Lualine_signs["newfile"],
},
theme = "tccs",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
},
sections = {
lualine_b = {
{
require("gitblame").get_current_blame_text,
cond = require("gitblame").is_blame_text_available,
},
},
lualine_c = {},
lualine_x = {
require("action-hints").statusline,
"encoding",
"fileformat",
{
"filetype",
icon_only = true,
},
},
lualine_y = {
{
"filename",
file_status = true,
newfile_status = true,
path = 1,
shorting_target = 50,
symbols = {
modified = Lualine_signs["modified"],
readonly = Lualine_signs["readonly"],
unnamed = Lualine_signs["unnamed"],
newfile = Lualine_signs["newfile"],
},
},
},
lualine_z = { "progress", "location" },
},
})
end,
},
lualine_z = { "progress", "location" },
},
},
}

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 {
-- lang server installations
{
"williamboman/mason.nvim",
dependencies = {
{
"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",
opts = {
automatic_installation = true,
ensure_installed = {
-- assembler
"asmfmt",
-- lua
"stylua",
-- markdown
"mdformat",
-- python
"isort",
"yapf",
-- shell
"shfmt",
-- yaml
"yamlfmt",
},
},
},
},
opts = { ui = { icons = Install_signs } },
"williamboman/mason.nvim",
dependencies = {
"nvimtools/none-ls.nvim",
"jay-babu/mason-null-ls.nvim",
},
lazy = false,
opts = { ui = { icons = Install_signs } },
}

View File

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

View File

@@ -1,61 +1,109 @@
return {
{
"benlubas/molten-nvim",
version = "^1.0.0",
dependencies = {
{
"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",
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",
opts = {
style = "markdown",
output_extension = "md",
force_ft = "markdown",
},
},
},
build = ":UpdateRemotePlugins",
init = function()
vim.g.molten_auto_open_output = false
vim.g.molten_wrap_output = true
vim.g.molten_virt_text_output = true
vim.g.molten_virt_lines_off_by_1 = true
vim.g.molten_image_provider = "image.nvim"
vim.g.molten_output_win_max_height = 20
end,
-- jupyter notebook support
"benlubas/molten-nvim",
build = ":UpdateRemotePlugins",
version = "^1.0.0",
dependencies = {
"3rd/image.nvim",
"quarto-dev/quarto-nvim",
"GCBallesteros/jupytext.nvim",
},
lazy = false,
init = function()
vim.g.molten_auto_open_output = false
vim.g.molten_wrap_output = true
vim.g.molten_virt_text_output = true
vim.g.molten_virt_lines_off_by_1 = true
vim.g.molten_image_provider = "image.nvim"
vim.g.molten_output_win_max_height = 20
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,86 +1,77 @@
return {
-- autocompletion and its sources and snippets
{
'hrsh7th/nvim-cmp',
dependencies = {
'nvim-lua/plenary.nvim',
'onsails/lspkind-nvim',
-- cmp sources
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-path',
'lukas-reineke/cmp-under-comparator',
-- luasnip
{
'l3mon4d3/luasnip',
config = function()
require("luasnip.loaders.from_snipmate").lazy_load()
end,
version = "v2.*",
build = "make install_jsregexp",
dependencies = { 'saadparwaiz1/cmp_luasnip' }
"hrsh7th/nvim-cmp",
dependencies = {
"nvim-lua/plenary.nvim",
"onsails/lspkind-nvim",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"uga-rosa/cmp-dictionary",
"lukas-reineke/cmp-under-comparator",
"l3mon4d3/luasnip",
},
lazy = false,
config = function()
local cmp = require("cmp")
cmp.setup({
sorting = {
comparators = {
cmp.config.compare.offset,
cmp.config.compare.exact,
cmp.config.compare.score,
require("cmp-under-comparator").under,
cmp.config.compare.kind,
cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order,
},
},
},
config = function()
local cmp = require("cmp")
cmp.setup {
sorting = {
comparators = {
cmp.config.compare.offset,
cmp.config.compare.exact,
cmp.config.compare.score,
require "cmp-under-comparator".under,
cmp.config.compare.kind,
cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order
},
},
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
mapping = {
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
else
fallback()
end
},
mapping = {
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
else
fallback()
end
end, { "i", "s" }),
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
require("luasnip").expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true
}
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
{ name = 'path' },
{ name = 'buffer' }
},
formatting = {
format = require("lspkind").cmp_format({
mode = "symbol_text",
preset = "codicons",
maxwidth = 50,
menu = Menu_signs,
symbol_map = Lsp_signs
})
}
}
end
}
end, { "i", "s" }),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
require("luasnip").expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "path" },
{ name = "buffer" },
{ name = "dictionary" },
},
formatting = {
format = require("lspkind").cmp_format({
mode = "symbol_text",
preset = "codicons",
maxwidth = 50,
menu = Menu_signs,
symbol_map = Lsp_signs,
}),
},
})
end,
}

View File

@@ -1,29 +1,28 @@
return {
-- showing color of hex values, etc
{
'ChristianChiarulli/nvim-colorizer.lua',
opts = {
filetypes = {
'*',
'!markdown'
},
user_default_options = {
RGB = true,
RRGGBB = true,
RRGGBBAA = true,
AARRGGBB = true,
rgb_fn = true,
hsl_fn = true,
css_fn = true,
mode = "virtualtext",
virtualtext = "",
},
-- all the sub-options of filetypes apply to buftypes
buftypes = {
"*",
"!prompt",
"!popup"
},
}
}
"ChristianChiarulli/nvim-colorizer.lua",
lazy = false,
opts = {
filetypes = {
"*",
"!markdown",
},
user_default_options = {
RGB = true,
RRGGBB = true,
RRGGBBAA = true,
AARRGGBB = true,
rgb_fn = true,
hsl_fn = true,
css_fn = true,
mode = "virtualtext",
virtualtext = "",
},
-- all the sub-options of filetypes apply to buftypes
buftypes = {
"*",
"!prompt",
"!popup",
},
},
}

View File

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

View File

@@ -1,8 +1,19 @@
return {
{
'kevinhwang91/nvim-hlslens',
opts = {
calm_down = true,
}
}
-- improved virtual text
"kevinhwang91/nvim-hlslens",
keys = {
{
"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 = {
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,98 +1,86 @@
return {
-- lang server management
{
"neovim/nvim-lspconfig",
dependencies = {
"williamboman/mason-lspconfig.nvim",
{
"mrcjkb/rustaceanvim",
version = "^6",
lazy = false,
},
{
"hrsh7th/cmp-nvim-lsp",
config = function()
Capabilities = require("cmp_nvim_lsp").default_capabilities()
Capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
end,
},
},
config = function()
require("mason-lspconfig").setup({
automatic_setup = true,
ensure_installed = {
-- assembler
"asm_lsp",
-- c
"clangd",
-- docker
"dockerls",
-- go
"gopls",
-- html
"html",
-- json
"jsonls",
-- xml
"lemminx",
-- latex
"ltex",
"texlab",
-- lua
"lua_ls",
-- markdown
"marksman",
-- nim
"nimls",
-- python
"pyright",
-- r
"r_language_server",
-- shell
"bashls",
-- sql
"sqlls",
-- typescript / javascript
"ts_ls",
-- yaml
"yamlls",
},
})
local default_flags = {
debounce_text_changes = 150,
allow_incremental_sync = true,
progress = true,
}
local servers = {
ltex = {
settings = {
ltex = {
-- language = "de-DE",
enabled = { "latex", "markdown" },
dictionary = Dictionaries,
},
},
},
lua_ls = {
settings = {
lua = {
diagnostics = { globals = { "vim" } },
telemetry = { enable = false },
},
},
},
pyright = {}
}
for name, config in pairs(servers) do
vim.lsp.config(name, vim.tbl_extend("force", config, {
on_attach = on_attach,
capabilities = Capabilities,
flags = default_flags,
}))
end
end,
"neovim/nvim-lspconfig",
dependencies = {
"williamboman/mason-lspconfig.nvim",
"hrsh7th/cmp-nvim-lsp",
},
lazy = false,
opts = {
automatic_setup = true,
ensure_installed = {
"asm_lsp",
"clangd",
"dockerls",
"gopls",
"html",
"jsonls",
"lemminx",
"ltex",
"texlab",
"lua_ls",
"marksman",
"nimls",
"pyright",
"r_language_server",
"bashls",
"sqlls",
"ts_ls",
"yamlls",
},
},
config = function(_, opts)
local mason_lspconfig = require("mason-lspconfig")
mason_lspconfig.setup(opts)
local default_flags = {
debounce_text_changes = 150,
allow_incremental_sync = true,
progress = true,
}
local servers = {
ltex = {
settings = {
ltex = {
enabled = { "latex", "markdown" },
dictionary = Dictionaries,
},
},
},
lua_ls = {
settings = {
lua = {
diagnostics = { globals = { "vim" } },
telemetry = { enable = false },
},
},
},
pyright = {},
}
local capabilities = require("cmp_nvim_lsp").default_capabilities()
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
for name, config in pairs(servers) do
vim.lsp.config(
name,
vim.tbl_extend("force", config, {
on_attach = on_attach,
capabilities = capabilities,
flags = default_flags,
})
)
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,
}

View File

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

View File

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

View File

@@ -1,30 +1,32 @@
return {
-- fileexplorer on the side
{
"nvim-tree/nvim-tree.lua",
cmd = "NvimTreeToggle",
dependencies = {
{
"nvim-tree/nvim-web-devicons",
lazy = true
"nvim-tree/nvim-tree.lua",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
cmd = { "NvimTreeToggle" },
keys = {
{
"<F2>",
"<cmd>NvimTreeToggle<CR>",
desc = "File tree: toggle",
},
},
opts = {
sort_by = "case_sensitive",
view = {
width = 30,
},
filters = {
dotfiles = true,
},
renderer = {
group_empty = true,
icons = {
glyphs = {
git = Git_signs,
},
},
},
opts = {
sort_by = "case_sensitive",
view = {
width = 30,
},
filters = {
dotfiles = true,
},
renderer = {
group_empty = true,
icons = {
glyphs = {
git = Git_signs
},
},
}
}
}
},
}

View File

@@ -1,38 +1,26 @@
return {
-- better language highlighting by improved parsing
{
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
dependencies = {
-- automatically close html-tags
'windwp/nvim-ts-autotag',
-- color brackets
-- 'p00f/nvim-ts-rainbow',
},
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"css",
"html",
"markdown",
"markdown_inline",
"latex",
"python",
"rust",
"lua",
"yaml",
},
-- highlight = { enable = true },
autotag = { enable = false },
-- rainbow = {
-- enable = true,
-- extended_mode = true,
-- max_file_lines = nil,
-- -- colors = {},
-- -- termcolors = {}
-- }
})
end
}
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
dependencies = {
"windwp/nvim-ts-autotag", -- automatically close html-tags
"nvim-treesitter/nvim-treesitter-context",
},
lazy = false,
config = function()
local treesitter = require("nvim-treesitter")
treesitter.setup()
treesitter.install({
"bash",
"css",
"html",
"markdown",
"markdown_inline",
"latex",
"python",
"rust",
"lua",
"yaml",
})
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 {
-- folding improvements
{
'kevinhwang91/nvim-ufo',
dependencies = { 'kevinhwang91/promise-async' },
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
}
"kevinhwang91/nvim-ufo",
dependencies = {
"kevinhwang91/promise-async",
"neovim/nvim-lspconfig",
},
keys = {
{
"K",
function()
local winid = require("ufo").peekFoldedLinesUnderCursor()
if not winid then
vim.lsp.buf.hover({
border = "rounded",
focusable = true, -- set to false to disable pressing K twice to focus the window
max_width = 100,
})
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,139 +1,29 @@
return {
{
-- ollama llm integration
"huynle/ogpt.nvim",
event = "VeryLazy",
opts = {
default_provider = "ollama",
edgy = true, -- enable this!
single_window = false, -- set this to true if you want only one OGPT window to appear at a time
providers = {
ollama = {
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
api_key = "",
model = "deepseek-r1:7b",
}
}
},
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim"
}
},
{
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,
},
},
},
keys = {
{
"<leader>ao",
"<cmd>OGPT<CR>",
desc = "OGPT: Toggle chat",
},
},
opts = {
default_provider = "ollama",
edgy = true, -- enable this!
single_window = false, -- set this to true if you want only one OGPT window to appear at a time
providers = {
ollama = {
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
api_key = "",
model = "deepseek-r1:7b",
},
},
}
},
}

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 {
{
"hedyhli/outline.nvim",
opts = {
outline_window = {
width = 25
},
symbols = {
icon_source = 'lspkind',
}
}
}
-- tree-like outline sidebar
"hedyhli/outline.nvim",
keys = {
{
"<F3>",
"<cmd>Outline<CR>",
desc = "CTags: toggle",
},
},
opts = {
outline_window = {
width = 25,
},
symbols = {
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 {
-- support for papis bibliography manager
"jghauser/papis.nvim",
dependencies = {
"kkharji/sqlite.lua",
"MunifTanjim/nui.nvim",
-- If not already installed, you may also want one of:
"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",
-- "folke/snacks.nvim",
},
config = function()
require("papis").setup({
-- Your configuration goes here
enable_keymaps = true,
})
lazy = false,
opts = {
enable_keymaps = false,
init_filetypes = { "yaml", "tex" }
},
config = function(_, opts)
require("papis").setup(opts)
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 {
-- navigate between projects using telescope
"gnikdroy/projections.nvim",
dependencies = { "nvim-telescope/telescope.nvim" },
branch = "pre_release",
config = function()
require("projections").setup({
workspaces = { -- Default workspaces to search for
{ "~/code/main", { ".git" } },
{ "~/code/uni", { ".git" } },
},
store_hooks = {
pre = function()
-- nvim-tree
local nvim_tree_present, api = pcall(require, "nvim-tree.api")
if nvim_tree_present then
api.tree.close()
end
end,
},
dependencies = {
"nvim-telescope/telescope.nvim",
},
keys = {
{
"<leader>fp",
function()
vim.cmd("Telescope projections")
end,
desc = "Telescope: find projects",
},
},
opts = {
workspaces = {
{ "~/code/main", { ".git" } },
{ "~/code/uni", { ".git" } },
},
store_hooks = {
pre = function()
local ok, api = pcall(require, "nvim-tree.api")
if ok then
api.tree.close()
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,
}

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 {
-- improved gui for renaming
{
"filipdutescu/renamer.nvim",
branch = "master",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
"filipdutescu/renamer.nvim",
branch = "master",
dependencies = { "nvim-lua/plenary.nvim" },
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 {
-- improve spelling check for coding to feature camelcase, etc
{
'kamykn/spelunker.vim',
dependencies = { 'kamykn/popup-menu.nvim' },
config = function()
-- vim.o.nospell = true
vim.g.enable_spelunker_vim = 0
vim.g.spelunker_disable_acronym_checking = 1
end
}
"kamykn/spelunker.vim",
dependencies = { "kamykn/popup-menu.nvim" },
keys = {
{
"<F10>t",
"<cmd>call spelunker#toggle()<CR>",
desc = "Spelunker: toggle spell check",
},
{
"<F10>s",
"z=",
desc = "Spell: display suggestions",
},
},
config = function()
-- vim.o.nospell = true
vim.g.enable_spelunker_vim = 0
vim.g.spelunker_disable_acronym_checking = 1
end,
}

View File

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

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 {
-- fuzzy finder
{
'nvim-telescope/telescope.nvim',
version = '0.1.2',
dependencies = {
'nvim-lua/plenary.nvim',
'archie-judd/telescope-words.nvim'
"nvim-telescope/telescope.nvim",
version = "*",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-fzf-native.nvim",
"archie-judd/telescope-words.nvim",
},
keys = {
{
"<leader>ff",
"<cmd>Telescope find_files<CR>",
desc = "Telescope: find files",
},
opts = {}
}
{
"<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 {
-- clean up white spaces and empty lines before writing
{
"mcauley-penney/tidy.nvim",
branch = "main",
opts = {
filetype_exclude = { "diff" }
}
}
"mcauley-penney/tidy.nvim",
branch = "main",
ft = { "markdown", "tex" },
opts = {
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,22 +1,21 @@
return {
-- todo symbols and highlighting
{
'folke/todo-comments.nvim',
dependencies = { 'nvim-lua/plenary.nvim' },
opts = {
keywords = {
ERRO = { icon = Error_sign, color = "error" },
WARN = { icon = Warn_sign, color = "warning" },
HACK = { icon = Hack_sign, color = "warning" },
HINT = { icon = Hint_sign, color = "hint" },
TODO = { icon = Todo_sign, color = "info" },
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
PERF = { icon = Perfect_sign, color = "default" },
TEST = { icon = Test_sign, color = "test" }
},
colors = {
default = { "Operator" }
}
}
}
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
lazy = false,
opts = {
keywords = {
ERRO = { icon = Error_sign, color = "error" },
WARN = { icon = Warn_sign, color = "warning" },
HACK = { icon = Hack_sign, color = "warning" },
HINT = { icon = Hint_sign, color = "hint" },
TODO = { icon = Todo_sign, color = "info" },
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
PERF = { icon = Perfect_sign, color = "default" },
TEST = { icon = Test_sign, color = "test" },
},
colors = {
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 {
-- list of errors
{
'folke/trouble.nvim',
dependencies = {
{
'nvim-tree/nvim-web-devicons',
lazy = true
}
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
keys = {
{
"<F4>",
"<cmd>Trouble diagnostics toggle<CR>",
mode = "n",
desc = "LSP: toggle error list",
},
opts = {}
}
},
opts = {},
}

View File

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

View File

@@ -1,8 +1,18 @@
return {
-- better substitutions
{
'tpope/vim-abolish',
config = function ()
end
}
"tpope/vim-abolish",
keys = {
{
"<leader>sa",
":%s//g<Left><Left>",
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 {
{
"RRethy/vim-illuminate"
}
-- highlight other occurences of the same word
"RRethy/vim-illuminate",
lazy = false,
}

View File

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

View File

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

View File

@@ -1,6 +1,22 @@
return {
-- 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,74 +1,71 @@
return {
-- improved wild menu
{
"gelguy/wilder.nvim",
dependencies = {
{
"nvim-tree/nvim-web-devicons",
lazy = true,
},
"roxma/nvim-yarp",
"roxma/vim-hug-neovim-rpc",
"romgrk/fzy-lua-native",
"nixprime/cpsm",
},
config = function()
local wilder = require("wilder")
wilder.setup({
modes = { ":", "/", "?" },
accept_key = "<CR>",
reject_key = "<C-e>",
})
wilder.set_option("pipeline", {
wilder.branch(
wilder.python_file_finder_pipeline({
file_command = function(ctx, arg)
if string.find(arg, ".") ~= nil then
return { "fd", "-tf", "-H" }
else
return { "fd", "-tf" }
end
end,
dir_command = { "fd", "-td" },
filters = { "cpsm_filter" },
}),
wilder.substitute_pipeline({
pipeline = wilder.python_search_pipeline({
skip_cmdtype_check = 1,
pattern = wilder.python_fuzzy_pattern({
start_at_boundary = 0,
}),
}),
}),
wilder.cmdline_pipeline({
fuzzy = 2,
fuzzy_filter = wilder.lua_fzy_filter(),
}),
{
wilder.check(function(ctx, x)
return x == ""
end),
wilder.history(),
},
wilder.python_search_pipeline({
"gelguy/wilder.nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
"roxma/nvim-yarp",
"roxma/vim-hug-neovim-rpc",
"romgrk/fzy-lua-native",
"nixprime/cpsm",
},
lazy = false,
opts = {
modes = { ":", "/", "?" },
accept_key = "<CR>",
reject_key = "<C-e>",
},
config = function(_, opts)
local wilder = require("wilder")
wilder.setup(opts)
wilder.set_option("pipeline", {
wilder.branch(
wilder.python_file_finder_pipeline({
file_command = function(ctx, arg)
if string.find(arg, ".") ~= nil then
return { "fd", "-tf", "-H" }
else
return { "fd", "-tf" }
end
end,
dir_command = { "fd", "-td" },
filters = { "cpsm_filter" },
}),
wilder.substitute_pipeline({
pipeline = wilder.python_search_pipeline({
skip_cmdtype_check = 1,
pattern = wilder.python_fuzzy_pattern({
start_at_boundary = 0,
}),
})
),
})
local highlighters = {
wilder.pcre2_highlighter(),
wilder.lua_fzy_highlighter(),
}
wilder.set_option(
"renderer",
wilder.popupmenu_renderer({
highlighter = highlighters,
left = { " ", wilder.popupmenu_devicons() },
right = { " ", wilder.popupmenu_scrollbar() },
}),
}),
wilder.cmdline_pipeline({
fuzzy = 2,
fuzzy_filter = wilder.lua_fzy_filter(),
}),
{
wilder.check(function(ctx, x)
return x == ""
end),
wilder.history(),
},
wilder.python_search_pipeline({
pattern = wilder.python_fuzzy_pattern({
start_at_boundary = 0,
}),
})
)
end,
},
),
})
local highlighters = {
wilder.pcre2_highlighter(),
wilder.lua_fzy_highlighter(),
}
wilder.set_option(
"renderer",
wilder.popupmenu_renderer({
highlighter = highlighters,
-- left = { " ", wilder.popupmenu_devicons() }, -- has problems with mason
right = { " ", wilder.popupmenu_scrollbar() },
})
)
end,
}

View File

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

View File

@@ -21,7 +21,6 @@ Menu_signs = {
path = "",
}
Lsp_signs = {
Array = "",
Boolean = "",
@@ -108,6 +107,7 @@ Lualine_signs = {
}
vim.diagnostic.config({
virtual_text = false,
severity_sort = true,
signs = {
text = {
@@ -121,7 +121,7 @@ vim.diagnostic.config({
-- enable colorcolumn when textwidth is set
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
-- 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