mirror of
https://github.com/tiyn/dotfiles.git
synced 2026-05-01 18:11:39 +02:00
Compare commits
54 Commits
17a2e9f0ca
...
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 |
11
.Rprofile
Normal file
11
.Rprofile
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
if (!interactive()) {
|
||||||
|
options(device = function(...) pdf("Rplot.pdf"))
|
||||||
|
|
||||||
|
.Last <- function() {
|
||||||
|
if (dev.cur() > 1) {
|
||||||
|
dev.off()
|
||||||
|
system("xdg-open Rplot.pdf", wait = FALSE)
|
||||||
|
Sys.sleep(2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -138,6 +138,9 @@ alias renamer="nvim +Renamer"
|
|||||||
# weather
|
# weather
|
||||||
alias weather="curl wttr.in"
|
alias weather="curl wttr.in"
|
||||||
|
|
||||||
|
# whisper.cpp
|
||||||
|
alias whisper="whisper-cli -m ~/.local/share/whisper-cli/ggml-large-v3-turbo-german-q5_0.bin"
|
||||||
|
|
||||||
# wget
|
# wget
|
||||||
alias wget="wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"
|
alias wget="wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"
|
||||||
alias wget2c="aria2c"
|
alias wget2c="aria2c"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
[options]
|
||||||
|
|
||||||
|
background = #FFFFFF
|
||||||
|
|
||||||
[binds]
|
[binds]
|
||||||
<plus> = zoom 1
|
<plus> = zoom 1
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ x-scheme-handler/betterdiscord=discord.desktop
|
|||||||
x-scheme-handler/discord=vesktop.desktop
|
x-scheme-handler/discord=vesktop.desktop
|
||||||
x-scheme-handler/sgnl=signal.desktop
|
x-scheme-handler/sgnl=signal.desktop
|
||||||
x-scheme-handler/signalcaptcha=signal.desktop
|
x-scheme-handler/signalcaptcha=signal.desktop
|
||||||
|
x-scheme-handler/freetube=freetube.desktop
|
||||||
|
|
||||||
[Added Associations]
|
[Added Associations]
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
|
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
||||||
"action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
|
"action-hints.nvim": { "branch": "main", "commit": "ac72c23c2e901084e0c08a743942d8d7b8c560de" },
|
||||||
|
"agentic.nvim": { "branch": "main", "commit": "3e6175c1141cc3cb5cc08e98bff01b06a0a67467" },
|
||||||
"auto-session": { "branch": "main", "commit": "62437532b38495551410b3f377bcf4aaac574ebe" },
|
"auto-session": { "branch": "main", "commit": "62437532b38495551410b3f377bcf4aaac574ebe" },
|
||||||
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
|
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
|
||||||
"blink.download": { "branch": "main", "commit": "b68335357e9fcc2b20445acfcee48034376d64b5" },
|
"blink.download": { "branch": "main", "commit": "dda2666685a5ac3598166577d2e34f1fff6b1637" },
|
||||||
"blink.pairs": { "branch": "main", "commit": "4e43012356d33a26f69eae475f746fbe9f325f44" },
|
"blink.pairs": { "branch": "main", "commit": "4e43012356d33a26f69eae475f746fbe9f325f44" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
"cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" },
|
"cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" },
|
||||||
@@ -11,78 +13,80 @@
|
|||||||
"cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
|
"cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" },
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||||
"conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" },
|
"conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
|
||||||
"cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" },
|
"cpsm": { "branch": "master", "commit": "c32a9b7dc9d5b516505bc8ab58ceb15f64735830" },
|
||||||
"csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" },
|
"csvview.nvim": { "branch": "main", "commit": "7022e18a0fbae9aecf99a3ba02b2a541edc2b8a1" },
|
||||||
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
|
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
|
||||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
"edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" },
|
"edgy.nvim": { "branch": "main", "commit": "8bfd2808994a988c975694122f68624b8a219f5f" },
|
||||||
"file-renamer.nvim": { "branch": "master", "commit": "09eb64474be371ac884b424b9e15cc31406c3b72" },
|
"file-renamer.nvim": { "branch": "master", "commit": "da78d496ffb3dd55a4c70b4a9c28686630a57d3a" },
|
||||||
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
"fterm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
||||||
"fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
|
"fzy-lua-native": { "branch": "master", "commit": "9d720745d5c2fb563c0d86c17d77612a3519c506" },
|
||||||
"git-blame.nvim": { "branch": "main", "commit": "5c536e2d4134d064aa3f41575280bc8a2a0e03d7" },
|
"git-blame.nvim": { "branch": "master", "commit": "2883a7460f611c2705b23f12d58d398d5ce6ec00" },
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "0a80125bace82d82847d40bc2c38a22d62c6dc2d" },
|
"gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
|
||||||
"goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
|
"goto-preview": { "branch": "main", "commit": "d2d6923c9b9e0e43f0b9b566f261a8b1ae016540" },
|
||||||
"image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
|
"image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
|
||||||
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
|
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
|
||||||
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
|
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
|
||||||
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
|
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||||
"leap.nvim": { "branch": "main", "commit": "5dd5a60c58d4423e8cfbf3ca548235d82dec85a2" },
|
"leap.nvim": { "branch": "main", "commit": "e7ca7b92f996bcbc34beee8b244ea5ef6692b478" },
|
||||||
"logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
|
"logger.nvim": { "branch": "main", "commit": "63dd10c9b9a159fd6cfe08435d9606384ff103c5" },
|
||||||
"lsp_signature.nvim": { "branch": "master", "commit": "af7e4074d85d785cf6614352ba9ad3b28a1f8a56" },
|
"lsp_signature.nvim": { "branch": "master", "commit": "a65b38f260cc3470a05b4afb84c8d868617d476d" },
|
||||||
"lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
|
"lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
"lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" },
|
||||||
"luasnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
"luasnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "a979821a975897b88493843301950c456a725982" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" },
|
||||||
"mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" },
|
"mason-null-ls.nvim": { "branch": "main", "commit": "8e7806acaa87fae64f0bfde25bb4b87c18bd19b4" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
|
"mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" },
|
||||||
"modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" },
|
"modes.nvim": { "branch": "main", "commit": "2badf8771dbb2d1e1066fd6a5dddaad2fc836e72" },
|
||||||
"molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" },
|
"molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" },
|
||||||
"neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" },
|
"neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" },
|
||||||
"none-ls.nvim": { "branch": "main", "commit": "c9317c2a8629d4e39e7cf47be74cb67f3ab37cda" },
|
"none-ls.nvim": { "branch": "main", "commit": "8cd333aa66e08492d891bdad272208a620cb93a3" },
|
||||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
||||||
"nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
|
"nvim-colorizer.lua": { "branch": "master", "commit": "6ed09146ee637006367b5e225be6208a1ea02579" },
|
||||||
"nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
|
"nvim-docs-view": { "branch": "master", "commit": "5676cc094d426edd39134b1eefca2cab441cca8a" },
|
||||||
"nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
|
"nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
|
||||||
"nvim-lilypond-suite": { "branch": "main", "commit": "a1a313fd6028a196cc9aaa8c8501838fe8cc8e2a" },
|
"nvim-lilypond-suite": { "branch": "main", "commit": "e57ced9e0df33773566af795d70919d577c58ce2" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "46204c8fdaa36a9aa3768780450e4bc7a210025f" },
|
"nvim-lspconfig": { "branch": "master", "commit": "bf5abe69c1874531f359a822d0cff4d73e26113f" },
|
||||||
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
||||||
"nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" },
|
"nvim-scrollbar": { "branch": "main", "commit": "f8e87b96cd6362ef8579be456afee3b38fd7e2a8" },
|
||||||
"nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
|
"nvim-surround": { "branch": "main", "commit": "61319d4bd1c5e336e197defa15bd104c51f0fb29" },
|
||||||
"nvim-tree.lua": { "branch": "master", "commit": "6eaf74c9919d121d2806ac3c20e757e66bd29c31" },
|
"nvim-tree.lua": { "branch": "master", "commit": "24cfcc94372e526fd9e1c2803ede9e0f1715e33f" },
|
||||||
"nvim-treesitter": { "branch": "main", "commit": "6620ae1c44dfa8623b22d0cbf873a9e8d073b849" },
|
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||||
"nvim-treesitter-context": { "branch": "master", "commit": "adf4b6b0420b7be6c717ef0ac7993183d6c201b1" },
|
"nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
|
||||||
"nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" },
|
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||||
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
|
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" },
|
"nvim-web-devicons": { "branch": "master", "commit": "8069e89df2d7259704286a5906a11c5b27d5b440" },
|
||||||
"nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" },
|
"nvim-yarp": { "branch": "master", "commit": "bb5f5e038bfe119d3b777845a76b0b919b35ebc8" },
|
||||||
"ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" },
|
"ogpt.nvim": { "branch": "main", "commit": "0fae02db8cb07391f86c3dbe807f62190a2d997f" },
|
||||||
"otter.nvim": { "branch": "main", "commit": "4796602953348e19fb24916557af7b89e188751f" },
|
"otter.nvim": { "branch": "main", "commit": "a455e68a99d395889ab30a25ac3846a135e93c46" },
|
||||||
"outline.nvim": { "branch": "main", "commit": "ead1820d49c8e79ce89cab1c2c318981b695c9d2" },
|
"outline.nvim": { "branch": "main", "commit": "c293eb56db880a0539bf9d85b4a27816960b863e" },
|
||||||
"pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" },
|
"pantran.nvim": { "branch": "main", "commit": "b87c3ae48cba4659587fb75abd847e5b7a7c9ca0" },
|
||||||
"papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" },
|
"papis.nvim": { "branch": "main", "commit": "25e69f25e51b2d46178a213356adbc28b0f918ef" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
"platformio.nvim": { "branch": "main", "commit": "546e1e0b5afdd970f140d0ccaf322d41c0f23941" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||||
"popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" },
|
"popup-menu.nvim": { "branch": "master", "commit": "b618bd0c824a20417d845fa0022327228e6988a2" },
|
||||||
"projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
|
"projections.nvim": { "branch": "pre_release", "commit": "889914169fa1f5c00fb8659653b5a8330fb223e6" },
|
||||||
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
|
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
|
||||||
"quarto-nvim": { "branch": "main", "commit": "d923bb7cfc2bde41143e1c531c28190f0fade3a2" },
|
"quarto-nvim": { "branch": "main", "commit": "17f1e5d664bc615478230dc0240666329efacf9b" },
|
||||||
"renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" },
|
"renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" },
|
||||||
"render-markdown.nvim": { "branch": "main", "commit": "e3c18ddd27a853f85a6f513a864cf4f2982b9f26" },
|
"render-markdown.nvim": { "branch": "main", "commit": "3f3eea97b80839f629c951ca660ffd125bfa5b34" },
|
||||||
"resolve.nvim": { "branch": "master", "commit": "1ed8bcc9ce7d43a0e8e05d0001c9cadb822d95a8" },
|
"resolve.nvim": { "branch": "master", "commit": "1ed8bcc9ce7d43a0e8e05d0001c9cadb822d95a8" },
|
||||||
"rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" },
|
"rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" },
|
||||||
"spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" },
|
"spelunker.vim": { "branch": "master", "commit": "a0bc530f62798bbe053905555a4aa9ed713485eb" },
|
||||||
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
|
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
|
||||||
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
|
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
|
||||||
"tccs.nvim": { "branch": "master", "commit": "23fabbb0a65517307e571f63fe7a3760670086fe" },
|
"tccs.nvim": { "branch": "master", "commit": "23fabbb0a65517307e571f63fe7a3760670086fe" },
|
||||||
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
|
||||||
"telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" },
|
"telescope-words.nvim": { "branch": "main", "commit": "295d51fe1e525fee18c0c164ad0ae5fb23273aa0" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "3333a52ff548ba0a68af6d8da1e54f9cd96e9179" },
|
"telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
|
||||||
"tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" },
|
"tidy.nvim": { "branch": "main", "commit": "8b6921150b16f38f48a2459a844a0c2b4c916914" },
|
||||||
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "ba133b3e932416e4b9507095731a6d7276878fe8" },
|
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "147af4e49f51dd48f41972de26552872b8ba7b25" },
|
||||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||||
"treesj": { "branch": "main", "commit": "26bc2a8432ba3ea79ed6aa346fba780a3d372570" },
|
"treesj": { "branch": "main", "commit": "5fa4e7ba3517f8fe743bb4488f9e9c7ce83330fc" },
|
||||||
"treewalker.nvim": { "branch": "main", "commit": "a37a12b6ae937c616d4cb16b5c26c07a85899b44" },
|
"treewalker.nvim": { "branch": "main", "commit": "3680d19fc275f275352e9a3c05f3ec5079dfc0a7" },
|
||||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||||
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
|
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
|
||||||
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },
|
"vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" },
|
||||||
|
|||||||
@@ -4,113 +4,3 @@ vim.api.nvim_create_autocmd("TextYankPost", {
|
|||||||
vim.highlight.on_yank({ higroup = "YankHighlight" })
|
vim.highlight.on_yank({ higroup = "YankHighlight" })
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- gnikdroy/projections.nvim
|
|
||||||
local Session = require("projections.session")
|
|
||||||
vim.api.nvim_create_autocmd({ "VimLeavePre" }, {
|
|
||||||
callback = function()
|
|
||||||
Session.store(vim.loop.cwd())
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
|
||||||
callback = function()
|
|
||||||
if vim.fn.argc() ~= 0 then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local session_info = Session.info(vim.loop.cwd())
|
|
||||||
if session_info ~= nil then
|
|
||||||
Session.restore(vim.loop.cwd())
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
desc = "Restore last session automatically",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- benlubas/molten-nvim
|
|
||||||
local imb = function(e)
|
|
||||||
vim.schedule(function()
|
|
||||||
local kernels = vim.fn.MoltenAvailableKernels()
|
|
||||||
local try_kernel_name = function()
|
|
||||||
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
|
|
||||||
return metadata.kernelspec.name
|
|
||||||
end
|
|
||||||
local ok, kernel_name = pcall(try_kernel_name)
|
|
||||||
if not ok or not vim.tbl_contains(kernels, kernel_name) then
|
|
||||||
kernel_name = nil
|
|
||||||
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
|
|
||||||
if venv ~= nil then
|
|
||||||
kernel_name = string.match(venv, "/.+/(.+)")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
|
|
||||||
vim.cmd(("MoltenInit %s"):format(kernel_name))
|
|
||||||
end
|
|
||||||
vim.cmd("MoltenImportOutput")
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("BufAdd", {
|
|
||||||
pattern = { "*.ipynb" },
|
|
||||||
callback = imb,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("BufEnter", {
|
|
||||||
pattern = { "*.ipynb" },
|
|
||||||
callback = function(e)
|
|
||||||
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
|
|
||||||
imb(e)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
local default_notebook = [[
|
|
||||||
{
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
""
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"kernelspec": {
|
|
||||||
"display_name": "Python 3",
|
|
||||||
"language": "python",
|
|
||||||
"name": "python3"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"codemirror_mode": {
|
|
||||||
"name": "ipython"
|
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 5
|
|
||||||
}
|
|
||||||
]]
|
|
||||||
|
|
||||||
local function new_notebook(filename)
|
|
||||||
local path = filename .. ".ipynb"
|
|
||||||
local file = io.open(path, "w")
|
|
||||||
if file then
|
|
||||||
file:write(default_notebook)
|
|
||||||
file:close()
|
|
||||||
vim.cmd("edit " .. path)
|
|
||||||
else
|
|
||||||
print("Error: Could not open new notebook file for writing.")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("NewNotebook", function(opts)
|
|
||||||
new_notebook(opts.args)
|
|
||||||
end, {
|
|
||||||
nargs = 1,
|
|
||||||
complete = "file",
|
|
||||||
})
|
|
||||||
|
|||||||
@@ -4,80 +4,121 @@ Artifacts
|
|||||||
Betreuerrolle
|
Betreuerrolle
|
||||||
Bonitur
|
Bonitur
|
||||||
Branch
|
Branch
|
||||||
Crowd-Interaction
|
Branch
|
||||||
|
Branches
|
||||||
|
Crowd
|
||||||
|
Cutie
|
||||||
Destruction
|
Destruction
|
||||||
Developer
|
Developer
|
||||||
Dictation
|
Dictation
|
||||||
|
Dirt
|
||||||
|
Diskursartefakten
|
||||||
|
Dom
|
||||||
Dreams
|
Dreams
|
||||||
Embedding
|
Embedding
|
||||||
Entlebucher
|
Entlebucher
|
||||||
Extraction
|
Extraction
|
||||||
For-Loop
|
For
|
||||||
Formatter
|
Formatter
|
||||||
Französischvokabeln
|
Französischvokabeln
|
||||||
GOAT
|
GOAT
|
||||||
Genervtheit
|
Genervtheit
|
||||||
Gestresstheit
|
Gestresstheit
|
||||||
Gym
|
Gym
|
||||||
|
Handwerksunternehmen
|
||||||
Homeserver
|
Homeserver
|
||||||
Immigrationsgeschichte
|
Immigrationsgeschichte
|
||||||
Impro-Theater
|
Impro
|
||||||
Improtheater
|
Improtheater
|
||||||
Infokratie
|
Infokratie
|
||||||
|
Informatikstudierende
|
||||||
|
Informatikstudiun
|
||||||
|
Interaction
|
||||||
Ira
|
Ira
|
||||||
Jahreszeitenunterschied
|
Jahreszeitenunterschied
|
||||||
Jahreszeitenunterschiede
|
Jahreszeitenunterschiede
|
||||||
Kardinälin
|
Kardinälin
|
||||||
|
Kreatindosis
|
||||||
Königinnensubstanz
|
Königinnensubstanz
|
||||||
LLM-Paper
|
Loop
|
||||||
Magazinbeute
|
Magazinbeute
|
||||||
Magazinbeuten
|
Magazinbeuten
|
||||||
|
Merge
|
||||||
|
Merges
|
||||||
Meta
|
Meta
|
||||||
Mods
|
Mods
|
||||||
Mono
|
Mono
|
||||||
Ne
|
Ne
|
||||||
Orgas
|
Orgas
|
||||||
|
Paper
|
||||||
|
Platformer
|
||||||
Poetry
|
Poetry
|
||||||
Poetry-Slam
|
|
||||||
Poetryslam
|
|
||||||
Pollenhose
|
Pollenhose
|
||||||
SDS-Plenum
|
Presenter
|
||||||
SPM-Gruppe
|
Quizabend
|
||||||
|
Renamer
|
||||||
|
Repositories
|
||||||
|
Repository
|
||||||
Scammer
|
Scammer
|
||||||
Sennenhund
|
Sennenhund
|
||||||
Slam
|
Slam
|
||||||
|
Slam
|
||||||
Slammern
|
Slammern
|
||||||
Slams
|
Slams
|
||||||
Soundness
|
Soundness
|
||||||
Speech-to-Text
|
Speech
|
||||||
|
Speedrun
|
||||||
|
Speedruns
|
||||||
Spells
|
Spells
|
||||||
Stations
|
Stations
|
||||||
|
Sub
|
||||||
|
Terraforming
|
||||||
Torrenting
|
Torrenting
|
||||||
Uni-Theater
|
Trainspotter
|
||||||
|
Trefferverhältnis
|
||||||
|
Uni
|
||||||
Unitheater
|
Unitheater
|
||||||
Verification
|
Verification
|
||||||
Vokabelkarten
|
Vokabelkarten
|
||||||
While-Loop
|
While
|
||||||
Wrap-Up-Folie
|
Wohnungslose
|
||||||
|
Wrap-Up
|
||||||
|
Xiayun
|
||||||
Zweifelsfall
|
Zweifelsfall
|
||||||
algenverseucht
|
algenverseucht
|
||||||
aneinandergelehnt
|
aneinandergelehnt
|
||||||
|
awkward
|
||||||
|
be
|
||||||
bürgerlicher
|
bürgerlicher
|
||||||
bürgerlichere
|
bürgerlichere
|
||||||
bürgerlicheren
|
bürgerlicheren
|
||||||
cyber-physische
|
cyber
|
||||||
egozentristisch
|
egozentristisch
|
||||||
|
en
|
||||||
|
eux
|
||||||
|
fois
|
||||||
gedätscht
|
gedätscht
|
||||||
gepiekst
|
gepiekst
|
||||||
|
geupdatet
|
||||||
|
gonna
|
||||||
histoire
|
histoire
|
||||||
ira
|
ira
|
||||||
|
kinky
|
||||||
|
klassistisch
|
||||||
|
même
|
||||||
performistisch
|
performistisch
|
||||||
|
physische
|
||||||
pseudomotivierend
|
pseudomotivierend
|
||||||
pseudomotivierende
|
pseudomotivierende
|
||||||
reingeredet
|
reingeredet
|
||||||
respekt-
|
|
||||||
rumgealbert
|
rumgealbert
|
||||||
shiftete
|
shiftete
|
||||||
|
temps
|
||||||
|
this
|
||||||
|
to
|
||||||
ultra
|
ultra
|
||||||
|
warpl
|
||||||
|
well
|
||||||
|
will
|
||||||
Ça
|
Ça
|
||||||
ça
|
ça
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
dockerized
|
||||||
|
keymap
|
||||||
|
synaptics
|
||||||
|
|||||||
@@ -1,20 +1,27 @@
|
|||||||
|
AI
|
||||||
APV
|
APV
|
||||||
Accuracy
|
Accuracy
|
||||||
|
Agentic
|
||||||
Akallabêth
|
Akallabêth
|
||||||
Altisaur
|
Altisaur
|
||||||
An
|
An
|
||||||
Anki
|
Anki
|
||||||
Annoyed
|
Annoyed
|
||||||
ApoRed
|
ApoRed
|
||||||
|
Applied
|
||||||
Arrabbiata
|
Arrabbiata
|
||||||
Asiahung
|
Asiahung
|
||||||
Aule
|
Aule
|
||||||
Aules
|
Aules
|
||||||
Baez
|
Baez
|
||||||
Barros
|
Barros
|
||||||
|
Beater
|
||||||
Beek
|
Beek
|
||||||
Bela
|
Bela
|
||||||
|
Bennie
|
||||||
|
Berim
|
||||||
Betterov
|
Betterov
|
||||||
|
Bladee
|
||||||
Boarding
|
Boarding
|
||||||
Boelsen
|
Boelsen
|
||||||
Bontjes
|
Bontjes
|
||||||
@@ -23,65 +30,107 @@ CAR
|
|||||||
CATS
|
CATS
|
||||||
CDSS
|
CDSS
|
||||||
CUDA
|
CUDA
|
||||||
|
Carré
|
||||||
Casper
|
Casper
|
||||||
Caspers
|
Caspers
|
||||||
Cato
|
Cato
|
||||||
CdE
|
CdE
|
||||||
|
CdEs
|
||||||
Chrysalis
|
Chrysalis
|
||||||
|
Color
|
||||||
Combi
|
Combi
|
||||||
Commander
|
Commander
|
||||||
Crusader
|
Crusader
|
||||||
|
DFKI
|
||||||
|
DFKIs
|
||||||
|
DPU
|
||||||
Daisy's
|
Daisy's
|
||||||
|
Darth
|
||||||
DeepSeek
|
DeepSeek
|
||||||
Dekarldent
|
Dekarldent
|
||||||
|
Delivery
|
||||||
Destiny 2
|
Destiny 2
|
||||||
Distrobox
|
Distrobox
|
||||||
Doom-Scrolling
|
Doom
|
||||||
Doyma
|
Doyma
|
||||||
|
EasyEffects
|
||||||
Eckhoff
|
Eckhoff
|
||||||
Edain
|
Edain
|
||||||
Elodie
|
Elodie
|
||||||
|
Ernsting's
|
||||||
|
Euphoria
|
||||||
|
Explainable
|
||||||
|
Explodes
|
||||||
Eyal
|
Eyal
|
||||||
FIDO-Stick
|
FIDO
|
||||||
|
Face
|
||||||
|
Fischerhude
|
||||||
Flac
|
Flac
|
||||||
Forest
|
Forest
|
||||||
|
Forgejo
|
||||||
|
Französischmodul
|
||||||
Frevert
|
Frevert
|
||||||
Freverts
|
Freverts
|
||||||
|
Friedl
|
||||||
Friesenturnier
|
Friesenturnier
|
||||||
Gathering
|
Gathering
|
||||||
|
GitNex
|
||||||
|
Glaive
|
||||||
|
Glenn
|
||||||
|
Glenns
|
||||||
Gondor
|
Gondor
|
||||||
|
Governikus
|
||||||
GrapheneOS
|
GrapheneOS
|
||||||
Greater
|
Greater
|
||||||
Grixis
|
Grixis
|
||||||
|
Grosshardt
|
||||||
Gump
|
Gump
|
||||||
Guttersnipe
|
Guttersnipe
|
||||||
|
Haarentor
|
||||||
Habenhausen
|
Habenhausen
|
||||||
Hailo
|
Hailo
|
||||||
|
Helldivers
|
||||||
Hellmers
|
Hellmers
|
||||||
Higgers
|
Higgers
|
||||||
|
Hillmannplatz
|
||||||
Hough
|
Hough
|
||||||
Hue
|
Hue
|
||||||
|
Hunter
|
||||||
Höper
|
Höper
|
||||||
IFAM
|
IFAM
|
||||||
IFAMs
|
IFAMs
|
||||||
IMRaD
|
IMRaD
|
||||||
Ikigai
|
Ikigai
|
||||||
|
Immich
|
||||||
Int
|
Int
|
||||||
Ira
|
Ira
|
||||||
JT
|
JT
|
||||||
Jacobin
|
Jacobin
|
||||||
Jeanine
|
Jeanine
|
||||||
|
Jojen
|
||||||
Karamasov
|
Karamasov
|
||||||
|
Keep
|
||||||
Kingdoms
|
Kingdoms
|
||||||
Kluge
|
Kluge
|
||||||
|
KohakuHub
|
||||||
Kratom
|
Kratom
|
||||||
Kreyenhop
|
Kreyenhop
|
||||||
Kubitschek
|
Kubitschek
|
||||||
Käte
|
Käte
|
||||||
|
LLM
|
||||||
LLMs
|
LLMs
|
||||||
|
LabNex
|
||||||
|
Lanz
|
||||||
|
Later
|
||||||
|
Lemmie
|
||||||
|
Lemmies
|
||||||
LightDM
|
LightDM
|
||||||
|
LightDM-GTK-Greeter
|
||||||
|
LightDM-Mini-Greeter
|
||||||
LilyPond
|
LilyPond
|
||||||
Line Dance
|
Line Dance
|
||||||
|
Lounge
|
||||||
|
MEVIS
|
||||||
MTG
|
MTG
|
||||||
Maarten
|
Maarten
|
||||||
Magic
|
Magic
|
||||||
@@ -92,18 +141,25 @@ Mathis
|
|||||||
Matvey
|
Matvey
|
||||||
Mauli
|
Mauli
|
||||||
Mentos
|
Mentos
|
||||||
|
Meret
|
||||||
|
Meshtastic
|
||||||
Metzener
|
Metzener
|
||||||
MiiMii
|
MiiMii
|
||||||
Mint
|
Mint
|
||||||
MusikAka
|
MusikAka
|
||||||
MusikAkademie
|
MusikAkademie
|
||||||
NVIM
|
NVIM
|
||||||
NVIM-Plugin
|
NVIM
|
||||||
NVIM-Plugins
|
NVIM
|
||||||
Nate
|
Nate
|
||||||
NeoVIM
|
Neovim
|
||||||
|
NetworkManager
|
||||||
NextCloud
|
NextCloud
|
||||||
Nim
|
Nim
|
||||||
|
Nobody
|
||||||
|
Noel
|
||||||
|
North
|
||||||
|
Novruz
|
||||||
Númenor
|
Númenor
|
||||||
OFFIS
|
OFFIS
|
||||||
Oberhausern
|
Oberhausern
|
||||||
@@ -111,63 +167,95 @@ Oberweseler
|
|||||||
Odysee
|
Odysee
|
||||||
Opam
|
Opam
|
||||||
OpenCloud
|
OpenCloud
|
||||||
|
Ove
|
||||||
Overwatch
|
Overwatch
|
||||||
Pane
|
Pane
|
||||||
Papis
|
Papis
|
||||||
Pauper
|
Pauper
|
||||||
|
Pentakill
|
||||||
Peperaci
|
Peperaci
|
||||||
PfingstAka
|
PfingstAka
|
||||||
PfingstAka
|
PfingstAka
|
||||||
PfingstAkademie
|
PfingstAkademie
|
||||||
|
Pillion
|
||||||
Pluribus
|
Pluribus
|
||||||
PopOS
|
PopOS
|
||||||
Portainer
|
Portainer
|
||||||
|
Power
|
||||||
Precision
|
Precision
|
||||||
Precon
|
Precon
|
||||||
Precons
|
Precons
|
||||||
PyEnv
|
PyEnv
|
||||||
|
RStudio
|
||||||
Rebowl
|
Rebowl
|
||||||
|
Reed
|
||||||
Reeves
|
Reeves
|
||||||
|
Reichenecker
|
||||||
Rocq
|
Rocq
|
||||||
Ruschenbaum
|
Ruschenbaum
|
||||||
|
SDS
|
||||||
SPM
|
SPM
|
||||||
|
Saber
|
||||||
Sagehorn
|
Sagehorn
|
||||||
|
Sagehorner
|
||||||
Scheller
|
Scheller
|
||||||
|
Schrang
|
||||||
|
Schwerdtner
|
||||||
|
Scrolling
|
||||||
Sedef
|
Sedef
|
||||||
Severance
|
Severance
|
||||||
Shinies
|
Shinies
|
||||||
Shiny
|
Shiny
|
||||||
Skyrim
|
Skyrim
|
||||||
|
Snape
|
||||||
|
Softbrod
|
||||||
SommerAka
|
SommerAka
|
||||||
SommerAkademie
|
SommerAkademie
|
||||||
Souleyman
|
Souleyman
|
||||||
SpotiFLAC
|
SpotiFLAC
|
||||||
|
Sprave
|
||||||
Stina
|
Stina
|
||||||
Stud.IP
|
Stud.IP
|
||||||
|
Study
|
||||||
|
Styropyro
|
||||||
TCAV
|
TCAV
|
||||||
|
Talking
|
||||||
Thinkpad
|
Thinkpad
|
||||||
Till-Ove
|
Till
|
||||||
|
Timmendorfer
|
||||||
Tjark
|
Tjark
|
||||||
Tornow
|
Tornow
|
||||||
TrackPoint
|
TrackPoint
|
||||||
Traefik
|
Traefik
|
||||||
UDEV
|
UDEV
|
||||||
Umbar
|
Umbar
|
||||||
|
V1del
|
||||||
VIM
|
VIM
|
||||||
Verdener
|
Verdener
|
||||||
|
Viano
|
||||||
|
Wechloy
|
||||||
Weizman
|
Weizman
|
||||||
|
Whisper
|
||||||
|
Wife
|
||||||
Willenborg
|
Willenborg
|
||||||
WinterAka
|
WinterAka
|
||||||
WinterAkademie
|
WinterAkademie
|
||||||
Writhing
|
Writhing
|
||||||
|
X.Org
|
||||||
|
Years
|
||||||
Ziegeleiweg
|
Ziegeleiweg
|
||||||
Zimin
|
Zimin
|
||||||
|
and
|
||||||
baseimage-gui
|
baseimage-gui
|
||||||
ctop
|
ctop
|
||||||
eKiwi
|
eKiwi
|
||||||
flac
|
flac
|
||||||
|
glaive
|
||||||
inf
|
inf
|
||||||
jlesages
|
jlesages
|
||||||
liquidctl
|
liquidctl
|
||||||
npy
|
npy
|
||||||
|
ramdisk
|
||||||
|
systemd
|
||||||
|
xinput
|
||||||
zedbraxmen
|
zedbraxmen
|
||||||
|
|||||||
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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ return {
|
|||||||
"SmiteshP/nvim-navic",
|
"SmiteshP/nvim-navic",
|
||||||
"nvim-tree/nvim-web-devicons", -- optional dependency
|
"nvim-tree/nvim-web-devicons", -- optional dependency
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
theme = {
|
theme = {
|
||||||
normal = { bg = "#272727" },
|
normal = { bg = "#272727" },
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
return {
|
return {
|
||||||
-- rainbow auto-pairs
|
-- rainbow and auto-pairs for parenthesis
|
||||||
"saghen/blink.pairs",
|
"saghen/blink.pairs",
|
||||||
version = "*", -- (recommended) only required with prebuilt binaries
|
version = "*", -- (recommended) only required with prebuilt binaries
|
||||||
dependencies = "saghen/blink.download", -- download prebuilt binaries from github releases
|
dependencies = { "saghen/blink.download" }, -- download prebuilt binaries from github releases
|
||||||
|
lazy = false,
|
||||||
--- @module 'blink.pairs'
|
--- @module 'blink.pairs'
|
||||||
--- @type blink.pairs.Config
|
--- @type blink.pairs.Config
|
||||||
opts = {
|
opts = {
|
||||||
|
|||||||
5
.config/nvim/lua/plugins/cmp-nvim-lsp.lua
Normal file
5
.config/nvim/lua/plugins/cmp-nvim-lsp.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
-- nvim-cmp source for lsp
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- commenting improvements
|
-- commenting improvements
|
||||||
"numtostr/comment.nvim",
|
"numtostr/comment.nvim",
|
||||||
|
lazy = false,
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- improved csv handling
|
-- improved csv handling
|
||||||
"hat0uma/csvview.nvim",
|
"hat0uma/csvview.nvim",
|
||||||
ft = "csv",
|
ft = { "csv" },
|
||||||
cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" },
|
|
||||||
opts = {
|
opts = {
|
||||||
parser = { comments = { "#", "//" } },
|
parser = { comments = { "#", "//" } },
|
||||||
keymaps = {
|
keymaps = {
|
||||||
|
|||||||
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
return {
|
return {
|
||||||
-- rename files in buffer
|
-- rename files in buffer
|
||||||
"tiyn/file-renamer.nvim",
|
"tiyn/file-renamer.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
},
|
||||||
|
cmd = { "Ren", "Renamer" },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- display git status per line
|
-- display git status per line
|
||||||
"lewis6991/gitsigns.nvim",
|
"lewis6991/gitsigns.nvim",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- preview definitions using floating windows
|
-- preview definitions using floating windows
|
||||||
"rmagatti/goto-preview",
|
"rmagatti/goto-preview",
|
||||||
dependencies = "rmagatti/logger.nvim",
|
dependencies = { "rmagatti/logger.nvim" },
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"gpd",
|
"gpd",
|
||||||
|
|||||||
14
.config/nvim/lua/plugins/image.lua
Normal file
14
.config/nvim/lua/plugins/image.lua
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
-- display images inside neovim
|
||||||
|
"3rd/image.nvim",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
opts = {
|
||||||
|
backend = "ueberzug",
|
||||||
|
max_width = 100,
|
||||||
|
max_height = 12,
|
||||||
|
max_height_window_percentage = math.huge,
|
||||||
|
max_width_window_percentage = math.huge,
|
||||||
|
window_overlap_clear_enabled = true,
|
||||||
|
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- show indentation lines
|
-- show indentation lines
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
event = "BufReadPre",
|
lazy = false,
|
||||||
main = "ibl",
|
main = "ibl",
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
10
.config/nvim/lua/plugins/jupytext.lua
Normal file
10
.config/nvim/lua/plugins/jupytext.lua
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
return {
|
||||||
|
-- open jupyter notebooks as their plain text alternatives
|
||||||
|
"GCBallesteros/jupytext.nvim",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
opts = {
|
||||||
|
style = "markdown",
|
||||||
|
output_extension = "md",
|
||||||
|
force_ft = "markdown",
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -23,12 +23,13 @@ return {
|
|||||||
if engine == "xelatex" then
|
if engine == "xelatex" then
|
||||||
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
|
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
|
||||||
else
|
else
|
||||||
vim.g.knap_settings.textopdf = "pdflatex -synctex=1 -interaction=batchmode %docroot%"
|
vim.g.knap_settings.textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
vim.g.knap_settings = {
|
vim.g.knap_settings = {
|
||||||
delay = 100,
|
delay = 100,
|
||||||
texoutputext = "pdf",
|
texoutputext = "pdf",
|
||||||
|
-- textopdf = "pdflatex --shell-escape -synctex=1 -interaction=batchmode %docroot%",
|
||||||
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
|
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
|
||||||
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
|
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
|
||||||
textopdfviewerrefresh = "reload",
|
textopdfviewerrefresh = "reload",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- show function signature while typing
|
-- show function signature while typing
|
||||||
"ray-x/lsp_signature.nvim",
|
"ray-x/lsp_signature.nvim",
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
bind = true,
|
bind = true,
|
||||||
handler_opts = {
|
handler_opts = {
|
||||||
|
|||||||
@@ -4,26 +4,10 @@ return {
|
|||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-tree/nvim-web-devicons",
|
"nvim-tree/nvim-web-devicons",
|
||||||
"tiyn/tccs.nvim",
|
"tiyn/tccs.nvim",
|
||||||
{
|
|
||||||
"f-person/git-blame.nvim",
|
"f-person/git-blame.nvim",
|
||||||
config = function()
|
|
||||||
vim.g.gitblame_display_virtual_text = 0
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tiyn/action-hints.nvim",
|
"tiyn/action-hints.nvim",
|
||||||
config = function()
|
|
||||||
require("action-hints").setup({
|
|
||||||
template = {
|
|
||||||
-- definition = { text = "D", color = "#add8e6" },
|
|
||||||
-- references = { text = "R%s", color = "#ff6666" },
|
|
||||||
definition = { text = Definition_sign, color = "#add8e6" },
|
|
||||||
references = { text = Reference_sign, color = "#ff6666" },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
options = {
|
options = {
|
||||||
globalstatus = true,
|
globalstatus = true,
|
||||||
|
|||||||
11
.config/nvim/lua/plugins/luasnip.lua
Normal file
11
.config/nvim/lua/plugins/luasnip.lua
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
-- snippet support
|
||||||
|
"l3mon4d3/luasnip",
|
||||||
|
version = "v2.*",
|
||||||
|
dependencies = { "saadparwaiz1/cmp_luasnip" },
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
-- build = "make install_jsregexp",
|
||||||
|
config = function()
|
||||||
|
require("luasnip.loaders.from_snipmate").lazy_load()
|
||||||
|
end,
|
||||||
|
}
|
||||||
23
.config/nvim/lua/plugins/mason-null-ls.lua
Normal file
23
.config/nvim/lua/plugins/mason-null-ls.lua
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
return {
|
||||||
|
-- bridge mason and null-ls
|
||||||
|
"jay-babu/mason-null-ls.nvim",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
opts = {
|
||||||
|
automatic_installation = true,
|
||||||
|
ensure_installed = {
|
||||||
|
-- assembler
|
||||||
|
"asmfmt",
|
||||||
|
-- lua
|
||||||
|
"stylua",
|
||||||
|
-- markdown
|
||||||
|
"mdformat",
|
||||||
|
-- python
|
||||||
|
"isort",
|
||||||
|
"yapf",
|
||||||
|
-- shell
|
||||||
|
"shfmt",
|
||||||
|
-- yaml
|
||||||
|
"yamlfmt",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -2,49 +2,9 @@ return {
|
|||||||
-- lang server installations
|
-- lang server installations
|
||||||
"williamboman/mason.nvim",
|
"williamboman/mason.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
|
||||||
"nvimtools/none-ls.nvim",
|
"nvimtools/none-ls.nvim",
|
||||||
config = function()
|
|
||||||
require("null-ls").setup({
|
|
||||||
sources = {
|
|
||||||
-- assembler
|
|
||||||
require("null-ls").builtins.formatting.asmfmt,
|
|
||||||
-- lua
|
|
||||||
require("null-ls").builtins.formatting.stylua,
|
|
||||||
-- markdown
|
|
||||||
require("null-ls").builtins.formatting.mdformat,
|
|
||||||
-- python
|
|
||||||
require("null-ls").builtins.formatting.isort,
|
|
||||||
require("null-ls").builtins.formatting.yapf,
|
|
||||||
-- shell
|
|
||||||
require("null-ls").builtins.formatting.shfmt,
|
|
||||||
-- yaml
|
|
||||||
require("null-ls").builtins.formatting.yamlfmt,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"jay-babu/mason-null-ls.nvim",
|
"jay-babu/mason-null-ls.nvim",
|
||||||
opts = {
|
|
||||||
automatic_installation = true,
|
|
||||||
ensure_installed = {
|
|
||||||
-- assembler
|
|
||||||
"asmfmt",
|
|
||||||
-- lua
|
|
||||||
"stylua",
|
|
||||||
-- markdown
|
|
||||||
"mdformat",
|
|
||||||
-- python
|
|
||||||
"isort",
|
|
||||||
"yapf",
|
|
||||||
-- shell
|
|
||||||
"shfmt",
|
|
||||||
-- yaml
|
|
||||||
"yamlfmt",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = { ui = { icons = Install_signs } },
|
opts = { ui = { icons = Install_signs } },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- decorations for the current line mode
|
-- decorations for the current line mode
|
||||||
"mvllow/modes.nvim",
|
"mvllow/modes.nvim",
|
||||||
|
lazy = false,
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,108 +1,14 @@
|
|||||||
return {
|
return {
|
||||||
-- jupyter notebook support
|
-- jupyter notebook support
|
||||||
"benlubas/molten-nvim",
|
"benlubas/molten-nvim",
|
||||||
|
build = ":UpdateRemotePlugins",
|
||||||
version = "^1.0.0",
|
version = "^1.0.0",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
|
||||||
"3rd/image.nvim",
|
"3rd/image.nvim",
|
||||||
opts = {
|
|
||||||
backend = "ueberzug",
|
|
||||||
max_width = 100,
|
|
||||||
max_height = 12,
|
|
||||||
max_height_window_percentage = math.huge,
|
|
||||||
max_width_window_percentage = math.huge,
|
|
||||||
window_overlap_clear_enabled = true,
|
|
||||||
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"quarto-dev/quarto-nvim",
|
"quarto-dev/quarto-nvim",
|
||||||
dependencies = {
|
|
||||||
"jmbuhr/otter.nvim",
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
},
|
|
||||||
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,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"GCBallesteros/jupytext.nvim",
|
"GCBallesteros/jupytext.nvim",
|
||||||
opts = {
|
|
||||||
style = "markdown",
|
|
||||||
output_extension = "md",
|
|
||||||
force_ft = "markdown",
|
|
||||||
},
|
},
|
||||||
},
|
lazy = false,
|
||||||
},
|
|
||||||
build = ":UpdateRemotePlugins",
|
|
||||||
init = function()
|
init = function()
|
||||||
vim.g.molten_auto_open_output = false
|
vim.g.molten_auto_open_output = false
|
||||||
vim.g.molten_wrap_output = true
|
vim.g.molten_wrap_output = true
|
||||||
@@ -111,4 +17,93 @@ return {
|
|||||||
vim.g.molten_image_provider = "image.nvim"
|
vim.g.molten_image_provider = "image.nvim"
|
||||||
vim.g.molten_output_win_max_height = 20
|
vim.g.molten_output_win_max_height = 20
|
||||||
end,
|
end,
|
||||||
|
config = function()
|
||||||
|
local imb = function(e)
|
||||||
|
vim.schedule(function()
|
||||||
|
local kernels = vim.fn.MoltenAvailableKernels()
|
||||||
|
local try_kernel_name = function()
|
||||||
|
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
|
||||||
|
return metadata.kernelspec.name
|
||||||
|
end
|
||||||
|
local ok, kernel_name = pcall(try_kernel_name)
|
||||||
|
if not ok or not vim.tbl_contains(kernels, kernel_name) then
|
||||||
|
kernel_name = nil
|
||||||
|
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
|
||||||
|
if venv ~= nil then
|
||||||
|
kernel_name = string.match(venv, "/.+/(.+)")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
|
||||||
|
vim.cmd(("MoltenInit %s"):format(kernel_name))
|
||||||
|
end
|
||||||
|
vim.cmd("MoltenImportOutput")
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("BufAdd", {
|
||||||
|
pattern = { "*.ipynb" },
|
||||||
|
callback = imb,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("BufEnter", {
|
||||||
|
pattern = { "*.ipynb" },
|
||||||
|
callback = function(e)
|
||||||
|
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
|
||||||
|
imb(e)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local default_notebook = [[
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython"
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
|
]]
|
||||||
|
|
||||||
|
local function new_notebook(filename)
|
||||||
|
local path = filename .. ".ipynb"
|
||||||
|
local file = io.open(path, "w")
|
||||||
|
if file then
|
||||||
|
file:write(default_notebook)
|
||||||
|
file:close()
|
||||||
|
vim.cmd("edit " .. path)
|
||||||
|
else
|
||||||
|
print("Error: Could not open new notebook file for writing.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("NewNotebook", function(opts)
|
||||||
|
new_notebook(opts.args)
|
||||||
|
end, {
|
||||||
|
nargs = 1,
|
||||||
|
complete = "file",
|
||||||
|
})
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- generate annotations automatically
|
-- generate annotations automatically
|
||||||
"danymat/neogen",
|
"danymat/neogen",
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
snippet_engine = "luasnip",
|
snippet_engine = "luasnip",
|
||||||
},
|
},
|
||||||
|
|||||||
24
.config/nvim/lua/plugins/none-ls.lua
Normal file
24
.config/nvim/lua/plugins/none-ls.lua
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
-- inject lsp diagnostics, etc
|
||||||
|
"nvimtools/none-ls.nvim",
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
config = function()
|
||||||
|
require("null-ls").setup({
|
||||||
|
sources = {
|
||||||
|
-- assembler
|
||||||
|
require("null-ls").builtins.formatting.asmfmt,
|
||||||
|
-- lua
|
||||||
|
require("null-ls").builtins.formatting.stylua,
|
||||||
|
-- markdown
|
||||||
|
require("null-ls").builtins.formatting.mdformat,
|
||||||
|
-- python
|
||||||
|
require("null-ls").builtins.formatting.isort,
|
||||||
|
require("null-ls").builtins.formatting.yapf,
|
||||||
|
-- shell
|
||||||
|
require("null-ls").builtins.formatting.shfmt,
|
||||||
|
-- yaml
|
||||||
|
require("null-ls").builtins.formatting.yamlfmt,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -4,22 +4,13 @@ return {
|
|||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"onsails/lspkind-nvim",
|
"onsails/lspkind-nvim",
|
||||||
-- cmp sources
|
|
||||||
"hrsh7th/cmp-buffer",
|
"hrsh7th/cmp-buffer",
|
||||||
"hrsh7th/cmp-path",
|
"hrsh7th/cmp-path",
|
||||||
"uga-rosa/cmp-dictionary",
|
"uga-rosa/cmp-dictionary",
|
||||||
"lukas-reineke/cmp-under-comparator",
|
"lukas-reineke/cmp-under-comparator",
|
||||||
-- luasnip
|
|
||||||
{
|
|
||||||
"l3mon4d3/luasnip",
|
"l3mon4d3/luasnip",
|
||||||
config = function()
|
|
||||||
require("luasnip.loaders.from_snipmate").lazy_load()
|
|
||||||
end,
|
|
||||||
version = "v2.*",
|
|
||||||
-- build = "make install_jsregexp",
|
|
||||||
dependencies = "saadparwaiz1/cmp_luasnip",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
config = function()
|
config = function()
|
||||||
local cmp = require("cmp")
|
local cmp = require("cmp")
|
||||||
cmp.setup({
|
cmp.setup({
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- showing color of hex values, etc
|
-- showing color of hex values, etc
|
||||||
"ChristianChiarulli/nvim-colorizer.lua",
|
"ChristianChiarulli/nvim-colorizer.lua",
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
filetypes = {
|
filetypes = {
|
||||||
"*",
|
"*",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
return {
|
return {
|
||||||
-- lillypond integration
|
-- lillypond integration
|
||||||
"martineausimon/nvim-lilypond-suite",
|
"martineausimon/nvim-lilypond-suite",
|
||||||
ft = "lilypond",
|
dependencies = { "uga-rosa/cmp-dictionary" },
|
||||||
dependencies = "uga-rosa/cmp-dictionary",
|
ft = { "lilypond" },
|
||||||
opts = {
|
opts = {
|
||||||
lilypond = {
|
lilypond = {
|
||||||
mappings = {
|
mappings = {
|
||||||
|
|||||||
@@ -3,22 +3,9 @@ return {
|
|||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"williamboman/mason-lspconfig.nvim",
|
||||||
{
|
|
||||||
"mrcjkb/rustaceanvim",
|
|
||||||
version = "^6",
|
|
||||||
lazy = false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
config = function()
|
|
||||||
Capabilities = require("cmp_nvim_lsp").default_capabilities()
|
|
||||||
Capabilities.textDocument.foldingRange = {
|
|
||||||
dynamicRegistration = false,
|
|
||||||
lineFoldingOnly = true,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
automatic_setup = true,
|
automatic_setup = true,
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
@@ -69,12 +56,17 @@ return {
|
|||||||
},
|
},
|
||||||
pyright = {},
|
pyright = {},
|
||||||
}
|
}
|
||||||
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
capabilities.textDocument.foldingRange = {
|
||||||
|
dynamicRegistration = false,
|
||||||
|
lineFoldingOnly = true,
|
||||||
|
}
|
||||||
for name, config in pairs(servers) do
|
for name, config in pairs(servers) do
|
||||||
vim.lsp.config(
|
vim.lsp.config(
|
||||||
name,
|
name,
|
||||||
vim.tbl_extend("force", config, {
|
vim.tbl_extend("force", config, {
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
capabilities = Capabilities,
|
capabilities = capabilities,
|
||||||
flags = default_flags,
|
flags = default_flags,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ return {
|
|||||||
"kevinhwang91/nvim-hlslens",
|
"kevinhwang91/nvim-hlslens",
|
||||||
"lewis6991/gitsigns.nvim",
|
"lewis6991/gitsigns.nvim",
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
marks = {
|
marks = {
|
||||||
Cursor = { highlight = "Normal" },
|
Cursor = { highlight = "Normal" },
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ return {
|
|||||||
-- additional quote/parantheses funtions
|
-- additional quote/parantheses funtions
|
||||||
"kylechui/nvim-surround",
|
"kylechui/nvim-surround",
|
||||||
version = "*",
|
version = "*",
|
||||||
event = "VeryLazy",
|
lazy = false,
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
return {
|
return {
|
||||||
-- fileexplorer on the side
|
-- fileexplorer on the side
|
||||||
"nvim-tree/nvim-tree.lua",
|
"nvim-tree/nvim-tree.lua",
|
||||||
cmd = "NvimTreeToggle",
|
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
"nvim-tree/nvim-web-devicons",
|
||||||
lazy = true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
cmd = { "NvimTreeToggle" },
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"<F2>",
|
"<F2>",
|
||||||
|
|||||||
@@ -3,19 +3,10 @@ return {
|
|||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
build = ":TSUpdate",
|
build = ":TSUpdate",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
-- automatically close html-tags
|
"windwp/nvim-ts-autotag", -- automatically close html-tags
|
||||||
{
|
|
||||||
"windwp/nvim-ts-autotag",
|
|
||||||
opts = {
|
|
||||||
opts = {
|
|
||||||
enable_close = true,
|
|
||||||
enable_rename = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- 'p00f/nvim-ts-rainbow', -- color brackets
|
|
||||||
"nvim-treesitter/nvim-treesitter-context",
|
"nvim-treesitter/nvim-treesitter-context",
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
config = function()
|
config = function()
|
||||||
local treesitter = require("nvim-treesitter")
|
local treesitter = require("nvim-treesitter")
|
||||||
treesitter.setup()
|
treesitter.setup()
|
||||||
|
|||||||
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,10 @@
|
|||||||
return {
|
return {
|
||||||
-- folding improvements
|
-- folding improvements
|
||||||
"kevinhwang91/nvim-ufo",
|
"kevinhwang91/nvim-ufo",
|
||||||
dependencies = { "kevinhwang91/promise-async" },
|
dependencies = {
|
||||||
|
"kevinhwang91/promise-async",
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
},
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"K",
|
"K",
|
||||||
@@ -10,7 +13,7 @@ return {
|
|||||||
if not winid then
|
if not winid then
|
||||||
vim.lsp.buf.hover({
|
vim.lsp.buf.hover({
|
||||||
border = "rounded",
|
border = "rounded",
|
||||||
focusable = false,
|
focusable = true, -- set to false to disable pressing K twice to focus the window
|
||||||
max_width = 100,
|
max_width = 100,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|||||||
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,133 +1,17 @@
|
|||||||
return {
|
return {
|
||||||
-- ollama llm integration
|
-- ollama llm integration
|
||||||
"huynle/ogpt.nvim",
|
"huynle/ogpt.nvim",
|
||||||
event = "VeryLazy",
|
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"MunifTanjim/nui.nvim",
|
"MunifTanjim/nui.nvim",
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
{
|
|
||||||
"folke/edgy.nvim",
|
"folke/edgy.nvim",
|
||||||
event = "VeryLazy",
|
|
||||||
init = function()
|
|
||||||
vim.opt.laststatus = 3
|
|
||||||
vim.opt.splitkeep = "screen" -- or "topline" or "screen"
|
|
||||||
end,
|
|
||||||
opts = {
|
|
||||||
exit_when_last = false,
|
|
||||||
animate = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
wo = {
|
|
||||||
winbar = true,
|
|
||||||
winfixwidth = true,
|
|
||||||
winfixheight = false,
|
|
||||||
winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
|
|
||||||
spell = false,
|
|
||||||
signcolumn = "no",
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
-- -- close window
|
|
||||||
["q"] = function(win)
|
|
||||||
win:close()
|
|
||||||
end,
|
|
||||||
-- close sidebar
|
|
||||||
["Q"] = function(win)
|
|
||||||
win.view.edgebar:close()
|
|
||||||
end,
|
|
||||||
-- increase width
|
|
||||||
["<S-Right>"] = function(win)
|
|
||||||
win:resize("width", 3)
|
|
||||||
end,
|
|
||||||
-- decrease width
|
|
||||||
["<S-Left>"] = function(win)
|
|
||||||
win:resize("width", -3)
|
|
||||||
end,
|
|
||||||
-- increase height
|
|
||||||
["<S-Up>"] = function(win)
|
|
||||||
win:resize("height", 3)
|
|
||||||
end,
|
|
||||||
-- decrease height
|
|
||||||
["<S-Down>"] = function(win)
|
|
||||||
win:resize("height", -3)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
right = {
|
|
||||||
{
|
|
||||||
title = "OGPT Popup",
|
|
||||||
ft = "ogpt-popup",
|
|
||||||
size = { width = 0.2 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Parameters",
|
|
||||||
ft = "ogpt-parameters-window",
|
|
||||||
size = { height = 6 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Template",
|
|
||||||
ft = "ogpt-template",
|
|
||||||
size = { height = 6 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Sessions",
|
|
||||||
ft = "ogpt-sessions",
|
|
||||||
size = { height = 6 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT System Input",
|
|
||||||
ft = "ogpt-system-window",
|
|
||||||
size = { height = 6 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT",
|
|
||||||
ft = "ogpt-window",
|
|
||||||
size = { height = 0.5 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT {{{selection}}}",
|
|
||||||
ft = "ogpt-selection",
|
|
||||||
size = { width = 80, height = 4 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPt {{{instruction}}}",
|
|
||||||
ft = "ogpt-instruction",
|
|
||||||
size = { width = 80, height = 4 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "OGPT Chat",
|
|
||||||
ft = "ogpt-input",
|
|
||||||
size = { width = 80, height = 4 },
|
|
||||||
wo = {
|
|
||||||
wrap = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"<leader>ai",
|
"<leader>ao",
|
||||||
"<cmd>OGPT<CR>",
|
"<cmd>OGPT<CR>",
|
||||||
desc = "OGPT: Open AI View",
|
desc = "OGPT: Toggle chat",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
|
|||||||
@@ -7,7 +7,12 @@ return {
|
|||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
enable_keymaps = false,
|
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,10 +1,10 @@
|
|||||||
return {
|
return {
|
||||||
-- navigate between projects using telescope
|
-- navigate between projects using telescope
|
||||||
"gnikdroy/projections.nvim",
|
"gnikdroy/projections.nvim",
|
||||||
|
branch = "pre_release",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
},
|
},
|
||||||
branch = "pre_release",
|
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"<leader>fp",
|
"<leader>fp",
|
||||||
@@ -29,7 +29,31 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
require("projections").setup(opts)
|
local projections = require("projections")
|
||||||
|
local session = require("projections.session")
|
||||||
|
|
||||||
|
projections.setup(opts)
|
||||||
require("telescope").load_extension("projections")
|
require("telescope").load_extension("projections")
|
||||||
|
|
||||||
|
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
|
||||||
|
vim.schedule(function()
|
||||||
|
local session_info = session.info(vim.loop.cwd())
|
||||||
|
if session_info ~= nil then
|
||||||
|
session.restore(vim.loop.cwd())
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
desc = "Restore last session automatically",
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
80
.config/nvim/lua/plugins/quarto-nvim.lua
Normal file
80
.config/nvim/lua/plugins/quarto-nvim.lua
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
return {
|
||||||
|
-- quarto support
|
||||||
|
"quarto-dev/quarto-nvim",
|
||||||
|
dependencies = {
|
||||||
|
"jmbuhr/otter.nvim",
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
},
|
||||||
|
lazy = true, -- load as dependency
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>rc",
|
||||||
|
function()
|
||||||
|
require("quarto.runner").run_cell()
|
||||||
|
end,
|
||||||
|
desc = "Quarto: Run cell",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ra",
|
||||||
|
function()
|
||||||
|
require("quarto.runner").run_above()
|
||||||
|
end,
|
||||||
|
desc = "Quarto: Run cell and above",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rA",
|
||||||
|
function()
|
||||||
|
require("quarto.runner").run_all()
|
||||||
|
end,
|
||||||
|
desc = "Quarto: Run all cells",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rl",
|
||||||
|
function()
|
||||||
|
require("quarto.runner").run_line()
|
||||||
|
end,
|
||||||
|
desc = "Quarto: Run line",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rr",
|
||||||
|
function()
|
||||||
|
require("quarto.runner").run_range()
|
||||||
|
end,
|
||||||
|
desc = "Quarto: Run visual range",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rL",
|
||||||
|
function()
|
||||||
|
require("quarto.runner").run_all(true)
|
||||||
|
end,
|
||||||
|
desc = "Quarto: Run all cells of all languages",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
lspFeatures = {
|
||||||
|
languages = { "python" },
|
||||||
|
chunks = "all",
|
||||||
|
diagnostics = {
|
||||||
|
enabled = true,
|
||||||
|
triggers = { "BufWritePost" },
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
codeRunner = {
|
||||||
|
enabled = true,
|
||||||
|
default_method = "molten",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local quarto = require("quarto")
|
||||||
|
quarto.setup(opts)
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "markdown",
|
||||||
|
callback = function()
|
||||||
|
quarto.activate()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -5,6 +5,10 @@ return {
|
|||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
"nvim-tree/nvim-web-devicons",
|
"nvim-tree/nvim-web-devicons",
|
||||||
},
|
},
|
||||||
|
ft = { "markdown" },
|
||||||
|
cond = function()
|
||||||
|
return vim.fn.expand("%:e") ~= "ipynb"
|
||||||
|
end,
|
||||||
---@module 'render-markdown'
|
---@module 'render-markdown'
|
||||||
---@type render.md.UserConfig
|
---@type render.md.UserConfig
|
||||||
opts = {
|
opts = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- color and improve git merge conflicts
|
-- color and improve git merge conflicts
|
||||||
"spacedentist/resolve.nvim",
|
"spacedentist/resolve.nvim",
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
lazy = false,
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
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
|
||||||
|
}
|
||||||
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
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ return {
|
|||||||
version = "*",
|
version = "*",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
"archie-judd/telescope-words.nvim",
|
"archie-judd/telescope-words.nvim",
|
||||||
},
|
},
|
||||||
keys = {
|
keys = {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- display inline diagnostics
|
-- display inline diagnostics
|
||||||
"rachartier/tiny-inline-diagnostic.nvim",
|
"rachartier/tiny-inline-diagnostic.nvim",
|
||||||
event = "VeryLazy",
|
lazy = false,
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
opts = {
|
opts = {
|
||||||
preset = "classic",
|
preset = "classic",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ return {
|
|||||||
-- todo symbols and highlighting
|
-- todo symbols and highlighting
|
||||||
"folke/todo-comments.nvim",
|
"folke/todo-comments.nvim",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
keywords = {
|
keywords = {
|
||||||
ERRO = { icon = Error_sign, color = "error" },
|
ERRO = { icon = Error_sign, color = "error" },
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ return {
|
|||||||
function()
|
function()
|
||||||
require("treesj").toggle()
|
require("treesj").toggle()
|
||||||
end,
|
end,
|
||||||
|
mode = "n",
|
||||||
|
desc = "Join/split block",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
opts = {},
|
opts = {},
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- list of errors
|
-- list of errors
|
||||||
"folke/trouble.nvim",
|
"folke/trouble.nvim",
|
||||||
dependencies = {
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
lazy = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"<F4>",
|
"<F4>",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
return {
|
return {
|
||||||
-- highlight other occurences of the same word
|
-- highlight other occurences of the same word
|
||||||
"RRethy/vim-illuminate",
|
"RRethy/vim-illuminate",
|
||||||
|
lazy = false,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- highlighting for the viper verification language
|
-- highlighting for the viper verification language
|
||||||
"tiyn/viper.nvim",
|
"tiyn/viper.nvim",
|
||||||
event = { "BufReadPre *.vpr", "FileType viper" },
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
opts = {}
|
pattern = "*.vpr",
|
||||||
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- improved keybindings, previewing them
|
-- improved keybindings, previewing them
|
||||||
"folke/which-key.nvim",
|
"folke/which-key.nvim",
|
||||||
|
lazy = false,
|
||||||
config = function()
|
config = function()
|
||||||
require("which-key").add({
|
require("which-key").add({
|
||||||
{ mode = "n", "g", desc = "LSP: goto" },
|
{ mode = "n", "g", desc = "LSP: goto" },
|
||||||
|
|||||||
@@ -2,15 +2,13 @@ return {
|
|||||||
-- improved wild menu
|
-- improved wild menu
|
||||||
"gelguy/wilder.nvim",
|
"gelguy/wilder.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
"nvim-tree/nvim-web-devicons",
|
||||||
lazy = true,
|
|
||||||
},
|
|
||||||
"roxma/nvim-yarp",
|
"roxma/nvim-yarp",
|
||||||
"roxma/vim-hug-neovim-rpc",
|
"roxma/vim-hug-neovim-rpc",
|
||||||
"romgrk/fzy-lua-native",
|
"romgrk/fzy-lua-native",
|
||||||
"nixprime/cpsm",
|
"nixprime/cpsm",
|
||||||
},
|
},
|
||||||
|
lazy = false,
|
||||||
opts = {
|
opts = {
|
||||||
modes = { ":", "/", "?" },
|
modes = { ":", "/", "?" },
|
||||||
accept_key = "<CR>",
|
accept_key = "<CR>",
|
||||||
@@ -65,7 +63,7 @@ return {
|
|||||||
"renderer",
|
"renderer",
|
||||||
wilder.popupmenu_renderer({
|
wilder.popupmenu_renderer({
|
||||||
highlighter = highlighters,
|
highlighter = highlighters,
|
||||||
left = { " ", wilder.popupmenu_devicons() },
|
-- left = { " ", wilder.popupmenu_devicons() }, -- has problems with mason
|
||||||
right = { " ", wilder.popupmenu_scrollbar() },
|
right = { " ", wilder.popupmenu_scrollbar() },
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ vim.diagnostic.config({
|
|||||||
|
|
||||||
-- enable colorcolumn when textwidth is set
|
-- enable colorcolumn when textwidth is set
|
||||||
vim.o.cursorline = true
|
vim.o.cursorline = true
|
||||||
vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(0, 254), ",+")
|
vim.opt_local.colorcolumn = "+" .. vim.fn.join(vim.fn.range(1, 254), ",+")
|
||||||
-- alternatively highlight only one line for colorcolumn
|
-- alternatively highlight only one line for colorcolumn
|
||||||
-- vim.o.colorcolumn = "-0"
|
-- vim.o.colorcolumn = "-0"
|
||||||
|
|
||||||
|
|||||||
136
.config/pipewire/client-rt.conf
Normal file
136
.config/pipewire/client-rt.conf
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
# Real-time Client config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/client-rt.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/client-rt.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
log.level = 0
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
# Uses realtime scheduling to boost the audio thread priorities
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
#rt.prio = 83
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Allows creating devices that run in the context of the
|
||||||
|
# client. Is used by the session manager.
|
||||||
|
{ name = libpipewire-module-client-device }
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
# Provides factories to make session manager objects.
|
||||||
|
{ name = libpipewire-module-session-manager }
|
||||||
|
]
|
||||||
|
|
||||||
|
filter.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
}
|
||||||
|
|
||||||
|
stream.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.autoconnect = true
|
||||||
|
#resample.quality = 4
|
||||||
|
#channelmix.normalize = false
|
||||||
|
#channelmix.mix-lfe = true
|
||||||
|
#channelmix.upmix = true
|
||||||
|
#channelmix.upmix-method = psd # none, simple
|
||||||
|
#channelmix.lfe-cutoff = 150
|
||||||
|
#channelmix.fc-cutoff = 12000
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.0
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
#dither.noise = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
stream.rules = [
|
||||||
|
{ matches = [
|
||||||
|
{
|
||||||
|
# all keys must match the value. ! negates. ~ starts regex.
|
||||||
|
#application.name = "pw-cat"
|
||||||
|
#node.name = "~Google Chrome$"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#node.latency = 512/48000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
alsa.properties = {
|
||||||
|
#alsa.deny = false
|
||||||
|
# ALSA params take a single value, an array [] of values
|
||||||
|
# or a range { min=.. max=... }
|
||||||
|
#alsa.access = [ MMAP_INTERLEAVED MMAP_NONINTERLEAVED RW_INTERLEAVED RW_NONINTERLEAVED ]
|
||||||
|
#alsa.format = [ FLOAT S32 S24 S24_3 S16 U8 ]
|
||||||
|
#alsa.rate = { min=1 max=384000 } # or [ 44100 48000 .. ]
|
||||||
|
#alsa.channels = { min=1 max=64 } # or [ 2 4 6 .. ]
|
||||||
|
#alsa.period-bytes = { min=128 max=2097152 } # or [ 128 256 1024 .. ]
|
||||||
|
#alsa.buffer-bytes = { min=256 max=4194304 } # or [ 256 512 4096 .. ]
|
||||||
|
|
||||||
|
#alsa.volume-method = cubic # linear, cubic
|
||||||
|
}
|
||||||
|
|
||||||
|
# client specific properties
|
||||||
|
alsa.rules = [
|
||||||
|
{ matches = [ { application.process.binary = "resolve" } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
alsa.buffer-bytes = 131072
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
86
.config/pipewire/client.conf
Normal file
86
.config/pipewire/client.conf
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Client config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/client.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/client.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
log.level = 0
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Allows creating devices that run in the context of the
|
||||||
|
# client. Is used by the session manager.
|
||||||
|
{ name = libpipewire-module-client-device }
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
# Provides factories to make session manager objects.
|
||||||
|
{ name = libpipewire-module-session-manager }
|
||||||
|
]
|
||||||
|
|
||||||
|
filter.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
}
|
||||||
|
|
||||||
|
stream.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.autoconnect = true
|
||||||
|
#resample.quality = 4
|
||||||
|
#channelmix.normalize = false
|
||||||
|
#channelmix.mix-lfe = true
|
||||||
|
#channelmix.upmix = true
|
||||||
|
#channelmix.upmix-method = psd # none, simple
|
||||||
|
#channelmix.lfe-cutoff = 150
|
||||||
|
#channelmix.fc-cutoff = 12000
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.0
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
#dither.noise = 0
|
||||||
|
}
|
||||||
63
.config/pipewire/filter-chain.conf
Normal file
63
.config/pipewire/filter-chain.conf
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Filter-chain config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# This is a base config file for running filters.
|
||||||
|
#
|
||||||
|
# Place filter fragments in /etc/pipewire/filter-chain.conf.d/
|
||||||
|
# for system-wide changes or in ~/.config/pipewire/filter-chain.conf.d/
|
||||||
|
# for local changes.
|
||||||
|
#
|
||||||
|
# Run the filters with pipewire -c filter-chain.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
log.level = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
# Uses realtime scheduling to boost the audio thread priorities
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
#rt.prio = 83
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
]
|
||||||
139
.config/pipewire/jack.conf
Normal file
139
.config/pipewire/jack.conf
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
# JACK client config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/jack.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/jack.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
log.level = 0
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Boost the data thread priority.
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
#rt.prio = 83
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
]
|
||||||
|
|
||||||
|
# global properties for all jack clients
|
||||||
|
jack.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.rate = 1/48000
|
||||||
|
#node.quantum = 1024/48000
|
||||||
|
#node.lock-quantum = true
|
||||||
|
#node.force-quantum = 0
|
||||||
|
#jack.show-monitor = true
|
||||||
|
#jack.merge-monitor = true
|
||||||
|
#jack.show-midi = true
|
||||||
|
#jack.short-name = false
|
||||||
|
#jack.filter-name = false
|
||||||
|
#jack.filter-char = " "
|
||||||
|
#
|
||||||
|
# allow: Don't restrict self connect requests
|
||||||
|
# fail-external: Fail self connect requests to external ports only
|
||||||
|
# ignore-external: Ignore self connect requests to external ports only
|
||||||
|
# fail-all: Fail all self connect requests
|
||||||
|
# ignore-all: Ignore all self connect requests
|
||||||
|
#jack.self-connect-mode = allow
|
||||||
|
#
|
||||||
|
# allow: Allow connect request of other ports
|
||||||
|
# fail: Fail connect requests of other ports
|
||||||
|
# ignore: Ignore connect requests of other ports
|
||||||
|
#jack.other-connect-mode = allow
|
||||||
|
#jack.locked-process = true
|
||||||
|
#jack.default-as-system = false
|
||||||
|
#jack.fix-midi-events = true
|
||||||
|
#jack.global-buffer-size = false
|
||||||
|
#jack.max-client-ports = 768
|
||||||
|
#jack.fill-aliases = false
|
||||||
|
#jack.writable-input = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# client specific properties
|
||||||
|
jack.rules = [
|
||||||
|
{ matches = [
|
||||||
|
{
|
||||||
|
# all keys must match the value. ! negates. ~ starts regex.
|
||||||
|
#client.name = "Carla"
|
||||||
|
#application.process.binary = "jack_simple_client"
|
||||||
|
#application.name = "~jack_simple_client.*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#node.latency = 512/48000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ matches = [ { application.process.binary = "jack_bufsize" } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
jack.global-buffer-size = true # quantum set globally using metadata
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ matches = [ { application.process.binary = "qsynth" } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
node.always-process = false # makes qsynth idle
|
||||||
|
node.pause-on-idle = false # makes audio fade out when idle
|
||||||
|
node.passive = out # makes the sink and qsynth suspend
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ matches = [ { client.name = "Mixxx" } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
jack.merge-monitor = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
476
.config/pipewire/minimal.conf
Normal file
476
.config/pipewire/minimal.conf
Normal file
@@ -0,0 +1,476 @@
|
|||||||
|
# Simple daemon config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/minimal.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/minimal.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#library.name.system = support/libspa-support
|
||||||
|
#context.data-loop.library.name.system = support/libspa-support
|
||||||
|
#support.dbus = true
|
||||||
|
#link.max-buffers = 64
|
||||||
|
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#clock.power-of-two-quantum = true
|
||||||
|
#log.level = 2
|
||||||
|
#cpu.zero.denormals = false
|
||||||
|
|
||||||
|
core.daemon = true # listening for socket connections
|
||||||
|
core.name = pipewire-0 # core name and socket name
|
||||||
|
|
||||||
|
## Properties for the DSP configuration.
|
||||||
|
#default.clock.rate = 48000
|
||||||
|
#default.clock.allowed-rates = [ 48000 ]
|
||||||
|
#default.clock.quantum = 1024
|
||||||
|
#default.clock.min-quantum = 32
|
||||||
|
#default.clock.max-quantum = 2048
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
#default.clock.quantum-floor = 4
|
||||||
|
#default.video.width = 640
|
||||||
|
#default.video.height = 480
|
||||||
|
#default.video.rate.num = 25
|
||||||
|
#default.video.rate.denom = 1
|
||||||
|
#
|
||||||
|
settings.check-quantum = true
|
||||||
|
settings.check-rate = true
|
||||||
|
|
||||||
|
# This config can use udev or hardcoded ALSA devices. Make sure to
|
||||||
|
# change the alsa device below when disabling udev
|
||||||
|
minimal.use-udev = true
|
||||||
|
|
||||||
|
# Load the pulseaudio emulation daemon
|
||||||
|
minimal.use-pulse = true
|
||||||
|
}
|
||||||
|
|
||||||
|
context.properties.rules = [
|
||||||
|
{ matches = [ { cpu.vm.name = !null } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
default.clock.min-quantum = 1024
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
audio.adapt = audioconvert/libspa-audioconvert
|
||||||
|
api.alsa.* = alsa/libspa-alsa
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uses realtime scheduling to boost the audio thread priorities. This uses
|
||||||
|
# RTKit if the user doesn't have permission to use regular realtime
|
||||||
|
# scheduling.
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
rt.prio = 88
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# The profile module. Allows application to access profiler
|
||||||
|
# and performance data. It provides an interface that is used
|
||||||
|
# by pw-top and pw-profiler.
|
||||||
|
{ name = libpipewire-module-profiler }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
# Creates a factory for making nodes that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-node-factory }
|
||||||
|
|
||||||
|
{ name = libpipewire-module-spa-device-factory }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# The access module can perform access checks and block
|
||||||
|
# new clients.
|
||||||
|
{ name = libpipewire-module-access
|
||||||
|
args = {
|
||||||
|
# access.allowed to list an array of paths of allowed
|
||||||
|
# apps.
|
||||||
|
#access.allowed = [
|
||||||
|
# /usr/bin/pipewire-media-session
|
||||||
|
#]
|
||||||
|
|
||||||
|
# An array of rejected paths.
|
||||||
|
#access.rejected = [ ]
|
||||||
|
|
||||||
|
# An array of paths with restricted access.
|
||||||
|
#access.restricted = [ ]
|
||||||
|
|
||||||
|
# Anything not in the above lists gets assigned the
|
||||||
|
# access.force permission.
|
||||||
|
#access.force = flatpak
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
|
||||||
|
# Makes a factory for creating links between ports.
|
||||||
|
{ name = libpipewire-module-link-factory }
|
||||||
|
|
||||||
|
{ name = libpipewire-module-protocol-pulse
|
||||||
|
condition = [ { minimal.use-pulse = true } ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
pulse.properties = {
|
||||||
|
# the addresses this server listens on
|
||||||
|
server.address = [
|
||||||
|
"unix:native"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
stream.properties = {
|
||||||
|
adapter.auto-port-config = { mode = dsp }
|
||||||
|
}
|
||||||
|
|
||||||
|
context.objects = [
|
||||||
|
#{ factory = <factory-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Creates an object from a PipeWire factory with the given parameters.
|
||||||
|
# If nofail is given, errors are ignored (and no object is created).
|
||||||
|
#
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc "Spa:Pod:Object:Param:Props:patternType" = 1 } }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
|
||||||
|
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
|
||||||
|
|
||||||
|
# Make a default metadata store
|
||||||
|
{ factory = metadata
|
||||||
|
args = {
|
||||||
|
metadata.name = default
|
||||||
|
# metadata.values = [
|
||||||
|
# { key = default.audio.sink value = { name = somesink } }
|
||||||
|
# { key = default.audio.source value = { name = somesource } }
|
||||||
|
# ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# A default dummy driver. This handles nodes marked with the "node.always-process"
|
||||||
|
# property when no other driver is currently active. JACK clients need this.
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Dummy-Driver
|
||||||
|
node.group = pipewire.dummy
|
||||||
|
priority.driver = 20000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Freewheel-Driver
|
||||||
|
priority.driver = 19000
|
||||||
|
node.group = pipewire.freewheel
|
||||||
|
node.freewheel = true
|
||||||
|
#freewheel.wait = 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This creates a ALSA udev device that will enumerate all
|
||||||
|
# ALSA devices. Because it is using ACP and has the auto-profile
|
||||||
|
# property set, this will enable a profile and create associated
|
||||||
|
# nodes, which will be automatically configured to their best
|
||||||
|
# configuration with the auto-port-config settings.
|
||||||
|
# Extra node and device params can be given with node.param and
|
||||||
|
# device.param prefixes.
|
||||||
|
{ factory = spa-device-factory
|
||||||
|
args = {
|
||||||
|
factory.name = api.alsa.enum.udev
|
||||||
|
alsa.use-acp = true
|
||||||
|
device.object.properties = {
|
||||||
|
api.acp.auto-profile = true
|
||||||
|
api.acp.auto-port = true
|
||||||
|
device.object.properties = {
|
||||||
|
node.adapter = audio.adapt
|
||||||
|
resample.disable = false
|
||||||
|
adapter.auto-port-config = {
|
||||||
|
mode = dsp
|
||||||
|
monitor = false
|
||||||
|
control = false
|
||||||
|
position = preserve # unknown, aux
|
||||||
|
}
|
||||||
|
#node.param.Props = {
|
||||||
|
# channelVolumes = [ 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.6 ]
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
#device.param.Profile = {
|
||||||
|
# #idx = 0
|
||||||
|
# name = pro-audio
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
condition = [ { minimal.use-udev = true } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# This creates a single PCM source device for the given
|
||||||
|
# alsa device path hw:0. You can change source to sink
|
||||||
|
# to make a sink in the same way.
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = api.alsa.pcm.source
|
||||||
|
node.name = "system"
|
||||||
|
node.description = "system"
|
||||||
|
media.class = "Audio/Source"
|
||||||
|
api.alsa.path = "hw:4"
|
||||||
|
#api.alsa.period-size = 0
|
||||||
|
#api.alsa.period-num = 0
|
||||||
|
#api.alsa.headroom = 0
|
||||||
|
#api.alsa.start-delay = 0
|
||||||
|
#api.alsa.disable-mmap = false
|
||||||
|
#api.alsa.disable-batch = false
|
||||||
|
#api.alsa.use-chmap = false
|
||||||
|
#api.alsa.multirate = true
|
||||||
|
#latency.internal.rate = 0
|
||||||
|
#latency.internal.ns = 0
|
||||||
|
#clock.name = api.alsa.0
|
||||||
|
node.suspend-on-idle = true
|
||||||
|
#audio.format = "S32"
|
||||||
|
#audio.rate = 48000
|
||||||
|
#audio.allowed-rates = [ ]
|
||||||
|
#audio.channels = 4
|
||||||
|
#audio.position = [ FL FR RL RR ]
|
||||||
|
#resample.quality = 4
|
||||||
|
resample.disable = true
|
||||||
|
#monitor.channel-volumes = false
|
||||||
|
#channelmix.normalize = false
|
||||||
|
#channelmix.mix-lfe = true
|
||||||
|
#channelmix.upmix = true
|
||||||
|
#channelmix.upmix-method = psd # none, simple
|
||||||
|
#channelmix.lfe-cutoff = 150
|
||||||
|
#channelmix.fc-cutoff = 12000
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.0
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
#channelmix.disable = false
|
||||||
|
#dither.noise = 0
|
||||||
|
#node.param.Props = {
|
||||||
|
# params = [
|
||||||
|
# audio.channels 6
|
||||||
|
# ]
|
||||||
|
#}
|
||||||
|
adapter.auto-port-config = {
|
||||||
|
mode = dsp
|
||||||
|
monitor = false
|
||||||
|
control = false
|
||||||
|
position = unknown # aux, preserve
|
||||||
|
}
|
||||||
|
#node.param.PortConfig = {
|
||||||
|
# direction = Output
|
||||||
|
# mode = dsp
|
||||||
|
# format = {
|
||||||
|
# mediaType = audio
|
||||||
|
# mediaSubtype = raw
|
||||||
|
# format = F32
|
||||||
|
# rate = 48000
|
||||||
|
# channels = 4
|
||||||
|
# position = [ FL FR RL RR ]
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
#node.param.Props = {
|
||||||
|
# channelVolumes = [ 0.5 0.4 0.3 0.5 ]
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
condition = [ { minimal.use-udev = false } ]
|
||||||
|
}
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = api.alsa.pcm.sink
|
||||||
|
node.name = "system"
|
||||||
|
node.description = "system"
|
||||||
|
media.class = "Audio/Sink"
|
||||||
|
api.alsa.path = "hw:4"
|
||||||
|
#api.alsa.period-size = 0
|
||||||
|
#api.alsa.period-num = 0
|
||||||
|
#api.alsa.headroom = 0
|
||||||
|
#api.alsa.start-delay = 0
|
||||||
|
#api.alsa.disable-mmap = false
|
||||||
|
#api.alsa.disable-batch = false
|
||||||
|
#api.alsa.use-chmap = false
|
||||||
|
#api.alsa.multirate = true
|
||||||
|
#latency.internal.rate = 0
|
||||||
|
#latency.internal.ns = 0
|
||||||
|
#clock.name = api.alsa.0
|
||||||
|
node.suspend-on-idle = true
|
||||||
|
#audio.format = "S32"
|
||||||
|
#audio.rate = 48000
|
||||||
|
#audio.allowed-rates = [ ]
|
||||||
|
#audio.channels = 2
|
||||||
|
#audio.position = "FL,FR"
|
||||||
|
#resample.quality = 4
|
||||||
|
resample.disable = true
|
||||||
|
#channelmix.normalize = false
|
||||||
|
#channelmix.mix-lfe = true
|
||||||
|
#channelmix.upmix = true
|
||||||
|
#channelmix.upmix-method = psd # none, simple
|
||||||
|
#channelmix.lfe-cutoff = 150
|
||||||
|
#channelmix.fc-cutoff = 12000
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.0
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
#channelmix.disable = false
|
||||||
|
#dither.noise = 0
|
||||||
|
#node.param.Props = {
|
||||||
|
# params = [
|
||||||
|
# audio.format S16
|
||||||
|
# ]
|
||||||
|
#}
|
||||||
|
adapter.auto-port-config = {
|
||||||
|
mode = dsp
|
||||||
|
monitor = false
|
||||||
|
control = false
|
||||||
|
position = unknown # aux, preserve
|
||||||
|
}
|
||||||
|
#node.param.PortConfig = {
|
||||||
|
# direction = Input
|
||||||
|
# mode = dsp
|
||||||
|
# monitor = true
|
||||||
|
# format = {
|
||||||
|
# mediaType = audio
|
||||||
|
# mediaSubtype = raw
|
||||||
|
# format = F32
|
||||||
|
# rate = 48000
|
||||||
|
# channels = 4
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
#node.param.Props = {
|
||||||
|
# channelVolumes = [ 0.5 0.4 0.3 0.5 ]
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
condition = [ { minimal.use-udev = false } ]
|
||||||
|
}
|
||||||
|
# This creates a new Source node. It will have input ports
|
||||||
|
# that you can link, to provide audio for this source.
|
||||||
|
#{ factory = adapter
|
||||||
|
# args = {
|
||||||
|
# factory.name = support.null-audio-sink
|
||||||
|
# node.name = "my-mic"
|
||||||
|
# node.description = "Microphone"
|
||||||
|
# media.class = "Audio/Source/Virtual"
|
||||||
|
# audio.position = "FL,FR"
|
||||||
|
# monitor.passthrough = true
|
||||||
|
# adapter.auto-port-config = {
|
||||||
|
# mode = dsp
|
||||||
|
# monitor = true
|
||||||
|
# position = preserve # unknown, aux, preserve
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
# This creates a new link between the source and the virtual
|
||||||
|
# source ports.
|
||||||
|
#{ factory = link-factory
|
||||||
|
# args = {
|
||||||
|
# link.output.node = system
|
||||||
|
# link.output.port = capture_1
|
||||||
|
# link.input.node = my-mic
|
||||||
|
# link.input.port = input_FL
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
#{ factory = link-factory
|
||||||
|
# args = {
|
||||||
|
# link.output.node = system
|
||||||
|
# link.output.port = capture_2
|
||||||
|
# link.input.node = my-mic
|
||||||
|
# link.input.port = input_FR
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.exec = [
|
||||||
|
#{ path = <program-name>
|
||||||
|
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Execute the given program with arguments.
|
||||||
|
#
|
||||||
|
# You can optionally start the pulseaudio-server here as well
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# It can be interesting to start another daemon here that listens
|
||||||
|
# on another address with the -a option (eg. -a tcp:4713).
|
||||||
|
#
|
||||||
|
##{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
|
||||||
|
]
|
||||||
|
|
||||||
|
node.rules = [
|
||||||
|
{ matches = [
|
||||||
|
{
|
||||||
|
# all keys must match the value. ! negates. ~ starts regex.
|
||||||
|
#alsa.card_name = "ICUSBAUDIO7D"
|
||||||
|
#api.alsa.pcm.stream = "playback"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#node.name = "alsa_playback.ICUSBAUDIO7D"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
device.rules = [
|
||||||
|
{ matches = [
|
||||||
|
{
|
||||||
|
#alsa.card_name = "ICUSBAUDIO7D"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#device.name = "alsa_card.ICUSBAUDIO7D"
|
||||||
|
#api.acp.auto-profile = false
|
||||||
|
#api.acp.auto-port = false
|
||||||
|
#device.param.Profile = {
|
||||||
|
# #idx = 0
|
||||||
|
# name = off
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
153
.config/pipewire/pipewire-aes67.conf
Normal file
153
.config/pipewire/pipewire-aes67.conf
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
# AES67 config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire-aes67.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire-aes67.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#log.level = 2
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.objects = [
|
||||||
|
# An example clock reading from /dev/ptp0. You can also specify the network interface name,
|
||||||
|
# pipewire will query the interface for the current active PHC index. Another option is to
|
||||||
|
# sync the ptp clock to CLOCK_TAI and then set clock.id = tai, keep in mind that tai may
|
||||||
|
# also be synced by a NTP client.
|
||||||
|
# The precedence is: device, interface, id
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = PTP0-Driver
|
||||||
|
node.group = pipewire.ptp0
|
||||||
|
# This driver should only be used for network nodes marked with group
|
||||||
|
priority.driver = 100000
|
||||||
|
clock.name = "clock.system.ptp0"
|
||||||
|
### Please select the PTP hardware clock here
|
||||||
|
# Interface name is the preferred method of specifying the PHC
|
||||||
|
clock.interface = "eth0"
|
||||||
|
#clock.device = "/dev/ptp0"
|
||||||
|
#clock.id = tai
|
||||||
|
# Lower this in case of periodic out-of-sync
|
||||||
|
resync.ms = 1.5
|
||||||
|
object.export = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
#rt.prio = 83
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
{ name = libpipewire-module-spa-node-factory }
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
{ name = libpipewire-module-rtp-sap
|
||||||
|
args = {
|
||||||
|
### Please select the interface here
|
||||||
|
local.ifname = eth0
|
||||||
|
sap.ip = 239.255.255.255
|
||||||
|
sap.port = 9875
|
||||||
|
net.ttl = 32
|
||||||
|
net.loop = false
|
||||||
|
# If you use another PTPv2 daemon supporting management
|
||||||
|
# messages over a UNIX socket, specify its path here
|
||||||
|
ptp.management-socket = "/var/run/ptp4lro"
|
||||||
|
|
||||||
|
stream.rules = [
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
rtp.session = "~.*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
create-stream = {
|
||||||
|
node.virtual = false
|
||||||
|
media.class = "Audio/Source"
|
||||||
|
device.api = aes67
|
||||||
|
# You can adjust the latency buffering here. Use integer values only
|
||||||
|
sess.latency.msec = 3
|
||||||
|
node.group = pipewire.ptp0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
sess.sap.announce = true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
announce-stream = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ name = libpipewire-module-rtp-sink
|
||||||
|
args = {
|
||||||
|
### Please select the interface here
|
||||||
|
local.ifname = eth0
|
||||||
|
### If you want to create multiple output streams, please copy the whole
|
||||||
|
### module-rtp-sink block, but change this multicast IP to another unused
|
||||||
|
### one keeping 239.69.x.x range unless you know you need another one
|
||||||
|
destination.ip = 239.69.150.243
|
||||||
|
destination.port = 5004
|
||||||
|
net.mtu = 1280
|
||||||
|
net.ttl = 32
|
||||||
|
net.loop = false
|
||||||
|
# These should typically be equal
|
||||||
|
# You can customize packet length, but 1 ms should work for every device
|
||||||
|
# Consult receiver documentation to ensure it supports the value you set
|
||||||
|
sess.min-ptime = 1
|
||||||
|
sess.max-ptime = 1
|
||||||
|
### Please change this, especially if you create multiple sinks
|
||||||
|
sess.name = "PipeWire RTP stream"
|
||||||
|
sess.media = "audio"
|
||||||
|
# This property is used if you aren't using ptp4l 4
|
||||||
|
sess.ts-refclk = "ptp=traceable"
|
||||||
|
sess.ts-offset = 0
|
||||||
|
# You can adjust the latency buffering here. Use integer values only
|
||||||
|
sess.latency.msec = 3
|
||||||
|
audio.format = "S24BE"
|
||||||
|
audio.rate = 48000
|
||||||
|
audio.channels = 2
|
||||||
|
# These channel names will be visible both to applications and AES67 receivers
|
||||||
|
node.channel-names = ["CH1", "CH2"]
|
||||||
|
|
||||||
|
stream.props = {
|
||||||
|
### Please change the sink name, this is necessary when you create multiple sinks
|
||||||
|
node.name = "rtp-sink"
|
||||||
|
media.class = "Audio/Sink"
|
||||||
|
node.virtual = false
|
||||||
|
device.api = aes67
|
||||||
|
sess.sap.announce = true
|
||||||
|
node.always-process = true
|
||||||
|
node.group = pipewire.ptp0
|
||||||
|
rtp.ntp = 0
|
||||||
|
rtp.fetch-ts-refclk = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]
|
||||||
80
.config/pipewire/pipewire-avb.conf
Normal file
80
.config/pipewire/pipewire-avb.conf
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# PulseAudio config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#log.level = 2
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
#rt.prio = 83
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
{ name = libpipewire-module-avb
|
||||||
|
args = {
|
||||||
|
# contents of avb.properties can also be placed here
|
||||||
|
# to have config per server.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Extra modules can be loaded here. Setup in default.pa can be moved here
|
||||||
|
context.exec = [
|
||||||
|
#{ path = "pactl" args = "load-module module-always-sink" }
|
||||||
|
]
|
||||||
|
|
||||||
|
stream.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.autoconnect = true
|
||||||
|
#resample.quality = 4
|
||||||
|
#channelmix.normalize = false
|
||||||
|
#channelmix.mix-lfe = true
|
||||||
|
#channelmix.upmix = true
|
||||||
|
#channelmix.lfe-cutoff = 120
|
||||||
|
#channelmix.fc-cutoff = 6000
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.1
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
avb.properties = {
|
||||||
|
# the addresses this server listens on
|
||||||
|
#ifname = "eth0.2"
|
||||||
|
ifname = "enp3s0"
|
||||||
|
}
|
||||||
|
|
||||||
|
avb.properties.rules = [
|
||||||
|
{ matches = [ { cpu.vm.name = !null } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
180
.config/pipewire/pipewire-pulse.conf
Normal file
180
.config/pipewire/pipewire-pulse.conf
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
# PulseAudio config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#log.level = 2
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
#rt.prio = 83
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
#uclamp.min = 0
|
||||||
|
#uclamp.max = 1024
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
{ name = libpipewire-module-protocol-pulse
|
||||||
|
args = {
|
||||||
|
# contents of pulse.properties can also be placed here
|
||||||
|
# to have config per server.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Extra scripts can be started here. Setup in default.pa can be moved in
|
||||||
|
# a script or in pulse.cmd below
|
||||||
|
context.exec = [
|
||||||
|
#{ path = "pactl" args = "load-module module-always-sink" }
|
||||||
|
#{ path = "pactl" args = "upload-sample my-sample.wav my-sample" }
|
||||||
|
#{ path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" }
|
||||||
|
]
|
||||||
|
|
||||||
|
# Extra commands can be executed here.
|
||||||
|
# load-module : loads a module with args and flags
|
||||||
|
# args = "<module-name> <module-args>"
|
||||||
|
# ( flags = [ nofail ] )
|
||||||
|
pulse.cmd = [
|
||||||
|
{ cmd = "load-module" args = "module-always-sink" flags = [ ] }
|
||||||
|
{ cmd = "load-module" args = "module-device-manager" flags = [ ] }
|
||||||
|
{ cmd = "load-module" args = "module-device-restore" flags = [ ] }
|
||||||
|
{ cmd = "load-module" args = "module-stream-restore" flags = [ ] }
|
||||||
|
#{ cmd = "load-module" args = "module-switch-on-connect" }
|
||||||
|
#{ cmd = "load-module" args = "module-gsettings" flags = [ nofail ] }
|
||||||
|
]
|
||||||
|
|
||||||
|
stream.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.autoconnect = true
|
||||||
|
#resample.quality = 4
|
||||||
|
#channelmix.normalize = false
|
||||||
|
#channelmix.mix-lfe = true
|
||||||
|
#channelmix.upmix = true
|
||||||
|
#channelmix.upmix-method = psd # none, simple
|
||||||
|
#channelmix.lfe-cutoff = 150
|
||||||
|
#channelmix.fc-cutoff = 12000
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.0
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
#dither.noise = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
pulse.properties = {
|
||||||
|
# the addresses this server listens on
|
||||||
|
server.address = [
|
||||||
|
"unix:native"
|
||||||
|
#"unix:/tmp/something" # absolute paths may be used
|
||||||
|
#"tcp:4713" # IPv4 and IPv6 on all addresses
|
||||||
|
#"tcp:[::]:9999" # IPv6 on all addresses
|
||||||
|
#"tcp:127.0.0.1:8888" # IPv4 on a single address
|
||||||
|
#
|
||||||
|
#{ address = "tcp:4713" # address
|
||||||
|
# max-clients = 64 # maximum number of clients
|
||||||
|
# listen-backlog = 32 # backlog in the server listen queue
|
||||||
|
# client.access = "restricted" # permissions for clients
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
#server.dbus-name = "org.pulseaudio.Server"
|
||||||
|
#pulse.allow-module-loading = true
|
||||||
|
#pulse.min.req = 128/48000 # 2.7ms
|
||||||
|
#pulse.default.req = 960/48000 # 20 milliseconds
|
||||||
|
#pulse.min.frag = 128/48000 # 2.7ms
|
||||||
|
#pulse.default.frag = 96000/48000 # 2 seconds
|
||||||
|
#pulse.default.tlength = 96000/48000 # 2 seconds
|
||||||
|
#pulse.min.quantum = 128/48000 # 2.7ms
|
||||||
|
#pulse.idle.timeout = 0 # don't pause after underruns
|
||||||
|
#pulse.default.format = F32
|
||||||
|
#pulse.default.position = [ FL FR ]
|
||||||
|
}
|
||||||
|
|
||||||
|
pulse.properties.rules = [
|
||||||
|
{ matches = [ { cpu.vm.name = !null } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
pulse.min.quantum = 1024/48000 # 22ms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# client/stream specific properties
|
||||||
|
pulse.rules = [
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
# all keys must match the value. ! negates. ~ starts regex.
|
||||||
|
#client.name = "Firefox"
|
||||||
|
#application.process.binary = "teams"
|
||||||
|
#application.name = "~speech-dispatcher.*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#node.latency = 512/48000
|
||||||
|
}
|
||||||
|
# Possible quirks:"
|
||||||
|
# force-s16-info forces sink and source info as S16 format
|
||||||
|
# remove-capture-dont-move removes the capture DONT_MOVE flag
|
||||||
|
# block-source-volume blocks updates to source volume
|
||||||
|
# block-sink-volume blocks updates to sink volume
|
||||||
|
#quirks = [ ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# skype does not want to use devices that don't have an S16 sample format.
|
||||||
|
matches = [
|
||||||
|
{ application.process.binary = "teams" }
|
||||||
|
{ application.process.binary = "teams-insiders" }
|
||||||
|
{ application.process.binary = "skypeforlinux" }
|
||||||
|
]
|
||||||
|
actions = { quirks = [ force-s16-info ] }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# firefox marks the capture streams as don't move and then they
|
||||||
|
# can't be moved with pavucontrol or other tools.
|
||||||
|
matches = [ { application.process.binary = "firefox" } ]
|
||||||
|
actions = { quirks = [ remove-capture-dont-move ] }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# speech dispatcher asks for too small latency and then underruns.
|
||||||
|
matches = [ { application.name = "~speech-dispatcher.*" } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
pulse.min.req = 512/48000 # 10.6ms
|
||||||
|
pulse.min.quantum = 512/48000 # 10.6ms
|
||||||
|
pulse.idle.timeout = 5 # pause after 5 seconds of underrun
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#{
|
||||||
|
# matches = [ { application.process.binary = "Discord" } ]
|
||||||
|
# actions = { quirks = [ block-source-volume ] }
|
||||||
|
#}
|
||||||
|
]
|
||||||
344
.config/pipewire/pipewire.conf
Normal file
344
.config/pipewire/pipewire.conf
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
# Daemon config file for PipeWire version "1.2.7" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#library.name.system = support/libspa-support
|
||||||
|
#context.data-loop.library.name.system = support/libspa-support
|
||||||
|
#support.dbus = true
|
||||||
|
#link.max-buffers = 64
|
||||||
|
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#clock.power-of-two-quantum = true
|
||||||
|
#log.level = 2
|
||||||
|
#cpu.zero.denormals = false
|
||||||
|
|
||||||
|
#loop.rt-prio = -1 # -1 = use module-rt prio, 0 disable rt
|
||||||
|
#loop.class = data.rt
|
||||||
|
#thread.affinity = [ 0 1 ] # optional array of CPUs
|
||||||
|
#context.num-data-loops = 1 # -1 = num-cpus, 0 = no data loops
|
||||||
|
#
|
||||||
|
#context.data-loops = [
|
||||||
|
# { loop.rt-prio = -1
|
||||||
|
# loop.class = [ data.rt audio.rt ]
|
||||||
|
# #library.name.system = support/libspa-support
|
||||||
|
# thread.name = data-loop.0
|
||||||
|
# #thread.affinity = [ 0 1 ] # optional array of CPUs
|
||||||
|
# }
|
||||||
|
#]
|
||||||
|
|
||||||
|
core.daemon = true # listening for socket connections
|
||||||
|
core.name = pipewire-0 # core name and socket name
|
||||||
|
|
||||||
|
## Properties for the DSP configuration.
|
||||||
|
#default.clock.rate = 48000
|
||||||
|
default.clock.allowed-rates = [ 44100 48000 ] # This is not default because: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#setting-global-sample-rate
|
||||||
|
#default.clock.quantum = 1024
|
||||||
|
#default.clock.min-quantum = 32
|
||||||
|
#default.clock.max-quantum = 2048
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
#default.clock.quantum-floor = 4
|
||||||
|
#default.video.width = 640
|
||||||
|
#default.video.height = 480
|
||||||
|
#default.video.rate.num = 25
|
||||||
|
#default.video.rate.denom = 1
|
||||||
|
#
|
||||||
|
#settings.check-quantum = false
|
||||||
|
#settings.check-rate = false
|
||||||
|
|
||||||
|
# keys checked below to disable module loading
|
||||||
|
module.x11.bell = true
|
||||||
|
# enables autoloading of access module, when disabled an alternative
|
||||||
|
# access module needs to be loaded.
|
||||||
|
module.access = true
|
||||||
|
# enables autoloading of module-jackdbus-detect
|
||||||
|
module.jackdbus-detect = true
|
||||||
|
}
|
||||||
|
|
||||||
|
context.properties.rules = [
|
||||||
|
{ matches = [ { cpu.vm.name = !null } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
default.clock.min-quantum = 1024
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
avb.* = avb/libspa-avb
|
||||||
|
api.alsa.* = alsa/libspa-alsa
|
||||||
|
api.v4l2.* = v4l2/libspa-v4l2
|
||||||
|
api.libcamera.* = libcamera/libspa-libcamera
|
||||||
|
api.bluez5.* = bluez5/libspa-bluez5
|
||||||
|
api.vulkan.* = vulkan/libspa-vulkan
|
||||||
|
api.jack.* = jack/libspa-jack
|
||||||
|
support.* = support/libspa-support
|
||||||
|
video.convert.* = videoconvert/libspa-videoconvert
|
||||||
|
#videotestsrc = videotestsrc/libspa-videotestsrc
|
||||||
|
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
# If condition is given, the module is loaded only when the context
|
||||||
|
# properties all match the match rules.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uses realtime scheduling to boost the audio thread priorities. This uses
|
||||||
|
# RTKit if the user doesn't have permission to use regular realtime
|
||||||
|
# scheduling. You can also clamp utilisation values to improve scheduling
|
||||||
|
# on embedded and heterogeneous systems, e.g. Arm big.LITTLE devices.
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
rt.prio = 88
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
#uclamp.min = 0
|
||||||
|
#uclamp.max = 1024
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native
|
||||||
|
args = {
|
||||||
|
# List of server Unix sockets, and optionally permissions
|
||||||
|
#sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" } ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# The profile module. Allows application to access profiler
|
||||||
|
# and performance data. It provides an interface that is used
|
||||||
|
# by pw-top and pw-profiler.
|
||||||
|
{ name = libpipewire-module-profiler }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
# Creates a factory for making devices that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-device-factory }
|
||||||
|
|
||||||
|
# Creates a factory for making nodes that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-node-factory }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Allows creating devices that run in the context of the
|
||||||
|
# client. Is used by the session manager.
|
||||||
|
{ name = libpipewire-module-client-device }
|
||||||
|
|
||||||
|
# The portal module monitors the PID of the portal process
|
||||||
|
# and tags connections with the same PID as portal
|
||||||
|
# connections.
|
||||||
|
{ name = libpipewire-module-portal
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The access module can perform access checks and block
|
||||||
|
# new clients.
|
||||||
|
{ name = libpipewire-module-access
|
||||||
|
args = {
|
||||||
|
# Socket-specific access permissions
|
||||||
|
#access.socket = { pipewire-0 = "default", pipewire-0-manager = "unrestricted" }
|
||||||
|
|
||||||
|
# Deprecated legacy mode (not socket-based),
|
||||||
|
# for now enabled by default if access.socket is not specified
|
||||||
|
#access.legacy = true
|
||||||
|
}
|
||||||
|
condition = [ { module.access = true } ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
|
||||||
|
# Makes a factory for creating links between ports.
|
||||||
|
{ name = libpipewire-module-link-factory }
|
||||||
|
|
||||||
|
# Provides factories to make session manager objects.
|
||||||
|
{ name = libpipewire-module-session-manager }
|
||||||
|
|
||||||
|
# Use libcanberra to play X11 Bell
|
||||||
|
{ name = libpipewire-module-x11-bell
|
||||||
|
args = {
|
||||||
|
#sink.name = "@DEFAULT_SINK@"
|
||||||
|
#sample.name = "bell-window-system"
|
||||||
|
#x11.display = null
|
||||||
|
#x11.xauthority = null
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
condition = [ { module.x11.bell = true } ]
|
||||||
|
}
|
||||||
|
{ name = libpipewire-module-jackdbus-detect
|
||||||
|
args = {
|
||||||
|
#jack.library = libjack.so.0
|
||||||
|
#jack.server = null
|
||||||
|
#jack.client-name = PipeWire
|
||||||
|
#jack.connect = true
|
||||||
|
#tunnel.mode = duplex # source|sink|duplex
|
||||||
|
source.props = {
|
||||||
|
#audio.channels = 2
|
||||||
|
#midi.ports = 1
|
||||||
|
#audio.position = [ FL FR ]
|
||||||
|
# extra sink properties
|
||||||
|
}
|
||||||
|
sink.props = {
|
||||||
|
#audio.channels = 2
|
||||||
|
#midi.ports = 1
|
||||||
|
#audio.position = [ FL FR ]
|
||||||
|
# extra sink properties
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
condition = [ { module.jackdbus-detect = true } ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.objects = [
|
||||||
|
#{ factory = <factory-name>
|
||||||
|
# ( args = { <key> = <value> ... } )
|
||||||
|
# ( flags = [ ( nofail ) ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Creates an object from a PipeWire factory with the given parameters.
|
||||||
|
# If nofail is given, errors are ignored (and no object is created).
|
||||||
|
# If condition is given, the object is created only when the context properties
|
||||||
|
# all match the match rules.
|
||||||
|
#
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc "Spa:Pod:Object:Param:Props:patternType" = 1 } }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
|
||||||
|
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
|
||||||
|
|
||||||
|
# A default dummy driver. This handles nodes marked with the "node.always-process"
|
||||||
|
# property when no other driver is currently active. JACK clients need this.
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Dummy-Driver
|
||||||
|
node.group = pipewire.dummy
|
||||||
|
node.sync-group = sync.dummy
|
||||||
|
priority.driver = 200000
|
||||||
|
#clock.id = monotonic # realtime | tai | monotonic-raw | boottime
|
||||||
|
#clock.name = "clock.system.monotonic"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Freewheel-Driver
|
||||||
|
priority.driver = 190000
|
||||||
|
node.group = pipewire.freewheel
|
||||||
|
node.sync-group = sync.dummy
|
||||||
|
node.freewheel = true
|
||||||
|
#freewheel.wait = 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This creates a new Source node. It will have input ports
|
||||||
|
# that you can link, to provide audio for this source.
|
||||||
|
#{ factory = adapter
|
||||||
|
# args = {
|
||||||
|
# factory.name = support.null-audio-sink
|
||||||
|
# node.name = "my-mic"
|
||||||
|
# node.description = "Microphone"
|
||||||
|
# media.class = "Audio/Source/Virtual"
|
||||||
|
# audio.position = "FL,FR"
|
||||||
|
# monitor.passthrough = true
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
# This creates a single PCM source device for the given
|
||||||
|
# alsa device path hw:0. You can change source to sink
|
||||||
|
# to make a sink in the same way.
|
||||||
|
#{ factory = adapter
|
||||||
|
# args = {
|
||||||
|
# factory.name = api.alsa.pcm.source
|
||||||
|
# node.name = "alsa-source"
|
||||||
|
# node.description = "PCM Source"
|
||||||
|
# media.class = "Audio/Source"
|
||||||
|
# api.alsa.path = "hw:0"
|
||||||
|
# api.alsa.period-size = 1024
|
||||||
|
# api.alsa.headroom = 0
|
||||||
|
# api.alsa.disable-mmap = false
|
||||||
|
# api.alsa.disable-batch = false
|
||||||
|
# audio.format = "S16LE"
|
||||||
|
# audio.rate = 48000
|
||||||
|
# audio.channels = 2
|
||||||
|
# audio.position = "FL,FR"
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Use the metadata factory to create metadata and some default values.
|
||||||
|
#{ factory = metadata
|
||||||
|
# args = {
|
||||||
|
# metadata.name = my-metadata
|
||||||
|
# metadata.values = [
|
||||||
|
# { key = default.audio.sink value = { name = somesink } }
|
||||||
|
# { key = default.audio.source value = { name = somesource } }
|
||||||
|
# ]
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.exec = [
|
||||||
|
#{ path = <program-name>
|
||||||
|
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
|
||||||
|
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Execute the given program with arguments.
|
||||||
|
# If condition is given, the program is executed only when the context
|
||||||
|
# properties all match the match rules.
|
||||||
|
#
|
||||||
|
# You can optionally start the session manager here,
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# Run the session manager with -h for options.
|
||||||
|
#
|
||||||
|
#{ path = "/usr/bin/pipewire-media-session" args = ""
|
||||||
|
# condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
|
||||||
|
#
|
||||||
|
# You can optionally start the pulseaudio-server here as well
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# It can be interesting to start another daemon here that listens
|
||||||
|
# on another address with the -a option (eg. -a tcp:4713).
|
||||||
|
#
|
||||||
|
#{ path = "/usr/bin/pipewire" args = [ "-c" "pipewire-pulse.conf" ]
|
||||||
|
# condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
|
||||||
|
]
|
||||||
19
.config/pipewire/pipewire.conf.d/00-sink-blackhole_1.conf
Normal file
19
.config/pipewire/pipewire.conf.d/00-sink-blackhole_1.conf
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
context.objects = [
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = support.null-audio-sink
|
||||||
|
node.name = "blackhole-sink-1"
|
||||||
|
node.description = "Blackhole Sink 1"
|
||||||
|
media.class = Audio/Sink
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
monitor.channel-volumes = true
|
||||||
|
monitor.passthrough = true
|
||||||
|
adapter.auto-port-config = {
|
||||||
|
mode = dsp
|
||||||
|
monitor = true
|
||||||
|
position = preserve
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
18
.config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf
Normal file
18
.config/pipewire/pipewire.conf.d/10-sink-virtual_1.conf
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
context.objects = [
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = support.null-audio-sink
|
||||||
|
node.name = "virtual-sink-1"
|
||||||
|
node.description = "Virtual Sink 1"
|
||||||
|
media.class = Audio/Sink
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
monitor.channel-volumes = true
|
||||||
|
monitor.passthrough = true
|
||||||
|
adapter.auto-port-config = {
|
||||||
|
mode = dsp
|
||||||
|
monitor = true
|
||||||
|
position = preserve
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
18
.config/pipewire/pipewire.conf.d/11-sink-virtual_2.conf
Normal file
18
.config/pipewire/pipewire.conf.d/11-sink-virtual_2.conf
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
context.objects = [
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = support.null-audio-sink
|
||||||
|
node.name = "virtual-sink-2"
|
||||||
|
node.description = "Virtual Sink 2"
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
context.modules = [{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
capture.props = {
|
||||||
|
media.class = "Audio/Sink"
|
||||||
|
node.name = "application-loopback-1-sink"
|
||||||
|
node.description = "Application Loopback 1 Sink"
|
||||||
|
}
|
||||||
|
playback.props = {
|
||||||
|
media.class = "Stream/Output/Audio"
|
||||||
|
node.name = "application-loopback-1-playback"
|
||||||
|
node.description = "Application Loopback 1 Playback"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
context.modules = [{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
capture.props = {
|
||||||
|
media.class = "Audio/Sink"
|
||||||
|
node.name = "application-loopback-2-sink"
|
||||||
|
node.description = "Application Loopback 2 Sink"
|
||||||
|
}
|
||||||
|
playback.props = {
|
||||||
|
media.class = "Stream/Output/Audio"
|
||||||
|
node.name = "application-loopback-2-playback"
|
||||||
|
node.description = "Application Loopback 2 Playback"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
20
.config/pipewire/pipewire.conf.d/30-loopback-device_1.conf
Normal file
20
.config/pipewire/pipewire.conf.d/30-loopback-device_1.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
context.modules = [
|
||||||
|
{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
capture.props = {
|
||||||
|
media.class = "Stream/Input/Audio"
|
||||||
|
node.name = "device-loopback-1-recording"
|
||||||
|
node.description = "Device Loopback 1 Recording"
|
||||||
|
}
|
||||||
|
playback.props = {
|
||||||
|
media.class = "Stream/Output/Audio"
|
||||||
|
node.name = "device-loopback-1-playback"
|
||||||
|
node.description = "Device Loopback 1 Playback"
|
||||||
|
}
|
||||||
|
audio.volume = 0.5
|
||||||
|
audio.mute = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
20
.config/pipewire/pipewire.conf.d/31-loopback-device_2.conf
Normal file
20
.config/pipewire/pipewire.conf.d/31-loopback-device_2.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
context.modules = [
|
||||||
|
{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
capture.props = {
|
||||||
|
media.class = "Stream/Input/Audio"
|
||||||
|
node.name = "device-loopback-2-recording"
|
||||||
|
node.description = "Device Loopback 2 Recording"
|
||||||
|
}
|
||||||
|
playback.props = {
|
||||||
|
media.class = "Stream/Output/Audio"
|
||||||
|
node.name = "device-loopback-2-playback"
|
||||||
|
node.description = "Device Loopback 2 Playback"
|
||||||
|
}
|
||||||
|
audio.volume = 0.5
|
||||||
|
audio.mute = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
20
.config/pipewire/pipewire.conf.d/40-source-virtual_1.conf
Normal file
20
.config/pipewire/pipewire.conf.d/40-source-virtual_1.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
context.modules = [
|
||||||
|
{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
|
||||||
|
capture.props = {
|
||||||
|
media.class = "Stream/Input/Audio"
|
||||||
|
node.name = "virtual-source-1-recording"
|
||||||
|
node.description = "Virtual Source 1 Recording"
|
||||||
|
}
|
||||||
|
|
||||||
|
playback.props = {
|
||||||
|
media.class = "Audio/Source"
|
||||||
|
node.name = "virtual-source-1-source"
|
||||||
|
node.description = "Virtual Source 1 Source"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
20
.config/pipewire/pipewire.conf.d/41-source-virtual_2.conf
Normal file
20
.config/pipewire/pipewire.conf.d/41-source-virtual_2.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
context.modules = [
|
||||||
|
{
|
||||||
|
name = libpipewire-module-loopback
|
||||||
|
args = {
|
||||||
|
audio.position = [ FL FR ]
|
||||||
|
|
||||||
|
capture.props = {
|
||||||
|
media.class = "Stream/Input/Audio"
|
||||||
|
node.name = "virtual-source-2-recording"
|
||||||
|
node.description = "Virtual Source 2 Recording"
|
||||||
|
}
|
||||||
|
|
||||||
|
playback.props = {
|
||||||
|
media.class = "Audio/Source"
|
||||||
|
node.name = "virtual-source-2-source"
|
||||||
|
node.description = "Virtual Source 2 Source"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -217,11 +217,6 @@ fileviewer *.epub,*.kepub
|
|||||||
\ %pc
|
\ %pc
|
||||||
\ vifmimg clear
|
\ vifmimg clear
|
||||||
|
|
||||||
" svg
|
|
||||||
filextype *.svg
|
|
||||||
\ {View in inkview}
|
|
||||||
\ inkview %f,
|
|
||||||
|
|
||||||
" Audio
|
" Audio
|
||||||
filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus,*.aac
|
filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus,*.aac
|
||||||
\ {Play using mpv}
|
\ {Play using mpv}
|
||||||
@@ -266,7 +261,7 @@ filetype *.[1-8] man ./%c
|
|||||||
fileviewer *.[1-8] man ./%c | col -b
|
fileviewer *.[1-8] man ./%c | col -b
|
||||||
|
|
||||||
" Images
|
" Images
|
||||||
filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm,*.webp
|
filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm,*.webp,*.svg,*.svgz
|
||||||
\ {View in imv}
|
\ {View in imv}
|
||||||
\ imv %c %d &,
|
\ imv %c %d &,
|
||||||
fileviewer <image/*>
|
fileviewer <image/*>
|
||||||
@@ -481,6 +476,19 @@ vnoremap rr :!lp %f<cr>
|
|||||||
nnoremap cn :!cleanname %f<cr>
|
nnoremap cn :!cleanname %f<cr>
|
||||||
vnoremap cn :!cleanname %f<cr>
|
vnoremap cn :!cleanname %f<cr>
|
||||||
|
|
||||||
|
" Improved pane navigation for normal and view mode
|
||||||
|
nnoremap <C-h> <C-w>h
|
||||||
|
nnoremap <C-l> <C-w>l
|
||||||
|
nnoremap <C-j> <C-w>j
|
||||||
|
nnoremap <C-k> <C-w>k
|
||||||
|
nnoremap <C-x> <C-w>x
|
||||||
|
|
||||||
|
qnoremap <C-h> <C-w>h
|
||||||
|
qnoremap <C-l> <C-w>l
|
||||||
|
qnoremap <C-j> <C-w>j
|
||||||
|
qnoremap <C-k> <C-w>k
|
||||||
|
qnoremap <C-x> <C-w>x
|
||||||
|
|
||||||
" ------------------------------------------------------------------------------
|
" ------------------------------------------------------------------------------
|
||||||
|
|
||||||
" Various customization examples
|
" Various customization examples
|
||||||
|
|||||||
@@ -13,19 +13,4 @@ dunst &
|
|||||||
dunstctl rule dnd_low disable &
|
dunstctl rule dnd_low disable &
|
||||||
dunstctl rule dnd_normal disable &
|
dunstctl rule dnd_normal disable &
|
||||||
swhks && swhkd &
|
swhks && swhkd &
|
||||||
|
easyeffects &
|
||||||
pavucontrol &
|
|
||||||
easyeffects --gapplication-service &
|
|
||||||
nextcloud &
|
|
||||||
keepassxc &
|
|
||||||
zen-browser &
|
|
||||||
discord &
|
|
||||||
signal-desktop &
|
|
||||||
Telegram &
|
|
||||||
threema-beta &
|
|
||||||
thunderbird &
|
|
||||||
|
|
||||||
# monitor toggle &
|
|
||||||
# touchpad off &
|
|
||||||
# xset r rate 300 50 & # Speed xrate up
|
|
||||||
# redshift & # redshift for saving your eyes
|
|
||||||
|
|||||||
23
.config/wireplumber/wireplumber.conf.d/alsa-vm.conf
Normal file
23
.config/wireplumber/wireplumber.conf.d/alsa-vm.conf
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# ALSA node property overrides for virtual machine hardware
|
||||||
|
|
||||||
|
monitor.alsa.rules = [
|
||||||
|
# Generic PCI cards on any VM type
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
node.name = "~alsa_input.pci.*"
|
||||||
|
cpu.vm.name = "~.*"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
node.name = "~alsa_output.pci.*"
|
||||||
|
cpu.vm.name = "~.*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
api.alsa.period-size = 1024
|
||||||
|
api.alsa.headroom = 2048
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -11,4 +11,4 @@ sxhkd & # for shortcuts
|
|||||||
dunstctl rule dnd_low disable & # disable dnd for low urgencies
|
dunstctl rule dnd_low disable & # disable dnd for low urgencies
|
||||||
dunstctl rule dnd_normal disable & # disable dnd for normal urgencies
|
dunstctl rule dnd_normal disable & # disable dnd for normal urgencies
|
||||||
xss-lock -- slock & # enable locking the screen upon sleep
|
xss-lock -- slock & # enable locking the screen upon sleep
|
||||||
easyeffects --gapplication-service & # start audio server
|
easyeffects & # start audio server
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
set statusbar-h-padding 0
|
set statusbar-h-padding 0
|
||||||
set statusbar-v-padding 0
|
set statusbar-v-padding 0
|
||||||
set guioptions none
|
set guioptions none
|
||||||
set page-padding 1
|
#set page-padding 1
|
||||||
map u scroll full-up
|
map u scroll full-up
|
||||||
map d scroll full-down
|
map d scroll full-down
|
||||||
map D toggle_page_mode
|
map D toggle_page_mode
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ vipercmd="carbon" #"silicon"
|
|||||||
cd "$dir" || exit
|
cd "$dir" || exit
|
||||||
|
|
||||||
textype() { \
|
textype() { \
|
||||||
command="pdflatex"
|
command="pdflatex --shell-escape"
|
||||||
( sed 5q "$file" | grep -i -q 'xelatex' ) && command="xelatex"
|
( sed 5q "$file" | grep -i -q 'xelatex' ) && command="xelatex"
|
||||||
$command --output-directory="$dir" "$base" &&
|
$command --output-directory="$dir" "$base" &&
|
||||||
grep -i addbibresource "$file" >/dev/null &&
|
grep -i addbibresource "$file" >/dev/null &&
|
||||||
|
|||||||
@@ -18,39 +18,41 @@ main() {
|
|||||||
;;
|
;;
|
||||||
"draw")
|
"draw")
|
||||||
FILE="$PWD/$6"
|
FILE="$PWD/$6"
|
||||||
image "$1" "$2" "$3" "$4" "$5" "$FILE"
|
TMP="${PCACHE}.jpg"
|
||||||
|
convert "$FILE" -background white -alpha remove -alpha off "$TMP" 2>/dev/null || cp "$FILE" "$TMP"
|
||||||
|
image "$1" "$2" "$3" "$4" "$5" "$TMP"
|
||||||
;;
|
;;
|
||||||
"video")
|
"video")
|
||||||
[ ! -f "$PCACHE" ] && \
|
[ ! -f "$PCACHE" ] &&
|
||||||
ffmpegthumbnailer -i "$6" -o "${PCACHE}.jpg" -s 0 -q 5
|
ffmpegthumbnailer -i "$6" -o "${PCACHE}.jpg" -s 0 -q 5
|
||||||
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
||||||
;;
|
;;
|
||||||
"epub")
|
"epub")
|
||||||
[ ! -f "$PCACHE" ] && \
|
[ ! -f "$PCACHE" ] &&
|
||||||
epub-thumbnailer "$6" "$PCACHE" 1024
|
epub-thumbnailer "$6" "$PCACHE" 1024
|
||||||
image "$1" "$2" "$3" "$4" "$5" "$PCACHE"
|
image "$1" "$2" "$3" "$4" "$5" "$PCACHE"
|
||||||
;;
|
;;
|
||||||
"pdf")
|
"pdf")
|
||||||
[ ! -f "${PCACHE}.jpg" ] && \
|
[ ! -f "${PCACHE}.jpg" ] &&
|
||||||
pdftoppm -jpeg -f 1 -singlefile "$6" "$PCACHE"
|
pdftoppm -jpeg -f 1 -singlefile "$6" "$PCACHE"
|
||||||
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
||||||
;;
|
;;
|
||||||
"djvu")
|
"djvu")
|
||||||
[ ! -f "${PCACHE}.jpg" ] && \
|
[ ! -f "${PCACHE}.jpg" ] &&
|
||||||
ddjvu -format=tiff -quality=90 -page=1 "$6" "$PCACHE.jpg"
|
ddjvu -format=tiff -quality=90 -page=1 "$6" "$PCACHE.jpg"
|
||||||
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
||||||
;;
|
;;
|
||||||
"audio")
|
"audio")
|
||||||
[ ! -f "${PCACHE}.jpg" ] && \
|
[ ! -f "${PCACHE}.jpg" ] &&
|
||||||
ffmpeg -hide_banner -i "$6" "${PCACHE}.jpg" -y >/dev/null
|
ffmpeg -hide_banner -i "$6" "${PCACHE}.jpg" -y >/dev/null
|
||||||
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
||||||
;;
|
;;
|
||||||
"font")
|
"font")
|
||||||
[ ! -f "${PCACHE}.jpg" ] && \
|
[ ! -f "${PCACHE}.jpg" ] &&
|
||||||
fontpreview -i "$6" -o "${PCACHE}.jpg"
|
fontpreview -i "$6" -o "${PCACHE}.jpg"
|
||||||
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
|
||||||
;;
|
;;
|
||||||
*)
|
*) ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=Image viewer
|
Name=Image viewer
|
||||||
Exec=sxiv -a %u
|
Exec=imv %u
|
||||||
|
|||||||
Reference in New Issue
Block a user