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

Compare commits

...

68 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
116 changed files with 3672 additions and 1465 deletions

11
.Rprofile Normal file
View File

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

View File

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

View File

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

View File

@@ -28,6 +28,7 @@ x-scheme-handler/betterdiscord=discord.desktop
x-scheme-handler/discord=vesktop.desktop x-scheme-handler/discord=vesktop.desktop
x-scheme-handler/sgnl=signal.desktop x-scheme-handler/sgnl=signal.desktop
x-scheme-handler/signalcaptcha=signal.desktop x-scheme-handler/signalcaptcha=signal.desktop
x-scheme-handler/freetube=freetube.desktop
[Added Associations] [Added Associations]
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;

View File

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

View File

@@ -1,61 +0,0 @@
local wk = require("which-key")
local fluidsynth_job = nil
-- setup interactive midi player
wk.add({
{ mode = "n", "<leader>p", desc = "Lilypond: output" },
{
mode = "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,
desc = "Lilypond: output MIDI",
buffer = true,
},
{
mode = "n",
"<leader>pp",
"<cmd>Viewer<CR>",
desc = "Lilypond: open PDF",
buffer = true,
},
{
mode = "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,
desc = "Stop MIDI playback",
buffer = true,
},
})
-- autostart
if vim.b.first_start_lilypond then
return
end
vim.b.first_start_lilypond = true
vim.schedule(function()
if vim.fn.exists(":Viewer") == 2 then
vim.cmd.Viewer()
end
end)

View File

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

View File

