Compare commits

...
16 Commits
Author SHA1 Message Date
Henrik Bakken 67ef3a3059 nvim ftplugin bugfixes 2026-10-19 12:33:02 +02:00
Henrik Bakken d085d60bad qutebrowser+sway tweaks 2026-10-19 12:33:02 +02:00
Henrik Bakken 4b51cf4253 bugfix swayidle 2026-10-19 12:29:31 +02:00
Henrik Bakken 1b0c38a8d1 nvim git grep case sensitive 2026-10-19 12:29:31 +02:00
Henrik Bakken 02dcab9871 nvim ftplugin tweaks 2026-10-19 12:29:31 +02:00
Henrik Bakken 1ec951997b theming 2026-10-19 12:29:31 +02:00
Henrik Bakken eb82be6847 nvim gitsigns refresh 2026-10-19 12:29:31 +02:00
Henrik Bakken fbf7f3716d endos fixes 2026-10-19 12:29:31 +02:00
Henrik Bakken 5a09671d0e remove noisetorch 2026-10-19 12:29:31 +02:00
Henrik Bakken ff21471623 added ouch 2026-10-09 22:01:28 +02:00
Henrik Bakken 3a350b4f15 yazi revamp 2026-10-09 21:48:41 +02:00
Henrik Bakken 10df55cded nvim ftplugin cleanup - use local settings 2026-10-09 20:37:01 +02:00
Henrik Bakken e138d87f2c sway trying to fix unlocking 2026-10-09 11:34:13 +02:00
Henrik Bakken 6fe5f1a047 nvim split on cursor 2026-10-09 11:12:21 +02:00
Henrik Bakken 2f7cc0f43d aerc remove deprecated feature 2026-10-09 10:04:25 +02:00
Henrik Bakken cdf8164ed8 waybar cleanup + notifications 2026-10-08 23:42:53 +02:00
23 changed files with 270 additions and 127 deletions
-1
View File
@@ -1,5 +1,4 @@
[general]
enable-osc8=true
log-file=~/aerc.log
[ui]
+6 -5
View File
@@ -1,9 +1,9 @@
[Settings]
gtk-theme-name=Adwaita-dark
gtk-icon-theme-name=Qogir-dark
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=Qogir-Dark
gtk-font-name=Noto Sans 10
gtk-cursor-theme-name=Qogir-dark
gtk-cursor-theme-size=0
gtk-cursor-theme-name=Qogir-Dark
gtk-cursor-theme-size=20
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
@@ -12,5 +12,6 @@ gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintmedium
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=1
+2
View File
@@ -0,0 +1,2 @@
vim.opt_local.number = true
vim.opt_local.relativenumber = true
+11
View File
@@ -0,0 +1,11 @@
-- Indentation & Layout
vim.opt_local.colorcolumn = "100"
vim.opt_local.textwidth = 100
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.softtabstop = 4
vim.opt_local.expandtab = true
-- Formatting Behavior
vim.opt_local.formatoptions:remove("t") -- Don't autowrap while typing
vim.opt_local.formatoptions:append("j") -- Remove comment markers when joining lines
+11
View File
@@ -0,0 +1,11 @@
-- Indentation & Layout
vim.opt_local.colorcolumn = "120"
vim.opt_local.textwidth = 120
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.softtabstop = 4
vim.opt_local.expandtab = true
-- Formatting Behavior
vim.opt_local.formatoptions:remove("t") -- Don't autowrap while typing
vim.opt_local.formatoptions:append("j") -- Remove comment markers when joining lines
+21
View File
@@ -0,0 +1,21 @@
local bufname = vim.api.nvim_buf_get_name(0)
local filename_arg = bufname ~= "" and (" --stdin-filepath " .. vim.fn.shellescape(bufname)) or ""
-- Indentation & Layout
vim.opt_local.colorcolumn = ""
vim.opt_local.wrap = true
vim.opt_local.textwidth = 80
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.expandtab = true
-- Formatting Behavior: wrap text, keep comment/quote headers, parse lists
vim.opt_local.formatoptions:append("tqn")
-- gq Formatter: Prettier handles links/parentheses cleanly; par as fallback
if vim.fn.executable("prettier") == 1 then
vim.bo.formatprg = "prettier --parser markdown" .. filename_arg
elseif vim.fn.executable("par") == 1 then
vim.bo.formatprg = "par -w80req"
end
+11
View File
@@ -0,0 +1,11 @@
-- Indentation & Layout
vim.opt_local.colorcolumn = "100"
vim.opt_local.textwidth = 100
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.softtabstop = 4
vim.opt_local.expandtab = true
-- Formatting Behavior
vim.opt_local.formatoptions:remove("t") -- Don't autowrap while typing
vim.opt_local.formatoptions:append("j") -- Remove comment markers when joining lines
-2
View File
@@ -1,2 +0,0 @@
vim.o.number = true
vim.o.relativenumber = true
-4
View File
@@ -1,4 +0,0 @@
vim.o.colorcolumn = "100"
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
-4
View File
@@ -1,4 +0,0 @@
vim.o.colorcolumn = "120"
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
-5
View File
@@ -1,5 +0,0 @@
vim.o.colorcolumn = ""
vim.o.wrap = true
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.softtabstop = 2
-5
View File
@@ -1,5 +0,0 @@
vim.o.colorcolumn = "100"
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.g.no_python_maps = 1
+12 -16
View File
@@ -83,7 +83,7 @@ vim.opt.spelllang = { "en" }
-- Splits
vim.opt.splitbelow = true
vim.opt.splitkeep = "screen"
vim.opt.splitkeep = "cursor"
vim.opt.splitright = true
-- Terminal & Status Column
@@ -118,6 +118,7 @@ vim.api.nvim_create_autocmd("FileType", {
-- MAPS
-- ----------------------------------------
vim.g.no_python_maps = 1
local map = vim.keymap.set
-- better esc
@@ -832,10 +833,7 @@ local function makespec_diffview()
"DiffviewRefresh",
"DiffviewFileHistory",
},
keys = {
{ "<leader>gd", "<cmd>DiffviewOpen<cr>", desc = "DiffView Tab" },
{ "<leader>gh", "<cmd>DiffviewFileHistory<cr>", desc = "File History Tab" },
},
keys = {},
}
end
local function makespec_fugitive()
@@ -883,6 +881,7 @@ local function makespec_gitsigns()
vim.cmd.normal({ "]c", bang = true })
else
gs.nav_hunk("next")
vim.schedule(gs.preview_hunk_inline)
end
end
local function prev_hunk()
@@ -890,14 +889,14 @@ local function makespec_gitsigns()
vim.cmd.normal({ "[c", bang = true })
else
gs.nav_hunk("prev")
vim.schedule(gs.preview_hunk_inline)
end
end
local function bmap(mode, l, r, desc) vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc }) end
-- Navigation
bmap("n", "<M-,>", next_hunk, "Next Hunk")
bmap("n", "<M-.>", prev_hunk, "Prev Hunk")
bmap("n", "<M-,>", prev_hunk, "Prev Hunk")
bmap("n", "<M-.>", next_hunk, "Next Hunk")
bmap("n", "[h", prev_hunk, "Prev Hunk")
bmap("n", "]h", next_hunk, "Next Hunk")
@@ -908,6 +907,8 @@ local function makespec_gitsigns()
-- Hunk
bmap("n", "<leader>gi", gs.preview_hunk_inline, "Preview Hunk Inline")
bmap("n", "<leader>gp", gs.preview_hunk, "Preview Hunk")
bmap("n", "<leader>gd", gs.diffthis, "Diff This (Index)")
bmap("n", "<leader>gD", function() gs.diffthis("~") end, "Diff This (HEAD~1)")
bmap("n", "<leader>gq", gs.setqflist, "File Hunks to QuickFix")
bmap("n", "<leader>gQ", function() gs.setqflist("all") end, "All Hunks to QuickFix")
bmap("n", "<leader>gx", gs.reset_hunk, "Reset Hunk")
@@ -925,7 +926,7 @@ local function makespec_gitsigns()
bmap("n", "<leader>gtb", gs.toggle_current_line_blame, "Toggle Line Blame")
bmap("n", "<leader>gtd", gs.toggle_deleted, "Toggle Deleted")
-- Text object, e.g. for dih to delete hunk
-- Text Object (e.g., 'dih' to delete hunk)
bmap({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "Select Hunk")
end
@@ -933,11 +934,6 @@ local function makespec_gitsigns()
"lewis6991/gitsigns.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {
signcolumn = true,
numhl = false,
linehl = false,
word_diff = false,
signs_staged_enable = false,
on_attach = on_gitsigns_attach,
},
}
@@ -1100,8 +1096,8 @@ local function makespec_snacks()
-- search
{ "<F1>", function() Snacks.picker.help() end, desc = "Help Pages" },
{ "<F9>", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" },
{ "<M-/>", function() Snacks.picker.git_grep({ ignorecase = true }) end, desc = "Grep Git Files" },
{ "<leader>sg", function() Snacks.picker.git_grep({ ignorecase = true }) end, desc = "Grep Git Files" },
{ "<M-/>", function() Snacks.picker.git_grep({ ignorecase = false }) end, desc = "Grep Git Files" },
{ "<leader>sg", function() Snacks.picker.git_grep({ ignorecase = false }) end, desc = "Grep Git Files" },
{ "<leader>sa", function() Snacks.picker.grep({ untracked = true }) end, desc = "Grep Files" },
{ "<leader>*", function() Snacks.picker.grep_word() end, desc = "Visual selection or word", mode = { "n", "x" }, },
{ "<leader>/", function() Snacks.picker.search_history() end, desc = "Search History" },
+25 -18
View File
@@ -1,4 +1,5 @@
from typing import TYPE_CHECKING
import os
if TYPE_CHECKING:
from qutebrowser.config.config import ConfigContainer
@@ -6,7 +7,6 @@ if TYPE_CHECKING:
c: "ConfigContainer" = c # type: ignore # noqa: F821
config: "ConfigAPI" = config # type: ignore # noqa: F821
from typing import TYPE_CHECKING
config.load_autoconfig(True)
config.bind("<", "tab-move -")
@@ -47,7 +47,6 @@ config.bind("tj", "back -t", mode="normal")
config.bind("wj", "back -w", mode="normal")
config.bind("tk", "forward -t", mode="normal")
config.bind("wk", "forward -w", mode="normal")
config.bind("ø", "cmd-set-text :")
config.bind("m", 'cmd-set-text :quickmark-add {url:pretty} "', mode="normal")
config.bind("D", "tab-close")
config.bind(",m", "hint links spawn -d mpv {hint-url}", mode="normal")
@@ -73,7 +72,7 @@ c.completion.open_categories = [
c.content.register_protocol_handler = False
c.content.blocking.enabled = True
c.content.fullscreen.window = True
c.content.blocking.method = "adblock"
c.content.blocking.method = "auto"
c.content.blocking.adblock.lists = [
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
@@ -150,13 +149,21 @@ c.input.insert_mode.plugins = True
c.messages.timeout = 5000
c.qt.force_platform = "wayland"
c.qt.highdpi = True
c.qt.args = [
qt_args = [
"disable-features=WebAuth", # makes BankID work
"disable-gpu", # Stops using the GPU for rendering
"disable-gpu-compositing", # Forces CPU compositing
"disable-accelerated-2d-canvas", # Offloads canvas drawing to CPU
"disable-accelerated-video-decode", # Prevents VRAM usage for videos
]
# Disable GPU by default (for AI training), unless QUTE_ENABLE_GPU is set
if os.environ.get("QUTE_ENABLE_GPU") != "1":
qt_args.extend(
[
"disable-gpu", # Stops using the GPU for rendering
"disable-gpu-compositing", # Forces CPU compositing
"disable-accelerated-2d-canvas", # Offloads canvas drawing to CPU
"disable-accelerated-video-decode", # Prevents VRAM usage for videos
]
)
c.qt.args = qt_args
c.scrolling.bar = "always"
c.scrolling.smooth = False
c.session.lazy_restore = False
@@ -190,16 +197,16 @@ c.tabs.undo_stack_size = 1000
c.tabs.width = "15%"
c.url.start_pages = "https://www.google.com/search?hl=en&source=hp"
c.url.default_page = "https://www.google.com/search?hl=en&source=hp"
c.url.searchengines = dict(
DEFAULT="https://www.google.com/search?hl=en&source=hp&q={}",
aw="https://wiki.archlinux.org/?search={}",
ap="https://www.archlinux.org/packages/?q={}",
gh="https://github.com/search?q={}&type=repositories",
ip="https://iplocation.io/ip/{}",
sh="https://explainshell.com/explain?cmd={}",
wi="https://en.wikipedia.org/w/index.php?search={}",
yt="https://yewtu.be/search?q={}",
)
c.url.searchengines = {
"DEFAULT": "https://www.google.com/search?hl=en&source=hp&q={}",
"aw": "https://wiki.archlinux.org/?search={}",
"ap": "https://www.archlinux.org/packages/?q={}",
"gh": "https://github.com/search?q={}&type=repositories",
"ip": "https://iplocation.io/ip/{}",
"sh": "https://explainshell.com/explain?cmd={}",
"wi": "https://en.wikipedia.org/w/index.php?search={}",
"yt": "https://yewtu.be/search?q={}",
}
c.zoom.default = "100%"
# FONTS
+20 -24
View File
@@ -20,6 +20,9 @@ smart_borders on
# Default Font
font pango:Noto Sans Regular 10
# Cursor
seat seat0 xcursor_theme Adwaita 0
# Title format for windows
set $focus #00E5FF
set $unfocused #333333
@@ -182,8 +185,8 @@ bindsym --whole-window --border {
# media keys
bindsym {
# Volume
XF86AudioRaiseVolume exec pamixer -ui 2
XF86AudioLowerVolume exec pamixer -ud 2
XF86AudioRaiseVolume exec pamixer --unmute -i 2
XF86AudioLowerVolume exec pamixer --unmute -d 2
XF86AudioMute exec pamixer --toggle-mute
Pause exec pamixer -ui 2
Print exec pamixer -ud 2
@@ -251,6 +254,7 @@ bindsym {
# Launch the browser
$mod+i exec qutebrowser
$mod+Shift+i exec env QUTE_ENABLE_GPU=1 qutebrowser
# Launch the file explorer
$mod+o exec pcmanfm
@@ -291,17 +295,10 @@ exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CU
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
# Idle configuration
exec swayidle -w \
timeout 1200 'gtklock -d' \
timeout 2400 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
timeout 10 'if pgrep -x gtklock; then swaymsg "output * power off"; fi' \
before-sleep 'gtklock -d'
# Start foot server
exec systemctl --user enable --now foot-server.service
exec {
# Start foot server
exec systemctl --user enable --now foot-server.service
# Set wallpaper
~/.azotebg
@@ -316,21 +313,21 @@ exec {
# night-time color shift
wlsunset -l 59.91:10.76
# persist clipboard after close
wl-clip-persist --clipboard regular --all-mime-type-regex '(?i)^(?!image/x-inkscape-svg).+'
}
exec_always {
pkill -x swaync; exec swaync
pkill -x swayidle; exec swayidle -w \
timeout 1200 'gtklock -d' \
timeout 2400 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep 'gtklock -d' \
lock 'gtklock -d'
# nwg-drawer
nwg-drawer -r -c 7 -is 90 -mb 10 -ml 50 -mr 50 -mt 10
# persist clipboard after close
pkill -x wl-clip-persist
wl-clip-persist --clipboard regular --all-mime-type-regex '(?i)^(?!image/x-inkscape-svg).+'
# enable noisetorch
noisetorch -u
noisetorch -i
}
# ------------------------------------------
@@ -360,9 +357,8 @@ for_window [app_id="org.mozilla.Thunderbird" title="^((?!Mozilla Thunderbird).)*
# steam
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
for_window [app_id="^steam$"] floating enable
for_window [app_id="^Steam$"] floating enable
for_window [app_id="^steam$" title="^Steam$"] floating disable
for_window [app_id="(?i)^steam$"] floating enable
for_window [app_id="(?i)^steam$" title="^Steam$"] floating disable
# Inhibit idle
for_window [app_id="firefox"] inhibit_idle fullscreen
+26 -6
View File
@@ -60,7 +60,7 @@
"format-ok": "Systemd ✓",
"system": true, // Monitor failed systemwide units.
"user": true, // Ignore failed user units.
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 isd'"
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 250x45 systemctl-tui'"
},
// Configuration - modules-right
@@ -82,19 +82,19 @@
"warning": 70,
"critical": 90,
},
"on-click": "footclient --app-id floating_shell --window-size-chars 120x45 -e btop"
"on-click": "footclient --app-id floating_shell --window-size-chars 250x150 -e btop"
},
"temperature": {
"critical-threshold": 80,
"format": " {temperatureC}°C",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 -e watch sensors'"
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x100 -e watch sensors'"
},
"memory": {
"interval": 5,
"format": "{:>3}%",
"on-click": "footclient --app-id floating_shell --window-size-chars 100x100 -e btop",
"on-click": "footclient --app-id floating_shell --window-size-chars 250x150 -e btop",
"states": {
"warning": 70,
"critical": 90
@@ -106,7 +106,7 @@
"interval": 30,
"format": " / {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /'"
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 250x45 gdu -d'"
},
"backlight": {
@@ -132,7 +132,6 @@
},
"on-click": "pavucontrol",
"tooltip-format": "{icon}  {volume}% {format_source}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x12 pulsemixer'",
"on-click-middle": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +5%",
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -5%"
@@ -150,6 +149,27 @@
"format-icons": ["", "", "", "", ""]
},
"custom/notification": {
"tooltip": true,
"format": "<span size='16pt'>{icon}</span>",
"format-icons": {
"notification": "󱅫",
"none": "󰂜",
"dnd-notification": "󰂠",
"dnd-none": "󰪓",
"inhibited-notification": "󰂛",
"inhibited-none": "󰪑",
"dnd-inhibited-notification": "󰂛",
"dnd-inhibited-none": "󰪑"
},
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"on-click": "swaync-client -t -sw",
"on-click-right": "swaync-client -d -sw",
"escape": true
},
"clock": {
"format": "󰅐 {:%H:%M}",
"format-alt": "󰅐 {:%OI:%M %p}",
+21 -11
View File
@@ -1,28 +1,38 @@
[[mgr.prepend_keymap]]
on = "q"
run = "close"
on = "E"
run = "shell 'exiftool %s | less' --block --confirm"
desc = "View file metadata with Exiftool"
[[mgr.prepend_keymap]]
on = "q"
run = "close"
desc = "Close tab"
[[mgr.prepend_keymap]]
on = "l"
run = "plugin smart-enter"
on = "l"
run = "plugin smart-enter"
desc = "Enter the child directory, or open the file"
[[mgr.prepend_keymap]]
on = [ "c", "m" ]
run = "plugin chmod"
on = [ "c", "m" ]
run = "plugin chmod"
desc = "Chmod on selected files"
[[mgr.prepend_keymap]]
on = "F"
run = "plugin smart-filter"
on = "F"
run = "plugin smart-filter"
desc = "Smart filter"
[[mgr.prepend_keymap]]
on = "M"
on = "M"
run = "plugin mount"
[[mgr.prepend_keymap]]
on = "T"
run = "plugin toggle-pane max-preview"
on = "T"
run = "plugin toggle-pane max-preview"
desc = "Maximize or restore the preview pane"
[[mgr.prepend_keymap]]
on = "C"
run = "plugin ouch"
desc = "Compress with ouch"
+85 -7
View File
@@ -4,11 +4,6 @@ show_hidden = true
sort_by = "natural"
ratio = [ 1, 4, 5 ]
[[mgr.prepend_keymap]]
on = "O"
run = "open --interactive"
desc = "Open with... (Interactive menu)"
[preview]
wrap = "yes"
image_delay = 50
@@ -17,14 +12,93 @@ max_height = 1500
[open]
prepend_rules = [
# Directories
{ mime = "inode/directory", use = [ "thunar", "pcmanfm", "open" ] },
# Text & Code
{ url = "*.csv", use = "text" },
{ url = "*.md", use = [ "glow", "nvim", "bat", "open" ] },
{ url = "*.json", use = [ "jq", "nvim", "bat", "open" ] },
{ mime = "text/*", use = [ "nvim", "bat", "open" ] },
{ mime = "inode/x-empty", use = [ "nvim", "open" ] },
# PDF & Documents
{ mime = "application/pdf", use = [ "zathura", "sioyek", "okular", "xournalpp", "chrome", "firefox", "open" ] },
{ mime = "application/vnd.openxmlformats-officedocument.*", use = [ "libreoffice", "calligra", "open" ] },
{ mime = "application/vnd.oasis.opendocument.*", use = [ "libreoffice", "calligra", "open" ] },
# Images
{ mime = "image/heic", use = [ "swappy", "krita", "open" ] },
{ mime = "image/*", use = [ "qimgv", "swappy", "krita", "open" ] },
# Video & Audio
{ mime = "video/*", use = [ "mpv", "vlc", "open" ] },
{ mime = "audio/*", use = [ "quodlibet", "mpv", "vlc", "open" ] },
# Archives
{ mime = "application/zip", use = [ "ouch", "file-roller", "open" ] },
{ mime = "application/x-tar", use = [ "ouch", "file-roller", "open" ] },
{ mime = "application/gzip", use = [ "ouch", "file-roller", "open" ] },
{ mime = "application/x-bzip*", use = [ "ouch", "file-roller", "open" ] },
{ mime = "application/x-7z-compressed", use = [ "ouch", "file-roller", "open" ] },
{ mime = "application/x-rar", use = [ "ouch", "file-roller", "open" ] },
# Web pages
{ mime = "text/html", use = [ "qutebrowser", "firefox", "chrome", "w3m", "open" ] },
# JSON files
# Certificates
{ url = "*.{crt,pem,cer,der}", use = [ "cert", "nvim", "bat", "open" ] },
# Catch-all for any file (allows Exiftool on everything as a fallback)
{ url = "*", use = [ "exiftool", "open" ] },
]
[opener]
# --- Text / Code (Blocking Terminal Apps) ---
text = [
{ run = "bat $@", block = true, desc = "bat" },
{ run = "nvim $@", block = true, desc = "nvim" },
{ run = "bat %s", block = true, desc = "bat" },
{ run = "nvim %s", block = true, desc = "nvim" },
]
nvim = [ { run = "nvim %s", block = true, desc = "Neovim" } ]
bat = [ { run = "bat %s", block = true, desc = "Bat" } ]
glow = [ { run = "glow --pager %s", block = true, desc = "Glow" } ]
jq = [ { run = "jq -C . %s | less -R", block = true, desc = "jq viewer" } ]
cert = [ { run = "openssl x509 -text -noout -in %s | less", block = true, desc = "View Cert (openssl)" } ]
# --- PDFs (Orphaned GUI Apps) ---
zathura = [ { run = "zathura %s", orphan = true, desc = "Zathura" } ]
sioyek = [ { run = "sioyek %s", orphan = true, desc = "Sioyek" } ]
okular = [ { run = "okular %s", orphan = true, desc = "Okular" } ]
xournalpp = [ { run = "xournalpp %s", orphan = true, desc = "Xournal++" } ]
# --- Browsers (Orphaned GUI Apps) ---
chrome = [ { run = "google-chrome-stable %s", orphan = true, desc = "Chrome" } ]
firefox = [ { run = "firefox %s", orphan = true, desc = "Firefox" } ]
qutebrowser = [ { run = "qutebrowser %s", orphan = true, desc = "Qutebrowser" } ]
w3m = [ { run = "w3m %s", orphan = true, desc = "w3m" } ]
# --- Media: Video / Audio (Orphaned GUI Apps) ---
mpv = [ { run = "mpv %s", orphan = true, desc = "MPV" } ]
vlc = [ { run = "vlc %s", orphan = true, desc = "VLC" } ]
quodlibet = [ { run = "quodlibet %s", orphan = true, desc = "quod libet" } ]
# --- Images (Orphaned GUI Apps) ---
qimgv = [ { run = "qimgv %s", orphan = true, desc = "qimgv" } ]
swappy = [ { run = "swappy -f %s", orphan = true, desc = "swappy" } ]
krita = [ { run = "krita %s", orphan = true, desc = "krita" } ]
# --- Office Documents (Orphaned GUI Apps) ---
libreoffice = [ { run = "libreoffice %s", orphan = true, desc = "LibreOffice" } ]
calligra = [ { run = "calligrawords %s", orphan = true, desc = "Calligra" } ]
# --- Archives ---
ouch = [ { run = "ouch d -y %s", desc = "Extract here with ouch" } ]
file-roller = [ { run = "file-roller %s", orphan = true, desc = "File Roller" } ]
# --- Directories (Orphaned GUI Apps) ---
thunar = [ { run = "thunar %s", orphan = true, desc = "Thunar" } ]
pcmanfm = [ { run = "pcmanfm %s", orphan = true, desc = "PCManFM" } ]
[input]
cursor_blink = true
@@ -43,6 +117,10 @@ group = "git"
url = "*/"
run = "git"
[[plugin.prepend_previewers]]
mime = "application/{*zip,tar,bzip2,7z*,rar,xz,zstd,java-archive}"
run = "ouch"
[[plugin.prepend_previewers]]
url = "*/"
run = "eza-preview"
@@ -15,12 +15,12 @@
"interval": 30,
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 gdu -d'"
},
"custom/nvidia": {
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
"format": "󰓅 {}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 nvtop'",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 watch nvidia-smi'",
"interval": 1
},
"modules-right": [
@@ -36,6 +36,7 @@
"battery",
"clock",
"tray",
"custom/power"
"custom/notification",
"custom/power",
]
}
@@ -15,12 +15,12 @@
"interval": 30,
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 gdu -d'"
},
"custom/nvidia": {
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
"format": "󰓅 {}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 nvtop'",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 150x45 watch nvidia-smi'",
"interval": 1
},
"modules-right": [
@@ -36,6 +36,7 @@
"battery",
"clock",
"tray",
"custom/power"
"custom/notification",
"custom/power",
]
}
+2 -1
View File
@@ -20,6 +20,7 @@
"battery",
"clock",
"tray",
"custom/power"
"custom/notification",
"custom/power",
]
}
@@ -20,6 +20,7 @@
"battery",
"clock",
"tray",
"custom/power"
"custom/notification",
"custom/power",
]
}
+7 -11
View File
@@ -52,13 +52,12 @@ installmap = dict(
tmux=("tmux", "urlscan"),
editors=(
"neovim",
"helix",
"ripgrep",
"npm", # required for nvim plugins
"go", # required for vim-hexokinase build
"tree-sitter-cli", # required for nvim treesitter
),
utils=("uv", "ncdu", "unzip", "jq", "bluetui"),
utils=("uv", "gdu", "unzip", "jq", "bluetui"),
gittools=(
"tig",
"diff-so-fancy",
@@ -92,19 +91,18 @@ installmap = dict(
# photos
"qimgv",
"kimageformats5", # heif support
"digikam",
# music
"quodlibet",
"gst-plugins-good", # required deb
# audio
"pamixer",
"noisetorch",
),
filebrowsers=(
"yazi",
"ranger",
"pcmanfm",
"thunar",
"ouch",
"gparted",
"sshfs",
"file-roller",
@@ -122,7 +120,7 @@ installmap = dict(
"python-tldextract",
"bitwarden-cli", # for qutebrowser autofill
),
chat=("discordo-git", "gurk"),
chat=("discord", "gurk"),
emailcalrss=(
"khard", # contacts
"khal", # calendar
@@ -138,8 +136,7 @@ installmap = dict(
"htop", # hardware
"btop", # hardware
"nvtop", # gpu
"lazyjournal", # journald
"isd", # systemd
"systemctl-tui", # systemd
"bandwhich", # network
"sysstat",
),
@@ -301,7 +298,6 @@ def install_tmux(overwrite: bool, reinstall: bool) -> None:
def install_editors(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["editors"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "nvim", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "helix", overwrite)
def install_gittools(overwrite: bool, reinstall: bool) -> None:
@@ -335,6 +331,7 @@ def install_filebrowsers(overwrite: bool, reinstall: bool) -> None:
"yazi-rs/plugins:toggle-pane",
"ahkohd/eza-preview",
"boydaihungst/file-extra-metadata",
"ya pkg add ndtoan96/ouch",
]:
run(f"ya pkg add {plugin}".split())
tgt = ".local/share/applications/userapp-file-roller.desktop"
@@ -350,7 +347,6 @@ def install_netbrowsers(overwrite: bool, reinstall: bool) -> None:
def install_chat(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["chat"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "discordo", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "gurk", overwrite)
@@ -412,12 +408,12 @@ def install_sway(overwrite: bool, reinstall: bool) -> None:
helper_clone_foldercontents(CFG_SRC, CFG_TGT, sub, overwrite)
helper_maybe_copy(CFG_SRC, CFG_TGT, "xdg-terminals.list", overwrite, symlink=True)
helper_maybe_copy(CFG_SRC, CFG_TGT, "mimeapps.list", overwrite, symlink=True)
# swaync configs
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "swaync", overwrite)
# custom sway configs
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "sway", overwrite)
# custom waybar configs
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "waybar", overwrite)
# custom swaync configs
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "swaync", overwrite)
# desktop entries
helper_clone_foldercontents(
HOME_SRC,