aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--config/emacs/init.el2
-rw-r--r--config/git/config2
-rw-r--r--config/kitty/kitty.conf6
-rw-r--r--config/niri/config.kdl83
-rw-r--r--config/nvim/init.lua5
-rw-r--r--config/nvim/lazy-lock.json38
-rw-r--r--config/nvim/lua/dap_config.lua2
-rw-r--r--config/nvim/lua/lsp.lua1
-rw-r--r--config/nvim/lua/plugins.lua2
-rw-r--r--config/nvim/lua/treesitter_config.lua11
-rw-r--r--config/rmpc/config.ron273
-rw-r--r--config/rmpc/themes/rbdr.ron330
-rw-r--r--config/sway/config1
-rw-r--r--config/swaylock/config23
-rw-r--r--config/waybar/config.jsonc21
-rw-r--r--config/waybar/power_menu.xml5
-rwxr-xr-xconfig/waybar/scripts/ivpn.sh38
-rwxr-xr-xconfig/waybar/scripts/mullvad.sh37
-rw-r--r--config/waybar/style.css8
-rw-r--r--home/age-recipients4
-rw-r--r--home/zshrc5
-rwxr-xr-xprovision9
-rw-r--r--provisioning/pacman_essential6
-rw-r--r--provisioning/pacman_gui26
-rw-r--r--provisioning/pacman_nice12
26 files changed, 833 insertions, 119 deletions
diff --git a/.gitignore b/.gitignore
index c18713b..b93ba5a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,8 @@ config/nvim/lua/init_local.lua
config/karabiner/automatic_backups/*
config/aerc/accounts.conf
config/emacs/elpa
+config/emacs/eln-cache
+config/emacs/ido.last
config/nvim/oleoboard.saved
config/mpd/database
config/mpd/state
diff --git a/config/emacs/init.el b/config/emacs/init.el
index fdc6bba..4593228 100644
--- a/config/emacs/init.el
+++ b/config/emacs/init.el
@@ -7,7 +7,7 @@
(setq display-line-numbers-type 'relative)
;; Color / Theme
-(load-theme 'deeper-blue t)
+; (load-theme 'deeper-blue t)
;; Chrome
(menu-bar-mode -1)
diff --git a/config/git/config b/config/git/config
index 4c9ba68..7d4a869 100644
--- a/config/git/config
+++ b/config/git/config
@@ -24,7 +24,7 @@
[init]
defaultBranch = main
[diff]
- external = difft
+ external = difft --color=always
tool = vimdiff
algorithm = histogram
[merge]
diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf
index b20ccf5..f6caa8f 100644
--- a/config/kitty/kitty.conf
+++ b/config/kitty/kitty.conf
@@ -14,8 +14,8 @@ cursor_trail 1
# Mouse
mouse_hide_wait 0
-background_opacity 1.0
-background_blur 12
+background_opacity 0.9
+background_blur 1
# Color Scheme - Ruben Tranquil Light
foreground #0F261F
@@ -206,7 +206,7 @@ color15 #B5D1CC
# window
hide_window_decorations titlebar-only
-wayland_titlebar_color background
+wayland_titlebar_color system
window_margin_width 10 5 5
tab_bar_style custom
tab_bar_margin_width 5.0
diff --git a/config/niri/config.kdl b/config/niri/config.kdl
index cea0845..89f970a 100644
--- a/config/niri/config.kdl
+++ b/config/niri/config.kdl
@@ -6,12 +6,17 @@
environment {
DISPLAY ":0"
MOZ_ENABLE_WAYLAND "1"
- QT_QPA_PLATFORM "wayland-egl"
+ QT_QPA_PLATFORM "wayland"
+ QT_WAYLAND_DISABLE_WINDOWDECORATION "0"
+ QT_QPA_PLATFORMTHEME "kde"
+ QT_QPA_PLATFORMTHEME_QT6 "kde"
SDL_VIDEODRIVER "wayland"
_JAVA_AWT_WM_NONREPARENTING "1"
ELECTRON_OZONE_PLATFORM_HINT "auto"
MPD_HOST "music.bdr.place"
- XDG_CURRENT_DESKTOP "gnome"
+ XDG_SESSION_TYPE "wayland"
+ XDG_CURRENT_DESKTOP "plasma"
+ XDG_MENU_PREFIX "arch- kbuildsycoca6 --noincremental"
}
// Input device configuration.
@@ -47,7 +52,7 @@ input {
mouse {
// off
- // natural-scroll
+ natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "no-scroll"
@@ -77,12 +82,19 @@ gestures {
}
}
-// You can configure outputs by their name, which you can find
-// by running `niri msg outputs` while inside a niri instance.
-// The built-in laptop monitor is usually called "eDP-1".
-// Find more information on the wiki:
-// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
-// Remember to uncomment the node by removing "/-"!
+output "HDMI-A-1" {
+ mode "2560x1440@60.000"
+ scale 1
+ transform "normal"
+ position x=1280 y=0
+}
+
+output "DP-1" {
+ mode "5120x2880@60.000"
+ variable-refresh-rate on-demand=true
+ scale 2
+}
+
output "eDP-1" {
// Uncomment this line to disable this output.
// off
@@ -135,9 +147,9 @@ layout {
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
proportion 0.25
- proportion 0.33333
+ proportion 0.3
proportion 0.5
- proportion 0.66667
+ proportion 0.7
// Fixed sets the width in logical pixels exactly.
// fixed 1920
@@ -147,7 +159,7 @@ layout {
// preset-window-heights { }
// You can change the default width of the new windows.
- default-column-width { proportion 0.5; }
+ default-column-width { proportion 0.3; }
// If you leave the brackets empty, the windows themselves will decide their initial width.
// default-column-width {}
@@ -254,14 +266,28 @@ layout {
}
}
+blur {
+ passes 2
+ offset 3
+ noise 0.25
+ saturation 1
+}
+
// Add lines like this to spawn processes at startup.
// Note that running niri as a session supports xdg-desktop-autostart,
// which may be more convenient to use.
// See the binds section below for more spawn examples.
// spawn-at-startup "alacritty" "-e" "fish"
-spawn-at-startup "xwayland-satellite"
-spawn-at-startup "wl-paste" "--watch" "cliphist" "store"
+// xwayland-satellite is spawned by niri itself since 25.08 — a second manual instance fights over the clipboard
+// spawn-at-startup "xwayland-satellite"
+// Secret Service provider (org.freedesktop.secrets) via KWallet, needed by noctalia
+spawn-at-startup "/usr/bin/ksecretd"
+// The portal daemon keeps the XDG_CURRENT_DESKTOP it started under; restart it
+// so it re-reads niri-portals.conf after switching from a Plasma session
+spawn-at-startup "systemctl" "--user" "restart" "xdg-desktop-portal.service"
spawn-at-startup "systemctl" "--user" "import-environment" "MPD_HOST"
+spawn-at-startup "noctalia"
+spawn-at-startup "~/.local/bin/idle.sh"
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
// If the client will specifically ask for CSD, the request will be honored.
@@ -305,6 +331,10 @@ window-rule {
window-rule {
match is-focused=false
+ opacity 0.8
+ background-effect {
+ blur true
+ }
shadow {
on
softness 15
@@ -333,6 +363,11 @@ window-rule {
open-floating true
}
+window-rule {
+ match app-id=r#"org.kde.plasma.emojier"#
+ open-floating true
+}
+
layer-rule {
match namespace="^wallpaper$"
place-within-backdrop true
@@ -373,6 +408,7 @@ window-rule {
window-rule {
geometry-corner-radius 4
clip-to-geometry true
+ draw-border-with-background false
}
binds {
@@ -392,10 +428,10 @@ binds {
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Return hotkey-overlay-title="Open Terminal (kitty)" { spawn "kitty"; }
- Mod+Space hotkey-overlay-title="Open Launcher (Desktop)" { spawn "j4-dmenu-desktop" "-d" "bemenu --single-instance -i -n -H 26 --hp 10 --fn 'InputSansCompressed Light 10' -p '>' --ff '#0f261F' --tf '#23C17C' --nf '#0f261F' --cf '#23C17C2' --af '#00140d' --hb '#23C17C' --hf '#DAE6E3' --nb '#DAE6E3' --tb '#DAE6E3' --fb '#DAE6E3' --cb '#DAE6E3' --ab '#DAE6E3'";}
+ Mod+Space { spawn-sh "noctalia msg panel-toggle launcher"; }
Mod+Shift+Space hotkey-overlay-title="Open Launcher (Terminal)" { spawn "bemenu-run" "--single-instance" "-i" "-n" "-H" "26" "--hp" "10" "--fn" "InputSansCompressed Light 10" "-p" ">" "--ff" "#0f261F" "--tf" "#23C17C" "--nf" "#0f261F" "--cf" "#23C17C2" "--af" "#00140d" "--hb" "#23C17C" "--hf" "#0f261F" "--hf" "#DAE6E3" "--nb" "#DAE6E3" "--tb" "#DAE6E3" "--fb" "#DAE6E3" "--cb" "#DAE6E3" "--ab" "#DAE6E3";}
- Mod+Alt+L hotkey-overlay-title="Lock Screen" { spawn "swaylock"; }
- Mod+Ctrl+Space hotkey-overlay-title="Emoji Picker (smile)" { spawn "flatpak" "run" "it.mijorus.smile"; }
+ Mod+Alt+L hotkey-overlay-title="Lock Screen" { spawn "noctalia" "msg" "session" "lock"; }
+ Mod+Ctrl+Space hotkey-overlay-title="Emoji Picker" { spawn "plasma-emojier" "--replace"; }
// You can also use a shell. Do this if you need pipes, multiple commands, etc.
// Note: the entire command goes as a single argument in the end.
@@ -424,12 +460,12 @@ binds {
XF86Search hotkey-overlay-title="Contacts" { spawn "bash" "-c" "~/.dotfiles/scripts/contacts.sh"; }
- Mod+V hotkey-overlay-title="Open Clipboard Manager" { spawn "bash" "-c" "cliphist list | bemenu --single-instance -i -l 10 -n -H 26 --hp 10 --fn 'InputSansCompressed Light 10' -p '>' --ff '#0f261F' --tf '#23C17C' --nf '#0f261F' --cf '#23C17C2' --af '#00140d' --hb '#23C17C' --hf '#0f261F' --hf '#DAE6E3' --nb '#DAE6E3' --tb '#DAE6E3' --fb '#DAE6E3' --cb '#DAE6E3' --ab '#DAE6E3' | cliphist decode | wl-copy"; }
+ Mod+V hotkey-overlay-title="Open Clipboard Manager" { spawn "noctalia" "msg" "panel-open" "clipboard"; }
Mod+grave hotkey-overlay-title="Quick Terminal" { spawn "kitten" "quick-access-terminal"; }
- XF86AudioMicMute { spawn "wpaperctl" "next"; }
- Shift+XF86AudioMicMute { spawn "wpaperctl" "previous"; }
- Mod+Alt+Ctrl+XF86AudioMicMute hotkey-overlay-title=null { spawn "~/.wpaperalt"; }
+ Mod+F5 { spawn "noctalia" "msg" "wallpaper-next"; }
+ Mod+Shift+F5 { spawn "noctalia" "msg" "wallpaper-previous"; }
+ Mod+Alt+Shift+F5 hotkey-overlay-title=null { spawn "~/.wpaperalt"; }
XF86LaunchA { toggle-overview; }
Mod+XF86LaunchA hotkey-overlay-title="Open App Grid" { spawn "wofi"; }
@@ -454,6 +490,11 @@ binds {
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
+ // Binds for the Mouse
+ Ctrl+Left { focus-column-left; }
+ Ctrl+Right { focus-column-right; }
+ Ctrl+Up { toggle-overview; }
+
// Alternative commands that move across workspaces when reaching
// the first or last window in a column.
// Mod+J { focus-window-or-workspace-down; }
diff --git a/config/nvim/init.lua b/config/nvim/init.lua
index 92695d2..0b447a8 100644
--- a/config/nvim/init.lua
+++ b/config/nvim/init.lua
@@ -5,6 +5,7 @@
vim.opt.number = true -- Show number column
vim.opt.wrap = false -- Don't wrap text
vim.opt.list = true -- Display tabs and trailing space
+vim.opt.listchars='tab:▷·,trail:·,extends:,precedes:,nbsp:🞎'
vim.opt.cursorline = true -- Highlight cursor line
vim.opt.colorcolumn='80,150' -- Show color columns
@@ -63,12 +64,10 @@ vim.keymap.set('n', '<C-S-k>', function()
end, { expr = true, silent = true })
vim.keymap.set('i', '<C-S-j>', '<Esc>:m .+1<CR>==gi')
vim.keymap.set('i', '<C-S-k>', '<Esc>:m .-2<CR>==gi')
-vim.keymap.set('v', '<C-S-j>', ':m \'>+2<CR>gv=gv')
+vim.keymap.set('v', '<C-S-j>', ':m \'>+1<CR>gv=gv')
vim.keymap.set('v', '<C-S-k>', ':m \'<-2<CR>gv=gv')
-- Navigate the location list
-vim.keymap.set('n', '<M-j>', ':lnext<CR>')
-vim.keymap.set('n', '<M-k>', ':lprev<CR>')
vim.keymap.set('n', '<M-S-j>', ':cnext<CR>')
vim.keymap.set('n', '<M-S-k>', ':cprev<CR>')
diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json
index 96a45e3..de3dbce 100644
--- a/config/nvim/lazy-lock.json
+++ b/config/nvim/lazy-lock.json
@@ -1,42 +1,42 @@
{
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
- "R.nvim": { "branch": "main", "commit": "72032fbe3732c6c1e0b8b21dd348408e392a543e" },
+ "R.nvim": { "branch": "main", "commit": "ef081566170e20d536bfaab168eb8841c0753b1c" },
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
- "fzf-lua": { "branch": "main", "commit": "10c19a5f08bfeed34b930a1efddda3a9a983e6e2" },
+ "fzf-lua": { "branch": "main", "commit": "05e44d38de0a79c11fba5f7bf8138791b1dbdd1e" },
"gemini.vim": { "branch": "master", "commit": "c9efb59c97b71c28d4678c79fd21fbdd3a69d196" },
- "image.nvim": { "branch": "master", "commit": "da2be65c153ba15a14a342b05591652a6df70d58" },
+ "image.nvim": { "branch": "master", "commit": "5c6f29a5069e1f7bd5773ce5907454063b0f125d" },
"jannotate.nvim": { "branch": "main", "commit": "6bb5fb17d7da5437ea27a6079216cc5663d5e717" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
- "lean.nvim": { "branch": "main", "commit": "e979471bdc6817da901e38a581b670ed88081af2" },
+ "lean.nvim": { "branch": "main", "commit": "3d8027a96ada0fe43bdd01403e1bd4a09d175448" },
"lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" },
"marginalie.nvim": { "branch": "main", "commit": "0f7fa3e0b558eae20dd56d6ff62d08595a1b88d5" },
"marks.nvim": { "branch": "master", "commit": "f353e8c08c50f39e99a9ed474172df7eddd89b72" },
- "mini.icons": { "branch": "main", "commit": "bac6317300e205335df425296570d84322730067" },
+ "mini.icons": { "branch": "main", "commit": "98faae31e9be1cc054ae63485e58ceb185efcad0" },
"neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" },
"neorg": { "branch": "main", "commit": "a09e0bb9b32e2d0406d4503ae8c1a7ad2ca83eae" },
"neorg-interim-ls": { "branch": "main", "commit": "898898f48fe7a2364d99d32f0dfd95dab5f8591f" },
- "neotest": { "branch": "master", "commit": "ad991822b7076b1d940b33a9d6d0d30416d5df81" },
- "neotest-rspec": { "branch": "main", "commit": "e7dc67c1167a9e593c804a6be6808ba9a5920d43" },
+ "neotest": { "branch": "master", "commit": "27bf921498043f7ecd821d6db68d05de244bbd02" },
+ "neotest-rspec": { "branch": "main", "commit": "7629f8c2837becb72090fbafce58506bb56a00f0" },
"neotest-rust": { "branch": "main", "commit": "2c9941d4a358839918fac21d20fc8fef0e1ad05f" },
"nota.nvim": { "branch": "main", "commit": "4f22d307fb9fd0f44f6e6767b97869a238f18160" },
- "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
- "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
+ "nui.nvim": { "branch": "main", "commit": "10fc361835c856ba4233ef5ea135b919bf3dce97" },
+ "nvim-autopairs": { "branch": "master", "commit": "430522f95fe4fb7c511ec64f8c1a90cc6a66c05c" },
"nvim-biscuits": { "branch": "main", "commit": "d93dcdee3a3dfd5101785447658e744f153957db" },
- "nvim-dap": { "branch": "master", "commit": "45a69eba683a2c448dd9ecfc4de89511f0646b5f" },
- "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" },
- "nvim-lspconfig": { "branch": "master", "commit": "31026a13eefb20681124706a79fc1df6bf11ab27" },
- "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
- "nvim-surround": { "branch": "main", "commit": "2e93e154de9ff326def6480a4358bfc149d5da2c" },
- "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
+ "nvim-dap": { "branch": "master", "commit": "9e848e09a697ee95302a3ef2dd43fd6eb709e570" },
+ "nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" },
+ "nvim-lspconfig": { "branch": "master", "commit": "ee1e369181a9e64904cdd7b739e98c70778cfc71" },
+ "nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" },
+ "nvim-surround": { "branch": "main", "commit": "8b47db616ef658b8fc27e61db2896aa2f40134de" },
+ "nvim-treesitter": { "branch": "main", "commit": "427e9222363d07c32d6db6169e4049c28d58d141" },
"nvim-treesitter-endwise": { "branch": "master", "commit": "8fe8a95630f4f2c72a87ba1927af649e0bfaa244" },
- "nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
- "oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
- "pathlib.nvim": { "branch": "main", "commit": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1" },
+ "nvim-treesitter-textobjects": { "branch": "main", "commit": "898ee307df58f854d11cd7edd06472574d48014e" },
+ "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
+ "pathlib.nvim": { "branch": "main", "commit": "a0d3dbbe00ce6a546426b1aed3838a82fe6bfc42" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"snes-syntax-vim": { "branch": "master", "commit": "a6a699c8905f7b6119bf91e44f960667d9f03d59" },
- "sniprun": { "branch": "master", "commit": "6416f98924018385f7f5ebfe8dc773a4482426e4" },
+ "sniprun": { "branch": "master", "commit": "647995168a0682b359dfbf49bd3b0e8b9f2026dc" },
"tree-sitter-api-notation": { "branch": "main", "commit": "9fecd8fabdc688b125f3a5e36060a7577549b71e" },
"tree-sitter-norg": { "branch": "main", "commit": "d7edfaf89198aab652c7a1f0f818196efedaccfb" },
"tree-sitter-norg-meta": { "branch": "main", "commit": "729d4e54fb881ba0ddf0f925ec78401354c7c6db" },
diff --git a/config/nvim/lua/dap_config.lua b/config/nvim/lua/dap_config.lua
index c8f8d32..3a639c6 100644
--- a/config/nvim/lua/dap_config.lua
+++ b/config/nvim/lua/dap_config.lua
@@ -23,7 +23,7 @@ end)
dap.adapters.lldb = {
type = 'executable',
- command = '/Applications/Xcode.app/Contents/Developer/usr/bin/lldb-dap', -- adjust as needed, must be absolute path
+ command = '/usr/bin/lldb-dap', -- adjust as needed, must be absolute path
name = 'lldb'
}
diff --git a/config/nvim/lua/lsp.lua b/config/nvim/lua/lsp.lua
index f5718c4..69bb557 100644
--- a/config/nvim/lua/lsp.lua
+++ b/config/nvim/lua/lsp.lua
@@ -12,7 +12,6 @@ vim.lsp.enable('ruby_lsp')
vim.lsp.enable('hls')
vim.lsp.enable('julials')
vim.lsp.enable('r_language_server')
-vim.lsp.enable('leanls')
-- Enable inlay hints for Rust when LSP attaches
vim.api.nvim_create_autocmd('LspAttach', {
diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua
index 2feda55..9166b63 100644
--- a/config/nvim/lua/plugins.lua
+++ b/config/nvim/lua/plugins.lua
@@ -346,7 +346,7 @@ require('lazy').setup({
["core.dirman"] = {
config = {
workspaces = {
- brain = "~/brain",
+ brain = "~/Brain",
},
default_workspace = "brain",
}
diff --git a/config/nvim/lua/treesitter_config.lua b/config/nvim/lua/treesitter_config.lua
index 15b9327..0bc307f 100644
--- a/config/nvim/lua/treesitter_config.lua
+++ b/config/nvim/lua/treesitter_config.lua
@@ -1,6 +1,7 @@
require('nvim-treesitter').install {
'bash',
'css',
+ 'csv',
'dart',
'diff',
'dockerfile',
@@ -15,7 +16,6 @@ require('nvim-treesitter').install {
'json',
'julia',
'kotlin',
- 'lean',
'lua',
'make',
'markdown',
@@ -31,3 +31,12 @@ require('nvim-treesitter').install {
'typescript',
'yaml'
}
+
+vim.api.nvim_create_autocmd('User', { pattern = 'TSUpdate',
+callback = function()
+ require('nvim-treesitter.parsers').lean = {
+ install_info = {
+ url = 'https://github.com/Julian/tree-sitter-lean',
+ },
+ }
+end})
diff --git a/config/rmpc/config.ron b/config/rmpc/config.ron
new file mode 100644
index 0000000..ce99cc0
--- /dev/null
+++ b/config/rmpc/config.ron
@@ -0,0 +1,273 @@
+#![enable(implicit_some)]
+#![enable(unwrap_newtypes)]
+#![enable(unwrap_variant_newtypes)]
+(
+ address: "music.bdr.place:6600",
+ password: None,
+ theme: Some("rbdr"),
+ cache_dir: None,
+ on_song_change: None,
+ volume_step: 5,
+ max_fps: 30,
+ scrolloff: 0,
+ wrap_navigation: false,
+ enable_mouse: true,
+ scroll_amount: 1,
+ enable_config_hot_reload: true,
+ enable_lyrics_hot_reload: false,
+ status_update_interval_ms: 1000,
+ rewind_to_start_sec: None,
+ keep_state_on_song_change: true,
+ reflect_changes_to_playlist: false,
+ select_current_song_on_change: false,
+ ignore_leading_the: false,
+ browser_song_sort: [Disc, Track, Artist, Title],
+ directories_sort: SortFormat(group_by_type: true, reverse: false),
+ auto_open_downloads: true,
+ album_art: (
+ method: Auto,
+ max_size_px: (width: 1200, height: 1200),
+ disabled_protocols: ["http://", "https://"],
+ vertical_align: Center,
+ horizontal_align: Center,
+ ),
+ keybinds: (
+ global: {
+ "q": Quit,
+ "?": ShowHelp,
+ ":": CommandMode,
+ "oI": ShowCurrentSongInfo,
+ "oo": ShowOutputs,
+ "op": ShowDecoders,
+ "od": ShowDownloads,
+ "oP": Partition(),
+ "z": ToggleRepeat,
+ "x": ToggleRandom,
+ "c": ToggleConsume,
+ "v": ToggleSingle,
+ "p": TogglePause,
+ "s": Stop,
+ ">": NextTrack,
+ "<": PreviousTrack,
+ "f": SeekForward,
+ "b": SeekBack,
+ ".": VolumeUp,
+ ",": VolumeDown,
+ "<Tab>": NextTab,
+ "gt": NextTab,
+ "<S-Tab>": PreviousTab,
+ "gT": PreviousTab,
+ "1": SwitchToTab("Queue"),
+ "2": SwitchToTab("Directories"),
+ "3": SwitchToTab("Artists"),
+ "4": SwitchToTab("Album Artists"),
+ "5": SwitchToTab("Albums"),
+ "6": SwitchToTab("Playlists"),
+ "7": SwitchToTab("Search"),
+ "<C-u>": Update,
+ "<C-U>": Rescan,
+ "R": AddRandom,
+ },
+ navigation: {
+ "<C-c>": Close,
+ "<Esc>": Close,
+ "<CR>": Confirm,
+ "k": Up,
+ "<Up>": Up,
+ "j": Down,
+ "<Down>": Down,
+ "h": Left,
+ "<Left>": Left,
+ "l": Right,
+ "<Right>": Right,
+ "<C-w>k": PaneUp,
+ "<C-Up>": PaneUp,
+ "<C-w>j": PaneDown,
+ "<C-Down>": PaneDown,
+ "<C-w>h": PaneLeft,
+ "<C-Left>": PaneLeft,
+ "<C-w>l": PaneRight,
+ "<C-Right>": PaneRight,
+ "K": MoveUp,
+ "J": MoveDown,
+ "<C-u>": UpHalf,
+ "<C-d>": DownHalf,
+ "<C-b>": PageUp,
+ "<PageUp>": PageUp,
+ "<C-f>": PageDown,
+ "<PageDown>": PageDown,
+ "gg": Top,
+ "G": Bottom,
+ "<Space>": Select,
+ "<C-Space>": InvertSelection,
+ "/": EnterSearch,
+ "n": NextResult,
+ "N": PreviousResult,
+ "a": Add,
+ "A": AddAll,
+ "D": Delete,
+ "<C-r>": Rename,
+ "i": FocusInput,
+ "oi": ShowInfo,
+ "<C-z>": ContextMenu(),
+ "<C-s>s": Save(kind: Modal(all: false, duplicates_strategy: Ask)),
+ "<C-s>a": Save(kind: Modal(all: true, duplicates_strategy: Ask)),
+ "r": Rate(),
+ },
+ queue: {
+ "d": Delete,
+ "D": DeleteAll,
+ "<CR>": Play,
+ "C": JumpToCurrent,
+ "X": Shuffle,
+ },
+ ),
+ search: (
+ case_sensitive: false,
+ ignore_diacritics: false,
+ search_button: false,
+ mode: Contains,
+ tags: [
+ (value: "any", label: "Any Tag"),
+ (value: "artist", label: "Artist"),
+ (value: "album", label: "Album"),
+ (value: "albumartist", label: "Album Artist"),
+ (value: "title", label: "Title"),
+ (value: "filename", label: "Filename"),
+ (value: "genre", label: "Genre"),
+ ],
+ ),
+ artists: (
+ album_display_mode: SplitByDate,
+ album_sort_by: Date,
+ album_date_tags: [Date],
+ ),
+ tabs: [
+ (
+ name: "Queue",
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "25%",
+ pane: Split(
+ direction: Vertical,
+ panes: [
+ (
+ size: "100%",
+ borders: "NONE",
+ border_symbols: Rounded,
+ pane: Pane(AlbumArt)
+ )
+ ],
+ ),
+ ),
+ (
+ size: "65%",
+ pane: Split(
+ direction: Vertical,
+ panes: [
+ (
+ size: "3",
+ borders: "ALL",
+ border_symbols: Inherited(parent: Rounded, bottom_left: "├", bottom_right: "┤",),
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "1",
+ pane: Pane(Empty())
+ ),
+ (
+ size: "100%",
+ pane: Pane(QueueHeader())
+ ),
+ ]
+ )
+ ),
+ (
+ size: "100%",
+ borders: "LEFT | RIGHT | BOTTOM",
+ border_symbols: Rounded,
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "1",
+ pane: Pane(Empty())
+ ),
+ (
+ size: "100%",
+ pane: Pane(Queue)
+ ),
+ ]
+ )
+ ),
+ ],
+ )
+ ),
+ ],
+ ),
+ ),
+ (
+ name: "Directories",
+ borders: "ALL",
+ border_symbols: Rounded,
+ pane: Split(
+ size: "100%",
+ direction: Vertical,
+ panes: [(pane: Pane(Directories), size: "100%", borders: "ALL", border_symbols: Rounded)],
+ )
+ ),
+ (
+ name: "Artists",
+ borders: "ALL",
+ border_symbols: Rounded,
+ pane: Split(
+ size: "100%",
+ direction: Vertical,
+ panes: [(pane: Pane(Artists), size: "100%", borders: "ALL", border_symbols: Rounded)],
+ )
+ ),
+ (
+ name: "Album Artists",
+ borders: "ALL",
+ border_symbols: Rounded,
+ pane: Split(
+ size: "100%",
+ direction: Vertical,
+ panes: [(pane: Pane(AlbumArtists), size: "100%", borders: "ALL", border_symbols: Rounded)],
+ )
+ ),
+ (
+ name: "Albums",
+ borders: "ALL",
+ border_symbols: Rounded,
+ pane: Split(
+ size: "100%",
+ direction: Vertical,
+ panes: [(pane: Pane(Albums), size: "100%", borders: "ALL", border_symbols: Rounded)],
+ )
+ ),
+ (
+ name: "Playlists",
+ borders: "ALL",
+ border_symbols: Rounded,
+ pane: Split(
+ size: "100%",
+ direction: Vertical,
+ panes: [(pane: Pane(Playlists), size: "100%", borders: "ALL", border_symbols: Rounded)],
+ )
+ ),
+ (
+ name: "Search",
+ borders: "ALL",
+ border_symbols: Rounded,
+ pane: Split(
+ size: "100%",
+ direction: Vertical,
+ panes: [(pane: Pane(Search), size: "100%", borders: "ALL", border_symbols: Rounded)],
+ )
+ ),
+ ],
+)
diff --git a/config/rmpc/themes/rbdr.ron b/config/rmpc/themes/rbdr.ron
new file mode 100644
index 0000000..e38c492
--- /dev/null
+++ b/config/rmpc/themes/rbdr.ron
@@ -0,0 +1,330 @@
+#![enable(implicit_some)]
+#![enable(unwrap_newtypes)]
+#![enable(unwrap_variant_newtypes)]
+(
+ default_album_art_path: None,
+ format_tag_separator: " | ",
+ browser_column_widths: [20, 38, 42],
+ background_color: "#ffffff",
+ text_color: "black",
+ header_background_color: "#ffffff",
+ modal_background_color: None,
+ modal_backdrop: false,
+ preview_label_style: (fg: "yellow"),
+ preview_metadata_group_style: (fg: "yellow", modifiers: "Bold"),
+ highlighted_item_style: (fg: "blue", modifiers: "Bold"),
+ current_item_style: (fg: "#ffffff", bg: "blue", modifiers: "Bold"),
+ borders_style: (fg: "white"),
+ border_symbol_sets: {
+ "rbdr": (
+ top_left: "a",
+ top_right: "b",
+ bottom_left: "c",
+ bottom_right: "d",
+ vertical_left: "|",
+ vertical_right: "|",
+ horizontal_top: "─",
+ horizontal_bottom: "-",
+ ),
+ },
+ highlight_border_style: (fg: "blue"),
+ symbols: (
+ song: "♬",
+ dir: " ",
+ playlist: "",
+ marker: "✳",
+ ellipsis: "…",
+ song_style: None,
+ dir_style: None,
+ playlist_style: None,
+ ),
+ level_styles: (
+ info: (fg: "blue", bg: "black"),
+ warn: (fg: "yellow", bg: "black"),
+ error: (fg: "red", bg: "black"),
+ debug: (fg: "light_green", bg: "black"),
+ trace: (fg: "magenta", bg: "black"),
+ ),
+ progress_bar: (
+ symbols: ["◖", "█", "◗", " ", "◗"],
+ track_style: None,
+ elapsed_style: (fg: "blue"),
+ thumb_style: (fg: "blue"),
+ use_track_when_empty: true,
+ ),
+ scrollbar: (
+ symbols: ["│", "█", "▲", "▼"],
+ track_style: (),
+ ends_style: (),
+ thumb_style: (fg: "blue"),
+ ),
+ tab_bar: (
+ active_style: (fg: "#ffffff", bg: "blue", modifiers: "Bold"),
+ inactive_style: (),
+ ),
+ lyrics: (
+ timestamp: false
+ ),
+ browser_song_format: [
+ (
+ kind: Group([
+ (kind: Property(Track)),
+ (kind: Text(" ")),
+ ])
+ ),
+ (
+ kind: Group([
+ (kind: Property(Artist)),
+ (kind: Text(" - ")),
+ (kind: Property(Title)),
+ ]),
+ default: (kind: Property(Filename))
+ ),
+ ],
+ song_table_format: [
+ (
+ prop: (kind: Property(Artist),
+ default: (kind: Text("Unknown"))
+ ),
+ label_prop: (kind: Text("Artist")),
+ width: "20%",
+ ),
+ (
+ prop: (kind: Property(Title),
+ default: (kind: Text("Unknown"))
+ ),
+ label_prop: (kind: Text("Title")),
+ width: "35%",
+ ),
+ (
+ prop: (kind: Property(Album), style: (fg: "cyan"),
+ default: (kind: Text("Unknown Album"), style: (fg: "white"))
+ ),
+ label_prop: (kind: Text("Album")),
+ width: "30%",
+ ),
+ (
+ prop: (kind: Property(Duration), style: (fg: "dark_gray"),
+ default: (kind: Text("-"))
+ ),
+ label_prop: (kind: Text("Duration")),
+ width: "15%",
+ alignment: Right,
+ ),
+ ],
+ layout: Split(
+ direction: Vertical,
+ panes: [
+ (
+ size: "4",
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "35",
+ borders: "LEFT | TOP | BOTTOM",
+ border_symbols: Inherited(parent: Rounded, bottom_left: "├"),
+ pane: Component("header_left")
+ ),
+ (
+ size: "100%",
+ borders: "ALL",
+ border_symbols: Inherited(parent: Rounded, top_left: "┬", top_right: "┬", bottom_left: "┴", bottom_right: "┴"),
+ pane: Component("header_center")
+ ),
+ (
+ size: "35",
+ borders: "RIGHT | TOP | BOTTOM",
+ border_symbols: Inherited(parent: Rounded, bottom_right: "┤"),
+ pane: Component("header_right")
+ ),
+ ]
+ )
+ ),
+ (
+ pane: Pane(Tabs),
+ borders: "RIGHT | LEFT | BOTTOM",
+ border_symbols: Rounded,
+ size: "2",
+ ),
+ (
+ pane: Pane(TabContent),
+ size: "100%",
+ ),
+ (
+ size: "3",
+ borders: "TOP",
+ border_symbols: Library("rbdr"),
+ pane: Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "4",
+ borders: "NONE",
+ pane: Component("input_mode")
+ ),
+ (
+ size: "100%",
+ borders: "NONE",
+ pane: Component("progress_bar"),
+ ),
+ (
+ size: "20",
+ borders: "NONE",
+ pane: Component("queue_status"),
+ ),
+ ]
+ ),
+ ),
+ ],
+ ),
+ components: {
+ "state": Pane(Property(
+ content: [
+ (kind: Text("["), style: (fg: "yellow", modifiers: "Bold")),
+ (kind: Property(Status(StateV2( ))), style: (fg: "yellow", modifiers: "Bold")),
+ (kind: Text("]"), style: (fg: "yellow", modifiers: "Bold")),
+ ], align: Left,
+ )),
+ "title": Pane(Property(
+ content: [
+ (kind: Property(Song(Title)), style: (modifiers: "Bold"),
+ default: (kind: Text("No Song"), style: (modifiers: "Bold"))),
+ ], align: Center, scroll_speed: 1
+ )),
+ "volume": Split(
+ direction: Horizontal,
+ panes: [
+ (size: "1", pane: Pane(Property(content: [(kind: Text(""))]))),
+ (size: "100%", pane: Pane(Volume(kind: Slider(symbols: (filled: "─", thumb: "●", track: "─"))))),
+ (size: "3", pane: Pane(Property(content: [(kind: Property(Status(Volume)), style: (fg: "blue"))], align: Right))),
+ (size: "2", pane: Pane(Property(content: [(kind: Text("%"), style: (fg: "blue"))]))),
+ ]
+ ),
+ "elapsed_and_bitrate": Pane(Property(
+ content: [
+ (kind: Property(Status(Elapsed))),
+ (kind: Text(" / ")),
+ (kind: Property(Status(Duration))),
+ (kind: Group([
+ (kind: Text(" (")),
+ (kind: Property(Status(Bitrate))),
+ (kind: Text(" kbps)")),
+ ])),
+ ],
+ align: Left,
+ )),
+ "artist_and_album": Pane(Property(
+ content: [
+ (kind: Property(Song(Artist)), style: (fg: "yellow", modifiers: "Bold"),
+ default: (kind: Text("Unknown"), style: (fg: "yellow", modifiers: "Bold"))),
+ (kind: Text(" - ")),
+ (kind: Property(Song(Album)), default: (kind: Text("Unknown Album"))),
+ ], align: Center, scroll_speed: 1
+ )),
+ "states": Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "1",
+ pane: Pane(Empty())
+ ),
+ (
+ size: "100%",
+ pane: Pane(Property(content: [(kind: Property(Status(InputBuffer())), style: (fg: "blue"), align: Left)]))
+ ),
+ (
+ size: "6",
+ pane: Pane(Property(content: [
+ (kind: Text("["), style: (fg: "blue", modifiers: "Bold")),
+ (kind: Property(Status(RepeatV2(
+ on_label: "z",
+ off_label: "z",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ )))),
+ (kind: Property(Status(RandomV2(
+ on_label: "x",
+ off_label: "x",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ )))),
+ (kind: Property(Status(ConsumeV2(
+ on_label: "c",
+ off_label: "c",
+ oneshot_label: "c",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ oneshot_style: (fg: "red", modifiers: "Dim"),
+ )))),
+ (kind: Property(Status(SingleV2(
+ on_label: "v",
+ off_label: "v",
+ oneshot_label: "v",
+ on_style: (fg: "yellow", modifiers: "Bold"),
+ off_style: (fg: "blue", modifiers: "Dim"),
+ oneshot_style: (fg: "red", modifiers: "Bold"),
+ )))),
+ (kind: Text("]"), style: (fg: "blue", modifiers: "Bold")),
+ ],
+ align: Right
+ ))
+ ),
+ ]
+ ),
+ "input_mode": Pane(Property(
+ content: [
+ (kind: Transform(Replace(content: (kind: Property(Status(InputMode()))), replacements: [
+ (match: "Normal", replace: (kind: Text(" N "), style: (fg: "blue", bg: "#ffffff"))),
+ (match: "Insert", replace: (kind: Text(" I "), style: (fg: "green", bg: "#ffffff"))),
+ ])))
+ ], align: Center
+ )),
+ "header_left": Split(
+ direction: Vertical,
+ panes: [
+ (size: "1", pane: Component("state")),
+ (size: "1", pane: Component("elapsed_and_bitrate")),
+ ]
+ ),
+ "header_center": Split(
+ direction: Vertical,
+ panes: [
+ (size: "1", pane: Component("title")),
+ (size: "1", pane: Component("artist_and_album")),
+ ]
+ ),
+ "header_right": Split(
+ direction: Vertical,
+ panes: [
+ (size: "1", pane: Component("volume")),
+ (size: "1", pane: Component("states")),
+ ]
+ ),
+ "progress_bar": Split(
+ direction: Horizontal,
+ panes: [
+ (
+ size: "1",
+ pane: Pane(Empty())
+ ),
+ (
+ size: "100%",
+ pane: Pane(ProgressBar)
+ ),
+ (
+ size: "1",
+ pane: Pane(Empty())
+ ),
+ ]
+ ),
+ "queue_status": Pane(Property(
+ content: [
+ (kind: Text("♬ ")),
+ (kind: Property(Status(QueueLength()))),
+ (kind: Text(" 󰥔 ")),
+ (kind: Property(Status(QueueTimeTotal()))),
+ ],
+ )),
+ },
+)
diff --git a/config/sway/config b/config/sway/config
index e9130d1..eff8db3 100644
--- a/config/sway/config
+++ b/config/sway/config
@@ -268,3 +268,4 @@ bar {
}
include /etc/sway/config.d/*
+
diff --git a/config/swaylock/config b/config/swaylock/config
index fc8284e..6f46ab8 100644
--- a/config/swaylock/config
+++ b/config/swaylock/config
@@ -1,20 +1,22 @@
-font=InputMonoCompressed-Thin
-font-size=20
-indicator-radius=70
-indicator-thickness=100
-color=24C17C
+image=~/Bridge/wallpapers/patterns4x/arches.png
+scaling=tile
+font=InputMonoCompressed-ExtraLight
+font-size=16
+indicator-radius=120
+indicator-thickness=120
+color=0000F1
text-color=FFFFFF00
text-clear-color=FFFFFF00
-text-ver-color=FFFFFF00
+text-ver-color=0000F1
-key-hl-color=24C17C
+key-hl-color=CCCCCC
bs-hl-color=DAE6E3
caps-lock-bs-hl-color=FA2B00
caps-lock-key-hl-color=FA2B00
-inside-color=4F8FE6
+inside-color=0000FF
inside-clear-color=FAED8F
-inside-ver-color=DAE6E3
+inside-ver-color=FFFFFF
inside-wrong-color=FA2B00
line-color=FFFFFF
@@ -24,7 +26,8 @@ ring-ver-color=FFFFFF
ring-wrong-color=FFFFFF
line-clear-color=FFFFFF
+line-ver-color=FFFFFF
-separator-color=FFFFFF
+separator-color=FFFFFF00
inside-caps-lock-color=FF00FF
diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc
index 48bedc7..2a9c8b3 100644
--- a/config/waybar/config.jsonc
+++ b/config/waybar/config.jsonc
@@ -11,7 +11,7 @@
],
"modules-right": [
"idle_inhibitor",
- "custom/mullvad",
+ "custom/ivpn",
"custom/tailscale",
"wireplumber",
"custom/builds",
@@ -105,8 +105,9 @@
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
- "shutdown": "shutdown",
- "reboot": "reboot",
+ "logout": "niri msg action quit --skkip-confirmation",
+ "shutdown": "systemctl poweroff",
+ "reboot": "systemctl reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
@@ -117,7 +118,7 @@
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}STP",
"unknown-tag": "N/A",
"interval": 5,
- "timeout": "5",
+ "timeout": 5,
"consume-icons": {
"on": " "
},
@@ -136,7 +137,9 @@
"playing": ""
},
"tooltip-format": "{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}%",
- "tooltip-format-disconnected": "MPD (disconnected)"
+ "tooltip-format-disconnected": "MPD (disconnected)",
+ "server": "music.bdr.place",
+ "port": 6600
},
"niri/language": {
"format": "{short}"
@@ -154,9 +157,9 @@
"return-type": "json",
"interval": 3,
},
- "custom/mullvad" : {
- "exec": "~/.config/waybar/scripts/mullvad.sh --status",
- "on-click": "~/.config/waybar/scripts/mullvad.sh --toggle",
+ "custom/ivpn" : {
+ "exec": "~/.config/waybar/scripts/ivpn.sh --status",
+ "on-click": "~/.config/waybar/scripts/ivpn.sh --toggle",
"exec-on-event": true,
"format": "<span font-weight='900'> {icon} </span>",
"format-icons": {
@@ -172,7 +175,7 @@
"icons": {
"bitwarden": "/home/rbdr/.local/share/icons/Iconoir/pentagon.png",
"signal desktop": "/home/rbdr/.local/share/icons/Iconoir/hexagon.png",
- "mullvad vpn": "/home/rbdr/.local/share/icons/Iconoir/rhombus.png",
+ "ivpn": "/home/rbdr/.local/share/icons/Iconoir/rhombus.png",
"Betterbird-systray-icon": "/home/rbdr/.local/share/icons/Iconoir/rhombus.png",
"opensnitch-ui": "/home/rbdr/.local/share/icons/Iconoir/four-rhombuses.png",
}
diff --git a/config/waybar/power_menu.xml b/config/waybar/power_menu.xml
index aa2a42c..c1a2ed5 100644
--- a/config/waybar/power_menu.xml
+++ b/config/waybar/power_menu.xml
@@ -2,6 +2,11 @@
<interface>
<object class="GtkMenu" id="menu">
<child>
+ <object class="GtkMenuItem" id="logout">
+ <property name="label">Log Out</property>
+ </object>
+ </child>
+ <child>
<object class="GtkMenuItem" id="suspend">
<property name="label">Suspend</property>
</object>
diff --git a/config/waybar/scripts/ivpn.sh b/config/waybar/scripts/ivpn.sh
new file mode 100755
index 0000000..9ff88fc
--- /dev/null
+++ b/config/waybar/scripts/ivpn.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+
+ivpn_status_output () {
+ ivpn status
+}
+
+ivpn_connected () {
+ ivpn status | grep -q '^VPN.*: CONNECTED'
+}
+
+toggle_status () {
+ if ivpn_connected; then
+ ivpn disconnect
+ else
+ ivpn connect -f
+ fi
+}
+
+case $1 in
+ --status)
+ status_output="$(ivpn_status_output)"
+ if echo "$status_output" | grep -q '^VPN.*: CONNECTED'; then
+ # Line after "VPN : CONNECTED" holds server + location,
+ # e.g. "de.gw.ivpn.net [de3.gw.ivpn.net], Frankfurt (DE), Germany"
+ server_line=$(echo "$status_output" | awk '/^VPN.*CONNECTED/{getline; sub(/^[ \t]+/, ""); print}')
+ protocol=$(echo "$status_output" | awk -F': ' '/^[ \t]*Protocol/{print $2}')
+ server_ip=$(echo "$status_output" | awk -F': ' '/^[ \t]*Server IP/{print $2}')
+ endpoint="${server_line%%,*} (${protocol})"
+ location="${server_line#*, } (${server_ip})"
+ echo "{\"text\":\"\",\"class\":\"connected\",\"alt\":\"connected\", \"tooltip\": \"${endpoint}\\n${location}\"}"
+ else
+ echo "{\"text\":\"\",\"class\":\"disconnected\",\"alt\":\"disconnected\", \"tooltip\": \"VPN is not active.\"}"
+ fi
+ ;;
+ --toggle)
+ toggle_status
+ ;;
+esac
diff --git a/config/waybar/scripts/mullvad.sh b/config/waybar/scripts/mullvad.sh
deleted file mode 100755
index e02bb2f..0000000
--- a/config/waybar/scripts/mullvad.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-
-STATUS_KEY="state"
-RUNNING="connected"
-
-mullvad_status () {
- status="$(mullvad status --json | jq -r '.'$STATUS_KEY)"
- if [ "$status" = $RUNNING ]; then
- return 0
- fi
- return 1
-}
-
-toggle_status () {
- if mullvad_status; then
- mullvad disconnect
- else
- mullvad connect
- fi
-}
-
-case $1 in
- --status)
- if mullvad_status; then
- status_json=$(mullvad status --json)
- endpoint=$(echo "$status_json" | jq -r '.details.endpoint | "\(.tunnel_interface) (\(.tunnel_type))"')
- location=$(echo "$status_json" | jq -r '.details.location | "\(.country), \(.city) (\(.ipv4))"')
- echo "{\"text\":\"\",\"class\":\"connected\",\"alt\":\"connected\", \"tooltip\": \"${endpoint}\\n${location}\"}"
- else
- echo "{\"text\":\"\",\"class\":\"disconnected\",\"alt\":\"disconnected\", \"tooltip\": \"VPN is not active.\"}"
- fi
- ;;
- --toggle)
- toggle_status
- ;;
-esac
-
diff --git a/config/waybar/style.css b/config/waybar/style.css
index 8a2b108..8526488 100644
--- a/config/waybar/style.css
+++ b/config/waybar/style.css
@@ -133,7 +133,7 @@ button:hover {
margin-right: 8px;
}
-#custom-mullvad,
+#custom-ivpn,
#custom-tailscale {
padding: 0 2px;
}
@@ -148,16 +148,16 @@ button:hover {
background-color: #90A6A2;
}
-#custom-mullvad {
+#custom-ivpn {
padding-bottom: 3px;
}
-#custom-mullvad.connected {
+#custom-ivpn.connected {
color: #0F261F;
background-color: #FFB4F0;
}
-#custom-mullvad.disconnected {
+#custom-ivpn.disconnected {
color: #0F261F;
background-color: #B5D1CC;
}
diff --git a/home/age-recipients b/home/age-recipients
index c59cd10..0a99bdc 100644
--- a/home/age-recipients
+++ b/home/age-recipients
@@ -1,3 +1,3 @@
age1r42nded7xmvfanq5mqqa0ld6v666f3mxtfqjstfygqg5yj2nte6s2tssjf
-age1yubikey1qtdpuvjq6ywtnsxz55ugjlmhquewkzccqyyafr5ngw0w5433cjw7zr6nd2v
-age1yubikey1q2wnvc90uqjfwu8pxwxexnzsue72m3xjpur73hr3ndcf9d69zq6rvsgmd9w
+age1yubikey1qdwl9grctzt49h0tcleusvaytajfzdwzvnepz59wq3tt5fvwsqwajchhvgs
+age1yubikey1qwyz0xdmpxvnuevnusw66336ga48mle4dk07akglgm8fywp3uusfk86npjm
diff --git a/home/zshrc b/home/zshrc
index 5b1f449..0aeb36c 100644
--- a/home/zshrc
+++ b/home/zshrc
@@ -111,3 +111,8 @@ case ":$PATH:" in
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end
+
+[ -f "$HOME/.ghcup/env" ] && . "$HOME/.ghcup/env" # ghcup-env
+
+# Elan / Lean4
+export PATH="$HOME/.elan/bin:$PATH"
diff --git a/provision b/provision
index e99d633..da1eaab 100755
--- a/provision
+++ b/provision
@@ -18,8 +18,13 @@ else
privilege="sudo"
else
if command -v pacman &> /dev/null; then
- command_name="pacman"
- install_command="-Sy"
+ if [[ "$1" == "flatpak" ]]; then
+ command_name="flatpak"
+ install_command="install"
+ else
+ command_name="pacman"
+ install_command="-Sy"
+ fi
privilege="sudo"
else
if command -v apt &> /dev/null; then
diff --git a/provisioning/pacman_essential b/provisioning/pacman_essential
index a639a5a..da122a0 100644
--- a/provisioning/pacman_essential
+++ b/provisioning/pacman_essential
@@ -1,5 +1,6 @@
--noconfirm
bat
+chafa
curl
difftastic
eza
@@ -9,6 +10,11 @@ git-delta
gnupg
htop
inetutils
+jq
+jujutsu
+less
+man-db
+net-tools
ripgrep
rsync
tmux
diff --git a/provisioning/pacman_gui b/provisioning/pacman_gui
index 2065d6c..392f3c1 100644
--- a/provisioning/pacman_gui
+++ b/provisioning/pacman_gui
@@ -1,5 +1,25 @@
--noconfirm
+bitwarden
+blueman
+firefox
+fsearch
+gamemode
+gamescope
kitty
-sway
-bemenu
-qutebrowser
+noctalia
+noto-fonts
+noto-fonts-cjk
+noto-fonts-emoji
+noto-fonts-extra
+niri
+polkit-gnome
+sane
+sane-airscan
+syncthing
+ttf-input-nerd
+ttf-nerd-fonts-symbols
+ttf-nerd-fonts-symbols-common
+ttf-nerd-fonts-symbols-mono
+wev
+wl-clipboard
+xwayland-satellite
diff --git a/provisioning/pacman_nice b/provisioning/pacman_nice
index 3c80000..a4e7d15 100644
--- a/provisioning/pacman_nice
+++ b/provisioning/pacman_nice
@@ -1,4 +1,16 @@
--noconfirm
aerc
+avahi
+bluez
+btop
+cups
+cups-pdf
+make
+gcc
+mpc
+ncmpcpp
+nss-mdns
pandoc-cli
+restic
+tailscale
tmuxp