@@ -1,18 +1,3 @@
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" }, { vim.api.nvim_create_autocmd({ "VimLeave" }, {
callback = function() callback = function()
os.execute("texclear " .. vim.fn.expand("%")) os.execute("texclear " .. vim.fn.expand("%"))
@@ -22,25 +7,3 @@ vim.api.nvim_create_autocmd({ "VimLeave" }, {
vim.o.shiftwidth = 2 vim.o.shiftwidth = 2
vim.o.softtabstop = 2 vim.o.softtabstop = 2
vim.o.textwidth = 80 vim.o.textwidth = 80
local wk = require("which-key")
-- frabjous/knap
wk.add({
{
mode = "n",
"<leader>p",
require("knap").toggle_autopreviewing,
desc = "Knap: toggle autopreview",
buffer = true,
},
{
mode = { "n", "v", "i" },
"<F7>",
function()
require("knap").forward_jump()
end,
desc = "Knap: jump to cursor",
buffer = true,
},
})

View File

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

View File

@@ -1,8 +1,11 @@
{ {
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" }, "action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
"agentic.nvim": { "branch": "main", "commit": "3e6175c1141cc3cb5cc08e98bff01b06a0a67467" },
"auto-session": { "branch": "main", "commit": "62437532b38495551410b3f377bcf4aaac574ebe" },
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" }, "barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
"blink.download": { "branch": "main", "commit": "86361b98f3c8317904a08e3bd12cf3cdcbe3e925" }, "blink.download": { "branch": "main", "commit": "dda2666685a5ac3598166577d2e34f1fff6b1637" },
"blink.pairs": { "branch": "main", "commit": "5a34bf6ea72340a70083548e186d745ac4882899" }, "blink.pairs": { "branch": "main", "commit": "4e43012356d33a26f69eae475f746fbe9f325f44" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" }, "cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" },
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
@@ -10,72 +13,80 @@
"cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" }, "cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" }, "conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
"cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" }, "cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" },
"csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" }, "csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" },
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" }, "edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" },
"file-renamer.nvim": { "branch": "master", "commit": "da78d496ffb3dd55a4c70b4a9c28686630a57d3a" },
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" }, "fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
"fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" }, "fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
"git-blame.nvim": { "branch": "main", "commit": "5c536e2d4134d064aa3f41575280bc8a2a0e03d7" }, "git-blame.nvim": { "branch": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
"gitsigns.nvim": { "branch": "main", "commit": "7c4faa3540d0781a28588cafbd4dd187a28ac6e3" }, "gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
"goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" }, "goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
"image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" }, "image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" }, "jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" }, "knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"leap.nvim": { "branch": "main", "commit": "774c452da3521d4434f912b6ca6dd97318aca4b0" }, "leap.nvim": { "branch": "main", "commit": "e7ca7b92f996bcbc34beee8b244ea5ef6692b478" },
"logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" }, "logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
"lsp_signature.nvim": { "branch": "master", "commit": "af7e4074d85d785cf6614352ba9ad3b28a1f8a56" }, "lsp_signature.nvim": { "branch": "master", "commit": "a65b38f260cc3470a05b4afb84c8d868617d476d" },
"lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" }, "lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, "lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" },
"luasnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" }, "luasnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "a676ab7282da8d651e175118bcf54483ca11e46d" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" },
"mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" }, "mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, "mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" },
"mini.icons": { "branch": "main", "commit": "5b9076dae1bfbe47ba4a14bc8b967cde0ab5d77e" },
"modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" }, "modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" },
"molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" }, "molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" },
"none-ls.nvim": { "branch": "main", "commit": "c9317c2a8629d4e39e7cf47be74cb67f3ab37cda" }, "neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" },
"none-ls.nvim": { "branch": "main", "commit": "8cd333aa66e08492d891bdad272208a620cb93a3" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" }, "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
"nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" }, "nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
"nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" }, "nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
"nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" }, "nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
"nvim-lilypond-suite": { "branch": "main", "commit": "a1a313fd6028a196cc9aaa8c8501838fe8cc8e2a" }, "nvim-lilypond-suite": { "branch": "main", "commit": "e57ced9e0df33773566af795d70919d577c58ce2" },
"nvim-lspconfig": { "branch": "master", "commit": "dd261ad5266ab5bbec249d21efeceda98ff3e1a6" }, "nvim-lspconfig": { "branch": "master", "commit": "bf5abe69c1874531f359a822d0cff4d73e26113f" },
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" }, "nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
"nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" }, "nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" },
"nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" }, "nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
"nvim-tree.lua": { "branch": "master", "commit": "b3772adec8db61ba9098c5624a0823a77be3a23d" }, "nvim-tree.lua": { "branch": "master", "commit": "24cfcc94372e526fd9e1c2803ede9e0f1715e33f" },
"nvim-treesitter": { "branch": "main", "commit": "2f5d4c3f3c675962242096bcc8e586d76dd72eb2" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
"nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" }, "nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" }, "nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
"nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" }, "nvim-web-devicons": { "branch": "master", "commit": "8069e89df2d7259704286a5906a11c5b27d5b440" },
"nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" }, "nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" },
"ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" }, "ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" },
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" }, "otter.nvim": { "branch": "main", "commit": "a455e68a99d395889ab30a25ac3846a135e93c46" },
"otter.nvim": { "branch": "main", "commit": "4796602953348e19fb24916557af7b89e188751f" }, "outline.nvim": { "branch": "main", "commit": "c293eb56db880a0539bf9d85b4a27816960b863e" },
"outline.nvim": { "branch": "main", "commit": "ead1820d49c8e79ce89cab1c2c318981b695c9d2" },
"pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" }, "pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" },
"papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" }, "papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "platformio.nvim": { "branch": "main", "commit": "546e1e0b5afdd970f140d0ccaf322d41c0f23941" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" }, "popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" },
"projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" }, "projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" }, "promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"quarto-nvim": { "branch": "main", "commit": "d923bb7cfc2bde41143e1c531c28190f0fade3a2" }, "quarto-nvim": { "branch": "main", "commit": "17f1e5d664bc615478230dc0240666329efacf9b" },
"renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" }, "renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" },
"render-markdown.nvim": { "branch": "main", "commit": "3f3eea97b80839f629c951ca660ffd125bfa5b34" },
"resolve.nvim": { "branch": "master", "commit": "1ed8bcc9ce7d43a0e8e05d0001c9cadb822d95a8" }, "resolve.nvim": { "branch": "master", "commit": "1ed8bcc9ce7d43a0e8e05d0001c9cadb822d95a8" },
"rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" }, "rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" },
"spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" }, "spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" },
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" }, "sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" }, "tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
"tccs.nvim": { "branch": "master", "commit": "181bc2d41e7be888a1fcde0ed960d4632fde2e6e" }, "tccs.nvim": { "branch": "master", "commit": "23fabbb0a65517307e571f63fe7a3760670086fe" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
"telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" }, "telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" },
"telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
"tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" }, "tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "147af4e49f51dd48f41972de26552872b8ba7b25" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" },
"treewalker.nvim": { "branch": "main", "commit": "3680d19fc275f275352e9a3c05f3ec5079dfc0a7" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" }, "undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" }, "vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },

