mirror of
https://github.com/tiyn/dotfiles.git
synced 2026-05-01 10:01: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
|
||||
alias weather="curl wttr.in"
|
||||
|
||||
# whisper.cpp
|
||||
alias whisper="whisper-cli -m ~/.local/share/whisper-cli/ggml-large-v3-turbo-german-q5_0.bin"
|
||||
|
||||
# wget
|
||||
alias wget="wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"
|
||||
alias wget2c="aria2c"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
[options]
|
||||
|
||||
background = #FFFFFF
|
||||
|
||||
[binds]
|
||||
<plus> = zoom 1
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ x-scheme-handler/betterdiscord=discord.desktop
|
||||
x-scheme-handler/discord=vesktop.desktop
|
||||
x-scheme-handler/sgnl=signal.desktop
|
||||
x-scheme-handler/signalcaptcha=signal.desktop
|
||||
x-scheme-handler/freetube=freetube.desktop
|
||||
|
||||
[Added Associations]
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
|
||||
|
||||
@@ -1,7 +1 @@
|
||||
vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
||||
callback = function()
|
||||
require("csvview").enable()
|
||||
end,
|
||||
})
|
||||
|
||||
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" }, {
|
||||
callback = function()
|
||||
vim.o.foldenable = false
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufLeave" }, {
|
||||
callback = function()
|
||||
if vim.o.ma then
|
||||
require("tidy").run()
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "VimLeave" }, {
|
||||
callback = function()
|
||||
os.execute("mdclear " .. vim.fn.expand("%"))
|
||||
@@ -27,14 +13,3 @@ vim.api.nvim_create_autocmd({ "VimLeave" }, {
|
||||
vim.o.shiftwidth = 2
|
||||
vim.o.softtabstop = 2
|
||||
vim.o.textwidth = 100
|
||||
|
||||
-- frabjous/knap
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>p",
|
||||
require("knap").toggle_autopreviewing,
|
||||
{ noremap = true, 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" }, {
|
||||
callback = function()
|
||||
os.execute("texclear " .. vim.fn.expand("%"))
|
||||
@@ -22,25 +7,3 @@ vim.api.nvim_create_autocmd({ "VimLeave" }, {
|
||||
vim.o.shiftwidth = 2
|
||||
vim.o.softtabstop = 2
|
||||
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.textwidth = 80
|
||||
|
||||
-- set session options
|
||||
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
|
||||
|
||||
-- read files correctly
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
{
|
||||
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
||||
"action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
|
||||
"agentic.nvim": { "branch": "main", "commit": "3e6175c1141cc3cb5cc08e98bff01b06a0a67467" },
|
||||
"auto-session": { "branch": "main", "commit": "62437532b38495551410b3f377bcf4aaac574ebe" },
|
||||
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
|
||||
"blink.download": { "branch": "main", "commit": "86361b98f3c8317904a08e3bd12cf3cdcbe3e925" },
|
||||
"blink.pairs": { "branch": "main", "commit": "5a34bf6ea72340a70083548e186d745ac4882899" },
|
||||
"blink.download": { "branch": "main", "commit": "dda2666685a5ac3598166577d2e34f1fff6b1637" },
|
||||
"blink.pairs": { "branch": "main", "commit": "4e43012356d33a26f69eae475f746fbe9f325f44" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||
@@ -10,70 +13,80 @@
|
||||
"cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" },
|
||||
"conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
|
||||
"cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" },
|
||||
"csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" },
|
||||
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
|
||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||
"edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" },
|
||||
"file-renamer.nvim": { "branch": "master", "commit": "da78d496ffb3dd55a4c70b4a9c28686630a57d3a" },
|
||||
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
||||
"fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
|
||||
"git-blame.nvim": { "branch": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "7c4faa3540d0781a28588cafbd4dd187a28ac6e3" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
|
||||
"goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
|
||||
"image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
|
||||
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
|
||||
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||
"leap.nvim": { "branch": "main", "commit": "774c452da3521d4434f912b6ca6dd97318aca4b0" },
|
||||
"leap.nvim": { "branch": "main", "commit": "e7ca7b92f996bcbc34beee8b244ea5ef6692b478" },
|
||||
"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" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
||||
"luasnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "a676ab7282da8d651e175118bcf54483ca11e46d" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" },
|
||||
"luasnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" },
|
||||
"mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" },
|
||||
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
|
||||
"mini.icons": { "branch": "main", "commit": "5b9076dae1bfbe47ba4a14bc8b967cde0ab5d77e" },
|
||||
"modes.nvim": { "branch": "main", "commit": "0932ba4e0bdc3457ac89a8aeed4d56ca0b36977a" },
|
||||
"mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" },
|
||||
"modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" },
|
||||
"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" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
|
||||
"nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
|
||||
"nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
|
||||
"nvim-lilypond-suite": { "branch": "main", "commit": "a1a313fd6028a196cc9aaa8c8501838fe8cc8e2a" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "4d0724be90b633ddce51b328a631060e6acd7d66" },
|
||||
"nvim-lilypond-suite": { "branch": "main", "commit": "e57ced9e0df33773566af795d70919d577c58ce2" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "bf5abe69c1874531f359a822d0cff4d73e26113f" },
|
||||
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
||||
"nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" },
|
||||
"nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "9197f3ee3f0c9a754aab5b16500db6d7da5f68fd" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "24cfcc94372e526fd9e1c2803ede9e0f1715e33f" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||
"nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "8069e89df2d7259704286a5906a11c5b27d5b440" },
|
||||
"nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" },
|
||||
"ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" },
|
||||
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
|
||||
"otter.nvim": { "branch": "main", "commit": "4796602953348e19fb24916557af7b89e188751f" },
|
||||
"outline.nvim": { "branch": "main", "commit": "ead1820d49c8e79ce89cab1c2c318981b695c9d2" },
|
||||
"otter.nvim": { "branch": "main", "commit": "a455e68a99d395889ab30a25ac3846a135e93c46" },
|
||||
"outline.nvim": { "branch": "main", "commit": "c293eb56db880a0539bf9d85b4a27816960b863e" },
|
||||
"pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" },
|
||||
"papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"platformio.nvim": { "branch": "main", "commit": "546e1e0b5afdd970f140d0ccaf322d41c0f23941" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||
"popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" },
|
||||
"projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
|
||||
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
|
||||
"quarto-nvim": { "branch": "main", "commit": "d923bb7cfc2bde41143e1c531c28190f0fade3a2" },
|
||||
"quarto-nvim": { "branch": "main", "commit": "17f1e5d664bc615478230dc0240666329efacf9b" },
|
||||
"renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "3f3eea97b80839f629c951ca660ffd125bfa5b34" },
|
||||
"resolve.nvim": { "branch": "master", "commit": "1ed8bcc9ce7d43a0e8e05d0001c9cadb822d95a8" },
|
||||
"rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" },
|
||||
"spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" },
|
||||
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
|
||||
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
|
||||
"tccs.nvim": { "branch": "master", "commit": "06df4330266bb4b85458745b5090b29386722512" },
|
||||
"tccs.nvim": { "branch": "master", "commit": "23fabbb0a65517307e571f63fe7a3760670086fe" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
|
||||
"telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
|
||||
"tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" },
|
||||
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "147af4e49f51dd48f41972de26552872b8ba7b25" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||
"treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" },
|
||||
"treewalker.nvim": { "branch": "main", "commit": "3680d19fc275f275352e9a3c05f3ec5079dfc0a7" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
|
||||
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },
|
||||
|
||||
@@ -4,118 +4,3 @@ vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
vim.highlight.on_yank({ higroup = "YankHighlight" })
|
||||
end,
|
||||
})
|
||||
|
||||
-- gnikdroy/projections.nvim
|
||||
local Session = require("projections.session")
|
||||
vim.api.nvim_create_autocmd({ "VimLeavePre" }, {
|
||||
callback = function()
|
||||
Session.store(vim.loop.cwd())
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
||||
callback = function()
|
||||
if vim.fn.argc() ~= 0 then
|
||||
return
|
||||
end
|
||||
local session_info = Session.info(vim.loop.cwd())
|
||||
if session_info ~= nil then
|
||||
Session.restore(vim.loop.cwd())
|
||||
end
|
||||
end,
|
||||
desc = "Restore last session automatically",
|
||||
})
|
||||
|
||||
-- benlubas/molten-nvim
|
||||
local imb = function(e)
|
||||
vim.schedule(function()
|
||||
local kernels = vim.fn.MoltenAvailableKernels()
|
||||
local try_kernel_name = function()
|
||||
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
|
||||
return metadata.kernelspec.name
|
||||
end
|
||||
local ok, kernel_name = pcall(try_kernel_name)
|
||||
if not ok or not vim.tbl_contains(kernels, kernel_name) then
|
||||
kernel_name = nil
|
||||
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
|
||||
if venv ~= nil then
|
||||
kernel_name = string.match(venv, "/.+/(.+)")
|
||||
end
|
||||
end
|
||||
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
|
||||
vim.cmd(("MoltenInit %s"):format(kernel_name))
|
||||
end
|
||||
vim.cmd("MoltenImportOutput")
|
||||
end)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("BufAdd", {
|
||||
pattern = { "*.ipynb" },
|
||||
callback = imb,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
pattern = { "*.ipynb" },
|
||||
callback = function(e)
|
||||
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
|
||||
imb(e)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local default_notebook = [[
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython"
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
]]
|
||||
|
||||
local function new_notebook(filename)
|
||||
local path = filename .. ".ipynb"
|
||||
local file = io.open(path, "w")
|
||||
if file then
|
||||
file:write(default_notebook)
|
||||
file:close()
|
||||
vim.cmd("edit " .. path)
|
||||
else
|
||||
print("Error: Could not open new notebook file for writing.")
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("NewNotebook", function(opts)
|
||||
new_notebook(opts.args)
|
||||
end, {
|
||||
nargs = 1,
|
||||
complete = "file",
|
||||
})
|
||||
|
||||
-- stevearc/oil.nvim
|
||||
vim.api.nvim_create_user_command("Renamer", function(opts)
|
||||
vim.cmd("Oil " .. opts.args)
|
||||
end, { nargs = "*" })
|
||||
|
||||
@@ -4,76 +4,121 @@ Artifacts
|
||||
Betreuerrolle
|
||||
Bonitur
|
||||
Branch
|
||||
Crowd-Interaction
|
||||
Branch
|
||||
Branches
|
||||
Crowd
|
||||
Cutie
|
||||
Destruction
|
||||
Developer
|
||||
Dictation
|
||||
Dirt
|
||||
Diskursartefakten
|
||||
Dom
|
||||
Dreams
|
||||
Embedding
|
||||
Entlebucher
|
||||
Extraction
|
||||
For-Loop
|
||||
For
|
||||
Formatter
|
||||
Französischvokabeln
|
||||
GOAT
|
||||
Genervtheit
|
||||
Gestresstheit
|
||||
Gym
|
||||
Handwerksunternehmen
|
||||
Homeserver
|
||||
Immigrationsgeschichte
|
||||
Impro-Theater
|
||||
Impro
|
||||
Improtheater
|
||||
Infokratie
|
||||
Informatikstudierende
|
||||
Informatikstudiun
|
||||
Interaction
|
||||
Ira
|
||||
Jahreszeitenunterschied
|
||||
Jahreszeitenunterschiede
|
||||
Kardinälin
|
||||
Kreatindosis
|
||||
Königinnensubstanz
|
||||
LLM-Paper
|
||||
Loop
|
||||
Magazinbeute
|
||||
Magazinbeuten
|
||||
Merge
|
||||
Merges
|
||||
Meta
|
||||
Mods
|
||||
Mono
|
||||
Ne
|
||||
Orgas
|
||||
Paper
|
||||
Platformer
|
||||
Poetry
|
||||
Poetry-Slam
|
||||
Poetryslam
|
||||
Pollenhose
|
||||
SDS-Plenum
|
||||
SPM-Gruppe
|
||||
Presenter
|
||||
Quizabend
|
||||
Renamer
|
||||
Repositories
|
||||
Repository
|
||||
Scammer
|
||||
Sennenhund
|
||||
Slam
|
||||
Slam
|
||||
Slammern
|
||||
Slams
|
||||
Soundness
|
||||
Speech-to-Text
|
||||
Speech
|
||||
Speedrun
|
||||
Speedruns
|
||||
Spells
|
||||
Stations
|
||||
Sub
|
||||
Terraforming
|
||||
Torrenting
|
||||
Uni-Theater
|
||||
Trainspotter
|
||||
Trefferverhältnis
|
||||
Uni
|
||||
Unitheater
|
||||
Verification
|
||||
Vokabelkarten
|
||||
While-Loop
|
||||
Wrap-Up-Folie
|
||||
While
|
||||
Wohnungslose
|
||||
Wrap-Up
|
||||
Xiayun
|
||||
Zweifelsfall
|
||||
algenverseucht
|
||||
aneinandergelehnt
|
||||
awkward
|
||||
be
|
||||
bürgerlicher
|
||||
bürgerlichere
|
||||
bürgerlicheren
|
||||
cyber-physische
|
||||
cyber
|
||||
egozentristisch
|
||||
en
|
||||
eux
|
||||
fois
|
||||
gedätscht
|
||||
gepiekst
|
||||
geupdatet
|
||||
gonna
|
||||
histoire
|
||||
ira
|
||||
kinky
|
||||
klassistisch
|
||||
même
|
||||
performistisch
|
||||
physische
|
||||
pseudomotivierend
|
||||
pseudomotivierende
|
||||
respekt-
|
||||
reingeredet
|
||||
rumgealbert
|
||||
shiftete
|
||||
temps
|
||||
this
|
||||
to
|
||||
ultra
|
||||
warpl
|
||||
well
|
||||
will
|
||||
Ça
|
||||
ça
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
dockerized
|
||||
keymap
|
||||
synaptics
|
||||
|
||||
@@ -1,19 +1,27 @@
|
||||
AI
|
||||
APV
|
||||
Accuracy
|
||||
Agentic
|
||||
Akallabêth
|
||||
Altisaur
|
||||
An
|
||||
Anki
|
||||
Annoyed
|
||||
ApoRed
|
||||
Applied
|
||||
Arrabbiata
|
||||
Asiahung
|
||||
Aule
|
||||
Aules
|
||||
Baez
|
||||
Barros
|
||||
Beater
|
||||
Beek
|
||||
Bela
|
||||
Bennie
|
||||
Berim
|
||||
Betterov
|
||||
Bladee
|
||||
Boarding
|
||||
Boelsen
|
||||
Bontjes
|
||||
@@ -21,133 +29,233 @@ Brusch
|
||||
CAR
|
||||
CATS
|
||||
CDSS
|
||||
CUDA
|
||||
Carré
|
||||
Casper
|
||||
Caspers
|
||||
Cato
|
||||
CdE
|
||||
CdEs
|
||||
Chrysalis
|
||||
Color
|
||||
Combi
|
||||
Commander
|
||||
Crusader
|
||||
DFKI
|
||||
DFKIs
|
||||
DPU
|
||||
Daisy's
|
||||
Darth
|
||||
DeepSeek
|
||||
Dekarldent
|
||||
Delivery
|
||||
Destiny 2
|
||||
Doom-Scrolling
|
||||
Distrobox
|
||||
Doom
|
||||
Doyma
|
||||
EasyEffects
|
||||
Eckhoff
|
||||
Edain
|
||||
Elodie
|
||||
Ernsting's
|
||||
Euphoria
|
||||
Explainable
|
||||
Explodes
|
||||
Eyal
|
||||
FIDO-Stick
|
||||
FIDO
|
||||
Face
|
||||
Fischerhude
|
||||
Flac
|
||||
Forest
|
||||
Forgejo
|
||||
Französischmodul
|
||||
Frevert
|
||||
Freverts
|
||||
Friedl
|
||||
Friesenturnier
|
||||
Gathering
|
||||
GitNex
|
||||
Glaive
|
||||
Glenn
|
||||
Glenns
|
||||
Gondor
|
||||
Governikus
|
||||
GrapheneOS
|
||||
Greater
|
||||
Grixis
|
||||
Grosshardt
|
||||
Gump
|
||||
Guttersnipe
|
||||
Haarentor
|
||||
Habenhausen
|
||||
Hailo
|
||||
Helldivers
|
||||
Hellmers
|
||||
Higgers
|
||||
Hillmannplatz
|
||||
Hough
|
||||
Hue
|
||||
Hunter
|
||||
Höper
|
||||
IFAM
|
||||
IFAMs
|
||||
IMRaD
|
||||
Ikigai
|
||||
Immich
|
||||
Int
|
||||
Ira
|
||||
JT
|
||||
Jacobin
|
||||
Jeanine
|
||||
Jojen
|
||||
Karamasov
|
||||
Keep
|
||||
Kingdoms
|
||||
Kluge
|
||||
KohakuHub
|
||||
Kratom
|
||||
Kreyenhop
|
||||
Kubitschek
|
||||
Käte
|
||||
LLM
|
||||
LLMs
|
||||
LabNex
|
||||
Lanz
|
||||
Later
|
||||
Lemmie
|
||||
Lemmies
|
||||
LightDM
|
||||
LightDM-GTK-Greeter
|
||||
LightDM-Mini-Greeter
|
||||
LilyPond
|
||||
Line Dance
|
||||
Lounge
|
||||
MEVIS
|
||||
MTG
|
||||
Maarten
|
||||
Magic
|
||||
Maite
|
||||
Marmelab
|
||||
Marten
|
||||
Mathis
|
||||
Matvey
|
||||
Mauli
|
||||
Mentos
|
||||
Meret
|
||||
Meshtastic
|
||||
Metzener
|
||||
MiiMii
|
||||
Mint
|
||||
MusikAka
|
||||
MusikAkademie
|
||||
NVIM
|
||||
NVIM
|
||||
NVIM
|
||||
Nate
|
||||
NeoVIM
|
||||
Neovim
|
||||
NetworkManager
|
||||
NextCloud
|
||||
Nim
|
||||
Nobody
|
||||
Noel
|
||||
North
|
||||
Novruz
|
||||
Númenor
|
||||
OFFIS
|
||||
Oberhausern
|
||||
Oberweseler
|
||||
Odysee
|
||||
Opam
|
||||
OpenCloud
|
||||
Ove
|
||||
Overwatch
|
||||
Pane
|
||||
Papis
|
||||
Pauper
|
||||
Pentakill
|
||||
Peperaci
|
||||
PfingstAka
|
||||
PfingstAka
|
||||
PfingstAkademie
|
||||
Pillion
|
||||
Pluribus
|
||||
PopOS
|
||||
Portainer
|
||||
Power
|
||||
Precision
|
||||
Precon
|
||||
Precons
|
||||
PyEnv
|
||||
RStudio
|
||||
Rebowl
|
||||
Reed
|
||||
Reeves
|
||||
Reichenecker
|
||||
Rocq
|
||||
Ruschenbaum
|
||||
SDS
|
||||
SPM
|
||||
Saber
|
||||
Sagehorn
|
||||
Sagehorner
|
||||
Scheller
|
||||
Schrang
|
||||
Schwerdtner
|
||||
Scrolling
|
||||
Sedef
|
||||
Severance
|
||||
Shinies
|
||||
Shiny
|
||||
Skyrim
|
||||
Snape
|
||||
Softbrod
|
||||
SommerAka
|
||||
SommerAkademie
|
||||
Souleyman
|
||||
SpotiFLAC
|
||||
Sprave
|
||||
Stina
|
||||
Stud.IP
|
||||
Study
|
||||
Styropyro
|
||||
TCAV
|
||||
Talking
|
||||
Thinkpad
|
||||
Till
|
||||
Timmendorfer
|
||||
Tjark
|
||||
Tornow
|
||||
TrackPoint
|
||||
Traefik
|
||||
UDEV
|
||||
Umbar
|
||||
V1del
|
||||
VIM
|
||||
Verdener
|
||||
Viano
|
||||
Wechloy
|
||||
Weizman
|
||||
Whisper
|
||||
Wife
|
||||
Willenborg
|
||||
WinterAka
|
||||
WinterAkademie
|
||||
Writhing
|
||||
X.Org
|
||||
Years
|
||||
Ziegeleiweg
|
||||
Zimin
|
||||
and
|
||||
baseimage-gui
|
||||
ctop
|
||||
eKiwi
|
||||
flac
|
||||
glaive
|
||||
inf
|
||||
jlesages
|
||||
liquidctl
|
||||
npy
|
||||
ramdisk
|
||||
systemd
|
||||
xinput
|
||||
zedbraxmen
|
||||
|
||||
@@ -1,400 +1,42 @@
|
||||
-- setup keymap function
|
||||
local lazygit = require("FTerm"):new({ cmd = "lazygit" })
|
||||
local telescope = require("telescope")
|
||||
local wk = require("which-key")
|
||||
-- unmap unwanted commands
|
||||
vim.keymap.set("n", "Zt", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "ZT", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "<Space>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F1>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F2>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F3>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F4>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F5>", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "<F6>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F7>", "<NOP>", { noremap = true })
|
||||
-- vim.keymap.set("n", "<F8>", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "<F9>", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "<F10>", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "<F11>", "<NOP>", { noremap = true })
|
||||
vim.keymap.set("n", "<F12>", "<NOP>", { noremap = true })
|
||||
|
||||
wk.add({
|
||||
-- setup keymap groups
|
||||
{ mode = "n", "g", desc = "LSP: goto" },
|
||||
{ mode = "n", "gp", desc = "LSP: preview" },
|
||||
{ mode = "c", "w", desc = "Write" },
|
||||
{ mode = "c", "w!", desc = "Write: overwrite" },
|
||||
{ mode = "n", "<leader>a", desc = "AI" },
|
||||
{ mode = "n", "<leader>g", desc = "Git" },
|
||||
{ mode = "n", "<leader>f", desc = "Telescope: find" },
|
||||
{ mode = "n", "<leader>gd", desc = "Git: diff" },
|
||||
{ mode = "n", "<leader>s", desc = "Substitute" },
|
||||
{ mode = "n", "<leader>t", desc = "Terminal" },
|
||||
{ mode = "n", "<leader>r", desc = "Quarto" },
|
||||
{ mode = "n", "<C-W>", desc = "Navigation" },
|
||||
-- unmap unwanted commands
|
||||
{ mode = "n", "Zt", "<NOP>", noremap = true },
|
||||
{ mode = "n", "ZT", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<Space>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F1>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F2>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F3>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F4>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F5>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F6>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F7>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F8>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F9>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F10>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F11>", "<NOP>", noremap = true },
|
||||
{ mode = "n", "<F12>", "<NOP>", noremap = true },
|
||||
-- shortcuts for quitting
|
||||
{ mode = "n", "ZA", ":xa<CR>", desc = "Exit: write and quit all buffers", noremap = true },
|
||||
{ mode = "n", "ZQ", ":conf q<CR>", desc = "Exit: quit current buffer", noremap = true },
|
||||
{ mode = "n", "ZZ", ":x<CR>", desc = "Exit: write and quit current buffer", noremap = true },
|
||||
-- shortcut for split navigation
|
||||
{ mode = "n", "<C-h>", "<C-w>h", desc = "Navigation: go to left window", noremap = true },
|
||||
{ mode = "n", "<C-j>", "<C-w>j", desc = "Navigation: go to lower window", noremap = true },
|
||||
{ mode = "n", "<C-k>", "<C-w>k", desc = "Navigation: go to upper window", noremap = true },
|
||||
{ mode = "n", "<C-l>", "<C-w>l", desc = "Navigation: go to right window", noremap = true },
|
||||
-- remap for dealing with word wrap
|
||||
{ mode = "n", "j", "gj", desc = "Navigation: go down in wrapped lines", silent = true },
|
||||
{ mode = "n", "k", "gk", desc = "Navigation: go up in wrapped lines", silent = true },
|
||||
-- compiler for languages
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>c",
|
||||
":w! | !compiler <c-r>%<CR>",
|
||||
desc = "Compile: current file",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"w!!",
|
||||
'execute "silent! write !sudo tee % >/dev/null" <bar> edit!',
|
||||
desc = "Write: overwrite file over with sudo",
|
||||
noremap = true,
|
||||
},
|
||||
-- tpope/vim-abolish
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>sa",
|
||||
":%S//g<Left><Left>",
|
||||
desc = "Substitute: free form",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>ss",
|
||||
":%S/\\<<C-r><C-w>\\>//g<Left><Left>",
|
||||
desc = "Substitute: word under cursor",
|
||||
noremap = true,
|
||||
},
|
||||
-- simrat39/symbols-outline.nvim
|
||||
{ mode = "n", "<F3>", ":Outline<CR>", desc = "CTags: toggle" },
|
||||
-- nvim-tree/nvim-tree.lua
|
||||
{ mode = "n", "<F2>", ":NvimTreeToggle toggle<CR>", desc = "File tree: toggle" },
|
||||
-- mbbill/undotree
|
||||
{ mode = "n", "<F1>", ":UndotreeToggle<CR>", desc = "Undo tree: toggle" },
|
||||
-- amrbashir/nvim-docs-view
|
||||
{
|
||||
mode = "n",
|
||||
"go",
|
||||
":DocsViewToggle<CR>",
|
||||
desc = "LSP: toggle documentation window",
|
||||
noremap = true,
|
||||
},
|
||||
-- numtostr/fterm.nvim
|
||||
{ mode = "n", "<leader>tt", require("FTerm").toggle, desc = "Terminal: open", noremap = true },
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>gt",
|
||||
function()
|
||||
lazygit:toggle()
|
||||
end,
|
||||
desc = "Git: open lazygit",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>tg",
|
||||
function()
|
||||
lazygit:toggle()
|
||||
end,
|
||||
desc = "Terminal: open lazygit",
|
||||
noremap = true,
|
||||
},
|
||||
-- sindrets/diffview.nvim
|
||||
{ mode = "n", "<leader>gdo", ":DiffviewOpen<CR>", desc = "Git: open diff" },
|
||||
{ mode = "n", "<leader>gdc", ":DiffviewClose<CR>", desc = "Git: close diff" },
|
||||
-- folke/trouble.nvim
|
||||
{ mode = "n", "<F4>", ":Trouble diagnostics toggle<CR>", desc = "LSP: toggle error list" },
|
||||
-- hrsh7th/nvim-cmp
|
||||
{
|
||||
mode = "n",
|
||||
"gd",
|
||||
function()
|
||||
vim.lsp.buf.definition()
|
||||
end,
|
||||
desc = "LSP: goto definition",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gD",
|
||||
function()
|
||||
vim.lsp.buf.declaration()
|
||||
end,
|
||||
desc = "LSP: goto declaration",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gT",
|
||||
function()
|
||||
vim.lsp.buf.type_definition()
|
||||
end,
|
||||
desc = "LSP: goto type definition",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gi",
|
||||
function()
|
||||
vim.lsp.buf.implementation()
|
||||
end,
|
||||
desc = "LSP: list implementation",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gr",
|
||||
function()
|
||||
vim.lsp.buf.references()
|
||||
end,
|
||||
desc = "LSP: list references",
|
||||
noremap = true,
|
||||
},
|
||||
{ mode = "n", "K", vim.lsp.buf.hover(), desc = "LSP: show documentation", noremap = true },
|
||||
{
|
||||
mode = "n",
|
||||
"<F8>",
|
||||
function()
|
||||
require("conform").format({ async = true, lsp_fallback = true })
|
||||
end,
|
||||
desc = "LSP: format",
|
||||
noremap = true,
|
||||
},
|
||||
-- rmagatti/goto-preview
|
||||
{
|
||||
mode = "n",
|
||||
"gpd",
|
||||
function()
|
||||
require("goto-preview").goto_preview_definition()
|
||||
end,
|
||||
desc = "LSP: preview definition",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gpy",
|
||||
function()
|
||||
require("goto-preview").goto_preview_type_definition()
|
||||
end,
|
||||
desc = "LSP: preview type definition",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gpi",
|
||||
function()
|
||||
require("goto-preview").goto_preview_implementation()
|
||||
end,
|
||||
desc = "LSP: list preview implementation",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gpD",
|
||||
function()
|
||||
require("goto-preview").goto_preview_declaration()
|
||||
end,
|
||||
desc = "LSP: preview declaration",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gpr",
|
||||
function()
|
||||
require("goto-preview").goto_preview_references()
|
||||
end,
|
||||
desc = "LSP: list preview references",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gpc",
|
||||
function()
|
||||
require("goto-preview").close_all_win()
|
||||
end,
|
||||
desc = "LSP: close all preview windows",
|
||||
noremap = true,
|
||||
},
|
||||
-- filipdutescu/renamer.nvim
|
||||
{
|
||||
mode = "n",
|
||||
"<F5>",
|
||||
function()
|
||||
require("renamer").rename()
|
||||
end,
|
||||
desc = "LSP: rename",
|
||||
noremap = true,
|
||||
},
|
||||
-- nvim-telescope/telescope.nvim
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>ff",
|
||||
":Telescope find_files<CR>",
|
||||
desc = "Telescope: find files",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>ff",
|
||||
":Telescope find_files<CR>",
|
||||
desc = "Telescope: find files",
|
||||
noremap = true,
|
||||
},
|
||||
-- archie-judd/telescope-words.nvim
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>wd",
|
||||
telescope.extensions.telescope_words.search_dictionary,
|
||||
desc = "Telescope: search dictionary",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>wt",
|
||||
telescope.extensions.telescope_words.search_thesaurus,
|
||||
desc = "Telescope: search thesaurus",
|
||||
noremap = true,
|
||||
},
|
||||
-- gnikdroy/projections.nvim
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>fp",
|
||||
function()
|
||||
vim.cmd("Telescope projections")
|
||||
end,
|
||||
desc = "Telescope: find projects",
|
||||
noremap = true,
|
||||
},
|
||||
-- kamykn/spelunker.vim
|
||||
{
|
||||
mode = "n",
|
||||
"<F10>t",
|
||||
":call spelunker#toggle()<CR>",
|
||||
desc = "Spelunker: toggle spell check",
|
||||
noremap = true,
|
||||
},
|
||||
{ mode = "n", "<F10>s", "z=", desc = "Spell: display suggestions" },
|
||||
-- kevinhwang91/nvim-ufo
|
||||
{
|
||||
mode = "n",
|
||||
"K",
|
||||
function()
|
||||
local winid = require("ufo").peekFoldedLinesUnderCursor()
|
||||
if not winid then
|
||||
vim.lsp.buf.hover()
|
||||
end
|
||||
end,
|
||||
desc = "LSP: peek folded section",
|
||||
noremap = true,
|
||||
},
|
||||
-- kevinhwang91/nvim-hlslens
|
||||
{
|
||||
mode = "n",
|
||||
"n",
|
||||
[[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
|
||||
desc = "Search: search forward",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"N",
|
||||
[[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
|
||||
desc = "Search: search backwards",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
-- sindrets/winshift.nvim
|
||||
{
|
||||
mode = "n",
|
||||
"<C-W>m",
|
||||
":WinShift<CR>",
|
||||
desc = "Navigation: enter window shift mode",
|
||||
noremap = true,
|
||||
},
|
||||
-- ggandor/leap.nvim
|
||||
{
|
||||
mode = "n",
|
||||
"f",
|
||||
"<Plug>(leap-forward)",
|
||||
desc = "Navigation: enter leap mode for forward movement",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"F",
|
||||
"<Plug>(leap-backward)",
|
||||
desc = "Navigation: enter leap mode for backwards movement",
|
||||
noremap = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"gf",
|
||||
"<Plug>(leap-from-window)",
|
||||
desc = "Navigation: enter leap mode for other windows",
|
||||
noremap = true,
|
||||
},
|
||||
-- quarto-dev/quarto-nvim
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>rc",
|
||||
require("quarto.runner").run_cell,
|
||||
desc = "Quarto: Run cell",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>ra",
|
||||
require("quarto.runner").run_above,
|
||||
desc = "Quarto: Run cell and above",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>rA",
|
||||
require("quarto.runner").run_all,
|
||||
desc = "Quarto: Run all cells",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>rl",
|
||||
require("quarto.runner").run_line,
|
||||
desc = "Quarto: Run line",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>rr",
|
||||
require("quarto.runner").run_range,
|
||||
desc = "Quarto: Run visual range",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
mode = "n",
|
||||
"<leader>rL",
|
||||
function()
|
||||
require("quarto.runner").run_all(true)
|
||||
end,
|
||||
desc = "Quarto: Run all cells of all languages",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
},
|
||||
-- huynle/ogpt-nvim
|
||||
{ mode = "n", "<leader>ai", ":OGPT<CR>", desc = "OGTP: Open AI View", noremap = true },
|
||||
-- shortcuts for quitting
|
||||
vim.keymap.set("n", "ZA", ":xa<CR>", { desc = "Exit: write and quit all buffers", noremap = true })
|
||||
vim.keymap.set("n", "ZQ", ":conf q<CR>", { desc = "Exit: quit current buffer", noremap = true })
|
||||
vim.keymap.set("n", "ZZ", ":x<CR>", { desc = "Exit: write and quit current buffer", noremap = true })
|
||||
|
||||
-- shortcut for split navigation
|
||||
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Navigation: go to left window", noremap = true })
|
||||
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Navigation: go to lower window", noremap = true })
|
||||
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Navigation: go to upper window", noremap = true })
|
||||
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Navigation: go to right window", noremap = true })
|
||||
|
||||
-- remap for dealing with word wrap
|
||||
vim.keymap.set("n", "j", "gj", { desc = "Navigation: go down in wrapped lines", silent = true })
|
||||
vim.keymap.set("n", "k", "gk", { desc = "Navigation: go up in wrapped lines", silent = true })
|
||||
|
||||
-- compiler for languages
|
||||
vim.keymap.set("n", "<leader>c", ":w! | !compiler <c-r>%<CR>", {
|
||||
desc = "Compile: current file",
|
||||
noremap = true,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "w!!", 'execute "silent! write !sudo tee % >/dev/null" <bar> edit!', {
|
||||
desc = "Write: overwrite file over with sudo",
|
||||
noremap = true,
|
||||
})
|
||||
|
||||
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',
|
||||
},
|
||||
}
|
||||
@@ -1,15 +1,16 @@
|
||||
return {
|
||||
-- vs code like topbar
|
||||
"utilyre/barbecue.nvim",
|
||||
name = "barbecue",
|
||||
version = "*",
|
||||
dependencies = {
|
||||
"SmiteshP/nvim-navic",
|
||||
"nvim-tree/nvim-web-devicons", -- optional dependency
|
||||
},
|
||||
opts = {
|
||||
theme = {
|
||||
normal = { bg = "#272727" },
|
||||
},
|
||||
"utilyre/barbecue.nvim",
|
||||
name = "barbecue",
|
||||
version = "*",
|
||||
dependencies = {
|
||||
"SmiteshP/nvim-navic",
|
||||
"nvim-tree/nvim-web-devicons", -- optional dependency
|
||||
},
|
||||
lazy = false,
|
||||
opts = {
|
||||
theme = {
|
||||
normal = { bg = "#272727" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
return {
|
||||
-- rainbow auto-pairs
|
||||
-- rainbow and auto-pairs for parenthesis
|
||||
"saghen/blink.pairs",
|
||||
version = "*", -- (recommended) only required with prebuilt binaries
|
||||
-- download prebuilt binaries from github releases
|
||||
dependencies = "saghen/blink.download",
|
||||
dependencies = { "saghen/blink.download" }, -- download prebuilt binaries from github releases
|
||||
lazy = false,
|
||||
--- @module 'blink.pairs'
|
||||
--- @type blink.pairs.Config
|
||||
opts = {
|
||||
|
||||
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 {
|
||||
-- commenting improvements
|
||||
"numtostr/comment.nvim",
|
||||
lazy = false,
|
||||
opts = {},
|
||||
}
|
||||
|
||||
@@ -1,18 +1,25 @@
|
||||
return {
|
||||
-- improved refactoring
|
||||
"stevearc/conform.nvim",
|
||||
config = function()
|
||||
require("conform").setup({
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
markdown = { "mdformat" },
|
||||
python = { "isort", "yapf" },
|
||||
sh = { "shfmt" },
|
||||
bash = { "shfmt" },
|
||||
zsh = { "shfmt" },
|
||||
tex = { "latexindent" },
|
||||
yaml = { "yamlfmt" },
|
||||
},
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
"<F8>",
|
||||
function()
|
||||
require("conform").format({ async = true, lsp_fallback = true })
|
||||
end,
|
||||
desc = "LSP: format",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
markdown = { "mdformat" },
|
||||
python = { "isort", "yapf" },
|
||||
sh = { "shfmt" },
|
||||
bash = { "shfmt" },
|
||||
zsh = { "shfmt" },
|
||||
tex = { "latexindent" },
|
||||
yaml = { "yamlfmt" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
return {
|
||||
-- improved csv handling
|
||||
"hat0uma/csvview.nvim",
|
||||
ft = { "csv" },
|
||||
opts = {
|
||||
parser = { comments = { "#", "//" } },
|
||||
keymaps = {
|
||||
@@ -12,5 +13,9 @@ return {
|
||||
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 {
|
||||
-- side by side git diffs for merge conflicts
|
||||
-- side by side git diff mode coloring
|
||||
"sindrets/diffview.nvim",
|
||||
keys = {
|
||||
{
|
||||
"<leader>gdo",
|
||||
"<cmd>DiffviewOpen<CR>",
|
||||
mode = "n",
|
||||
desc = "Git: open diff",
|
||||
},
|
||||
{
|
||||
"<leader>gdc",
|
||||
"<cmd>DiffviewClose<CR>",
|
||||
mode = "n",
|
||||
desc = "Git: close diff",
|
||||
},
|
||||
},
|
||||
opts = {},
|
||||
}
|
||||
|
||||
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 {
|
||||
-- floating terminal to toggle
|
||||
"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 = {},
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
return {
|
||||
-- display git status per line
|
||||
"lewis6991/gitsigns.nvim",
|
||||
lazy = true, -- load as dependency
|
||||
opts = {},
|
||||
}
|
||||
|
||||
@@ -1,8 +1,62 @@
|
||||
return {
|
||||
-- preview definitions using floating windows
|
||||
"rmagatti/goto-preview",
|
||||
dependencies = "rmagatti/logger.nvim",
|
||||
config = function()
|
||||
require("goto-preview").setup({})
|
||||
end,
|
||||
dependencies = { "rmagatti/logger.nvim" },
|
||||
keys = {
|
||||
{
|
||||
"gpd",
|
||||
function()
|
||||
require("goto-preview").goto_preview_definition()
|
||||
end,
|
||||
desc = "LSP: preview definition",
|
||||
},
|
||||
{
|
||||
"gpy",
|
||||
function()
|
||||
require("goto-preview").goto_preview_type_definition()
|
||||
end,
|
||||
desc = "LSP: preview type definition",
|
||||
},
|
||||
{
|
||||
"gpi",
|
||||
function()
|
||||
require("goto-preview").goto_preview_implementation()
|
||||
end,
|
||||
desc = "LSP: list preview implementation",
|
||||
},
|
||||
{
|
||||
"gpD",
|
||||
function()
|
||||
require("goto-preview").goto_preview_declaration()
|
||||
end,
|
||||
desc = "LSP: preview declaration",
|
||||
},
|
||||
{
|
||||
"gpr",
|
||||
function()
|
||||
require("goto-preview").goto_preview_references()
|
||||
end,
|
||||
desc = "LSP: list preview references",
|
||||
},
|
||||
{
|
||||
"gpc",
|
||||
function()
|
||||
require("goto-preview").close_all_win()
|
||||
end,
|
||||
desc = "LSP: close all preview windows",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
border = "rounded",
|
||||
preview_window_title = { enable = true, position = "center" },
|
||||
|
||||
post_open_hook = function(bufnr, _)
|
||||
local close = function()
|
||||
require("goto-preview").close_all_win()
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<c-h>", close, { buffer = bufnr, silent = true })
|
||||
vim.keymap.set("n", "q", close, { buffer = bufnr, silent = true })
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
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 {
|
||||
-- show indentation lines
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
event = "BufReadPre",
|
||||
lazy = false,
|
||||
main = "ibl",
|
||||
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,50 +1,66 @@
|
||||
return {
|
||||
{
|
||||
"frabjous/knap",
|
||||
ft = { "tex" },
|
||||
config = function()
|
||||
local function detect_engine()
|
||||
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
|
||||
if first_line:match("^%%%s*xelatex") then
|
||||
return "xelatex"
|
||||
else
|
||||
return "pdflatex"
|
||||
end
|
||||
end
|
||||
|
||||
local function set_engine()
|
||||
local engine = detect_engine()
|
||||
|
||||
if engine == "xelatex" then
|
||||
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
|
||||
else
|
||||
vim.g.knap_settings.textopdf = "pdflatex -synctex=1 -interaction=batchmode %docroot%"
|
||||
end
|
||||
end
|
||||
|
||||
vim.g.knap_settings = {
|
||||
delay = 100,
|
||||
texoutputext = "pdf",
|
||||
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
|
||||
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
|
||||
textopdfviewerrefresh = "reload",
|
||||
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
|
||||
}
|
||||
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "KnapShowView",
|
||||
callback = set_engine,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "KnapCompile",
|
||||
callback = set_engine,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||
pattern = "*.tex",
|
||||
callback = set_engine,
|
||||
})
|
||||
end,
|
||||
"frabjous/knap",
|
||||
ft = { "tex", "markdown" },
|
||||
keys = {
|
||||
{
|
||||
"<leader>p",
|
||||
function() require("knap").toggle_autopreviewing() end,
|
||||
desc = "Knap: toggle autopreview",
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local knap = require("knap")
|
||||
local function detect_engine()
|
||||
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
|
||||
if first_line:match("^%%%s*xelatex") then
|
||||
return "xelatex"
|
||||
else
|
||||
return "pdflatex"
|
||||
end
|
||||
end
|
||||
local function set_engine()
|
||||
local engine = detect_engine()
|
||||
if engine == "xelatex" then
|
||||
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
|
||||
else
|
||||
vim.g.knap_settings.textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%"
|
||||
end
|
||||
end
|
||||
vim.g.knap_settings = {
|
||||
delay = 100,
|
||||
texoutputext = "pdf",
|
||||
-- textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%",
|
||||
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
|
||||
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
|
||||
textopdfviewerrefresh = "reload",
|
||||
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
|
||||
}
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "KnapShowView",
|
||||
callback = set_engine,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "KnapCompile",
|
||||
callback = set_engine,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||
pattern = "*.tex",
|
||||
callback = set_engine,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "tex", "markdown" },
|
||||
callback = function(args)
|
||||
local bufnr = args.buf
|
||||
vim.keymap.set({ "n", "v", "i" }, "<F7>", function()
|
||||
knap.forward_jump()
|
||||
end, {
|
||||
buffer = bufnr,
|
||||
desc = "Knap: jump to cursor",
|
||||
})
|
||||
if vim.bo[bufnr].filetype == "tex" then
|
||||
knap.toggle_autopreviewing()
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,6 +1,26 @@
|
||||
return {
|
||||
-- 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()
|
||||
require("leap").opts.highlight_unlabeled_phase_one_targets = true
|
||||
require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
return {
|
||||
-- show function signature while typing
|
||||
"ray-x/lsp_signature.nvim",
|
||||
lazy = false,
|
||||
opts = {
|
||||
bind = true,
|
||||
handler_opts = {
|
||||
|
||||
@@ -2,79 +2,64 @@ return {
|
||||
-- statusline
|
||||
"nvim-lualine/lualine.nvim",
|
||||
dependencies = {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
"tiyn/tccs.nvim",
|
||||
"f-person/git-blame.nvim",
|
||||
"tiyn/action-hints.nvim",
|
||||
},
|
||||
lazy = false,
|
||||
opts = {
|
||||
options = {
|
||||
globalstatus = true,
|
||||
symbols = {
|
||||
error = Error_sign,
|
||||
warn = Warn_sign,
|
||||
hint = Hint_sign,
|
||||
info = Info_sign,
|
||||
},
|
||||
theme = "tccs",
|
||||
component_separators = { left = "", right = "" },
|
||||
section_separators = { left = "", right = "" },
|
||||
},
|
||||
{
|
||||
"f-person/git-blame.nvim",
|
||||
config = function()
|
||||
vim.g.gitblame_display_virtual_text = 0
|
||||
end,
|
||||
},
|
||||
{ "tiyn/tccs.nvim" },
|
||||
{
|
||||
"tiyn/action-hints.nvim",
|
||||
config = function()
|
||||
require("action-hints").setup({
|
||||
template = {
|
||||
-- definition = { text = "D", color = "#add8e6" },
|
||||
-- references = { text = "R%s", color = "#ff6666" },
|
||||
definition = { text = Definition_sign, color = "#add8e6" },
|
||||
references = { text = Reference_sign, color = "#ff6666" },
|
||||
sections = {
|
||||
lualine_b = {
|
||||
{
|
||||
function()
|
||||
return require("gitblame").get_current_blame_text()
|
||||
end,
|
||||
cond = function()
|
||||
return require("gitblame").is_blame_text_available()
|
||||
end,
|
||||
},
|
||||
},
|
||||
lualine_c = {},
|
||||
lualine_x = {
|
||||
function()
|
||||
return require("action-hints").statusline()
|
||||
end,
|
||||
"encoding",
|
||||
"fileformat",
|
||||
{
|
||||
"filetype",
|
||||
icon_only = true,
|
||||
},
|
||||
},
|
||||
lualine_y = {
|
||||
{
|
||||
"filename",
|
||||
file_status = true,
|
||||
newfile_status = true,
|
||||
path = 1,
|
||||
shorting_target = 50,
|
||||
symbols = {
|
||||
modified = Lualine_signs["modified"],
|
||||
readonly = Lualine_signs["readonly"],
|
||||
unnamed = Lualine_signs["unnamed"],
|
||||
newfile = Lualine_signs["newfile"],
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
},
|
||||
lualine_z = { "progress", "location" },
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require("lualine").setup({
|
||||
options = {
|
||||
globalstatus = true,
|
||||
symbols = {
|
||||
error = Error_sign,
|
||||
warn = Warn_sign,
|
||||
hint = Hint_sign,
|
||||
info = Info_sign,
|
||||
},
|
||||
theme = "tccs",
|
||||
component_separators = { left = "", right = "" },
|
||||
section_separators = { left = "", right = "" },
|
||||
},
|
||||
sections = {
|
||||
lualine_b = {
|
||||
{
|
||||
require("gitblame").get_current_blame_text,
|
||||
cond = require("gitblame").is_blame_text_available,
|
||||
},
|
||||
},
|
||||
lualine_c = {},
|
||||
lualine_x = {
|
||||
require("action-hints").statusline,
|
||||
"encoding",
|
||||
"fileformat",
|
||||
{
|
||||
"filetype",
|
||||
icon_only = true,
|
||||
},
|
||||
},
|
||||
lualine_y = {
|
||||
{
|
||||
"filename",
|
||||
file_status = true,
|
||||
newfile_status = true,
|
||||
path = 1,
|
||||
shorting_target = 50,
|
||||
symbols = {
|
||||
modified = Lualine_signs["modified"],
|
||||
readonly = Lualine_signs["readonly"],
|
||||
unnamed = Lualine_signs["unnamed"],
|
||||
newfile = Lualine_signs["newfile"],
|
||||
},
|
||||
},
|
||||
},
|
||||
lualine_z = { "progress", "location" },
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
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
|
||||
"williamboman/mason.nvim",
|
||||
dependencies = {
|
||||
{
|
||||
"nvimtools/none-ls.nvim",
|
||||
config = function()
|
||||
require("null-ls").setup({
|
||||
sources = {
|
||||
-- assembler
|
||||
require("null-ls").builtins.formatting.asmfmt,
|
||||
-- lua
|
||||
require("null-ls").builtins.formatting.stylua,
|
||||
-- markdown
|
||||
require("null-ls").builtins.formatting.mdformat,
|
||||
-- python
|
||||
require("null-ls").builtins.formatting.isort,
|
||||
require("null-ls").builtins.formatting.yapf,
|
||||
-- shell
|
||||
require("null-ls").builtins.formatting.shfmt,
|
||||
-- yaml
|
||||
require("null-ls").builtins.formatting.yamlfmt,
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"jay-babu/mason-null-ls.nvim",
|
||||
opts = {
|
||||
automatic_installation = true,
|
||||
ensure_installed = {
|
||||
-- assembler
|
||||
"asmfmt",
|
||||
-- lua
|
||||
"stylua",
|
||||
-- markdown
|
||||
"mdformat",
|
||||
-- python
|
||||
"isort",
|
||||
"yapf",
|
||||
-- shell
|
||||
"shfmt",
|
||||
-- yaml
|
||||
"yamlfmt",
|
||||
},
|
||||
},
|
||||
},
|
||||
"nvimtools/none-ls.nvim",
|
||||
"jay-babu/mason-null-ls.nvim",
|
||||
},
|
||||
lazy = false,
|
||||
opts = { ui = { icons = Install_signs } },
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
return {
|
||||
-- decorations for the current line mode
|
||||
"mvllow/modes.nvim",
|
||||
config = function()
|
||||
require("modes").setup()
|
||||
end,
|
||||
lazy = false,
|
||||
opts = {},
|
||||
}
|
||||
|
||||
@@ -1,54 +1,14 @@
|
||||
return {
|
||||
-- jupyter notebook support
|
||||
"benlubas/molten-nvim",
|
||||
build = ":UpdateRemotePlugins",
|
||||
version = "^1.0.0",
|
||||
dependencies = {
|
||||
{
|
||||
"3rd/image.nvim",
|
||||
opts = {
|
||||
backend = "ueberzug",
|
||||
max_width = 100,
|
||||
max_height = 12,
|
||||
max_height_window_percentage = math.huge,
|
||||
max_width_window_percentage = math.huge,
|
||||
window_overlap_clear_enabled = true,
|
||||
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
|
||||
},
|
||||
},
|
||||
{
|
||||
"quarto-dev/quarto-nvim",
|
||||
dependencies = {
|
||||
"jmbuhr/otter.nvim",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
opts = {
|
||||
lspFeatures = {
|
||||
languages = { "python" },
|
||||
chunks = "all",
|
||||
diagnostics = {
|
||||
enabled = true,
|
||||
triggers = { "BufWritePost" },
|
||||
},
|
||||
completion = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
codeRunner = {
|
||||
enabled = true,
|
||||
default_method = "molten",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"GCBallesteros/jupytext.nvim",
|
||||
opts = {
|
||||
style = "markdown",
|
||||
output_extension = "md",
|
||||
force_ft = "markdown",
|
||||
},
|
||||
},
|
||||
"3rd/image.nvim",
|
||||
"quarto-dev/quarto-nvim",
|
||||
"GCBallesteros/jupytext.nvim",
|
||||
},
|
||||
build = ":UpdateRemotePlugins",
|
||||
lazy = false,
|
||||
init = function()
|
||||
vim.g.molten_auto_open_output = false
|
||||
vim.g.molten_wrap_output = true
|
||||
@@ -57,4 +17,93 @@ return {
|
||||
vim.g.molten_image_provider = "image.nvim"
|
||||
vim.g.molten_output_win_max_height = 20
|
||||
end,
|
||||
config = function()
|
||||
local imb = function(e)
|
||||
vim.schedule(function()
|
||||
local kernels = vim.fn.MoltenAvailableKernels()
|
||||
local try_kernel_name = function()
|
||||
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
|
||||
return metadata.kernelspec.name
|
||||
end
|
||||
local ok, kernel_name = pcall(try_kernel_name)
|
||||
if not ok or not vim.tbl_contains(kernels, kernel_name) then
|
||||
kernel_name = nil
|
||||
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
|
||||
if venv ~= nil then
|
||||
kernel_name = string.match(venv, "/.+/(.+)")
|
||||
end
|
||||
end
|
||||
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
|
||||
vim.cmd(("MoltenInit %s"):format(kernel_name))
|
||||
end
|
||||
vim.cmd("MoltenImportOutput")
|
||||
end)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("BufAdd", {
|
||||
pattern = { "*.ipynb" },
|
||||
callback = imb,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
pattern = { "*.ipynb" },
|
||||
callback = function(e)
|
||||
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
|
||||
imb(e)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local default_notebook = [[
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython"
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
]]
|
||||
|
||||
local function new_notebook(filename)
|
||||
local path = filename .. ".ipynb"
|
||||
local file = io.open(path, "w")
|
||||
if file then
|
||||
file:write(default_notebook)
|
||||
file:close()
|
||||
vim.cmd("edit " .. path)
|
||||
else
|
||||
print("Error: Could not open new notebook file for writing.")
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("NewNotebook", function(opts)
|
||||
new_notebook(opts.args)
|
||||
end, {
|
||||
nargs = 1,
|
||||
complete = "file",
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
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 = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"onsails/lspkind-nvim",
|
||||
-- cmp sources
|
||||
"hrsh7th/cmp-buffer",
|
||||
"hrsh7th/cmp-path",
|
||||
"uga-rosa/cmp-dictionary",
|
||||
"lukas-reineke/cmp-under-comparator",
|
||||
-- luasnip
|
||||
{
|
||||
"l3mon4d3/luasnip",
|
||||
config = function()
|
||||
require("luasnip.loaders.from_snipmate").lazy_load()
|
||||
end,
|
||||
version = "v2.*",
|
||||
-- build = "make install_jsregexp",
|
||||
dependencies = { "saadparwaiz1/cmp_luasnip" },
|
||||
},
|
||||
"l3mon4d3/luasnip",
|
||||
},
|
||||
lazy = false,
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
cmp.setup({
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
return {
|
||||
-- showing color of hex values, etc
|
||||
"ChristianChiarulli/nvim-colorizer.lua",
|
||||
lazy = false,
|
||||
opts = {
|
||||
filetypes = {
|
||||
"*",
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
return {
|
||||
-- hover documentation
|
||||
"tiyn/nvim-docs-view",
|
||||
lazy = true,
|
||||
cmd = "DocsViewToggle",
|
||||
keys = {
|
||||
{
|
||||
"go",
|
||||
"<cmd>DocsViewToggle<CR>",
|
||||
mode = "n",
|
||||
desc = "LSP: toggle documentation window",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
position = "bottom",
|
||||
},
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
return {
|
||||
-- improved virtual text
|
||||
"kevinhwang91/nvim-hlslens",
|
||||
keys = {
|
||||
{
|
||||
"n",
|
||||
[[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
|
||||
desc = "Search: search forward",
|
||||
},
|
||||
{
|
||||
"N",
|
||||
[[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
|
||||
desc = "Search: search backwards",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
calm_down = true,
|
||||
},
|
||||
|
||||
@@ -1,34 +1,35 @@
|
||||
return {
|
||||
-- lillypond integration
|
||||
"martineausimon/nvim-lilypond-suite",
|
||||
ft = "lilypond",
|
||||
dependencies = "uga-rosa/cmp-dictionary",
|
||||
config = function()
|
||||
require("nvls").setup({
|
||||
lilypond = {
|
||||
mappings = {
|
||||
player = "<NOP>",
|
||||
compile = "<NOP>",
|
||||
open_pdf = "<NOP>",
|
||||
switch_buffers = "<NOP>",
|
||||
insert_version = "<NOP>",
|
||||
hyphenation = "<NOP>",
|
||||
hyphenation_change_lang = "<NOP>",
|
||||
insert_hyphen = "<NOP>",
|
||||
add_hyphen = "<NOP>",
|
||||
del_next_hyphen = "<NOP>",
|
||||
del_prev_hyphen = "<NOP>",
|
||||
dependencies = { "uga-rosa/cmp-dictionary" },
|
||||
ft = { "lilypond" },
|
||||
opts = {
|
||||
lilypond = {
|
||||
mappings = {
|
||||
player = "<NOP>",
|
||||
compile = "<NOP>",
|
||||
open_pdf = "<NOP>",
|
||||
switch_buffers = "<NOP>",
|
||||
insert_version = "<NOP>",
|
||||
hyphenation = "<NOP>",
|
||||
hyphenation_change_lang = "<NOP>",
|
||||
insert_hyphen = "<NOP>",
|
||||
add_hyphen = "<NOP>",
|
||||
del_next_hyphen = "<NOP>",
|
||||
del_prev_hyphen = "<NOP>",
|
||||
},
|
||||
},
|
||||
player = {
|
||||
options = {
|
||||
fluidsynth_flags = {
|
||||
"/usr/share/soundfonts/FluidR3_GM.sf2",
|
||||
},
|
||||
},
|
||||
player = {
|
||||
options = {
|
||||
fluidsynth_flags = {
|
||||
"/usr/share/soundfonts/FluidR3_GM.sf2",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local nvls = require("nvls")
|
||||
nvls.setup(opts)
|
||||
local lily_dicts = {
|
||||
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/keywords",
|
||||
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/musicCommands",
|
||||
@@ -36,13 +37,53 @@ return {
|
||||
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/articulations",
|
||||
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/dynamics",
|
||||
}
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "lilypond",
|
||||
callback = function()
|
||||
callback = function(args)
|
||||
local bufnr = args.buf
|
||||
require("cmp_dictionary").setup({
|
||||
paths = lily_dicts,
|
||||
})
|
||||
local fluidsynth_job = nil
|
||||
vim.keymap.set("n", "<leader>pm", function()
|
||||
local midi = vim.fn.expand("%:r") .. ".midi"
|
||||
if fluidsynth_job then
|
||||
vim.fn.jobstop(fluidsynth_job)
|
||||
fluidsynth_job = nil
|
||||
print("fluidsynth stopped")
|
||||
return
|
||||
end
|
||||
fluidsynth_job = vim.fn.jobstart({ "fluidsynth", "-i", midi })
|
||||
print("fluidsynth playing (Ctrl-C to stop)")
|
||||
end, {
|
||||
buffer = bufnr,
|
||||
desc = "Lilypond: output MIDI",
|
||||
})
|
||||
vim.keymap.set("n", "<leader>pp", "<cmd>Viewer<CR>", {
|
||||
buffer = bufnr,
|
||||
desc = "Lilypond: open PDF",
|
||||
})
|
||||
vim.keymap.set("n", "<C-c>", function()
|
||||
if fluidsynth_job then
|
||||
vim.fn.jobstop(fluidsynth_job)
|
||||
fluidsynth_job = nil
|
||||
print("fluidsynth stopped")
|
||||
else
|
||||
vim.cmd("normal! <C-c>")
|
||||
end
|
||||
end, {
|
||||
buffer = bufnr,
|
||||
desc = "Stop MIDI playback",
|
||||
})
|
||||
if vim.b[bufnr].first_start_lilypond then
|
||||
return
|
||||
end
|
||||
vim.b[bufnr].first_start_lilypond = true
|
||||
vim.schedule(function()
|
||||
if vim.fn.exists(":Viewer") == 2 then
|
||||
vim.cmd.Viewer()
|
||||
end
|
||||
end)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
|
||||
@@ -3,63 +3,35 @@ return {
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
{
|
||||
"mrcjkb/rustaceanvim",
|
||||
version = "^6",
|
||||
lazy = false,
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
config = function()
|
||||
Capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
Capabilities.textDocument.foldingRange = {
|
||||
dynamicRegistration = false,
|
||||
lineFoldingOnly = true,
|
||||
}
|
||||
end,
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
},
|
||||
lazy = false,
|
||||
opts = {
|
||||
automatic_setup = true,
|
||||
ensure_installed = {
|
||||
"asm_lsp",
|
||||
"clangd",
|
||||
"dockerls",
|
||||
"gopls",
|
||||
"html",
|
||||
"jsonls",
|
||||
"lemminx",
|
||||
"ltex",
|
||||
"texlab",
|
||||
"lua_ls",
|
||||
"marksman",
|
||||
"nimls",
|
||||
"pyright",
|
||||
"r_language_server",
|
||||
"bashls",
|
||||
"sqlls",
|
||||
"ts_ls",
|
||||
"yamlls",
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require("mason-lspconfig").setup({
|
||||
automatic_setup = true,
|
||||
ensure_installed = {
|
||||
-- assembler
|
||||
"asm_lsp",
|
||||
-- c
|
||||
"clangd",
|
||||
-- docker
|
||||
"dockerls",
|
||||
-- go
|
||||
"gopls",
|
||||
-- html
|
||||
"html",
|
||||
-- json
|
||||
"jsonls",
|
||||
-- xml
|
||||
"lemminx",
|
||||
-- latex
|
||||
"ltex",
|
||||
"texlab",
|
||||
-- lua
|
||||
"lua_ls",
|
||||
-- markdown
|
||||
"marksman",
|
||||
-- nim
|
||||
"nimls",
|
||||
-- python
|
||||
"pyright",
|
||||
-- r
|
||||
"r_language_server",
|
||||
-- shell
|
||||
"bashls",
|
||||
-- sql
|
||||
"sqlls",
|
||||
-- typescript / javascript
|
||||
"ts_ls",
|
||||
-- yaml
|
||||
"yamlls",
|
||||
},
|
||||
})
|
||||
config = function(_, opts)
|
||||
local mason_lspconfig = require("mason-lspconfig")
|
||||
mason_lspconfig.setup(opts)
|
||||
local default_flags = {
|
||||
debounce_text_changes = 150,
|
||||
allow_incremental_sync = true,
|
||||
@@ -69,7 +41,6 @@ return {
|
||||
ltex = {
|
||||
settings = {
|
||||
ltex = {
|
||||
-- language = "de-DE",
|
||||
enabled = { "latex", "markdown" },
|
||||
dictionary = Dictionaries,
|
||||
},
|
||||
@@ -85,15 +56,31 @@ return {
|
||||
},
|
||||
pyright = {},
|
||||
}
|
||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
capabilities.textDocument.foldingRange = {
|
||||
dynamicRegistration = false,
|
||||
lineFoldingOnly = true,
|
||||
}
|
||||
for name, config in pairs(servers) do
|
||||
vim.lsp.config(
|
||||
name,
|
||||
vim.tbl_extend("force", config, {
|
||||
on_attach = on_attach,
|
||||
capabilities = Capabilities,
|
||||
capabilities = capabilities,
|
||||
flags = default_flags,
|
||||
})
|
||||
)
|
||||
end
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(args)
|
||||
local bufnr = args.buf
|
||||
local opts = { buffer = bufnr }
|
||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
||||
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
|
||||
vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, opts)
|
||||
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
|
||||
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -5,52 +5,35 @@ return {
|
||||
"kevinhwang91/nvim-hlslens",
|
||||
"lewis6991/gitsigns.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("scrollbar").setup({
|
||||
marks = {
|
||||
Cursor = {
|
||||
highlight = "Normal",
|
||||
},
|
||||
Search = {
|
||||
highlight = "Special",
|
||||
},
|
||||
Error = {
|
||||
highlight = "DiagnosticSignError",
|
||||
},
|
||||
Warn = {
|
||||
highlight = "DiagnosticSignWarn",
|
||||
},
|
||||
Info = {
|
||||
highlight = "DiagnosticSignInfo",
|
||||
},
|
||||
Hint = {
|
||||
highlight = "DiagnosticSignHint",
|
||||
},
|
||||
Misc = {
|
||||
highlight = "Special",
|
||||
},
|
||||
GitAdd = {
|
||||
highlight = "GitGutterAdd",
|
||||
},
|
||||
GitChange = {
|
||||
highlight = "GitGutterChange",
|
||||
},
|
||||
GitDelete = {
|
||||
highlight = "GitGutterDelete",
|
||||
},
|
||||
},
|
||||
excluded_filetypes = {
|
||||
"cmp_docs",
|
||||
"cmp_menu",
|
||||
"noice",
|
||||
"prompt",
|
||||
"TelescopePrompt",
|
||||
"NvimTree",
|
||||
"Navbuddy",
|
||||
"FTerm",
|
||||
"",
|
||||
},
|
||||
})
|
||||
lazy = false,
|
||||
opts = {
|
||||
marks = {
|
||||
Cursor = { highlight = "Normal" },
|
||||
Search = { highlight = "Special" },
|
||||
Error = { highlight = "DiagnosticSignError" },
|
||||
Warn = { highlight = "DiagnosticSignWarn" },
|
||||
Info = { highlight = "DiagnosticSignInfo" },
|
||||
Hint = { highlight = "DiagnosticSignHint" },
|
||||
Misc = { highlight = "Special" },
|
||||
GitAdd = { highlight = "GitGutterAdd" },
|
||||
GitChange = { highlight = "GitGutterChange" },
|
||||
GitDelete = { highlight = "GitGutterDelete" },
|
||||
},
|
||||
excluded_filetypes = {
|
||||
"cmp_docs",
|
||||
"cmp_menu",
|
||||
"noice",
|
||||
"prompt",
|
||||
"TelescopePrompt",
|
||||
"NvimTree",
|
||||
"Navbuddy",
|
||||
"FTerm",
|
||||
"",
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local scrollbar = require("scrollbar")
|
||||
scrollbar.setup(opts)
|
||||
require("scrollbar.handlers.search").setup()
|
||||
require("scrollbar.handlers.gitsigns").setup()
|
||||
end,
|
||||
|
||||
@@ -2,6 +2,6 @@ return {
|
||||
-- additional quote/parantheses funtions
|
||||
"kylechui/nvim-surround",
|
||||
version = "*",
|
||||
event = "VeryLazy",
|
||||
lazy = false,
|
||||
opts = {},
|
||||
}
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
return {
|
||||
-- fileexplorer on the side
|
||||
"nvim-tree/nvim-tree.lua",
|
||||
cmd = "NvimTreeToggle",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
cmd = { "NvimTreeToggle" },
|
||||
keys = {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
"<F2>",
|
||||
"<cmd>NvimTreeToggle<CR>",
|
||||
desc = "File tree: toggle",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
|
||||
@@ -3,34 +3,24 @@ return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
dependencies = {
|
||||
-- automatically close html-tags
|
||||
"windwp/nvim-ts-autotag",
|
||||
-- color brackets
|
||||
-- 'p00f/nvim-ts-rainbow',
|
||||
"windwp/nvim-ts-autotag", -- automatically close html-tags
|
||||
"nvim-treesitter/nvim-treesitter-context",
|
||||
},
|
||||
lazy = false,
|
||||
config = function()
|
||||
require("nvim-treesitter.config").setup({
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"css",
|
||||
"html",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"latex",
|
||||
"python",
|
||||
"rust",
|
||||
"lua",
|
||||
"yaml",
|
||||
},
|
||||
-- highlight = { enable = true },
|
||||
autotag = { enable = false },
|
||||
-- rainbow = {
|
||||
-- enable = true,
|
||||
-- extended_mode = true,
|
||||
-- max_file_lines = nil,
|
||||
-- -- colors = {},
|
||||
-- -- termcolors = {}
|
||||
-- }
|
||||
local treesitter = require("nvim-treesitter")
|
||||
treesitter.setup()
|
||||
treesitter.install({
|
||||
"bash",
|
||||
"css",
|
||||
"html",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"latex",
|
||||
"python",
|
||||
"rust",
|
||||
"lua",
|
||||
"yaml",
|
||||
})
|
||||
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 {
|
||||
-- folding improvements
|
||||
"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()
|
||||
require("ufo").setup()
|
||||
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,139 +1,28 @@
|
||||
return {
|
||||
-- ollama llm integration
|
||||
{
|
||||
"huynle/ogpt.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
default_provider = "ollama",
|
||||
edgy = true, -- enable this!
|
||||
single_window = false, -- set this to true if you want only one OGPT window to appear at a time
|
||||
providers = {
|
||||
ollama = {
|
||||
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
|
||||
api_key = "",
|
||||
model = "deepseek-r1:7b",
|
||||
},
|
||||
},
|
||||
},
|
||||
dependencies = {
|
||||
"MunifTanjim/nui.nvim",
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"huynle/ogpt.nvim",
|
||||
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",
|
||||
},
|
||||
},
|
||||
{
|
||||
"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,
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
default_provider = "ollama",
|
||||
edgy = true, -- enable this!
|
||||
single_window = false, -- set this to true if you want only one OGPT window to appear at a time
|
||||
providers = {
|
||||
ollama = {
|
||||
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
|
||||
api_key = "",
|
||||
model = "deepseek-r1:7b",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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 {
|
||||
-- outline for code
|
||||
-- tree-like outline sidebar
|
||||
"hedyhli/outline.nvim",
|
||||
keys = {
|
||||
{
|
||||
"<F3>",
|
||||
"<cmd>Outline<CR>",
|
||||
desc = "CTags: toggle",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
outline_window = {
|
||||
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",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("papis").setup({
|
||||
-- Your configuration goes here
|
||||
enable_keymaps = false,
|
||||
})
|
||||
lazy = false,
|
||||
opts = {
|
||||
enable_keymaps = false,
|
||||
init_filetypes = { "yaml", "tex" }
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("papis").setup(opts)
|
||||
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 {
|
||||
-- navigate between projects using telescope
|
||||
"gnikdroy/projections.nvim",
|
||||
dependencies = { "nvim-telescope/telescope.nvim" },
|
||||
branch = "pre_release",
|
||||
config = function()
|
||||
require("projections").setup({
|
||||
workspaces = { -- Default workspaces to search for
|
||||
{ "~/code/main", { ".git" } },
|
||||
{ "~/code/uni", { ".git" } },
|
||||
},
|
||||
store_hooks = {
|
||||
pre = function()
|
||||
-- nvim-tree
|
||||
local nvim_tree_present, api = pcall(require, "nvim-tree.api")
|
||||
if nvim_tree_present then
|
||||
api.tree.close()
|
||||
end
|
||||
end,
|
||||
},
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>fp",
|
||||
function()
|
||||
vim.cmd("Telescope projections")
|
||||
end,
|
||||
desc = "Telescope: find projects",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
workspaces = {
|
||||
{ "~/code/main", { ".git" } },
|
||||
{ "~/code/uni", { ".git" } },
|
||||
},
|
||||
store_hooks = {
|
||||
pre = function()
|
||||
local ok, api = pcall(require, "nvim-tree.api")
|
||||
if ok then
|
||||
api.tree.close()
|
||||
end
|
||||
end,
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local projections = require("projections")
|
||||
local session = require("projections.session")
|
||||
|
||||
projections.setup(opts)
|
||||
require("telescope").load_extension("projections")
|
||||
|
||||
vim.api.nvim_create_autocmd("VimLeavePre", {
|
||||
callback = function()
|
||||
session.store(vim.loop.cwd())
|
||||
end,
|
||||
})
|
||||
|
||||
require("telescope").load_extension("projections")
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
callback = function()
|
||||
if vim.fn.argc() ~= 0 then
|
||||
return
|
||||
end
|
||||
vim.schedule(function()
|
||||
local session_info = session.info(vim.loop.cwd())
|
||||
if session_info ~= nil then
|
||||
session.restore(vim.loop.cwd())
|
||||
end
|
||||
end)
|
||||
end,
|
||||
desc = "Restore last session automatically",
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
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",
|
||||
branch = "master",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
keys = {
|
||||
{
|
||||
"<F5>",
|
||||
function()
|
||||
require("renamer").rename()
|
||||
end,
|
||||
desc = "LSP: rename",
|
||||
},
|
||||
},
|
||||
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 {
|
||||
-- improve spelling check for coding to feature camelcase, etc
|
||||
{
|
||||
"kamykn/spelunker.vim",
|
||||
dependencies = { "kamykn/popup-menu.nvim" },
|
||||
config = function()
|
||||
-- vim.o.nospell = true
|
||||
vim.g.enable_spelunker_vim = 0
|
||||
vim.g.spelunker_disable_acronym_checking = 1
|
||||
end,
|
||||
"kamykn/spelunker.vim",
|
||||
dependencies = { "kamykn/popup-menu.nvim" },
|
||||
keys = {
|
||||
{
|
||||
"<F10>t",
|
||||
"<cmd>call spelunker#toggle()<CR>",
|
||||
desc = "Spelunker: toggle spell check",
|
||||
},
|
||||
{
|
||||
"<F10>s",
|
||||
"z=",
|
||||
desc = "Spell: display suggestions",
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
-- vim.o.nospell = true
|
||||
vim.g.enable_spelunker_vim = 0
|
||||
vim.g.spelunker_disable_acronym_checking = 1
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
return {
|
||||
-- colorscheme
|
||||
{
|
||||
"tiyn/tccs.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require("tccs").setup({
|
||||
require("tccs").load(),
|
||||
})
|
||||
end,
|
||||
"tiyn/tccs.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {
|
||||
require("tccs").load(),
|
||||
},
|
||||
}
|
||||
|
||||
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 {
|
||||
-- fuzzy finder
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
version = "0.1.2",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"archie-judd/telescope-words.nvim",
|
||||
},
|
||||
opts = {},
|
||||
"nvim-telescope/telescope.nvim",
|
||||
version = "*",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-telescope/telescope-fzf-native.nvim",
|
||||
"archie-judd/telescope-words.nvim",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>ff",
|
||||
"<cmd>Telescope find_files<CR>",
|
||||
desc = "Telescope: find files",
|
||||
},
|
||||
{
|
||||
"<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 {
|
||||
-- clean up white spaces and empty lines before writing
|
||||
{
|
||||
"mcauley-penney/tidy.nvim",
|
||||
branch = "main",
|
||||
opts = {
|
||||
filetype_exclude = { "diff" },
|
||||
},
|
||||
"mcauley-penney/tidy.nvim",
|
||||
branch = "main",
|
||||
ft = { "markdown", "tex" },
|
||||
opts = {
|
||||
filetype_exclude = { "diff" },
|
||||
},
|
||||
config = function(_, opts)
|
||||
local tidy = require("tidy")
|
||||
tidy.setup(opts)
|
||||
tidy.opts.enabled_on_save = false
|
||||
vim.api.nvim_create_autocmd("BufLeave", {
|
||||
pattern = { "*.md", "*.tex" },
|
||||
callback = function()
|
||||
if vim.bo.modifiable then
|
||||
tidy.run()
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
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,22 +1,21 @@
|
||||
return {
|
||||
-- todo symbols and highlighting
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
opts = {
|
||||
keywords = {
|
||||
ERRO = { icon = Error_sign, color = "error" },
|
||||
WARN = { icon = Warn_sign, color = "warning" },
|
||||
HACK = { icon = Hack_sign, color = "warning" },
|
||||
HINT = { icon = Hint_sign, color = "hint" },
|
||||
TODO = { icon = Todo_sign, color = "info" },
|
||||
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
|
||||
PERF = { icon = Perfect_sign, color = "default" },
|
||||
TEST = { icon = Test_sign, color = "test" },
|
||||
},
|
||||
colors = {
|
||||
default = { "Operator" },
|
||||
},
|
||||
"folke/todo-comments.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
lazy = false,
|
||||
opts = {
|
||||
keywords = {
|
||||
ERRO = { icon = Error_sign, color = "error" },
|
||||
WARN = { icon = Warn_sign, color = "warning" },
|
||||
HACK = { icon = Hack_sign, color = "warning" },
|
||||
HINT = { icon = Hint_sign, color = "hint" },
|
||||
TODO = { icon = Todo_sign, color = "info" },
|
||||
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
|
||||
PERF = { icon = Perfect_sign, color = "default" },
|
||||
TEST = { icon = Test_sign, color = "test" },
|
||||
},
|
||||
colors = {
|
||||
default = { "Operator" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
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 {
|
||||
-- list of errors
|
||||
"folke/trouble.nvim",
|
||||
dependencies = {
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
keys = {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
"<F4>",
|
||||
"<cmd>Trouble diagnostics toggle<CR>",
|
||||
mode = "n",
|
||||
desc = "LSP: toggle error list",
|
||||
},
|
||||
},
|
||||
opts = {},
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
return {
|
||||
-- tree style undo visualizer
|
||||
"mbbill/undotree",
|
||||
keys = {
|
||||
{
|
||||
"<F1>",
|
||||
"<cmd>UndotreeToggle<CR>",
|
||||
mode = "n",
|
||||
desc = "Undo tree: toggle",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
return {
|
||||
-- better substitutions
|
||||
"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 {
|
||||
-- highlight other occurences of the same word
|
||||
"RRethy/vim-illuminate",
|
||||
lazy = false,
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@ return {
|
||||
"preservim/vim-markdown",
|
||||
ft = { "markdown" },
|
||||
dependencies = { "godlygeek/tabular" },
|
||||
config = function() end,
|
||||
config = function() end, -- needed this way by the plugin
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
return {
|
||||
-- highlighting for the viper verification language
|
||||
"tiyn/viper.nvim",
|
||||
event = { "BufReadPre *.vpr", "FileType viper" },
|
||||
config = function()
|
||||
require("viper").setup()
|
||||
end,
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
pattern = "*.vpr",
|
||||
opts = {},
|
||||
}
|
||||
|
||||
@@ -1,4 +1,22 @@
|
||||
return {
|
||||
-- improved keybindings, previewing them
|
||||
"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,74 +1,71 @@
|
||||
return {
|
||||
-- improved wild menu
|
||||
{
|
||||
"gelguy/wilder.nvim",
|
||||
dependencies = {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
},
|
||||
"roxma/nvim-yarp",
|
||||
"roxma/vim-hug-neovim-rpc",
|
||||
"romgrk/fzy-lua-native",
|
||||
"nixprime/cpsm",
|
||||
},
|
||||
config = function()
|
||||
local wilder = require("wilder")
|
||||
wilder.setup({
|
||||
modes = { ":", "/", "?" },
|
||||
accept_key = "<CR>",
|
||||
reject_key = "<C-e>",
|
||||
})
|
||||
wilder.set_option("pipeline", {
|
||||
wilder.branch(
|
||||
wilder.python_file_finder_pipeline({
|
||||
file_command = function(ctx, arg)
|
||||
if string.find(arg, ".") ~= nil then
|
||||
return { "fd", "-tf", "-H" }
|
||||
else
|
||||
return { "fd", "-tf" }
|
||||
end
|
||||
end,
|
||||
dir_command = { "fd", "-td" },
|
||||
filters = { "cpsm_filter" },
|
||||
}),
|
||||
wilder.substitute_pipeline({
|
||||
pipeline = wilder.python_search_pipeline({
|
||||
skip_cmdtype_check = 1,
|
||||
pattern = wilder.python_fuzzy_pattern({
|
||||
start_at_boundary = 0,
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
wilder.cmdline_pipeline({
|
||||
fuzzy = 2,
|
||||
fuzzy_filter = wilder.lua_fzy_filter(),
|
||||
}),
|
||||
{
|
||||
wilder.check(function(ctx, x)
|
||||
return x == ""
|
||||
end),
|
||||
wilder.history(),
|
||||
},
|
||||
wilder.python_search_pipeline({
|
||||
"gelguy/wilder.nvim",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
"roxma/nvim-yarp",
|
||||
"roxma/vim-hug-neovim-rpc",
|
||||
"romgrk/fzy-lua-native",
|
||||
"nixprime/cpsm",
|
||||
},
|
||||
lazy = false,
|
||||
opts = {
|
||||
modes = { ":", "/", "?" },
|
||||
accept_key = "<CR>",
|
||||
reject_key = "<C-e>",
|
||||
},
|
||||
config = function(_, opts)
|
||||
local wilder = require("wilder")
|
||||
wilder.setup(opts)
|
||||
wilder.set_option("pipeline", {
|
||||
wilder.branch(
|
||||
wilder.python_file_finder_pipeline({
|
||||
file_command = function(ctx, arg)
|
||||
if string.find(arg, ".") ~= nil then
|
||||
return { "fd", "-tf", "-H" }
|
||||
else
|
||||
return { "fd", "-tf" }
|
||||
end
|
||||
end,
|
||||
dir_command = { "fd", "-td" },
|
||||
filters = { "cpsm_filter" },
|
||||
}),
|
||||
wilder.substitute_pipeline({
|
||||
pipeline = wilder.python_search_pipeline({
|
||||
skip_cmdtype_check = 1,
|
||||
pattern = wilder.python_fuzzy_pattern({
|
||||
start_at_boundary = 0,
|
||||
}),
|
||||
})
|
||||
),
|
||||
})
|
||||
local highlighters = {
|
||||
wilder.pcre2_highlighter(),
|
||||
wilder.lua_fzy_highlighter(),
|
||||
}
|
||||
wilder.set_option(
|
||||
"renderer",
|
||||
wilder.popupmenu_renderer({
|
||||
highlighter = highlighters,
|
||||
left = { " ", wilder.popupmenu_devicons() },
|
||||
right = { " ", wilder.popupmenu_scrollbar() },
|
||||
}),
|
||||
}),
|
||||
wilder.cmdline_pipeline({
|
||||
fuzzy = 2,
|
||||
fuzzy_filter = wilder.lua_fzy_filter(),
|
||||
}),
|
||||
{
|
||||
wilder.check(function(ctx, x)
|
||||
return x == ""
|
||||
end),
|
||||
wilder.history(),
|
||||
},
|
||||
wilder.python_search_pipeline({
|
||||
pattern = wilder.python_fuzzy_pattern({
|
||||
start_at_boundary = 0,
|
||||
}),
|
||||
})
|
||||
)
|
||||
end,
|
||||
},
|
||||
),
|
||||
})
|
||||
local highlighters = {
|
||||
wilder.pcre2_highlighter(),
|
||||
wilder.lua_fzy_highlighter(),
|
||||
}
|
||||
wilder.set_option(
|
||||
"renderer",
|
||||
wilder.popupmenu_renderer({
|
||||
highlighter = highlighters,
|
||||
-- left = { " ", wilder.popupmenu_devicons() }, -- has problems with mason
|
||||
right = { " ", wilder.popupmenu_scrollbar() },
|
||||
})
|
||||
)
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
return {
|
||||
-- improved movement of windows
|
||||
"sindrets/winshift.nvim",
|
||||
keys = {
|
||||
{
|
||||
"<C-W>m",
|
||||
"<cmd>WinShift<CR>",
|
||||
desc = "Navigation: enter window shift mode",
|
||||
},
|
||||
},
|
||||
opts = {},
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ vim.diagnostic.config({
|
||||
|
||||
-- enable colorcolumn when textwidth is set
|
||||
vim.o.cursorline = true
|
||||
vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(0, 254), ",+")
|
||||
vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(1, 254), ",+")
|
||||
-- alternatively highlight only one line for colorcolumn
|
||||
-- vim.o.colorcolumn = "-0"
|
||||
|
||||
|
||||
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