mirror of
https://github.com/tiyn/dotfiles.git
synced 2026-05-01 18:11:39 +02:00
Compare commits
71 Commits
f7a095d405
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 6714ddc776 | |||
| edf34f3ca5 | |||
| 637edf2e96 | |||
| a6c219414f | |||
| aa7161c70a | |||
| 4ad2dd00c0 | |||
| 30196f3653 | |||
| 6cbc979c4d | |||
| 5e54bed174 | |||
| 987a39c4b8 | |||
| fc6cedb305 | |||
| 7d2523ef2c | |||
| f05a3c5377 | |||
| 0bd4ea6149 | |||
| c859c4cdd9 | |||
| b83432f67e | |||
| 17ce699530 | |||
| 27f5a735b7 | |||
| 279babf016 | |||
| 019011572e | |||
| d4e8b5de3e | |||
| 156bc111ef | |||
| 8336c9e76f | |||
| 169a7fcc57 | |||
| 5282835ae9 | |||
| 63aa8f2db5 | |||
| 0b3f41af3a | |||
| ec1c20f003 | |||
| a8e421ec41 | |||
| 5802436dc2 | |||
| 7d84ac52ec | |||
| 26fc686e56 | |||
| ecb7adb796 | |||
| c49867ebcf | |||
| 29c82c6a5a | |||
| 9815d86c78 | |||
| 352b695c08 | |||
| a87272d079 | |||
| 66e81c5275 | |||
| 4f9cdf2ed4 | |||
| 80d607ef2f | |||
| 1e1b53bfee | |||
| dfdefc005b | |||
| d6c0cda68a | |||
| 804a0d1d2a | |||
| edd4ef7ebb | |||
| 781cb922c5 | |||
| 429f14f8b3 | |||
| f1561f8847 | |||
| 481da28608 | |||
| f9c55afcfd | |||
| 5da287cd34 | |||
| a812e95e68 | |||
| 8911a7c241 | |||
| 17a2e9f0ca | |||
| 141988ba94 | |||
| d1e73e1c7d | |||
| 3c3cfd333d | |||
| 0f06cc10c8 | |||
| 5a0286c68b | |||
| b077e877f5 | |||
| b196e47c10 | |||
| 464c462f53 | |||
| 3d16d712b1 | |||
| 55268e8655 | |||
| 2a08955030 | |||
| 9db91ef6a7 | |||
| ace5eb5baa | |||
| 513f5afbe6 | |||
| 20980c76ca | |||
| c3fb4c7953 |
11
.Rprofile
Normal file
11
.Rprofile
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
[options]
|
||||||
|
|
||||||
|
background = #FFFFFF
|
||||||
|
|
||||||
[binds]
|
[binds]
|
||||||
<plus> = zoom 1
|
<plus> = zoom 1
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -1,7 +1 @@
|
|||||||
vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
|
||||||
callback = function()
|
|
||||||
require("csvview").enable()
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.o.textwidth = 0
|
vim.o.textwidth = 0
|
||||||
|
|||||||
@@ -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)
|
|
||||||
@@ -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()
|
|
||||||
|
|||||||
@@ -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,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
@@ -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,70 +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": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
|
"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": "0932ba4e0bdc3457ac89a8aeed4d56ca0b36977a" },
|
|
||||||
"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": "4d0724be90b633ddce51b328a631060e6acd7d66" },
|
"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": "9197f3ee3f0c9a754aab5b16500db6d7da5f68fd" },
|
"nvim-tree.lua": { "branch": "master", "commit": "24cfcc94372e526fd9e1c2803ede9e0f1715e33f" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
"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" },
|
||||||
"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" },
|
||||||
"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": "06df4330266bb4b85458745b5090b29386722512" },
|
"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" },
|
||||||
|
|||||||
@@ -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 = "*" })
|
|
||||||
|
|||||||
@@ -4,76 +4,121 @@ Artifacts
|
|||||||
Betreuerrolle
|
Betreuerrolle
|
||||||
Bonitur
|
Bonitur
|
||||||
Branch
|
Branch
|
||||||
Crowd-Interaction
|
Branch
|
||||||
|
Branches
|
||||||
|
Crowd
|
||||||
|
Cutie
|
||||||
Destruction
|
Destruction
|
||||||
Developer
|
Developer
|
||||||
Dictation
|
Dictation
|
||||||
|
Dirt
|
||||||
|
Diskursartefakten
|
||||||
|
Dom
|
||||||
Dreams
|
Dreams
|
||||||
|
Embedding
|
||||||
Entlebucher
|
Entlebucher
|
||||||
Extraction
|
Extraction
|
||||||
For-Loop
|
For
|
||||||
Formatter
|
Formatter
|
||||||
Französischvokabeln
|
Französischvokabeln
|
||||||
GOAT
|
GOAT
|
||||||
Genervtheit
|
Genervtheit
|
||||||
Gestresstheit
|
Gestresstheit
|
||||||
Gym
|
Gym
|
||||||
|
Handwerksunternehmen
|
||||||
Homeserver
|
Homeserver
|
||||||
Immigrationsgeschichte
|
Immigrationsgeschichte
|
||||||
Impro-Theater
|
Impro
|
||||||
Improtheater
|
Improtheater
|
||||||
Infokratie
|
Infokratie
|
||||||
|
Informatikstudierende
|
||||||
|
Informatikstudiun
|
||||||
|
Interaction
|
||||||
Ira
|
Ira
|
||||||
Jahreszeitenunterschied
|
Jahreszeitenunterschied
|
||||||
Jahreszeitenunterschiede
|
Jahreszeitenunterschiede
|
||||||
Kardinälin
|
Kardinälin
|
||||||
|
Kreatindosis
|
||||||
Königinnensubstanz
|
Königinnensubstanz
|
||||||
LLM-Paper
|
Loop
|
||||||
Magazinbeute
|
Magazinbeute
|
||||||
Magazinbeuten
|
Magazinbeuten
|
||||||
|
Merge
|
||||||
|
Merges
|
||||||
Meta
|
Meta
|
||||||
Mods
|
Mods
|
||||||
|
Mono
|
||||||
Ne
|
Ne
|
||||||
Orgas
|
Orgas
|
||||||
|
Paper
|
||||||
|
Platformer
|
||||||
Poetry
|
Poetry
|
||||||
Poetry-Slam
|
|
||||||
Poetryslam
|
|
||||||
Pollenhose
|
Pollenhose
|
||||||
SDS-Plenum
|
Presenter
|
||||||
SPM-Gruppe
|
Quizabend
|
||||||
|
Renamer
|
||||||
|
Repositories
|
||||||
|
Repository
|
||||||
Scammer
|
Scammer
|
||||||
Sennenhund
|
Sennenhund
|
||||||
Slam
|
Slam
|
||||||
|
Slam
|
||||||
Slammern
|
Slammern
|
||||||
Slams
|
Slams
|
||||||
Soundness
|
Soundness
|
||||||
Speech-to-Text
|
Speech
|
||||||
|
Speedrun
|
||||||
|
Speedruns
|
||||||
|
Spells
|
||||||
Stations
|
Stations
|
||||||
|
Sub
|
||||||
|
Terraforming
|
||||||
Torrenting
|
Torrenting
|
||||||
Uni-Theater
|
Trainspotter
|
||||||
|
Trefferverhältnis
|
||||||
|
Uni
|
||||||
Unitheater
|
Unitheater
|
||||||
Verification
|
Verification
|
||||||
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
|
||||||
respekt-
|
reingeredet
|
||||||
rumgealbert
|
rumgealbert
|
||||||
shiftete
|
shiftete
|
||||||
|
temps
|
||||||
|
this
|
||||||
|
to
|
||||||
ultra
|
ultra
|
||||||
|
warpl
|
||||||
|
well
|
||||||
|
will
|
||||||
Ça
|
Ça
|
||||||
ça
|
ça
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
dockerized
|
||||||
|
keymap
|
||||||
|
synaptics
|
||||||
|
|||||||
@@ -1,19 +1,27 @@
|
|||||||
|
AI
|
||||||
APV
|
APV
|
||||||
Accuracy
|
Accuracy
|
||||||
|
Agentic
|
||||||
Akallabêth
|
Akallabêth
|
||||||
Altisaur
|
Altisaur
|
||||||
An
|
An
|
||||||
Anki
|
Anki
|
||||||
Annoyed
|
Annoyed
|
||||||
ApoRed
|
ApoRed
|
||||||
|
Applied
|
||||||
Arrabbiata
|
Arrabbiata
|
||||||
Asiahung
|
Asiahung
|
||||||
Aule
|
Aule
|
||||||
Aules
|
Aules
|
||||||
|
Baez
|
||||||
Barros
|
Barros
|
||||||
|
Beater
|
||||||
Beek
|
Beek
|
||||||
Bela
|
Bela
|
||||||
|
Bennie
|
||||||
|
Berim
|
||||||
Betterov
|
Betterov
|
||||||
|
Bladee
|
||||||
Boarding
|
Boarding
|
||||||
Boelsen
|
Boelsen
|
||||||
Bontjes
|
Bontjes
|
||||||
@@ -21,133 +29,233 @@ Brusch
|
|||||||
CAR
|
CAR
|
||||||
CATS
|
CATS
|
||||||
CDSS
|
CDSS
|
||||||
|
CUDA
|
||||||
|
Carré
|
||||||
Casper
|
Casper
|
||||||
Caspers
|
Caspers
|
||||||
Cato
|
Cato
|
||||||
CdE
|
CdE
|
||||||
|
CdEs
|
||||||
Chrysalis
|
Chrysalis
|
||||||
|
Color
|
||||||
Combi
|
Combi
|
||||||
Commander
|
Commander
|
||||||
Crusader
|
Crusader
|
||||||
|
DFKI
|
||||||
|
DFKIs
|
||||||
|
DPU
|
||||||
Daisy's
|
Daisy's
|
||||||
|
Darth
|
||||||
DeepSeek
|
DeepSeek
|
||||||
Dekarldent
|
Dekarldent
|
||||||
|
Delivery
|
||||||
Destiny 2
|
Destiny 2
|
||||||
Doom-Scrolling
|
Distrobox
|
||||||
|
Doom
|
||||||
Doyma
|
Doyma
|
||||||
|
EasyEffects
|
||||||
Eckhoff
|
Eckhoff
|
||||||
Edain
|
Edain
|
||||||
Elodie
|
Elodie
|
||||||
|
Ernsting's
|
||||||
|
Euphoria
|
||||||
|
Explainable
|
||||||
|
Explodes
|
||||||
Eyal
|
Eyal
|
||||||
FIDO-Stick
|
FIDO
|
||||||
|
Face
|
||||||
|
Fischerhude
|
||||||
Flac
|
Flac
|
||||||
Forest
|
Forest
|
||||||
|
Forgejo
|
||||||
|
Französischmodul
|
||||||
Frevert
|
Frevert
|
||||||
Freverts
|
Freverts
|
||||||
|
Friedl
|
||||||
Friesenturnier
|
Friesenturnier
|
||||||
Gathering
|
Gathering
|
||||||
|
GitNex
|
||||||
|
Glaive
|
||||||
|
Glenn
|
||||||
|
Glenns
|
||||||
|
Gondor
|
||||||
|
Governikus
|
||||||
GrapheneOS
|
GrapheneOS
|
||||||
Greater
|
Greater
|
||||||
Grixis
|
Grixis
|
||||||
|
Grosshardt
|
||||||
Gump
|
Gump
|
||||||
Guttersnipe
|
Guttersnipe
|
||||||
|
Haarentor
|
||||||
Habenhausen
|
Habenhausen
|
||||||
Hailo
|
Hailo
|
||||||
|
Helldivers
|
||||||
Hellmers
|
Hellmers
|
||||||
Higgers
|
Higgers
|
||||||
|
Hillmannplatz
|
||||||
Hough
|
Hough
|
||||||
Hue
|
Hue
|
||||||
|
Hunter
|
||||||
Höper
|
Höper
|
||||||
IFAM
|
IFAM
|
||||||
IFAMs
|
IFAMs
|
||||||
IMRaD
|
IMRaD
|
||||||
Ikigai
|
Ikigai
|
||||||
|
Immich
|
||||||
Int
|
Int
|
||||||
Ira
|
Ira
|
||||||
JT
|
JT
|
||||||
Jacobin
|
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
|
||||||
Maite
|
Maite
|
||||||
|
Marmelab
|
||||||
Marten
|
Marten
|
||||||
Mathis
|
Mathis
|
||||||
Matvey
|
Matvey
|
||||||
Mauli
|
Mauli
|
||||||
Mentos
|
Mentos
|
||||||
|
Meret
|
||||||
|
Meshtastic
|
||||||
Metzener
|
Metzener
|
||||||
MiiMii
|
MiiMii
|
||||||
Mint
|
Mint
|
||||||
|
MusikAka
|
||||||
|
MusikAkademie
|
||||||
|
NVIM
|
||||||
|
NVIM
|
||||||
|
NVIM
|
||||||
Nate
|
Nate
|
||||||
NeoVIM
|
Neovim
|
||||||
|
NetworkManager
|
||||||
NextCloud
|
NextCloud
|
||||||
Nim
|
Nim
|
||||||
|
Nobody
|
||||||
|
Noel
|
||||||
|
North
|
||||||
|
Novruz
|
||||||
Númenor
|
Númenor
|
||||||
OFFIS
|
OFFIS
|
||||||
|
Oberhausern
|
||||||
Oberweseler
|
Oberweseler
|
||||||
Odysee
|
Odysee
|
||||||
Opam
|
Opam
|
||||||
OpenCloud
|
OpenCloud
|
||||||
|
Ove
|
||||||
Overwatch
|
Overwatch
|
||||||
Pane
|
Pane
|
||||||
Papis
|
Papis
|
||||||
Pauper
|
Pauper
|
||||||
|
Pentakill
|
||||||
Peperaci
|
Peperaci
|
||||||
PfingstAka
|
PfingstAka
|
||||||
PfingstAka
|
PfingstAka
|
||||||
PfingstAkademie
|
PfingstAkademie
|
||||||
|
Pillion
|
||||||
Pluribus
|
Pluribus
|
||||||
PopOS
|
PopOS
|
||||||
|
Portainer
|
||||||
|
Power
|
||||||
Precision
|
Precision
|
||||||
Precon
|
Precon
|
||||||
Precons
|
Precons
|
||||||
PyEnv
|
PyEnv
|
||||||
|
RStudio
|
||||||
Rebowl
|
Rebowl
|
||||||
|
Reed
|
||||||
Reeves
|
Reeves
|
||||||
|
Reichenecker
|
||||||
Rocq
|
Rocq
|
||||||
Ruschenbaum
|
Ruschenbaum
|
||||||
|
SDS
|
||||||
SPM
|
SPM
|
||||||
|
Saber
|
||||||
Sagehorn
|
Sagehorn
|
||||||
|
Sagehorner
|
||||||
Scheller
|
Scheller
|
||||||
|
Schrang
|
||||||
|
Schwerdtner
|
||||||
|
Scrolling
|
||||||
Sedef
|
Sedef
|
||||||
Severance
|
Severance
|
||||||
Shinies
|
Shinies
|
||||||
Shiny
|
Shiny
|
||||||
Skyrim
|
Skyrim
|
||||||
|
Snape
|
||||||
|
Softbrod
|
||||||
SommerAka
|
SommerAka
|
||||||
SommerAkademie
|
SommerAkademie
|
||||||
Souleyman
|
Souleyman
|
||||||
SpotiFLAC
|
SpotiFLAC
|
||||||
|
Sprave
|
||||||
Stina
|
Stina
|
||||||
Stud.IP
|
Stud.IP
|
||||||
|
Study
|
||||||
|
Styropyro
|
||||||
TCAV
|
TCAV
|
||||||
|
Talking
|
||||||
Thinkpad
|
Thinkpad
|
||||||
|
Till
|
||||||
|
Timmendorfer
|
||||||
Tjark
|
Tjark
|
||||||
Tornow
|
Tornow
|
||||||
TrackPoint
|
TrackPoint
|
||||||
|
Traefik
|
||||||
UDEV
|
UDEV
|
||||||
|
Umbar
|
||||||
|
V1del
|
||||||
VIM
|
VIM
|
||||||
|
Verdener
|
||||||
|
Viano
|
||||||
|
Wechloy
|
||||||
Weizman
|
Weizman
|
||||||
|
Whisper
|
||||||
|
Wife
|
||||||
Willenborg
|
Willenborg
|
||||||
WinterAka
|
WinterAka
|
||||||
WinterAkademie
|
WinterAkademie
|
||||||
Writhing
|
Writhing
|
||||||
|
X.Org
|
||||||
|
Years
|
||||||
Ziegeleiweg
|
Ziegeleiweg
|
||||||
Zimin
|
Zimin
|
||||||
|
and
|
||||||
|
baseimage-gui
|
||||||
|
ctop
|
||||||
eKiwi
|
eKiwi
|
||||||
flac
|
flac
|
||||||
|
glaive
|
||||||
inf
|
inf
|
||||||
|
jlesages
|
||||||
liquidctl
|
liquidctl
|
||||||
npy
|
npy
|
||||||
|
ramdisk
|
||||||
|
systemd
|
||||||
|
xinput
|
||||||
zedbraxmen
|
zedbraxmen
|
||||||
|
|||||||
@@ -1,400 +1,42 @@
|
|||||||
-- setup keymap function
|
|
||||||
local lazygit = require("FTerm"):new({ cmd = "lazygit" })
|
|
||||||
local telescope = require("telescope")
|
|
||||||
local wk = require("which-key")
|
|
||||||
|
|
||||||
wk.add({
|
|
||||||
-- setup keymap groups
|
|
||||||
{ mode = "n", "g", desc = "LSP: goto" },
|
|
||||||
{ mode = "n", "gp", desc = "LSP: preview" },
|
|
||||||
{ mode = "c", "w", desc = "Write" },
|
|
||||||
{ mode = "c", "w!", desc = "Write: overwrite" },
|
|
||||||
{ mode = "n", "<leader>a", desc = "AI" },
|
|
||||||
{ mode = "n", "<leader>g", desc = "Git" },
|
|
||||||
{ mode = "n", "<leader>f", desc = "Telescope: find" },
|
|
||||||
{ mode = "n", "<leader>gd", desc = "Git: diff" },
|
|
||||||
{ mode = "n", "<leader>s", desc = "Substitute" },
|
|
||||||
{ mode = "n", "<leader>t", desc = "Terminal" },
|
|
||||||
{ mode = "n", "<leader>r", desc = "Quarto" },
|
|
||||||
{ mode = "n", "<C-W>", desc = "Navigation" },
|
|
||||||
-- unmap unwanted commands
|
-- unmap unwanted commands
|
||||||
{ mode = "n", "Zt", "<NOP>", noremap = true },
|
vim.keymap.set("n", "Zt", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "ZT", "<NOP>", noremap = true },
|
vim.keymap.set("n", "ZT", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<Space>", "<NOP>", noremap = true },
|
vim.keymap.set("n", "<Space>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F1>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F1>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F2>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F2>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F3>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F3>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F4>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F4>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F5>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F5>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F6>", "<NOP>", noremap = true },
|
vim.keymap.set("n", "<F6>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F7>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F7>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F8>", "<NOP>", noremap = true },
|
-- vim.keymap.set("n", "<F8>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F9>", "<NOP>", noremap = true },
|
vim.keymap.set("n", "<F9>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F10>", "<NOP>", noremap = true },
|
vim.keymap.set("n", "<F10>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F11>", "<NOP>", noremap = true },
|
vim.keymap.set("n", "<F11>", "<NOP>", { noremap = true })
|
||||||
{ mode = "n", "<F12>", "<NOP>", noremap = true },
|
vim.keymap.set("n", "<F12>", "<NOP>", { noremap = true })
|
||||||
|
|
||||||
-- shortcuts for quitting
|
-- shortcuts for quitting
|
||||||
{ mode = "n", "ZA", ":xa<CR>", desc = "Exit: write and quit all buffers", noremap = true },
|
vim.keymap.set("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 },
|
vim.keymap.set("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 },
|
vim.keymap.set("n", "ZZ", ":x<CR>", { desc = "Exit: write and quit current buffer", noremap = true })
|
||||||
|
|
||||||
-- shortcut for split navigation
|
-- shortcut for split navigation
|
||||||
{ mode = "n", "<C-h>", "<C-w>h", desc = "Navigation: go to left window", noremap = true },
|
vim.keymap.set("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 },
|
vim.keymap.set("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 },
|
vim.keymap.set("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 },
|
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Navigation: go to right window", noremap = true })
|
||||||
|
|
||||||
-- remap for dealing with word wrap
|
-- remap for dealing with word wrap
|
||||||
{ mode = "n", "j", "gj", desc = "Navigation: go down in wrapped lines", silent = true },
|
vim.keymap.set("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 },
|
vim.keymap.set("n", "k", "gk", { desc = "Navigation: go up in wrapped lines", silent = true })
|
||||||
|
|
||||||
-- compiler for languages
|
-- compiler for languages
|
||||||
{
|
vim.keymap.set("n", "<leader>c", ":w! | !compiler <c-r>%<CR>", {
|
||||||
mode = "n",
|
|
||||||
"<leader>c",
|
|
||||||
":w! | !compiler <c-r>%<CR>",
|
|
||||||
desc = "Compile: current file",
|
desc = "Compile: current file",
|
||||||
noremap = true,
|
noremap = true,
|
||||||
},
|
})
|
||||||
{
|
|
||||||
mode = "n",
|
vim.keymap.set("n", "w!!", 'execute "silent! write !sudo tee % >/dev/null" <bar> edit!', {
|
||||||
"w!!",
|
|
||||||
'execute "silent! write !sudo tee % >/dev/null" <bar> edit!',
|
|
||||||
desc = "Write: overwrite file over with sudo",
|
desc = "Write: overwrite file over with sudo",
|
||||||
noremap = true,
|
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 },
|
|
||||||
})
|
})
|
||||||
|
|||||||
15
.config/nvim/lua/plugins/action-hints.lua
Normal file
15
.config/nvim/lua/plugins/action-hints.lua
Normal 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,
|
||||||
|
}
|
||||||
85
.config/nvim/lua/plugins/agentic.lua
Normal file
85
.config/nvim/lua/plugins/agentic.lua
Normal 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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
12
.config/nvim/lua/plugins/auto-session.lua
Normal file
12
.config/nvim/lua/plugins/auto-session.lua
Normal 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',
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ return {
|
|||||||
"SmiteshP/nvim-navic",
|
"SmiteshP/nvim-navic",
|
||||||
"nvim-tree/nvim-web-devicons", -- optional dependency
|
"nvim-tree/nvim-web-devicons", -- optional dependency
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
theme = {
|
theme = {
|
||||||
normal = { bg = "#272727" },
|
normal = { bg = "#272727" },
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
5
.config/nvim/lua/plugins/cmp-nvim-lsp.lua
Normal file
5
.config/nvim/lua/plugins/cmp-nvim-lsp.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
-- nvim-cmp source for lsp
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- commenting improvements
|
-- commenting improvements
|
||||||
"numtostr/comment.nvim",
|
"numtostr/comment.nvim",
|
||||||
|
lazy = false,
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
return {
|
return {
|
||||||
-- improved refactoring
|
-- improved refactoring
|
||||||
"stevearc/conform.nvim",
|
"stevearc/conform.nvim",
|
||||||
config = function()
|
keys = {
|
||||||
require("conform").setup({
|
{
|
||||||
|
"<F8>",
|
||||||
|
function()
|
||||||
|
require("conform").format({ async = true, lsp_fallback = true })
|
||||||
|
end,
|
||||||
|
desc = "LSP: format",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
formatters_by_ft = {
|
formatters_by_ft = {
|
||||||
lua = { "stylua" },
|
lua = { "stylua" },
|
||||||
markdown = { "mdformat" },
|
markdown = { "mdformat" },
|
||||||
@@ -13,6 +21,5 @@ return {
|
|||||||
tex = { "latexindent" },
|
tex = { "latexindent" },
|
||||||
yaml = { "yamlfmt" },
|
yaml = { "yamlfmt" },
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
42
.config/nvim/lua/plugins/dial.lua
Normal file
42
.config/nvim/lua/plugins/dial.lua
Normal 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,
|
||||||
|
}
|
||||||
@@ -1,5 +1,19 @@
|
|||||||
return {
|
return {
|
||||||
-- side by side git diffs for merge conflicts
|
-- 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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
117
.config/nvim/lua/plugins/edgy.lua
Normal file
117
.config/nvim/lua/plugins/edgy.lua
Normal 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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
8
.config/nvim/lua/plugins/file-renamer.lua
Normal file
8
.config/nvim/lua/plugins/file-renamer.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
-- rename files in buffer
|
||||||
|
"tiyn/file-renamer.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
},
|
||||||
|
cmd = { "Ren", "Renamer" },
|
||||||
|
}
|
||||||
@@ -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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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({})
|
{
|
||||||
|
"gpd",
|
||||||
|
function()
|
||||||
|
require("goto-preview").goto_preview_definition()
|
||||||
end,
|
end,
|
||||||
|
desc = "LSP: preview definition",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gpy",
|
||||||
|
function()
|
||||||
|
require("goto-preview").goto_preview_type_definition()
|
||||||
|
end,
|
||||||
|
desc = "LSP: preview type definition",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gpi",
|
||||||
|
function()
|
||||||
|
require("goto-preview").goto_preview_implementation()
|
||||||
|
end,
|
||||||
|
desc = "LSP: list preview implementation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gpD",
|
||||||
|
function()
|
||||||
|
require("goto-preview").goto_preview_declaration()
|
||||||
|
end,
|
||||||
|
desc = "LSP: preview declaration",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gpr",
|
||||||
|
function()
|
||||||
|
require("goto-preview").goto_preview_references()
|
||||||
|
end,
|
||||||
|
desc = "LSP: list preview references",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gpc",
|
||||||
|
function()
|
||||||
|
require("goto-preview").close_all_win()
|
||||||
|
end,
|
||||||
|
desc = "LSP: close all preview windows",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
border = "rounded",
|
||||||
|
preview_window_title = { enable = true, position = "center" },
|
||||||
|
|
||||||
|
post_open_hook = function(bufnr, _)
|
||||||
|
local close = function()
|
||||||
|
require("goto-preview").close_all_win()
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<c-h>", close, { buffer = bufnr, silent = true })
|
||||||
|
vim.keymap.set("n", "q", close, { buffer = bufnr, silent = true })
|
||||||
|
end,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
14
.config/nvim/lua/plugins/image.lua
Normal file
14
.config/nvim/lua/plugins/image.lua
Normal 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", "" },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
10
.config/nvim/lua/plugins/jupytext.lua
Normal file
10
.config/nvim/lua/plugins/jupytext.lua
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,8 +1,15 @@
|
|||||||
return {
|
return {
|
||||||
{
|
|
||||||
"frabjous/knap",
|
"frabjous/knap",
|
||||||
ft = { "tex" },
|
ft = { "tex", "markdown" },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>p",
|
||||||
|
function() require("knap").toggle_autopreviewing() end,
|
||||||
|
desc = "Knap: toggle autopreview",
|
||||||
|
},
|
||||||
|
},
|
||||||
config = function()
|
config = function()
|
||||||
|
local knap = require("knap")
|
||||||
local function detect_engine()
|
local function detect_engine()
|
||||||
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
|
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
|
||||||
if first_line:match("^%%%s*xelatex") then
|
if first_line:match("^%%%s*xelatex") then
|
||||||
@@ -11,40 +18,49 @@ return {
|
|||||||
return "pdflatex"
|
return "pdflatex"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_engine()
|
local function set_engine()
|
||||||
local engine = detect_engine()
|
local engine = detect_engine()
|
||||||
|
|
||||||
if engine == "xelatex" then
|
if engine == "xelatex" then
|
||||||
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
|
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
|
||||||
else
|
else
|
||||||
vim.g.knap_settings.textopdf = "pdflatex -synctex=1 -interaction=batchmode %docroot%"
|
vim.g.knap_settings.textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.g.knap_settings = {
|
vim.g.knap_settings = {
|
||||||
delay = 100,
|
delay = 100,
|
||||||
texoutputext = "pdf",
|
texoutputext = "pdf",
|
||||||
|
-- textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%",
|
||||||
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
|
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
|
||||||
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
|
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
|
||||||
textopdfviewerrefresh = "reload",
|
textopdfviewerrefresh = "reload",
|
||||||
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
|
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("User", {
|
vim.api.nvim_create_autocmd("User", {
|
||||||
pattern = "KnapShowView",
|
pattern = "KnapShowView",
|
||||||
callback = set_engine,
|
callback = set_engine,
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("User", {
|
vim.api.nvim_create_autocmd("User", {
|
||||||
pattern = "KnapCompile",
|
pattern = "KnapCompile",
|
||||||
callback = set_engine,
|
callback = set_engine,
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||||
pattern = "*.tex",
|
pattern = "*.tex",
|
||||||
callback = set_engine,
|
callback = set_engine,
|
||||||
})
|
})
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = { "tex", "markdown" },
|
||||||
|
callback = function(args)
|
||||||
|
local bufnr = args.buf
|
||||||
|
vim.keymap.set({ "n", "v", "i" }, "<F7>", function()
|
||||||
|
knap.forward_jump()
|
||||||
|
end, {
|
||||||
|
buffer = bufnr,
|
||||||
|
desc = "Knap: jump to cursor",
|
||||||
|
})
|
||||||
|
if vim.bo[bufnr].filetype == "tex" then
|
||||||
|
knap.toggle_autopreviewing()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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", "([{", ")]}", "'\"`" }
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
@@ -2,33 +2,13 @@ return {
|
|||||||
-- statusline
|
-- statusline
|
||||||
"nvim-lualine/lualine.nvim",
|
"nvim-lualine/lualine.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
"nvim-tree/nvim-web-devicons",
|
||||||
lazy = true,
|
"tiyn/tccs.nvim",
|
||||||
},
|
|
||||||
{
|
|
||||||
"f-person/git-blame.nvim",
|
"f-person/git-blame.nvim",
|
||||||
config = function()
|
|
||||||
vim.g.gitblame_display_virtual_text = 0
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{ "tiyn/tccs.nvim" },
|
|
||||||
{
|
|
||||||
"tiyn/action-hints.nvim",
|
"tiyn/action-hints.nvim",
|
||||||
config = function()
|
|
||||||
require("action-hints").setup({
|
|
||||||
template = {
|
|
||||||
-- definition = { text = "D", color = "#add8e6" },
|
|
||||||
-- references = { text = "R%s", color = "#ff6666" },
|
|
||||||
definition = { text = Definition_sign, color = "#add8e6" },
|
|
||||||
references = { text = Reference_sign, color = "#ff6666" },
|
|
||||||
},
|
},
|
||||||
})
|
lazy = false,
|
||||||
end,
|
opts = {
|
||||||
},
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("lualine").setup({
|
|
||||||
options = {
|
options = {
|
||||||
globalstatus = true,
|
globalstatus = true,
|
||||||
symbols = {
|
symbols = {
|
||||||
@@ -44,13 +24,19 @@ return {
|
|||||||
sections = {
|
sections = {
|
||||||
lualine_b = {
|
lualine_b = {
|
||||||
{
|
{
|
||||||
require("gitblame").get_current_blame_text,
|
function()
|
||||||
cond = require("gitblame").is_blame_text_available,
|
return require("gitblame").get_current_blame_text()
|
||||||
|
end,
|
||||||
|
cond = function()
|
||||||
|
return require("gitblame").is_blame_text_available()
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
lualine_c = {},
|
lualine_c = {},
|
||||||
lualine_x = {
|
lualine_x = {
|
||||||
require("action-hints").statusline,
|
function()
|
||||||
|
return require("action-hints").statusline()
|
||||||
|
end,
|
||||||
"encoding",
|
"encoding",
|
||||||
"fileformat",
|
"fileformat",
|
||||||
{
|
{
|
||||||
@@ -75,6 +61,5 @@ return {
|
|||||||
},
|
},
|
||||||
lualine_z = { "progress", "location" },
|
lualine_z = { "progress", "location" },
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
|
|||||||
11
.config/nvim/lua/plugins/luasnip.lua
Normal file
11
.config/nvim/lua/plugins/luasnip.lua
Normal 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,
|
||||||
|
}
|
||||||
23
.config/nvim/lua/plugins/mason-null-ls.lua
Normal file
23
.config/nvim/lua/plugins/mason-null-ls.lua
Normal 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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -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",
|
||||||
config = function()
|
|
||||||
require("null-ls").setup({
|
|
||||||
sources = {
|
|
||||||
-- assembler
|
|
||||||
require("null-ls").builtins.formatting.asmfmt,
|
|
||||||
-- lua
|
|
||||||
require("null-ls").builtins.formatting.stylua,
|
|
||||||
-- markdown
|
|
||||||
require("null-ls").builtins.formatting.mdformat,
|
|
||||||
-- python
|
|
||||||
require("null-ls").builtins.formatting.isort,
|
|
||||||
require("null-ls").builtins.formatting.yapf,
|
|
||||||
-- shell
|
|
||||||
require("null-ls").builtins.formatting.shfmt,
|
|
||||||
-- yaml
|
|
||||||
require("null-ls").builtins.formatting.yamlfmt,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"jay-babu/mason-null-ls.nvim",
|
"jay-babu/mason-null-ls.nvim",
|
||||||
opts = {
|
|
||||||
automatic_installation = true,
|
|
||||||
ensure_installed = {
|
|
||||||
-- assembler
|
|
||||||
"asmfmt",
|
|
||||||
-- lua
|
|
||||||
"stylua",
|
|
||||||
-- markdown
|
|
||||||
"mdformat",
|
|
||||||
-- python
|
|
||||||
"isort",
|
|
||||||
"yapf",
|
|
||||||
-- shell
|
|
||||||
"shfmt",
|
|
||||||
-- yaml
|
|
||||||
"yamlfmt",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = { ui = { icons = Install_signs } },
|
opts = { ui = { icons = Install_signs } },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
opts = {
|
|
||||||
backend = "ueberzug",
|
|
||||||
max_width = 100,
|
|
||||||
max_height = 12,
|
|
||||||
max_height_window_percentage = math.huge,
|
|
||||||
max_width_window_percentage = math.huge,
|
|
||||||
window_overlap_clear_enabled = true,
|
|
||||||
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quarto-dev/quarto-nvim",
|
"quarto-dev/quarto-nvim",
|
||||||
dependencies = {
|
|
||||||
"jmbuhr/otter.nvim",
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
lspFeatures = {
|
|
||||||
languages = { "python" },
|
|
||||||
chunks = "all",
|
|
||||||
diagnostics = {
|
|
||||||
enabled = true,
|
|
||||||
triggers = { "BufWritePost" },
|
|
||||||
},
|
|
||||||
completion = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
codeRunner = {
|
|
||||||
enabled = true,
|
|
||||||
default_method = "molten",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"GCBallesteros/jupytext.nvim",
|
"GCBallesteros/jupytext.nvim",
|
||||||
opts = {
|
|
||||||
style = "markdown",
|
|
||||||
output_extension = "md",
|
|
||||||
force_ft = "markdown",
|
|
||||||
},
|
},
|
||||||
},
|
lazy = false,
|
||||||
},
|
|
||||||
build = ":UpdateRemotePlugins",
|
|
||||||
init = function()
|
init = function()
|
||||||
vim.g.molten_auto_open_output = false
|
vim.g.molten_auto_open_output = false
|
||||||
vim.g.molten_wrap_output = true
|
vim.g.molten_wrap_output = true
|
||||||
@@ -57,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,
|
||||||
}
|
}
|
||||||
|
|||||||
8
.config/nvim/lua/plugins/neogen.lua
Normal file
8
.config/nvim/lua/plugins/neogen.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
-- generate annotations automatically
|
||||||
|
"danymat/neogen",
|
||||||
|
lazy = false,
|
||||||
|
opts = {
|
||||||
|
snippet_engine = "luasnip",
|
||||||
|
},
|
||||||
|
}
|
||||||
24
.config/nvim/lua/plugins/none-ls.lua
Normal file
24
.config/nvim/lua/plugins/none-ls.lua
Normal 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,
|
||||||
|
}
|
||||||
@@ -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({
|
||||||
|
|||||||
@@ -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 = {
|
||||||
"*",
|
"*",
|
||||||
|
|||||||
@@ -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",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
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>",
|
||||||
@@ -27,8 +26,10 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
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,
|
||||||
|
|||||||
@@ -3,63 +3,35 @@ return {
|
|||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"williamboman/mason-lspconfig.nvim",
|
||||||
{
|
|
||||||
"mrcjkb/rustaceanvim",
|
|
||||||
version = "^6",
|
|
||||||
lazy = false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
config = function()
|
|
||||||
Capabilities = require("cmp_nvim_lsp").default_capabilities()
|
|
||||||
Capabilities.textDocument.foldingRange = {
|
|
||||||
dynamicRegistration = false,
|
|
||||||
lineFoldingOnly = true,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
},
|
lazy = false,
|
||||||
config = function()
|
opts = {
|
||||||
require("mason-lspconfig").setup({
|
|
||||||
automatic_setup = true,
|
automatic_setup = true,
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
-- assembler
|
|
||||||
"asm_lsp",
|
"asm_lsp",
|
||||||
-- c
|
|
||||||
"clangd",
|
"clangd",
|
||||||
-- docker
|
|
||||||
"dockerls",
|
"dockerls",
|
||||||
-- go
|
|
||||||
"gopls",
|
"gopls",
|
||||||
-- html
|
|
||||||
"html",
|
"html",
|
||||||
-- json
|
|
||||||
"jsonls",
|
"jsonls",
|
||||||
-- xml
|
|
||||||
"lemminx",
|
"lemminx",
|
||||||
-- latex
|
|
||||||
"ltex",
|
"ltex",
|
||||||
"texlab",
|
"texlab",
|
||||||
-- lua
|
|
||||||
"lua_ls",
|
"lua_ls",
|
||||||
-- markdown
|
|
||||||
"marksman",
|
"marksman",
|
||||||
-- nim
|
|
||||||
"nimls",
|
"nimls",
|
||||||
-- python
|
|
||||||
"pyright",
|
"pyright",
|
||||||
-- r
|
|
||||||
"r_language_server",
|
"r_language_server",
|
||||||
-- shell
|
|
||||||
"bashls",
|
"bashls",
|
||||||
-- sql
|
|
||||||
"sqlls",
|
"sqlls",
|
||||||
-- typescript / javascript
|
|
||||||
"ts_ls",
|
"ts_ls",
|
||||||
-- yaml
|
|
||||||
"yamlls",
|
"yamlls",
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local mason_lspconfig = require("mason-lspconfig")
|
||||||
|
mason_lspconfig.setup(opts)
|
||||||
local default_flags = {
|
local default_flags = {
|
||||||
debounce_text_changes = 150,
|
debounce_text_changes = 150,
|
||||||
allow_incremental_sync = true,
|
allow_incremental_sync = true,
|
||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,39 +5,19 @@ 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",
|
|
||||||
},
|
|
||||||
Info = {
|
|
||||||
highlight = "DiagnosticSignInfo",
|
|
||||||
},
|
|
||||||
Hint = {
|
|
||||||
highlight = "DiagnosticSignHint",
|
|
||||||
},
|
|
||||||
Misc = {
|
|
||||||
highlight = "Special",
|
|
||||||
},
|
|
||||||
GitAdd = {
|
|
||||||
highlight = "GitGutterAdd",
|
|
||||||
},
|
|
||||||
GitChange = {
|
|
||||||
highlight = "GitGutterChange",
|
|
||||||
},
|
|
||||||
GitDelete = {
|
|
||||||
highlight = "GitGutterDelete",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
excluded_filetypes = {
|
excluded_filetypes = {
|
||||||
"cmp_docs",
|
"cmp_docs",
|
||||||
@@ -50,7 +30,10 @@ return {
|
|||||||
"FTerm",
|
"FTerm",
|
||||||
"",
|
"",
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local scrollbar = require("scrollbar")
|
||||||
|
scrollbar.setup(opts)
|
||||||
require("scrollbar.handlers.search").setup()
|
require("scrollbar.handlers.search").setup()
|
||||||
require("scrollbar.handlers.gitsigns").setup()
|
require("scrollbar.handlers.gitsigns").setup()
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
"nvim-tree/nvim-web-devicons",
|
||||||
lazy = true,
|
},
|
||||||
|
cmd = { "NvimTreeToggle" },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<F2>",
|
||||||
|
"<cmd>NvimTreeToggle<CR>",
|
||||||
|
desc = "File tree: toggle",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ 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()
|
||||||
require("nvim-treesitter.config").setup({
|
local treesitter = require("nvim-treesitter")
|
||||||
ensure_installed = {
|
treesitter.setup()
|
||||||
|
treesitter.install({
|
||||||
"bash",
|
"bash",
|
||||||
"css",
|
"css",
|
||||||
"html",
|
"html",
|
||||||
@@ -21,16 +21,6 @@ return {
|
|||||||
"rust",
|
"rust",
|
||||||
"lua",
|
"lua",
|
||||||
"yaml",
|
"yaml",
|
||||||
},
|
|
||||||
-- highlight = { enable = true },
|
|
||||||
autotag = { enable = false },
|
|
||||||
-- rainbow = {
|
|
||||||
-- enable = true,
|
|
||||||
-- extended_mode = true,
|
|
||||||
-- max_file_lines = nil,
|
|
||||||
-- -- colors = {},
|
|
||||||
-- -- termcolors = {}
|
|
||||||
-- }
|
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
11
.config/nvim/lua/plugins/nvim-ts-autotag.lua
Normal file
11
.config/nvim/lua/plugins/nvim-ts-autotag.lua
Normal 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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -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" }, {
|
||||||
|
|||||||
8
.config/nvim/lua/plugins/nvim-web-devicons.lua
Normal file
8
.config/nvim/lua/plugins/nvim-web-devicons.lua
Normal 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,
|
||||||
|
}
|
||||||
@@ -1,8 +1,19 @@
|
|||||||
return {
|
return {
|
||||||
-- ollama llm integration
|
-- ollama llm integration
|
||||||
{
|
|
||||||
"huynle/ogpt.nvim",
|
"huynle/ogpt.nvim",
|
||||||
event = "VeryLazy",
|
dependencies = {
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
"folke/edgy.nvim",
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>ao",
|
||||||
|
"<cmd>OGPT<CR>",
|
||||||
|
desc = "OGPT: Toggle chat",
|
||||||
|
},
|
||||||
|
},
|
||||||
opts = {
|
opts = {
|
||||||
default_provider = "ollama",
|
default_provider = "ollama",
|
||||||
edgy = true, -- enable this!
|
edgy = true, -- enable this!
|
||||||
@@ -15,126 +26,4 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
dependencies = {
|
|
||||||
"MunifTanjim/nui.nvim",
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"folke/edgy.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
init = function()
|
|
||||||
vim.opt.laststatus = 3
|
|
||||||
vim.opt.splitkeep = "screen" -- or "topline" or "screen"
|
|
||||||
end,
|
|
||||||
opts = {
|
|
||||||
exit_when_last = false,
|
|
||||||
animate = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
wo = {
|
|
||||||
winbar = true,
|
|
||||||
winfixwidth = true,
|
|
||||||
winfixheight = false,
|
|
||||||
winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
|
|
||||||
spell = false,
|
|
||||||
signcolumn = "no",
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
-- -- close window
|
|
||||||
["q"] = function(win)
|
|
||||||
win:close()
|
|
||||||
end,
|
|
||||||
-- close sidebar
|
|
||||||
["Q"] = function(win)
|
|
||||||
win.view.edgebar:close()
|
|
||||||
end,
|
|
||||||
-- increase width
|
|
||||||
["<S-Right>"] = function(win)
|
|
||||||
win:resize("width", 3)
|
|
||||||
end,
|
|
||||||
-- decrease width
|
|
||||||
["<S-Left>"] = function(win)
|
|
||||||
win:resize("width", -3)
|
|
||||||
end,
|
|
||||||
-- increase height
|
|
||||||
["<S-Up>"] = function(win)
|
|
||||||
win:resize("height", 3)
|
|
||||||
end,
|
|
||||||
-- decrease height
|
|
||||||
["<S-Down>"] = function(win)
|
|
||||||
win:resize("height", -3)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
right = {
|
|
||||||
{
|
|
||||||
title = "OGPT Popup",
|
|
||||||
ft = "ogpt-popup",
|
|
||||||
size = { width = 0.2 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Parameters",
|
|
||||||
ft = "ogpt-parameters-window",
|
|
||||||
size = { height = 6 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Template",
|
|
||||||
ft = "ogpt-template",
|
|
||||||
size = { height = 6 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Sessions",
|
|
||||||
ft = "ogpt-sessions",
|
|
||||||
size = { height = 6 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT System Input",
|
|
||||||
ft = "ogpt-system-window",
|
|
||||||
size = { height = 6 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT",
|
|
||||||
ft = "ogpt-window",
|
|
||||||
size = { height = 0.5 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT {{{selection}}}",
|
|
||||||
ft = "ogpt-selection",
|
|
||||||
size = { width = 80, height = 4 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPt {{{instruction}}}",
|
|
||||||
ft = "ogpt-instruction",
|
|
||||||
size = { width = 80, height = 4 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Chat",
|
|
||||||
ft = "ogpt-input",
|
|
||||||
size = { width = 80, height = 4 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
return {
|
|
||||||
-- rename files in buffer
|
|
||||||
"stevearc/oil.nvim",
|
|
||||||
---@module 'oil'
|
|
||||||
---@type oil.setupopts
|
|
||||||
opts = {},
|
|
||||||
dependencies = { "nvim-mini/mini.icons" },
|
|
||||||
}
|
|
||||||
@@ -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,
|
||||||
|
|||||||
26
.config/nvim/lua/plugins/pantran.lua
Normal file
26
.config/nvim/lua/plugins/pantran.lua
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
return {
|
||||||
|
-- translator
|
||||||
|
"potamides/pantran.nvim",
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>tr",
|
||||||
|
"<cmd>Pantran<CR>",
|
||||||
|
mode = { "n", "v" },
|
||||||
|
desc = "Pantran: translate",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
default_engine = "google",
|
||||||
|
-- default_engine = "deepl",
|
||||||
|
engines = {
|
||||||
|
deepl = {
|
||||||
|
default_target = "de",
|
||||||
|
},
|
||||||
|
google = {
|
||||||
|
fallback = {
|
||||||
|
default_target = "de",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
6
.config/nvim/lua/plugins/platformio.lua
Normal file
6
.config/nvim/lua/plugins/platformio.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
-- integration plugin for platformio
|
||||||
|
"sbatin/platformio.nvim",
|
||||||
|
dependencies = { "numToStr/FTerm.nvim" },
|
||||||
|
cmd = { "PIO" },
|
||||||
|
}
|
||||||
@@ -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
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>fp",
|
||||||
|
function()
|
||||||
|
vim.cmd("Telescope projections")
|
||||||
|
end,
|
||||||
|
desc = "Telescope: find projects",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
workspaces = {
|
||||||
{ "~/code/main", { ".git" } },
|
{ "~/code/main", { ".git" } },
|
||||||
{ "~/code/uni", { ".git" } },
|
{ "~/code/uni", { ".git" } },
|
||||||
},
|
},
|
||||||
store_hooks = {
|
store_hooks = {
|
||||||
pre = function()
|
pre = function()
|
||||||
-- nvim-tree
|
local ok, api = pcall(require, "nvim-tree.api")
|
||||||
local nvim_tree_present, api = pcall(require, "nvim-tree.api")
|
if ok then
|
||||||
if nvim_tree_present then
|
|
||||||
api.tree.close()
|
api.tree.close()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local projections = require("projections")
|
||||||
|
local session = require("projections.session")
|
||||||
|
|
||||||
|
projections.setup(opts)
|
||||||
|
require("telescope").load_extension("projections")
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("VimLeavePre", {
|
||||||
|
callback = function()
|
||||||
|
session.store(vim.loop.cwd())
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
require("telescope").load_extension("projections")
|
vim.api.nvim_create_autocmd("VimEnter", {
|
||||||
|
callback = function()
|
||||||
|
if vim.fn.argc() ~= 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
vim.schedule(function()
|
||||||
|
local session_info = session.info(vim.loop.cwd())
|
||||||
|
if session_info ~= nil then
|
||||||
|
session.restore(vim.loop.cwd())
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
desc = "Restore last session automatically",
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
80
.config/nvim/lua/plugins/quarto-nvim.lua
Normal file
80
.config/nvim/lua/plugins/quarto-nvim.lua
Normal 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,
|
||||||
|
}
|
||||||
@@ -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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
21
.config/nvim/lua/plugins/render-markdown.lua
Normal file
21
.config/nvim/lua/plugins/render-markdown.lua
Normal 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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
6
.config/nvim/lua/plugins/resolve.lua
Normal file
6
.config/nvim/lua/plugins/resolve.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
-- color and improve git merge conflicts
|
||||||
|
"spacedentist/resolve.nvim",
|
||||||
|
lazy = false,
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
6
.config/nvim/lua/plugins/rustacean.lua
Normal file
6
.config/nvim/lua/plugins/rustacean.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
-- support for rust
|
||||||
|
"mrcjkb/rustaceanvim",
|
||||||
|
version = "^6",
|
||||||
|
lazy = false, -- this plugin is already lazy
|
||||||
|
}
|
||||||
@@ -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 = {
|
||||||
|
{
|
||||||
|
"<F10>t",
|
||||||
|
"<cmd>call spelunker#toggle()<CR>",
|
||||||
|
desc = "Spelunker: toggle spell check",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<F10>s",
|
||||||
|
"z=",
|
||||||
|
desc = "Spell: display suggestions",
|
||||||
|
},
|
||||||
|
},
|
||||||
config = function()
|
config = function()
|
||||||
-- vim.o.nospell = true
|
-- vim.o.nospell = true
|
||||||
vim.g.enable_spelunker_vim = 0
|
vim.g.enable_spelunker_vim = 0
|
||||||
vim.g.spelunker_disable_acronym_checking = 1
|
vim.g.spelunker_disable_acronym_checking = 1
|
||||||
end,
|
end,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
return {
|
return {
|
||||||
-- colorscheme
|
-- colorscheme
|
||||||
{
|
|
||||||
"tiyn/tccs.nvim",
|
"tiyn/tccs.nvim",
|
||||||
lazy = false,
|
lazy = false,
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
config = function()
|
opts = {
|
||||||
require("tccs").setup({
|
|
||||||
require("tccs").load(),
|
require("tccs").load(),
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
6
.config/nvim/lua/plugins/telescope-fzf-native.lua
Normal file
6
.config/nvim/lua/plugins/telescope-fzf-native.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
-- fzf support for telescope
|
||||||
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
|
build = "make",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
}
|
||||||
@@ -1,12 +1,32 @@
|
|||||||
return {
|
return {
|
||||||
-- fuzzy finder
|
-- fuzzy finder
|
||||||
{
|
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
version = "0.1.2",
|
version = "*",
|
||||||
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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
16
.config/nvim/lua/plugins/tiny-inline-diagnostic.lua
Normal file
16
.config/nvim/lua/plugins/tiny-inline-diagnostic.lua
Normal 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,
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
return {
|
return {
|
||||||
-- todo symbols and highlighting
|
-- todo symbols and highlighting
|
||||||
{
|
|
||||||
"folke/todo-comments.nvim",
|
"folke/todo-comments.nvim",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
keywords = {
|
keywords = {
|
||||||
ERRO = { icon = Error_sign, color = "error" },
|
ERRO = { icon = Error_sign, color = "error" },
|
||||||
@@ -18,5 +18,4 @@ return {
|
|||||||
default = { "Operator" },
|
default = { "Operator" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
16
.config/nvim/lua/plugins/treesj.lua
Normal file
16
.config/nvim/lua/plugins/treesj.lua
Normal 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 = {},
|
||||||
|
}
|
||||||
54
.config/nvim/lua/plugins/treewalker.lua
Normal file
54
.config/nvim/lua/plugins/treewalker.lua
Normal 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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -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 = {},
|
||||||
|
|||||||
@@ -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",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
return {
|
return {
|
||||||
-- improved wild menu
|
-- improved wild menu
|
||||||
{
|
|
||||||
"gelguy/wilder.nvim",
|
"gelguy/wilder.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
"nvim-tree/nvim-web-devicons",
|
||||||
lazy = true,
|
|
||||||
},
|
|
||||||
"roxma/nvim-yarp",
|
"roxma/nvim-yarp",
|
||||||
"roxma/vim-hug-neovim-rpc",
|
"roxma/vim-hug-neovim-rpc",
|
||||||
"romgrk/fzy-lua-native",
|
"romgrk/fzy-lua-native",
|
||||||
"nixprime/cpsm",
|
"nixprime/cpsm",
|
||||||
},
|
},
|
||||||
config = function()
|
lazy = false,
|
||||||
local wilder = require("wilder")
|
opts = {
|
||||||
wilder.setup({
|
|
||||||
modes = { ":", "/", "?" },
|
modes = { ":", "/", "?" },
|
||||||
accept_key = "<CR>",
|
accept_key = "<CR>",
|
||||||
reject_key = "<C-e>",
|
reject_key = "<C-e>",
|
||||||
})
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local wilder = require("wilder")
|
||||||
|
wilder.setup(opts)
|
||||||
wilder.set_option("pipeline", {
|
wilder.set_option("pipeline", {
|
||||||
wilder.branch(
|
wilder.branch(
|
||||||
wilder.python_file_finder_pipeline({
|
wilder.python_file_finder_pipeline({
|
||||||
@@ -65,10 +63,9 @@ return {
|
|||||||
"renderer",
|
"renderer",
|
||||||
wilder.popupmenu_renderer({
|
wilder.popupmenu_renderer({
|
||||||
highlighter = highlighters,
|
highlighter = highlighters,
|
||||||
left = { " ", wilder.popupmenu_devicons() },
|
-- left = { " ", wilder.popupmenu_devicons() }, -- has problems with mason
|
||||||
right = { " ", wilder.popupmenu_scrollbar() },
|
right = { " ", wilder.popupmenu_scrollbar() },
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
end,
|
end,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
136
.config/pipewire/client-rt.conf
Normal file
136
.config/pipewire/client-rt.conf
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
86
.config/pipewire/client.conf
Normal file
86
.config/pipewire/client.conf
Normal 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
|
||||||
|
}
|
||||||
63
.config/pipewire/filter-chain.conf
Normal file
63
.config/pipewire/filter-chain.conf
Normal 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
139
.config/pipewire/jack.conf
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
476
.config/pipewire/minimal.conf
Normal file
476
.config/pipewire/minimal.conf
Normal 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
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
153
.config/pipewire/pipewire-aes67.conf
Normal file
153
.config/pipewire/pipewire-aes67.conf
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]
|
||||||
80
.config/pipewire/pipewire-avb.conf
Normal file
80
.config/pipewire/pipewire-avb.conf
Normal 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.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
180
.config/pipewire/pipewire-pulse.conf
Normal file
180
.config/pipewire/pipewire-pulse.conf
Normal 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 ] }
|
||||||
|
#}
|
||||||
|
]
|
||||||
344
.config/pipewire/pipewire.conf
Normal file
344
.config/pipewire/pipewire.conf
Normal 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 } ] }
|
||||||
|
]
|
||||||
19
.config/pipewire/pipewire.conf.d/00-sink-blackhole_1.conf
Normal file
19
.config/pipewire/pipewire.conf.d/00-sink-blackhole_1.conf
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
18
.config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf
Normal file
18
.config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf
Normal 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
Reference in New Issue
Block a user