View File

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

View File

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

View File

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

View File

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

View File

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

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,15 +1,16 @@
return { return {
-- vs code like topbar -- vs code like topbar
"utilyre/barbecue.nvim", "utilyre/barbecue.nvim",
name = "barbecue", name = "barbecue",
version = "*", version = "*",
dependencies = { dependencies = {
"SmiteshP/nvim-navic", "SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency "nvim-tree/nvim-web-devicons", -- optional dependency
}, },
opts = { lazy = false,
theme = { opts = {
normal = { bg = "#272727" }, theme = {
}, normal = { bg = "#272727" },
}, },
},
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,19 @@
return { return {
-- side by side git diff mode coloring -- side by side git diff mode coloring
"sindrets/diffview.nvim", "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 = {}, 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,5 +1,31 @@
return { return {
-- floating terminal to toggle -- floating terminal to toggle
"numtostr/fterm.nvim", "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 = {}, opts = {},
} }

View File

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

View File

@@ -1,8 +1,62 @@
return { return {
-- preview definitions using floating windows -- preview definitions using floating windows
"rmagatti/goto-preview", "rmagatti/goto-preview",
dependencies = "rmagatti/logger.nvim", dependencies = { "rmagatti/logger.nvim" },
config = function() keys = {
require("goto-preview").setup({}) {
end, "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,7 +1,7 @@
return { return {
-- show indentation lines -- show indentation lines
"lukas-reineke/indent-blankline.nvim", "lukas-reineke/indent-blankline.nvim",
event = "BufReadPre", lazy = false,
main = "ibl", main = "ibl",
opts = {}, opts = {},
} }

View File

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

View File

@@ -1,50 +1,66 @@
return { return {
{ "frabjous/knap",
"frabjous/knap", ft = { "tex", "markdown" },
ft = { "tex" }, keys = {
config = function() {
local function detect_engine() "<leader>p",
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or "" function() require("knap").toggle_autopreviewing() end,
if first_line:match("^%%%s*xelatex") then desc = "Knap: toggle autopreview",
return "xelatex" },
else
return "pdflatex"
end
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,
}, },
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
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,6 +1,26 @@
return { return {
-- improved movement -- improved movement
url = "https://codeberg.org/andyg/leap.nvim", "ggandor/leap.nvim",
keys = {
{
"f",
"<Plug>(leap-forward)",
mode = "n",
desc = "Navigation: enter leap mode for forward movement",
},
{
"F",
"<Plug>(leap-backward)",
mode = "n",
desc = "Navigation: enter leap mode for backwards movement",
},
{
"gf",
"<Plug>(leap-from-window)",
mode = "n",
desc = "Navigation: enter leap mode for other windows",
},
},
config = function() config = function()
require("leap").opts.highlight_unlabeled_phase_one_targets = true require("leap").opts.highlight_unlabeled_phase_one_targets = true
require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" } require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" }

View File

@@ -1,6 +1,7 @@
return { return {
-- show function signature while typing -- show function signature while typing
"ray-x/lsp_signature.nvim", "ray-x/lsp_signature.nvim",
lazy = false,
opts = { opts = {
bind = true, bind = true,
handler_opts = { handler_opts = {

View File

@@ -2,79 +2,64 @@ return {
-- statusline -- statusline
"nvim-lualine/lualine.nvim", "nvim-lualine/lualine.nvim",
dependencies = { dependencies = {
{ "nvim-tree/nvim-web-devicons",
"nvim-tree/nvim-web-devicons", "tiyn/tccs.nvim",
lazy = true, "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 = "" },
}, },
{ sections = {
"f-person/git-blame.nvim", lualine_b = {
config = function() {
vim.g.gitblame_display_virtual_text = 0 function()
end, return require("gitblame").get_current_blame_text()
}, end,
{ "tiyn/tccs.nvim" }, cond = function()
{ return require("gitblame").is_blame_text_available()
"tiyn/action-hints.nvim", end,
config = function() },
require("action-hints").setup({ },
template = { lualine_c = {},
-- definition = { text = "D", color = "#add8e6" }, lualine_x = {
-- references = { text = "R%s", color = "#ff6666" }, function()
definition = { text = Definition_sign, color = "#add8e6" }, return require("action-hints").statusline()
references = { text = Reference_sign, color = "#ff6666" }, end,
"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"],
}, },
}) },
end, },
lualine_z = { "progress", "location" },
}, },
}, },
config = function()
require("lualine").setup({
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 = "" },
},
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,
} }

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

@@ -2,49 +2,9 @@ return {
-- lang server installations -- lang server installations
"williamboman/mason.nvim", "williamboman/mason.nvim",
dependencies = { dependencies = {
{ "nvimtools/none-ls.nvim",
"nvimtools/none-ls.nvim", "jay-babu/mason-null-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",
},
},
},
}, },
lazy = false,
opts = { ui = { icons = Install_signs } }, opts = { ui = { icons = Install_signs } },
} }

View File

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

View File

@@ -1,54 +1,14 @@
return { return {
-- jupyter notebook support -- jupyter notebook support
"benlubas/molten-nvim", "benlubas/molten-nvim",
build = ":UpdateRemotePlugins",
version = "^1.0.0", version = "^1.0.0",
dependencies = { dependencies = {
{ "3rd/image.nvim",
"3rd/image.nvim", "quarto-dev/quarto-nvim",
opts = { "GCBallesteros/jupytext.nvim",
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", lazy = false,
init = function() init = function()
vim.g.molten_auto_open_output = false vim.g.molten_auto_open_output = false
vim.g.molten_wrap_output = true vim.g.molten_wrap_output = true
@@ -57,4 +17,93 @@ return {
vim.g.molten_image_provider = "image.nvim" vim.g.molten_image_provider = "image.nvim"
vim.g.molten_output_win_max_height = 20 vim.g.molten_output_win_max_height = 20
end, end,
config = function()
local imb = function(e)
vim.schedule(function()
local kernels = vim.fn.MoltenAvailableKernels()
local try_kernel_name = function()
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
return metadata.kernelspec.name
end
local ok, kernel_name = pcall(try_kernel_name)
if not ok or not vim.tbl_contains(kernels, kernel_name) then
kernel_name = nil
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
if venv ~= nil then
kernel_name = string.match(venv, "/.+/(.+)")
end
end
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
vim.cmd(("MoltenInit %s"):format(kernel_name))
end
vim.cmd("MoltenImportOutput")
end)
end
vim.api.nvim_create_autocmd("BufAdd", {
pattern = { "*.ipynb" },
callback = imb,
})
vim.api.nvim_create_autocmd("BufEnter", {
pattern = { "*.ipynb" },
callback = function(e)
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
imb(e)
end
end,
})
local default_notebook = [[
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython"
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
]]
local function new_notebook(filename)
local path = filename .. ".ipynb"
local file = io.open(path, "w")
if file then
file:write(default_notebook)
file:close()
vim.cmd("edit " .. path)
else
print("Error: Could not open new notebook file for writing.")
end
end
vim.api.nvim_create_user_command("NewNotebook", function(opts)
new_notebook(opts.args)
end, {
nargs = 1,
complete = "file",
})
end,
} }

View File

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

View File

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

View File

@@ -4,22 +4,13 @@ return {
dependencies = { dependencies = {
"nvim-lua/plenary.nvim", "nvim-lua/plenary.nvim",
"onsails/lspkind-nvim", "onsails/lspkind-nvim",
-- cmp sources
"hrsh7th/cmp-buffer", "hrsh7th/cmp-buffer",
"hrsh7th/cmp-path", "hrsh7th/cmp-path",
"uga-rosa/cmp-dictionary", "uga-rosa/cmp-dictionary",
"lukas-reineke/cmp-under-comparator", "lukas-reineke/cmp-under-comparator",
-- luasnip "l3mon4d3/luasnip",
{
"l3mon4d3/luasnip",
config = function()
require("luasnip.loaders.from_snipmate").lazy_load()
end,
version = "v2.*",
-- build = "make install_jsregexp",
dependencies = { "saadparwaiz1/cmp_luasnip" },
},
}, },
lazy = false,
config = function() config = function()
local cmp = require("cmp") local cmp = require("cmp")
cmp.setup({ cmp.setup({

View File

@@ -1,6 +1,7 @@
return { return {
-- showing color of hex values, etc -- showing color of hex values, etc
"ChristianChiarulli/nvim-colorizer.lua", "ChristianChiarulli/nvim-colorizer.lua",
lazy = false,
opts = { opts = {
filetypes = { filetypes = {
"*", "*",

View File

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

View File

@@ -1,6 +1,18 @@
return { return {
-- improved virtual text -- improved virtual text
"kevinhwang91/nvim-hlslens", "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 = { opts = {
calm_down = true, calm_down = true,
}, },

View File

@@ -1,34 +1,35 @@
return { return {
-- lillypond integration -- lillypond integration
"martineausimon/nvim-lilypond-suite", "martineausimon/nvim-lilypond-suite",
ft = "lilypond", dependencies = { "uga-rosa/cmp-dictionary" },
dependencies = "uga-rosa/cmp-dictionary", ft = { "lilypond" },
config = function() opts = {
require("nvls").setup({ lilypond = {
lilypond = { mappings = {
mappings = { player = "<NOP>",
player = "<NOP>", compile = "<NOP>",
compile = "<NOP>", open_pdf = "<NOP>",
open_pdf = "<NOP>", switch_buffers = "<NOP>",
switch_buffers = "<NOP>", insert_version = "<NOP>",
insert_version = "<NOP>", hyphenation = "<NOP>",
hyphenation = "<NOP>", hyphenation_change_lang = "<NOP>",
hyphenation_change_lang = "<NOP>", insert_hyphen = "<NOP>",
insert_hyphen = "<NOP>", add_hyphen = "<NOP>",
add_hyphen = "<NOP>", del_next_hyphen = "<NOP>",
del_next_hyphen = "<NOP>", del_prev_hyphen = "<NOP>",
del_prev_hyphen = "<NOP>", },
},
player = {
options = {
fluidsynth_flags = {
"/usr/share/soundfonts/FluidR3_GM.sf2",
}, },
}, },
player = { },
options = { },
fluidsynth_flags = { config = function(_, opts)
"/usr/share/soundfonts/FluidR3_GM.sf2", local nvls = require("nvls")
}, nvls.setup(opts)
},
},
})
local lily_dicts = { local lily_dicts = {
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/keywords", "~/.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/musicCommands",
@@ -36,13 +37,53 @@ return {
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/articulations", "~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/articulations",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/dynamics", "~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/dynamics",
} }
vim.api.nvim_create_autocmd("FileType", { vim.api.nvim_create_autocmd("FileType", {
pattern = "lilypond", pattern = "lilypond",
callback = function() callback = function(args)
local bufnr = args.buf
require("cmp_dictionary").setup({ require("cmp_dictionary").setup({
paths = lily_dicts, 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,
}) })
end, end,

View File

@@ -3,63 +3,35 @@ return {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
dependencies = { dependencies = {
"williamboman/mason-lspconfig.nvim", "williamboman/mason-lspconfig.nvim",
{ "hrsh7th/cmp-nvim-lsp",
"mrcjkb/rustaceanvim", },
version = "^6", lazy = false,
lazy = false, opts = {
}, automatic_setup = true,
{ ensure_installed = {
"hrsh7th/cmp-nvim-lsp", "asm_lsp",
config = function() "clangd",
Capabilities = require("cmp_nvim_lsp").default_capabilities() "dockerls",
Capabilities.textDocument.foldingRange = { "gopls",
dynamicRegistration = false, "html",
lineFoldingOnly = true, "jsonls",
} "lemminx",
end, "ltex",
"texlab",
"lua_ls",
"marksman",
"nimls",
"pyright",
"r_language_server",
"bashls",
"sqlls",
"ts_ls",
"yamlls",
}, },
}, },
config = function() config = function(_, opts)
require("mason-lspconfig").setup({ local mason_lspconfig = require("mason-lspconfig")
automatic_setup = true, mason_lspconfig.setup(opts)
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 = { local default_flags = {
debounce_text_changes = 150, debounce_text_changes = 150,
allow_incremental_sync = true, allow_incremental_sync = true,
@@ -69,7 +41,6 @@ return {
ltex = { ltex = {
settings = { settings = {
ltex = { ltex = {
-- language = "de-DE",
enabled = { "latex", "markdown" }, enabled = { "latex", "markdown" },
dictionary = Dictionaries, dictionary = Dictionaries,
}, },
@@ -85,15 +56,31 @@ return {
}, },
pyright = {}, pyright = {},
} }
local capabilities = require("cmp_nvim_lsp").default_capabilities()
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
for name, config in pairs(servers) do for name, config in pairs(servers) do
vim.lsp.config( vim.lsp.config(
name, name,
vim.tbl_extend("force", config, { vim.tbl_extend("force", config, {
on_attach = on_attach, on_attach = on_attach,
capabilities = Capabilities, capabilities = capabilities,
flags = default_flags, flags = default_flags,
}) })
) )
end end
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local bufnr = args.buf
local opts = { buffer = bufnr }
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, opts)
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
end,
})
end, end,
} }

View File

@@ -5,52 +5,35 @@ return {
"kevinhwang91/nvim-hlslens", "kevinhwang91/nvim-hlslens",
"lewis6991/gitsigns.nvim", "lewis6991/gitsigns.nvim",
}, },
config = function() lazy = false,
require("scrollbar").setup({ opts = {
marks = { marks = {
Cursor = { Cursor = { highlight = "Normal" },
highlight = "Normal", Search = { highlight = "Special" },
}, Error = { highlight = "DiagnosticSignError" },
Search = { Warn = { highlight = "DiagnosticSignWarn" },
highlight = "Special", Info = { highlight = "DiagnosticSignInfo" },
}, Hint = { highlight = "DiagnosticSignHint" },
Error = { Misc = { highlight = "Special" },
highlight = "DiagnosticSignError", GitAdd = { highlight = "GitGutterAdd" },
}, GitChange = { highlight = "GitGutterChange" },
Warn = { GitDelete = { highlight = "GitGutterDelete" },
highlight = "DiagnosticSignWarn", },
}, excluded_filetypes = {
Info = { "cmp_docs",
highlight = "DiagnosticSignInfo", "cmp_menu",
}, "noice",
Hint = { "prompt",
highlight = "DiagnosticSignHint", "TelescopePrompt",
}, "NvimTree",
Misc = { "Navbuddy",
highlight = "Special", "FTerm",
}, "",
GitAdd = { },
highlight = "GitGutterAdd", },
}, config = function(_, opts)
GitChange = { local scrollbar = require("scrollbar")
highlight = "GitGutterChange", scrollbar.setup(opts)
},
GitDelete = {
highlight = "GitGutterDelete",
},
},
excluded_filetypes = {
"cmp_docs",
"cmp_menu",
"noice",
"prompt",
"TelescopePrompt",
"NvimTree",
"Navbuddy",
"FTerm",
"",
},
})
require("scrollbar.handlers.search").setup() require("scrollbar.handlers.search").setup()
require("scrollbar.handlers.gitsigns").setup() require("scrollbar.handlers.gitsigns").setup()
end, end,

View File

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

View File

@@ -1,11 +1,15 @@
return { return {
-- fileexplorer on the side -- fileexplorer on the side
"nvim-tree/nvim-tree.lua", "nvim-tree/nvim-tree.lua",
cmd = "NvimTreeToggle",
dependencies = { dependencies = {
"nvim-tree/nvim-web-devicons",
},
cmd = { "NvimTreeToggle" },
keys = {
{ {
"nvim-tree/nvim-web-devicons", "<F2>",
lazy = true, "<cmd>NvimTreeToggle<CR>",
desc = "File tree: toggle",
}, },
}, },
opts = { opts = {

View File

@@ -3,39 +3,24 @@ return {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
build = ":TSUpdate", build = ":TSUpdate",
dependencies = { dependencies = {
-- automatically close html-tags "windwp/nvim-ts-autotag", -- automatically close html-tags
"windwp/nvim-ts-autotag", "nvim-treesitter/nvim-treesitter-context",
-- color brackets
-- 'p00f/nvim-ts-rainbow',
}, },
lazy = false,
config = function() config = function()
local treesitter = require("nvim-treesitter") local treesitter = require("nvim-treesitter")
treesitter.setup() treesitter.setup()
treesitter.install({ treesitter.install({
"bash", "bash",
"css", "css",
"html", "html",
"markdown", "markdown",
"markdown_inline", "markdown_inline",
"latex", "latex",
"python", "python",
"rust", "rust",
"lua", "lua",
"yaml", "yaml",
}) })
require("nvim-ts-autotag").setup({
opts = {
enable_close = true,
enable_rename = true,
}
})
-- WARN: not directly compatible anymore
-- highlight = { enable = true },
-- rainbow = {
-- enable = true,
-- extended_mode = true,
-- max_file_lines = nil,
-- -- colors = {},
-- -- termcolors = {}
end, end,
} }

View File

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

View File

@@ -1,7 +1,27 @@
return { return {
-- folding improvements -- folding improvements
"kevinhwang91/nvim-ufo", "kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" }, 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() config = function()
require("ufo").setup() require("ufo").setup()
vim.api.nvim_create_autocmd({ "BufEnter", "FileType" }, { vim.api.nvim_create_autocmd({ "BufEnter", "FileType" }, {

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

View File

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

View File

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

View File

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

View File

@@ -7,10 +7,12 @@ return {
"hrsh7th/nvim-cmp", "hrsh7th/nvim-cmp",
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
}, },
config = function() lazy = false,
require("papis").setup({ opts = {
-- Your configuration goes here enable_keymaps = false,
enable_keymaps = false, init_filetypes = { "yaml", "tex" }
}) },
config = function(_, opts)
require("papis").setup(opts)
end, end,
} }

View File

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

View File

@@ -1,25 +1,59 @@
return { return {
-- navigate between projects using telescope -- navigate between projects using telescope
"gnikdroy/projections.nvim", "gnikdroy/projections.nvim",
dependencies = { "nvim-telescope/telescope.nvim" },
branch = "pre_release", branch = "pre_release",
config = function() dependencies = {
require("projections").setup({ "nvim-telescope/telescope.nvim",
workspaces = { -- Default workspaces to search for },
{ "~/code/main", { ".git" } }, keys = {
{ "~/code/uni", { ".git" } }, {
}, "<leader>fp",
store_hooks = { function()
pre = function() vim.cmd("Telescope projections")
-- nvim-tree end,
local nvim_tree_present, api = pcall(require, "nvim-tree.api") desc = "Telescope: find projects",
if nvim_tree_present then },
api.tree.close() },
end opts = {
end, 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, 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

@@ -3,5 +3,14 @@ return {
"filipdutescu/renamer.nvim", "filipdutescu/renamer.nvim",
branch = "master", branch = "master",
dependencies = { "nvim-lua/plenary.nvim" }, dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{
"<F5>",
function()
require("renamer").rename()
end,
desc = "LSP: rename",
},
},
opts = {}, 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

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

View File

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

View File

@@ -1,12 +1,22 @@
return { return {
-- improve spelling check for coding to feature camelcase, etc -- improve spelling check for coding to feature camelcase, etc
{ "kamykn/spelunker.vim",
"kamykn/spelunker.vim", dependencies = { "kamykn/popup-menu.nvim" },
dependencies = { "kamykn/popup-menu.nvim" }, keys = {
config = function() {
-- vim.o.nospell = true "<F10>t",
vim.g.enable_spelunker_vim = 0 "<cmd>call spelunker#toggle()<CR>",
vim.g.spelunker_disable_acronym_checking = 1 desc = "Spelunker: toggle spell check",
end, },
{
"<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 { return {
-- colorscheme -- colorscheme
{ "tiyn/tccs.nvim",
"tiyn/tccs.nvim", lazy = false,
lazy = false, priority = 1000,
priority = 1000, opts = {
config = function() require("tccs").load(),
require("tccs").setup({
require("tccs").load(),
})
end,
}, },
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,22 +1,21 @@
return { return {
-- todo symbols and highlighting -- todo symbols and highlighting
{ "folke/todo-comments.nvim",
"folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" },
dependencies = { "nvim-lua/plenary.nvim" }, lazy = false,
opts = { opts = {
keywords = { keywords = {
ERRO = { icon = Error_sign, color = "error" }, ERRO = { icon = Error_sign, color = "error" },
WARN = { icon = Warn_sign, color = "warning" }, WARN = { icon = Warn_sign, color = "warning" },
HACK = { icon = Hack_sign, color = "warning" }, HACK = { icon = Hack_sign, color = "warning" },
HINT = { icon = Hint_sign, color = "hint" }, HINT = { icon = Hint_sign, color = "hint" },
TODO = { icon = Todo_sign, color = "info" }, TODO = { icon = Todo_sign, color = "info" },
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } }, INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
PERF = { icon = Perfect_sign, color = "default" }, PERF = { icon = Perfect_sign, color = "default" },
TEST = { icon = Test_sign, color = "test" }, TEST = { icon = Test_sign, color = "test" },
}, },
colors = { colors = {
default = { "Operator" }, default = { "Operator" },
},
}, },
}, },
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,18 @@
return { return {
-- better substitutions -- better substitutions
"tpope/vim-abolish", "tpope/vim-abolish",
config = function() end, 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,4 +1,5 @@
return { return {
-- highlight other occurences of the same word -- highlight other occurences of the same word
"RRethy/vim-illuminate", "RRethy/vim-illuminate",
lazy = false,
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -121,7 +121,7 @@ vim.diagnostic.config({
-- enable colorcolumn when textwidth is set -- enable colorcolumn when textwidth is set
vim.o.cursorline = true vim.o.cursorline = true
vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(0, 254), ",+") vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(1, 254), ",+")
-- alternatively highlight only one line for colorcolumn -- alternatively highlight only one line for colorcolumn
-- vim.o.colorcolumn = "-0" -- vim.o.colorcolumn = "-0"

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,19 @@
context.objects = [
{ factory = adapter
args = {
factory.name = support.null-audio-sink
node.name = "blackhole-sink-1"
node.description = "Blackhole Sink 1"
media.class = Audio/Sink
audio.position = [ FL FR ]
monitor.channel-volumes = true
monitor.passthrough = true
adapter.auto-port-config = {
mode = dsp
monitor = true
position = preserve
}
}
}
]

View File

@@ -0,0 +1,18 @@
context.objects = [
{ factory = adapter
args = {
factory.name = support.null-audio-sink
node.name = "virtual-sink-1"
node.description = "Virtual Sink 1"
media.class = Audio/Sink
audio.position = [ FL FR ]
monitor.channel-volumes = true
monitor.passthrough = true
adapter.auto-port-config = {
mode = dsp
monitor = true
position = preserve
}
}
}
]

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