]> Freerunner's - dotfiles.git/commitdiff
overhaul directory structure for fzf
authorAndre Ramnitz <tux.rising@gmail.com>
Tue, 19 Dec 2023 19:06:05 +0000 (20:06 +0100)
committerAndre Ramnitz <tux.rising@gmail.com>
Sun, 18 Aug 2024 16:18:52 +0000 (18:18 +0200)
244 files changed:
.gitmodules
OpenRGB/.config/OpenRGB/Normal.orp [deleted file]
OpenRGB/.config/OpenRGB/plugins/settings/gradients/my-gradient1 [deleted file]
OpenRGB/.config/OpenRGB/plugins/settings/virtual-controllers/Normal [deleted file]
OpenRGB/.config/OpenRGB/simple.orp [deleted file]
OpenRGB/.config/OpenRGB/sizes.ors [deleted file]
aerc/.config/aerc/aerc.conf [deleted file]
aerc/.config/aerc/binds.conf [deleted file]
aerc/.config/aerc/scripts/wait-for-creds.sh [deleted file]
bin/.local/bin/16.c [deleted file]
bin/.local/bin/16c [deleted file]
bin/.local/bin/256colors2.pl [deleted file]
bin/.local/bin/_emergeworld [deleted file]
bin/.local/bin/best_makeopts.sh [deleted file]
bin/.local/bin/colors [deleted file]
bin/.local/bin/colr [deleted file]
bin/.local/bin/deadlib [deleted file]
bin/.local/bin/kcr-edit-search [deleted file]
bin/.local/bin/kcr-fzf [deleted file]
bin/.local/bin/kcr-fzf-buffers [deleted file]
bin/.local/bin/kcr-fzf-files [deleted file]
bin/.local/bin/kcr-fzf-grep [deleted file]
bin/.local/bin/kcr-fzf-shell [deleted file]
bin/.local/bin/launch-waybar [deleted file]
bin/.local/bin/loadcolors.sh [deleted file]
bin/.local/bin/mkchroot [deleted file]
bin/.local/bin/rndwallpaper [deleted file]
bin/.local/bin/rofi [deleted symlink]
bin/.local/bin/songinfo [deleted file]
bin/.local/bin/tasks_redirect.sh [deleted file]
bin/.local/bin/winecleaner [deleted file]
cava/.config/cava/config [deleted file]
cava/.config/cava/shaders/bar_spectrum.frag [deleted file]
cava/.config/cava/shaders/northern_lights.frag [deleted file]
cava/.config/cava/shaders/pass_through.vert [deleted file]
config/OpenRGB/Normal.orp [new file with mode: 0644]
config/OpenRGB/plugins/settings/gradients/my-gradient1 [new file with mode: 0644]
config/OpenRGB/plugins/settings/virtual-controllers/Normal [new file with mode: 0644]
config/OpenRGB/simple.orp [new file with mode: 0644]
config/OpenRGB/sizes.ors [new file with mode: 0644]
config/aerc/aerc.conf [new file with mode: 0644]
config/aerc/binds.conf [new file with mode: 0644]
config/aerc/scripts/wait-for-creds.sh [new file with mode: 0755]
config/cava/config [new file with mode: 0644]
config/cava/shaders/bar_spectrum.frag [new file with mode: 0644]
config/cava/shaders/northern_lights.frag [new file with mode: 0644]
config/cava/shaders/pass_through.vert [new file with mode: 0644]
config/fastfetch/config.conf [new file with mode: 0644]
config/fastfetch/config.jsonc [new file with mode: 0644]
config/fish/completions/key-bindings.fish [new file with mode: 0644]
config/fish/config.fish [new file with mode: 0644]
config/fish/fish_variables [new file with mode: 0644]
config/fish/functions/:cat.fish [new file with mode: 0644]
config/fish/functions/K.fish [new file with mode: 0644]
config/fish/functions/a.fish [new file with mode: 0644]
config/fish/functions/df.fish [new file with mode: 0644]
config/fish/functions/emergelog.fish [new file with mode: 0644]
config/fish/functions/fish_prompt.fish [new file with mode: 0644]
config/fish/functions/free.fish [new file with mode: 0644]
config/fish/functions/gcp.fish [new file with mode: 0644]
config/fish/functions/glo.fish [new file with mode: 0644]
config/fish/functions/grep.fish [new file with mode: 0644]
config/fish/functions/gs.fish [new file with mode: 0644]
config/fish/functions/hc.fish [new file with mode: 0644]
config/fish/functions/k.fish [new file with mode: 0644]
config/fish/functions/kl.fish [new file with mode: 0644]
config/fish/functions/ks.fish [new file with mode: 0644]
config/fish/functions/l1.fish [new file with mode: 0644]
config/fish/functions/la.fish [new file with mode: 0644]
config/fish/functions/lg.fish [new file with mode: 0644]
config/fish/functions/lgo.fish [new file with mode: 0644]
config/fish/functions/ll.fish [new file with mode: 0644]
config/fish/functions/ls.fish [new file with mode: 0644]
config/fish/functions/lsblk.fish [new file with mode: 0644]
config/fish/functions/lt.fish [new file with mode: 0644]
config/fish/functions/lw.fish [new file with mode: 0644]
config/fish/functions/r.fish [new file with mode: 0644]
config/fish/functions/stow.fish [new file with mode: 0644]
config/fish/functions/zdiff.fish [new file with mode: 0644]
config/foot/base16 [new submodule]
config/foot/foot.ini [new file with mode: 0644]
config/fuzzel/fuzzel.ini [new file with mode: 0644]
config/hypr/hyprland.conf [new file with mode: 0644]
config/hypr/hyprpaper.conf [new file with mode: 0644]
config/hypr/scripts/daemons.sh [new file with mode: 0755]
config/hypr/scripts/gamemode.sh [new file with mode: 0755]
config/hypr/scripts/powermenu.sh [new file with mode: 0755]
config/hypr/scripts/startup.sh [new file with mode: 0755]
config/hypr/scripts/xdg-desktop-portal.sh [new file with mode: 0755]
config/kak/colors/base16.kak [new file with mode: 0644]
config/kak/colors/dabruin.kak [new symlink]
config/kak/kakrc [new file with mode: 0644]
config/kak/plugins/bookmarks.kak/LICENSE [new file with mode: 0644]
config/kak/plugins/bookmarks.kak/README.md [new file with mode: 0644]
config/kak/plugins/bookmarks.kak/bookmarks.kak [new file with mode: 0644]
config/kak/plugins/dabruin.kak [new submodule]
config/kak/plugins/foot.kak [new submodule]
config/kak/plugins/kak-harpoon [new submodule]
config/kak/plugins/kakoune-filetree [new submodule]
config/kak/plugins/kakoune-find [new submodule]
config/kak/plugins/kakoune-sudo-write [new submodule]
config/kak/plugins/plug.kak/LICENSE [new file with mode: 0644]
config/kak/plugins/plug.kak/README.md [new file with mode: 0644]
config/kak/plugins/plug.kak/rc/plug.kak [new file with mode: 0644]
config/kak/plugins/plug.kak/rc/plug.sh [new file with mode: 0644]
config/kak/plugins/powerline.kak [new submodule]
config/kak/plugins/prelude.kak/CONTRIBUTING [new file with mode: 0644]
config/kak/plugins/prelude.kak/README.md [new file with mode: 0644]
config/kak/plugins/prelude.kak/UNLICENSE [new file with mode: 0644]
config/kak/plugins/prelude.kak/rc/prelude.kak [new file with mode: 0644]
config/kak/plugins/prelude.kak/rc/prelude.sh [new file with mode: 0644]
config/kak/plugins/shellcheck.kak/LICENSE [new file with mode: 0644]
config/kak/plugins/shellcheck.kak/README.md [new file with mode: 0644]
config/kak/plugins/shellcheck.kak/shellcheck.kak [new file with mode: 0644]
config/kak/plugins/smarttab.kak/LICENSE [new file with mode: 0644]
config/kak/plugins/smarttab.kak/README.md [new file with mode: 0644]
config/kak/plugins/smarttab.kak/rc/smarttab-powerline.kak [new file with mode: 0644]
config/kak/plugins/smarttab.kak/rc/smarttab.kak [new file with mode: 0644]
config/mako/config [new file with mode: 0644]
config/mpd/mpd.conf [new file with mode: 0644]
config/ncmpcpp/bindings [new file with mode: 0644]
config/ncmpcpp/config [new file with mode: 0644]
config/qutebrowser/config.py [new file with mode: 0644]
config/qutebrowser/config.qt5-backup.py [new file with mode: 0644]
config/qutebrowser/userscripts/qr [new file with mode: 0755]
config/qutebrowser/userscripts/qute-keepassxc [new file with mode: 0755]
config/qutebrowser/userscripts/view_in_mpv [new file with mode: 0755]
config/ranger/rc.conf [new file with mode: 0644]
config/ranger/scope.sh [new file with mode: 0755]
config/rofi/config.rasi [new file with mode: 0644]
config/rofi/rounded-common.rasi [new file with mode: 0644]
config/rofi/rounded-yellow-dark.rasi [new file with mode: 0644]
config/swappy/config [new file with mode: 0644]
config/waybar/config [new file with mode: 0644]
config/waybar/oldstyle.css [new file with mode: 0644]
config/waybar/style.css [new file with mode: 0644]
fastfetch/.config/fastfetch/config.conf [deleted file]
fastfetch/.config/fastfetch/config.jsonc [deleted file]
fish/.config/fish/completions/key-bindings.fish [deleted file]
fish/.config/fish/config.fish [deleted file]
fish/.config/fish/fish_variables [deleted file]
fish/.config/fish/functions/:cat.fish [deleted file]
fish/.config/fish/functions/K.fish [deleted file]
fish/.config/fish/functions/a.fish [deleted file]
fish/.config/fish/functions/df.fish [deleted file]
fish/.config/fish/functions/emergelog.fish [deleted file]
fish/.config/fish/functions/fish_prompt.fish [deleted file]
fish/.config/fish/functions/free.fish [deleted file]
fish/.config/fish/functions/gcp.fish [deleted file]
fish/.config/fish/functions/glo.fish [deleted file]
fish/.config/fish/functions/grep.fish [deleted file]
fish/.config/fish/functions/gs.fish [deleted file]
fish/.config/fish/functions/hc.fish [deleted file]
fish/.config/fish/functions/k.fish [deleted file]
fish/.config/fish/functions/kl.fish [deleted file]
fish/.config/fish/functions/ks.fish [deleted file]
fish/.config/fish/functions/l1.fish [deleted file]
fish/.config/fish/functions/la.fish [deleted file]
fish/.config/fish/functions/lg.fish [deleted file]
fish/.config/fish/functions/lgo.fish [deleted file]
fish/.config/fish/functions/ll.fish [deleted file]
fish/.config/fish/functions/ls.fish [deleted file]
fish/.config/fish/functions/lsblk.fish [deleted file]
fish/.config/fish/functions/lt.fish [deleted file]
fish/.config/fish/functions/lw.fish [deleted file]
fish/.config/fish/functions/r.fish [deleted file]
fish/.config/fish/functions/stow.fish [deleted file]
fish/.config/fish/functions/zdiff.fish [deleted file]
foot/.config/foot/base16 [deleted submodule]
foot/.config/foot/foot.ini [deleted file]
fuzzel/.config/fuzzel/fuzzel.ini [deleted file]
hypr/.config/hypr/hyprland.conf [deleted file]
hypr/.config/hypr/hyprpaper.conf [deleted file]
hypr/.config/hypr/scripts/daemons.sh [deleted file]
hypr/.config/hypr/scripts/gamemode.sh [deleted file]
hypr/.config/hypr/scripts/powermenu.sh [deleted file]
hypr/.config/hypr/scripts/startup.sh [deleted file]
hypr/.config/hypr/scripts/xdg-desktop-portal.sh [deleted file]
kak/.config/kak/colors/base16.kak [deleted file]
kak/.config/kak/colors/dabruin.kak [deleted symlink]
kak/.config/kak/kakrc [deleted file]
kak/.config/kak/plugins/.build/bookmarks.kak/config [deleted file]
kak/.config/kak/plugins/.build/kak-harpoon/config [deleted file]
kak/.config/kak/plugins/.build/kakoune-smooth-scroll/config [deleted file]
kak/.config/kak/plugins/.build/powerline.kak/config [deleted file]
kak/.config/kak/plugins/.build/smarttab.kak/config [deleted file]
kak/.config/kak/plugins/bookmarks.kak [deleted submodule]
kak/.config/kak/plugins/dabruin.kak [deleted submodule]
kak/.config/kak/plugins/foot.kak [deleted submodule]
kak/.config/kak/plugins/kak-harpoon [deleted submodule]
kak/.config/kak/plugins/kakoune-filetree [deleted submodule]
kak/.config/kak/plugins/kakoune-find [deleted submodule]
kak/.config/kak/plugins/kakoune-sudo-write [deleted submodule]
kak/.config/kak/plugins/plug.kak [deleted submodule]
kak/.config/kak/plugins/powerline.kak [deleted submodule]
kak/.config/kak/plugins/prelude.kak [deleted submodule]
kak/.config/kak/plugins/shellcheck.kak [deleted submodule]
kak/.config/kak/plugins/smarttab.kak [deleted submodule]
local/bin/16.c [new file with mode: 0644]
local/bin/16c [new file with mode: 0755]
local/bin/256colors2.pl [new file with mode: 0755]
local/bin/_emergeworld [new file with mode: 0644]
local/bin/best_makeopts.sh [new file with mode: 0755]
local/bin/colors [new file with mode: 0755]
local/bin/colr [new file with mode: 0755]
local/bin/deadlib [new file with mode: 0755]
local/bin/kcr-edit-search [new file with mode: 0755]
local/bin/kcr-fzf [new file with mode: 0755]
local/bin/kcr-fzf-buffers [new file with mode: 0755]
local/bin/kcr-fzf-files [new file with mode: 0755]
local/bin/kcr-fzf-grep [new file with mode: 0755]
local/bin/kcr-fzf-shell [new file with mode: 0755]
local/bin/launch-waybar [new file with mode: 0755]
local/bin/loadcolors.sh [new file with mode: 0755]
local/bin/mkchroot [new file with mode: 0755]
local/bin/rndwallpaper [new file with mode: 0755]
local/bin/rofi [new symlink]
local/bin/songinfo [new file with mode: 0755]
local/bin/tasks_redirect.sh [new file with mode: 0755]
local/bin/winecleaner [new file with mode: 0755]
mako/.config/mako/config [deleted file]
mpd/.config/mpd/mpd.conf [deleted file]
ncmpcpp/.config/ncmpcpp/bindings [deleted file]
ncmpcpp/.config/ncmpcpp/config [deleted file]
ncmpcpp/.config/ncmpcpp/previews/default_cover.png [deleted file]
ncmpcpp/bindings [deleted file]
ncmpcpp/config [deleted file]
ncmpcpp/previews/Tm9sYQo=.png [deleted file]
ncmpcpp/previews/default_cover.png [deleted file]
qutebrowser/.config/qutebrowser/autoconfig.yml [deleted file]
qutebrowser/.config/qutebrowser/config.py [deleted file]
qutebrowser/.config/qutebrowser/config.qt5-backup.py [deleted file]
qutebrowser/.config/qutebrowser/userscripts/qr [deleted file]
qutebrowser/.config/qutebrowser/userscripts/qute-keepassxc [deleted file]
qutebrowser/.config/qutebrowser/userscripts/view_in_mpv [deleted file]
ranger/.config/ranger/rc.conf [deleted file]
ranger/.config/ranger/scope.sh [deleted file]
rofi/.config/rofi/config.rasi [deleted file]
rofi/.config/rofi/rounded-common.rasi [deleted file]
rofi/.config/rofi/rounded-yellow-dark.rasi [deleted file]
swappy/.config/swappy/config [deleted file]
waybar/.config/waybar/config [deleted file]
waybar/.config/waybar/oldstyle.css [deleted file]
waybar/.config/waybar/style.css [deleted file]

index 07795eb289b38758c52c62d2f95655790b8f4c49..a77a0ddab5393760ae73e3d61bd94c3a3af5903d 100644 (file)
@@ -1,52 +1,55 @@
-[submodule "foot/.config/foot/base16"]
-       path = foot/.config/foot/base16
-       url = https://github.com/tinted-theming/base16-foot
-       master = master
-[submodule "plug.kak"]
-       path = kak/.config/kak/plugins/plug.kak
+[submodule "config/kak/plugins/powerline.kak"]
+       path = config/kak/plugins/powerline.kak
+       url = https://github.com/andreyorst/powerline.kak
+       branch = master
+[submodule "config/kak/plugins/plug.kak"]
+       path = config/kak/plugins/plug.kak
        url = https://github.com/andreyorst/plug.kak
        branch = master
-[submodule "shellcheck.kak"]
-       path = kak/.config/kak/plugins/shellcheck.kak
+[submodule "config/kak/plugins/shellcheck.kak"]
+       path = config/kak/plugins/shellcheck.kak
        url = https://github.com/whereswaldon/shellcheck.kak
        branch = master
-[submodule "prelude.kak"]
-       path = kak/.config/kak/plugins/prelude.kak
+[submodule "config/kak/plugins/prelude.kak"]
+       path = config/kak/plugins/prelude.kak
        url = https://github.com/kakounedotcom/prelude.kak
        branch = master
-[submodule "sudo-write.kak"]
-       path = kak/.config/kak/plugins/sudo-write.kak
+[submodule "config/kak/plugins/sudo-write.kak"]
+       path = config/kak/plugins/sudo-write.kak
        url = https://github.com/occivink/kakoune-sudo-write
        branch = master
-[submodule "smarttab.kak"]
-       path = kak/.config/kak/plugins/smarttab.kak
+[submodule "config/kak/plugins/smarttab.kak"]
+       path = config/kak/plugins/smarttab.kak
        url = https://github.com/andreyorst/smarttab.kak
        branch = master
-[submodule "bookmarks.kak"]
-       path = kak/.config/kak/plugins/bookmarks.kak
+[submodule "config/kak/plugins/bookmarks.kak"]
+       path = config/kak/plugins/bookmarks.kak
        url = https://github.com/Ersikan/bookmarks.kak
        branch = main
-[submodule "foot.kak"]
-       path = kak/.config/kak/plugins/foot.kak
+[submodule "config/kak/plugins/foot.kak"]
+       path = config/kak/plugins/foot.kak
        url = https://github.com/kkga/foot.kak
        branch = master
-[submodule "kakoune-sudo-write"]
-       path = kak/.config/kak/plugins/kakoune-sudo-write
+[submodule "config/kak/plugins/kakoune-sudo-write"]
+       path = config/kak/plugins/kakoune-sudo-write
        url = https://github.com/occivink/kakoune-sudo-write
        branch = master
-[submodule "dabruin.kak"]
-       path = kak/.config/kak/plugins/dabruin.kak
+[submodule "config/kak/plugins/dabruin.kak"]
+       path = config/kak/plugins/dabruin.kak
        url = https://git.sr.ht/~nasmevka/dabruin.kak
        branch = main
-[submodule "kakoune-find"]
-       path = kak/.config/kak/plugins/kakoune-find
+[submodule "config/kak/plugins/kakoune-find"]
+       path = config/kak/plugins/kakoune-find
        url = https://github.com/occivink/kakoune-find
        branch = master
-[submodule "kakounse-tabs"]
-       path = kak/.config/kak/plugins/tabs.kak
+[submodule "config/kak/plugins/tabs.kak"]
+       path = config/kak/plugins/tabs.kak
        url = https://github.com/enricozb/tabs.kak
        branch = main
-[submodule "kak/.config/kak/plugins/kak-harpoon"]
-       path = kak/.config/kak/plugins/kak-harpoon
+[submodule "config/kak/plugins/kak-harpoon"]
+       path = config/kak/plugins/kak-harpoon
        url = https://github.com/raiguard/kak-harpoon
        branch = main
+[submodule "config/foot/base16"]
+       path = config/foot/base16
+       url = https://github.com/tinted-theming/base16-foot
diff --git a/OpenRGB/.config/OpenRGB/Normal.orp b/OpenRGB/.config/OpenRGB/Normal.orp
deleted file mode 100644 (file)
index f8b208c..0000000
Binary files a/OpenRGB/.config/OpenRGB/Normal.orp and /dev/null differ
diff --git a/OpenRGB/.config/OpenRGB/plugins/settings/gradients/my-gradient1 b/OpenRGB/.config/OpenRGB/plugins/settings/gradients/my-gradient1
deleted file mode 100644 (file)
index 6c63396..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "colors": [
-        {
-            "color": "#231557",
-            "position": 0.0
-        },
-        {
-            "color": "#44107a",
-            "position": 0.2800000011920929
-        },
-        {
-            "color": "#ff1361",
-            "position": 0.6700000166893005
-        },
-        {
-            "color": "#fff800",
-            "position": 1.0
-        }
-    ],
-    "rotate": 225,
-    "spread": "Pad",
-    "type": "Conical",
-    "x_offset": 86,
-    "y_offset": 36
-}
\ No newline at end of file
diff --git a/OpenRGB/.config/OpenRGB/plugins/settings/virtual-controllers/Normal b/OpenRGB/.config/OpenRGB/plugins/settings/virtual-controllers/Normal
deleted file mode 100644 (file)
index aebdc9c..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-{
-    "ctrl_zones": [
-        {
-            "controller": {
-                "location": "I2C: /dev/i2c-10, address 0x71",
-                "name": "ENE DRAM",
-                "serial": "",
-                "vendor": "ENE"
-            },
-            "custom_zone_name": "RAM1",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 1,
-                "x": 13,
-                "y": 38
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "I2C: /dev/i2c-10, address 0x73",
-                "name": "ENE DRAM",
-                "serial": "",
-                "vendor": "ENE"
-            },
-            "custom_zone_name": "RAM2",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 1,
-                "x": 15,
-                "y": 38
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "I2C: /dev/i2c-10, address 0x72",
-                "name": "ENE DRAM",
-                "serial": "",
-                "vendor": "ENE"
-            },
-            "custom_zone_name": "RAM4",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 1,
-                "x": 19,
-                "y": 38
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw5",
-                "name": "Razer Chroma Addressable RGB Controller",
-                "serial": "IO2117U08301116       ",
-                "vendor": "Razer"
-            },
-            "custom_zone_name": "Front Dual LED Strips",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 2,
-                "reverse": true,
-                "shape": 1,
-                "x": 62,
-                "y": 3
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw4",
-                "name": "Razer Mouse Bungee V3 Chroma",
-                "serial": "382112U07902334       ",
-                "vendor": "Razer"
-            },
-            "custom_zone_name": "",
-            "settings": {
-                "custom_shape": {
-                    "h": 9,
-                    "led_positions": [
-                        {
-                            "led_num": 0,
-                            "x": 8,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 1,
-                            "x": 7,
-                            "y": 5
-                        },
-                        {
-                            "led_num": 2,
-                            "x": 4,
-                            "y": 6
-                        },
-                        {
-                            "led_num": 3,
-                            "x": 1,
-                            "y": 5
-                        },
-                        {
-                            "led_num": 4,
-                            "x": 0,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 5,
-                            "x": 1,
-                            "y": 1
-                        },
-                        {
-                            "led_num": 6,
-                            "x": 4,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 7,
-                            "x": 7,
-                            "y": 1
-                        }
-                    ],
-                    "w": 9
-                },
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 2,
-                "x": 31,
-                "y": 8
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw12",
-                "name": "ASUS ROG CROSSHAIR VIII DARK HERO",
-                "serial": "9876543210",
-                "vendor": "ASUS"
-            },
-            "custom_zone_name": "",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 1,
-                "x": 54,
-                "y": 36
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw13",
-                "name": "Razer Strider Chroma",
-                "serial": "ST2252V14800417       ",
-                "vendor": "Razer"
-            },
-            "custom_zone_name": "",
-            "settings": {
-                "custom_shape": {
-                    "h": 4,
-                    "led_positions": [
-                        {
-                            "led_num": 0,
-                            "x": 0,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 1,
-                            "x": 1,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 2,
-                            "x": 2,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 3,
-                            "x": 3,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 4,
-                            "x": 4,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 5,
-                            "x": 5,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 6,
-                            "x": 6,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 7,
-                            "x": 7,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 8,
-                            "x": 7,
-                            "y": 1
-                        },
-                        {
-                            "led_num": 9,
-                            "x": 7,
-                            "y": 2
-                        },
-                        {
-                            "led_num": 10,
-                            "x": 7,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 11,
-                            "x": 5,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 12,
-                            "x": 4,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 13,
-                            "x": 3,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 14,
-                            "x": 2,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 15,
-                            "x": 1,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 16,
-                            "x": 0,
-                            "y": 3
-                        },
-                        {
-                            "led_num": 17,
-                            "x": 0,
-                            "y": 2
-                        },
-                        {
-                            "led_num": 18,
-                            "x": 6,
-                            "y": 3
-                        }
-                    ],
-                    "w": 8
-                },
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 2,
-                "x": 13,
-                "y": 10
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw19",
-                "name": "Razer Base Station V2 Chroma",
-                "serial": "382151U07800321       ",
-                "vendor": "Razer"
-            },
-            "custom_zone_name": "",
-            "settings": {
-                "custom_shape": {
-                    "h": 9,
-                    "led_positions": [
-                        {
-                            "led_num": 0,
-                            "x": 10,
-                            "y": 4
-                        },
-                        {
-                            "led_num": 1,
-                            "x": 8,
-                            "y": 7
-                        },
-                        {
-                            "led_num": 2,
-                            "x": 5,
-                            "y": 8
-                        },
-                        {
-                            "led_num": 3,
-                            "x": 2,
-                            "y": 7
-                        },
-                        {
-                            "led_num": 4,
-                            "x": 0,
-                            "y": 4
-                        },
-                        {
-                            "led_num": 5,
-                            "x": 2,
-                            "y": 1
-                        },
-                        {
-                            "led_num": 6,
-                            "x": 5,
-                            "y": 0
-                        },
-                        {
-                            "led_num": 7,
-                            "x": 8,
-                            "y": 1
-                        }
-                    ],
-                    "w": 11
-                },
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 2,
-                "x": 47,
-                "y": 6
-            },
-            "zone_idx": 0
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw12",
-                "name": "ASUS ROG CROSSHAIR VIII DARK HERO",
-                "serial": "9876543210",
-                "vendor": "ASUS"
-            },
-            "custom_zone_name": "",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 0,
-                "x": 0,
-                "y": 0
-            },
-            "zone_idx": 1
-        },
-        {
-            "controller": {
-                "location": "HID: /dev/hidraw5",
-                "name": "Razer Chroma Addressable RGB Controller",
-                "serial": "IO2117U08301116       ",
-                "vendor": "Razer"
-            },
-            "custom_zone_name": "",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 0,
-                "x": 31,
-                "y": 47
-            },
-            "zone_idx": 2
-        },
-        {
-            "controller": {
-                "location": "I2C: /dev/i2c-10, address 0x70",
-                "name": "ENE DRAM",
-                "serial": "",
-                "vendor": "ENE"
-            },
-            "custom_zone_name": "RAM3",
-            "settings": {
-                "custom_shape": null,
-                "led_spacing": 1,
-                "reverse": false,
-                "shape": 1,
-                "x": 17,
-                "y": 38
-            },
-            "zone_idx": 0
-        }
-    ],
-    "grid_settings": {
-        "auto_load": true,
-        "auto_register": true,
-        "grid_size": 1,
-        "h": 64,
-        "live_preview": true,
-        "show_bounds": true,
-        "show_grid": true,
-        "unregister_members": false,
-        "w": 64
-    }
-}
\ No newline at end of file
diff --git a/OpenRGB/.config/OpenRGB/simple.orp b/OpenRGB/.config/OpenRGB/simple.orp
deleted file mode 100644 (file)
index e328c90..0000000
Binary files a/OpenRGB/.config/OpenRGB/simple.orp and /dev/null differ
diff --git a/OpenRGB/.config/OpenRGB/sizes.ors b/OpenRGB/.config/OpenRGB/sizes.ors
deleted file mode 100644 (file)
index da86412..0000000
Binary files a/OpenRGB/.config/OpenRGB/sizes.ors and /dev/null differ
diff --git a/aerc/.config/aerc/aerc.conf b/aerc/.config/aerc/aerc.conf
deleted file mode 100644 (file)
index 69f4025..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-#
-# aerc main configuration
-
-[general]
-#
-# If set to "gpg", aerc will use system gpg binary and keystore for all crypto
-# operations. Otherwise, the internal openpgp implementation will be used.
-#
-# Default: internal
-pgp-provider=internal
-
-# By default, the file permissions of accounts.conf must be restrictive and
-# only allow reading by the file owner (0600). Set this option to true to
-# ignore this permission check. Use this with care as it may expose your
-# credentials.
-#
-# Default: false
-unsafe-accounts-conf=false
-
-[ui]
-index-columns = date<20,name<17,flags>4,subject<*
-column-subject = {{.ThreadPrefix}}{{.Subject}}
-column-date = {{.DateAutoFormat .Date.Local}}
-column-name = {{index (.From | names) 0}}
-column-flags = {{.Flags | join ""}}
-
-dirlist-left = {{.Folder}}
-dirlist-right = {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
-
-#
-# See time.Time#Format at https://godoc.org/time#Time.Format
-#
-# Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)
-timestamp-format=2006-01-02 03:04 PM
-
-#
-# Index-only time format for messages that were received/sent today.
-# If this is not specified, timestamp-format is used instead.
-#
-# Default: "03:04 PM" (12 hour time)
-this-day-time-format=03:04 PM
-
-#
-# Index-only time format for messages that were received/sent within the last
-# 7 days. If this is not specified, timestamp-format is used instead.
-#
-# Default: "Monday 03:04 PM" (Week day + 12 hour time)
-this-week-time-format=Monday 03:04 PM
-
-#
-# Index-only time format for messages that were received/sent this year.
-# If this is not specified, timestamp-format is used instead.
-#
-# Default: "January 02" (Month + month day)
-this-year-time-format=January 02
-
-#
-# Width of the sidebar, including the border.
-#
-# Default: 20
-sidebar-width=28
-
-#
-# Message to display when viewing an empty folder.
-#
-# Default: (no messages)
-empty-message=(no messages)
-
-# Message to display when no folders exists or are all filtered
-#
-# Default: (no folders)
-empty-dirlist=(no folders)
-
-# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
-#
-# Default: false
-mouse-enabled=false
-
-#
-# Ring the bell when new messages are received
-#
-# Default: true
-new-message-bell=true
-
-# Marker to show before a pinned tab's name.
-#
-# Default: `
-pinned-tab-marker='`'
-
-# Delay after which the messages are actually listed when entering a directory.
-# This avoids loading messages when skipping over folders and makes the UI more
-# responsive. If you do not want that, set it to 0s.
-#
-# Default: 200ms
-dirlist-delay=200ms
-
-# Display the directory list as a foldable tree that allows to collapse and
-# expand the folders.
-#
-# Default: false
-dirlist-tree=false
-
-# If dirlist-tree is enabled, set level at which folders are collapsed by
-# default. Set to 0 to disable.
-#
-# Default: 0
-dirlist-collapse=0
-
-# List of space-separated criteria to sort the messages by, see *sort*
-# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
-# reverses that criterion.
-#
-# Example: "from -r date"
-#
-# Default: ""
-sort=
-
-# Moves to next message when the current message is deleted
-#
-# Default: true
-next-message-on-delete=true
-
-# The directories where the stylesets are stored. It takes a colon-separated
-# list of directories. If this is unset or if a styleset cannot be found, the
-# following paths will be used as a fallback in that order:
-#
-#   ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
-#   ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
-#   /usr/local/share/aerc/stylesets
-#   /usr/share/aerc/stylesets
-#
-# default: ""
-stylesets-dirs=
-
-# Uncomment to use box-drawing characters for vertical and horizontal borders.
-#
-# Default: spaces
-# border-char-vertical=│
-# border-char-horizontal=─
-
-# Sets the styleset to use for the aerc ui elements.
-#
-# Default: default
-styleset-name=default
-
-# Activates fuzzy search in commands and their arguments: the typed string is
-#   searched in the command or option in any position, and need not be
-#   consecutive characters in the command or option.
-#fuzzy-complete=false
-
-# How long to wait after the last input before auto-completion is triggered.
-#
-# Default: 250ms
-completion-delay=250ms
-
-#
-# Global switch for completion popovers
-#
-# Default: true
-completion-popovers=true
-
-# Uncomment to use UTF-8 symbols to indicate PGP status of messages
-#
-# Default: ASCII
-#icon-unencrypted=
-#icon-encrypted=✔
-#icon-signed=✔
-#icon-signed-encrypted=✔
-#icon-unknown=✘
-#icon-invalid=⚠
-
-#[ui:account=foo]
-#
-# Enable a threaded view of messages. If this is not supported by the backend
-# (IMAP server or notmuch), threads will be built by the client.
-#
-# Default: false
-#threading-enabled=false
-
-# Force client-side thread building
-#
-# Default: false
-#force-client-threads=false
-
-# Debounce client-side thread building
-#
-# Default: 50ms
-#client-threads-delay=50ms
-
-[statusline]
-status-columns = left<*,right>*
-column-left = [{{.Account}}] {{.StatusInfo}}
-column-right = {{.TrayInfo}}
-
-# Specifies the separator between grouped statusline elements.
-#
-# Default: " | "
-# separator=
-
-# Defines the mode for displaying the status elements.
-# Options: text, icon
-#
-# Default: text
-# display-mode=
-
-[viewer]
-#
-# Specifies the pager to use when displaying emails. Note that some filters
-# may add ANSI codes to add color to rendered emails, so you may want to use a
-# pager which supports ANSI codes.
-#
-# Default: less -R
-pager=less -R
-
-#
-# If an email offers several versions (multipart), you can configure which
-# mimetype to prefer. For example, this can be used to prefer plaintext over
-# html emails.
-#
-# Default: text/plain,text/html
-alternatives=text/plain,text/html
-
-#
-# Default setting to determine whether to show full headers or only parsed
-# ones in message viewer.
-#
-# Default: false
-show-headers=false
-
-#
-# Layout of headers when viewing a message. To display multiple headers in the
-# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
-# none of their specified headers are present in the message.
-#
-# Default: From|To,Cc|Bcc,Date,Subject
-header-layout=From|To,Cc|Bcc,Date,Subject
-
-# Whether to always show the mimetype of an email, even when it is just a single part
-#
-# Default: false
-always-show-mime=false
-
-# Parses and extracts http links when viewing a message. Links can then be
-# accessed with the open-link command.
-#
-# Default: true
-parse-http-links=true
-
-[compose]
-#
-# Specifies the command to run the editor with. It will be shown in an embedded
-# terminal, though it may also launch a graphical window if the environment
-# supports it. Defaults to $EDITOR, or vi.
-editor=
-
-#
-# Default header fields to display when composing a message. To display
-# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
-#
-# Default: To|From,Subject
-header-layout=To|From,Subject
-
-#
-# Specifies the command to be used to tab-complete email addresses. Any
-# occurrence of "%s" in the address-book-cmd will be replaced with what the
-# user has typed so far.
-#
-# The command must output the completions to standard output, one completion
-# per line. Each line must be tab-delimited, with an email address occurring as
-# the first field. Only the email address field is required. The second field,
-# if present, will be treated as the contact name. Additional fields are
-# ignored.
-#
-# This parameter can also be set per account in accounts.conf.
-address-book-cmd=
-
-#
-# Allow to address yourself when replying
-#
-# Default: true
-reply-to-self=true
-
-[filters]
-#
-# Filters allow you to pipe an email body through a shell command to render
-# certain emails differently, e.g. highlighting them with ANSI escape codes.
-#
-# The first filter which matches the email's mimetype will be used, so order
-# them from most to least specific.
-#
-# You can also match on non-mimetypes, by prefixing with the header to match
-# against (non-case-sensitive) and a comma, e.g. subject,text will match a
-# subject which contains "text". Use header,~regex to match against a regex.
-#subject,~^\[PATCH=colordiff
-text/plain=sed 's/^>\+.*/\x1b[36m&\x1b[0m/'
-#text/html=pandoc -f html -t plain
-#text/html=w3m -dump -I UTF-8 -T text/html
-#image/*=catimg -w $(tput cols) -
-
-[triggers]
-#
-# Triggers specify commands to execute when certain events occur.
-#
-# Example:
-# new-email=exec notify-send "New email from %n" "%s"
-
-#
-# Executed when a new email arrives in the selected folder
-new-email=
-
-[templates]
-# Templates are used to populate email bodies automatically.
-#
-
-# The directories where the templates are stored. It takes a colon-separated
-# list of directories. If this is unset or if a template cannot be found, the
-# following paths will be used as a fallback in that order:
-#
-#   ${XDG_CONFIG_HOME:-~/.config}/aerc/templates
-#   ${XDG_DATA_HOME:-~/.local/share}/aerc/templates
-#   /usr/local/share/aerc/templates
-#   /usr/share/aerc/templates
-#
-# default: ""
-template-dirs=
-
-# The default template to be used for new messages.
-#
-# default: new_message
-new-message=new_message
-
-# The default template to be used for quoted replies.
-#
-# default: quoted_reply
-quoted-reply=quoted_reply
-
-# The default template to be used for forward as body.
-#
-# default: forward_as_body
-forwards=forward_as_body
diff --git a/aerc/.config/aerc/binds.conf b/aerc/.config/aerc/binds.conf
deleted file mode 100644 (file)
index cb5ffd3..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-# Binds are of the form <key sequence> = <command to run>
-# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
-# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
-<C-t> = :term<Enter>
-? = :help keys<Enter>
-
-[messages]
-q = :quit<Enter>
-
-j = :next<Enter>
-<Down> = :next<Enter>
-<C-d> = :next 50%<Enter>
-<C-f> = :next 100%<Enter>
-<PgDn> = :next 100%<Enter>
-
-k = :prev<Enter>
-<Up> = :prev<Enter>
-<C-u> = :prev 50%<Enter>
-<C-b> = :prev 100%<Enter>
-<PgUp> = :prev 100%<Enter>
-g = :select 0<Enter>
-G = :select -1<Enter>
-
-J = :next-folder<Enter>
-K = :prev-folder<Enter>
-H = :collapse-folder<Enter>
-L = :expand-folder<Enter>
-
-v = :mark -t<Enter>
-V = :mark -v<Enter>
-
-T = :toggle-threads<Enter>
-
-<Enter> = :view<Enter>
-d = :prompt 'Really delete this message?' 'delete-message'<Enter>
-D = :delete<Enter>
-A = :archive flat<Enter>
-
-C = :compose<Enter>
-
-rr = :reply -a<Enter>
-rq = :reply -aq<Enter>
-Rr = :reply<Enter>
-Rq = :reply -q<Enter>
-
-c = :cf<space>
-$ = :term<space>
-! = :term<space>
-| = :pipe<space>
-
-/ = :search<space>
-\ = :filter<space>
-n = :next-result<Enter>
-N = :prev-result<Enter>
-<Esc> = :clear<Enter>
-
-[messages:folder=Drafts]
-<Enter> = :recall<Enter>
-
-[view]
-/ = :toggle-key-passthrough<Enter>/
-q = :close<Enter>
-O = :open<Enter>
-S = :save<space>
-| = :pipe<space>
-D = :delete<Enter>
-A = :archive flat<Enter>
-
-<C-l> = :open-link <space>
-
-f = :forward<Enter>
-rr = :reply -a<Enter>
-rq = :reply -aq<Enter>
-Rr = :reply<Enter>
-Rq = :reply -q<Enter>
-
-H = :toggle-headers<Enter>
-<C-k> = :prev-part<Enter>
-<C-j> = :next-part<Enter>
-J = :next<Enter>
-K = :prev<Enter>
-
-[view::passthrough]
-$noinherit = true
-$ex = <C-x>
-<Esc> = :toggle-key-passthrough<Enter>
-
-[compose]
-# Keybindings used when the embedded terminal is not selected in the compose
-# view
-$ex = <C-x>
-<C-k> = :prev-field<Enter>
-<C-j> = :next-field<Enter>
-<tab> = :next-field<Enter>
-
-[compose::editor]
-# Keybindings used when the embedded terminal is selected in the compose view
-$noinherit = true
-$ex = <C-x>
-<C-k> = :prev-field<Enter>
-<C-j> = :next-field<Enter>
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
-
-[compose::review]
-# Keybindings used when reviewing a message to be sent
-y = :send<Enter>
-n = :abort<Enter>
-p = :postpone<Enter>
-q = :choose -o d discard abort -o p postpone postpone<Enter>
-e = :edit<Enter>
-a = :attach<space>
-d = :detach<space>
-
-[terminal]
-$noinherit = true
-$ex = <C-x>
-
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
diff --git a/aerc/.config/aerc/scripts/wait-for-creds.sh b/aerc/.config/aerc/scripts/wait-for-creds.sh
deleted file mode 100755 (executable)
index 7ab4f10..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-secret-tool lookup "$1" "$2"
-# wait until the password is available
-while [ $? != 0 ]; do
-       secret-tool lookup "$1" "$2"
-done
-
diff --git a/bin/.local/bin/16.c b/bin/.local/bin/16.c
deleted file mode 100644 (file)
index 325f2d0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdio.h>
-
-static void aput( char* c, char bg_col, char fg_col )
-{  int bg, fg;
-   if( bg_col > 7 ) bg = 100 + bg_col-8;
-   else             bg =  40 + bg_col;
-   if( fg_col > 7 ) fg =  90 + fg_col-8;
-   else             fg =  30 + fg_col;
-   printf( "\033[%i;%im%s\033[0;0m", fg, bg, c );
-}
-
-int main( void )
-{  int bg, fg;
-   
-   for( fg = 0; fg <  8; fg += 1 ) aput("    ", fg, 0); putchar('\n');
-   for( fg = 8; fg < 16; fg += 1 ) aput("    ", fg, 0); putchar('\n');
-   putchar('\n'); 
-   for( bg = 0; bg < 16; bg += 1 )
-   {  for( fg = 0; fg < 16; fg += 1 )
-      {   aput( "10", bg, fg );  }
-      putchar('\n');
-   }
-}
-
diff --git a/bin/.local/bin/16c b/bin/.local/bin/16c
deleted file mode 100755 (executable)
index 76c10fb..0000000
Binary files a/bin/.local/bin/16c and /dev/null differ
diff --git a/bin/.local/bin/256colors2.pl b/bin/.local/bin/256colors2.pl
deleted file mode 100755 (executable)
index 2a880bd..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/perl
-# $XTermId: 256colors2.pl,v 1.10 2009/10/10 14:45:26 tom Exp $
-# -----------------------------------------------------------------------------
-# this file is part of xterm
-#
-# Copyright 1999-2007,2009 by Thomas E. Dickey
-# Copyright 2002 by Steve Wall
-# Copyright 1999 by Todd Larason
-# 
-#                         All Rights Reserved
-# 
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-# 
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-# 
-# Except as contained in this notice, the name(s) of the above copyright
-# holders shall not be used in advertising or otherwise to promote the
-# sale, use or other dealings in this Software without prior written
-# authorization.
-# -----------------------------------------------------------------------------
-#
-# use the resources for colors 0-15 - usually more-or-less a
-# reproduction of the standard ANSI colors, but possibly more
-# pleasing shades
-
-use strict;
-
-use Getopt::Std;
-
-our ($opt_h, $opt_q, $opt_r);
-&getopts('hqr') || die("Usage: $0 [-q] [-r]");
-die("Usage: $0 [options]\n
-Options:
-  -h  display this message
-  -q  quieter output by merging all palette initialization
-  -r  display the reverse of the usual palette
-") if ( $opt_h);
-
-our ($red, $green, $blue);
-our ($gray, $level, $color);
-
-sub map_cube($) {
-       my $value = $_[0];
-       $value = (5 - $value) if defined($opt_r);
-       return $value;
-}
-
-sub map_gray($) {
-       my $value = $_[0];
-       $value = (23 - $value) if defined($opt_r);
-       return $value;
-}
-
-printf("\x1b]4") if ($opt_q);
-# colors 16-231 are a 6x6x6 color cube
-for ($red = 0; $red < 6; $red++) {
-    for ($green = 0; $green < 6; $green++) {
-       for ($blue = 0; $blue < 6; $blue++) {
-           printf("\x1b]4") unless ($opt_q);
-           printf(";%d;rgb:%2.2x/%2.2x/%2.2x",
-                  16 + (map_cube($red) * 36) + (map_cube($green) * 6) + map_cube($blue),
-                  ($red ? ($red * 40 + 55) : 0),
-                  ($green ? ($green * 40 + 55) : 0),
-                  ($blue ? ($blue * 40 + 55) : 0));
-           printf("\x1b\\") unless ($opt_q);
-       }
-    }
-}
-
-# colors 232-255 are a grayscale ramp, intentionally leaving out
-# black and white
-for ($gray = 0; $gray < 24; $gray++) {
-    $level = (map_gray($gray) * 10) + 8;
-    printf("\x1b]4") unless ($opt_q);
-    printf(";%d;rgb:%2.2x/%2.2x/%2.2x",
-          232 + $gray, $level, $level, $level);
-    printf("\x1b\\") unless ($opt_q);
-}
-printf("\x1b\\") if ($opt_q);
-
-
-# display the colors
-
-# first the system ones:
-print "System colors:\n";
-for ($color = 0; $color < 8; $color++) {
-    print "\x1b[48;5;${color}m  ";
-}
-print "\x1b[0m\n";
-for ($color = 8; $color < 16; $color++) {
-    print "\x1b[48;5;${color}m  ";
-}
-print "\x1b[0m\n\n";
-
-# now the color cube
-print "Color cube, 6x6x6:\n";
-for ($green = 0; $green < 6; $green++) {
-    for ($red = 0; $red < 6; $red++) {
-       for ($blue = 0; $blue < 6; $blue++) {
-           $color = 16 + ($red * 36) + ($green * 6) + $blue;
-           print "\x1b[48;5;${color}m  ";
-       }
-       print "\x1b[0m ";
-    }
-    print "\n";
-}
-
-
-# now the grayscale ramp
-print "Grayscale ramp:\n";
-for ($color = 232; $color < 256; $color++) {
-    print "\x1b[48;5;${color}m  ";
-}
-print "\x1b[0m\n";
diff --git a/bin/.local/bin/_emergeworld b/bin/.local/bin/_emergeworld
deleted file mode 100644 (file)
index b924b08..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-case "$1" in
-    "start")
-        date +%s > $HOME/.cache/emergestart && emerge -e --keep-going @world
-        ;;
-    "resume")
-       starttime=$(cat $HOME/.cache/emergestart)
-
-       eix '-I*' --format '<installedversions:DATESORT>' | cut -f1,3 >tmplist
-       echo $starttime >>tmplist
-       sort -n tmplist | sed -e/$starttime/q | sed -e'/[0-9]*\t*/s///' | sort | comm -23 - <(sort omitlist) | comm -23 - <(sort /etc/portage/profile/package.provided) >buildlist
-       rm tmplist
-       emerge -a `cat buildlist` --keep-going
diff --git a/bin/.local/bin/best_makeopts.sh b/bin/.local/bin/best_makeopts.sh
deleted file mode 100755 (executable)
index 865e283..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-cpupower frequency-set -g performance -r
-
-PACKAGE="kde-frameworks/plasma"
-
-DISTDIR="/tmp/" emerge -f ${PACKAGE}
-
-for i in {1..32}
-do
-       echo 1 > /proc/sys/vm/drop_caches
-       time DISTDIR="/tmp" EMERGE_DEFAULT_OPTS="" MAKEOPTS="-j${i}" emerge -q1OB ${PACKAGE}
-       echo -ne "\n\n\n"
-done
-
-cpupower frequency-set -g schedutil -r
-
diff --git a/bin/.local/bin/colors b/bin/.local/bin/colors
deleted file mode 100755 (executable)
index b6b7132..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#! /bin/bash
-set -e
-
-
-mainFunction () {
-    echo
-    printColors
-    printGuidelines
-}
-
-
-printColor () {
-    local color="${1}"
-
-    printf "\033[1;4%sm     " "${color}"
-    printf "\033[0m    "
-    printf "\033[1;3%smSampleText  " "${color}"
-    printf "\033[0;3%smSampleText  " "${color}"
-    printf "\033[0m\n"
-}
-
-
-printColors () {
-    local color
-    # 0 black
-    # 1 red
-    # 2 green
-    # 3 yellow
-    # 4 blue
-    # 5 magenta / orange
-    # 6 cyan / purple
-    # 7 white
-
-    for color in 0 7; do
-        printColor "${color}"
-    done
-    echo
-
-    for color in 4 5 6; do
-        printColor "${color}"
-    done
-    echo
-
-    for color in 2 3 1; do
-        printColor "${color}"
-    done
-    echo
-}
-
-
-printGuidelines () {
-    echo "A good palette has:"
-    echo "- All colors easy to read."
-    echo "- Similar eye catchiness within the same group, except for monochromes."
-    echo "- Similar or greater eye catchiness in upper groups, including this text."
-    echo "- Similar color within the same line."
-    echo "- The last group as: green yellow red."
-    echo
-}
-
-
-mainFunction
diff --git a/bin/.local/bin/colr b/bin/.local/bin/colr
deleted file mode 100755 (executable)
index 90c0b05..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/bash
-
-case $1 in
-    1)
-        set -e
-
-
-        mainFunction () {
-            echo
-            printColors
-            printGuidelines
-        }
-
-
-        printColor () {
-            local color="${1}"
-
-            printf "\033[1;4%sm     " "${color}"
-            printf "\033[0m    "
-            printf "\033[1;3%smSampleText  " "${color}"
-            printf "\033[0;3%smSampleText  " "${color}"
-            printf "\033[0m\n"
-        }
-
-
-        printColors () {
-            local color
-            # 0 black
-            # 1 red
-            # 2 green
-            # 3 yellow
-            # 4 blue
-            # 5 magenta / orange
-            # 6 cyan / purple
-            # 7 white
-
-            for color in 0 7; do
-                printColor "${color}"
-            done
-            echo
-
-            for color in 4 5 6; do
-                printColor "${color}"
-            done
-            echo
-
-            for color in 2 3 1; do
-                printColor "${color}"
-            done
-            echo
-        }
-
-
-        printGuidelines () {
-            echo "A good palette has:"
-            echo "- All colors easy to read."
-            echo "- Similar eye catchiness within the same group, except for monochromes."
-            echo "- Similar or greater eye catchiness in upper groups, including this text."
-            echo "- Similar color within the same line."
-            echo "- The last group as: green yellow red."
-            echo
-        }
-
-
-        mainFunction;;
-
-    2)
-        echo -e "\033[0mNC (No color)"
-        echo -e "\033[1;37mWHITE\t\033[0;30mBLACK"
-        echo -e "\033[0;34mBLUE\t\033[1;34mLIGHT_BLUE"
-        echo -e "\033[0;32mGREEN\t\033[1;32mLIGHT_GREEN"
-        echo -e "\033[0;36mCYAN\t\033[1;36mLIGHT_CYAN"
-        echo -e "\033[0;31mRED\t\033[1;31mLIGHT_RED"
-        echo -e "\033[0;35mPURPLE\t\033[1;35mLIGHT_PURPLE"
-        echo -e "\033[0;33mYELLOW\t\033[1;33mLIGHT_YELLOW"
-        echo -e "\033[1;30mGRAY\t\033[0;37mLIGHT_GRAY";;
-    3)
-        # Description:
-        #
-        #    Prints a color table of 8bg * 8fg * 2 states (regular/bold)
-        #
-        # Copyright:
-        #
-        #    (C) 2009 Wolfgang Frisch <xororand@unfoog.de>
-        #
-        # License:
-        #
-        #    This program is free software: you can redistribute it and/or modify
-        #    it under the terms of the GNU General Public License as published by
-        #    the Free Software Foundation, either version 3 of the License, or
-        #    (at your option) any later version.
-        #
-        #    This program is distributed in the hope that it will be useful,
-        #    but WITHOUT ANY WARRANTY; without even the implied warranty of
-        #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-        #    GNU General Public License for more details.
-        #
-        #    You should have received a copy of the GNU General Public License
-        #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-        echo
-        echo Table for 16-color terminal escape sequences.
-        echo Replace ESC with \\033 in bash.
-        echo
-        echo "Background | Foreground colors"
-        echo "---------------------------------------------------------------------"
-        for((bg=40;bg<=47;bg++)); do
-            for((bold=0;bold<=1;bold++)) do
-                echo -en "\033[0m"" ESC[${bg}m   | "
-                for((fg=30;fg<=37;fg++)); do
-                    if [ $bold == "0" ]; then
-                        echo -en "\033[${bg}m\033[${fg}m [${fg}m  "
-                    else
-                        echo -en "\033[${bg}m\033[1;${fg}m [1;${fg}m"
-                    fi
-                done
-                echo -e "\033[0m"
-            done
-            echo "--------------------------------------------------------------------- "
-        done
-
-        echo
-        echo;;
-    4)
-        for colour in {1..225}
-            do echo -en "\033[38;5;${colour}m38;5;${colour} \n"
-            done | column -x;;
-    *)
-        colr 1
-        echo "Enter a number [1-4] to specify, which demo to run.";;
-esac
-
diff --git a/bin/.local/bin/deadlib b/bin/.local/bin/deadlib
deleted file mode 100755 (executable)
index 1ccf188..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u;
-
diff --git a/bin/.local/bin/kcr-edit-search b/bin/.local/bin/kcr-edit-search
deleted file mode 100755 (executable)
index c510649..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-# Open files from search results.
-#
-# Usage:
-#
-# kcr edit-search [input: <file>:<line>:<column>:<text>]
-
-# Execute the following Kakoune commands.
-#
-# Input: <file>:<line>:<column>:<text>
-# Output: <file>␤<line>␤<column>
-select_each_line='<a-s>_'
-select_search_fields='s^(.+?):(\d+):(\d+):(.+?)$<ret>'
-save_selections='Z'
-select_file_save_and_restore='1s<ret>"fZz'
-select_line_save_and_restore='2s<ret>"f<a-Z>az'
-select_column_save_and_restore='3s<ret>"f<a-Z>az'
-select_data='"fz'
-prepare_output='y%<a-R>a<ret><esc>'
-delete_end_of_file='ged'
-
-kak -f "${select_each_line}${select_search_fields}${save_selections}${select_file_save_and_restore}${select_line_save_and_restore}${select_column_save_and_restore}${select_data}${prepare_output}${delete_end_of_file}" |
-
-while read file; read line; read column; do
-  kcr edit "$file" "+$line:$column"
-done
diff --git a/bin/.local/bin/kcr-fzf b/bin/.local/bin/kcr-fzf
deleted file mode 100755 (executable)
index 5af5259..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-"kcr-fzf-$@"
diff --git a/bin/.local/bin/kcr-fzf-buffers b/bin/.local/bin/kcr-fzf-buffers
deleted file mode 100755 (executable)
index 71efdfe..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Open buffers.
-#
-# Usage:
-#
-# kcr fzf buffers [patterns]
-
-# – fzf (https://github.com/junegunn/fzf)
-# – bat (https://github.com/sharkdp/bat)
-
-kcr get --raw --value buflist |
-grep -F "$*" |
-fzf --preview 'kcr cat --raw {} | bat --file-name {} --style=numbers --color=always --line-range :500' --header='Select a buffer to open' --prompt='(b)>' |
-
-# Open buffers
-while read name; do
-  kcr send buffer "$name"
-done
diff --git a/bin/.local/bin/kcr-fzf-files b/bin/.local/bin/kcr-fzf-files
deleted file mode 100755 (executable)
index 3253bb8..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Open files.
-#
-# Usage:
-#
-# kcr fzf files [paths]
-
-# – fzf (https://github.com/junegunn/fzf)
-# – fd (https://github.com/sharkdp/fd)
-# – bat (https://github.com/sharkdp/bat)
-
-fd --type file . "$@" |
-fzf --preview 'bat --style=numbers --color=always --line-range :500 {}' --header='Select a file to open' --prompt='(f)>' |
-
-# Open files
-while read file; do
-  kcr edit "$file"
-done
diff --git a/bin/.local/bin/kcr-fzf-grep b/bin/.local/bin/kcr-fzf-grep
deleted file mode 100755 (executable)
index e3605c8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# Open files by content.
-#
-# Usage:
-#
-# kcr fzf grep [paths]
-
-# – fzf (https://github.com/junegunn/fzf)
-# – ripgrep (https://github.com/BurntSushi/ripgrep)
-
-# Not pretty but robust.
-# https://github.com/junegunn/fzf/issues/2581
-export PATHS_PATH=$(mktemp)
-trap 'rm "$PATHS_PATH"' EXIT
-for path do
-  echo "$path" >> "$PATHS_PATH"
-done
-
-SHELL=sh fzf --phony --delimiter ':' --ansi --bind 'change:reload(while read path; do set -- "$@" "$path"; done < "$PATHS_PATH"; rg --color=always --column --with-filename --fixed-strings -- {q} "$@" || true),enter:execute(kcr edit {1} +{2}:{3})+abort' --preview 'highlight_line={2} line_range_begin=$((line = highlight_line - (FZF_PREVIEW_LINES / 4) && line < 1 ? 1 : line)) line_range_end=$((line_range_begin + FZF_PREVIEW_LINES)) && bat --style=numbers --color=always --line-range "$line_range_begin:$line_range_end" --highlight-line {2} {1} 2> /dev/null' --header='Select a file to open' --prompt='(g)>'
diff --git a/bin/.local/bin/kcr-fzf-shell b/bin/.local/bin/kcr-fzf-shell
deleted file mode 100755 (executable)
index 33faa3a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-# Start an interactive shell.
-#
-# Usage:
-#
-# kcr fzf shell [command] [arguments]
-
-# – fzf (https://github.com/junegunn/fzf)
-
-set_environment() {
-  session=$1 client=${2#null} buffer_name=${3#null} working_directory=$4
-}
-
-# Run fzf with the session list
-rows=$(
-  kcr list --raw |
-  fzf --header='Select a session to switch to' --prompt='(s)>'
-)
-
-IFS='
-'
-for row in $rows; do
-  IFS='        '
-  set_environment $row
-
-  # Start an interactive shell
-  KAKOUNE_SESSION=$session KAKOUNE_CLIENT=$client kcr shell "$@"
-done
diff --git a/bin/.local/bin/launch-waybar b/bin/.local/bin/launch-waybar
deleted file mode 100755 (executable)
index 9eee56c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/style.css"
-
-trap "killall waybar" EXIT
-
-while true; do
-    waybar &
-    inotifywait -e create,modify $CONFIG_FILES
-    killall waybar
-done
-
diff --git a/bin/.local/bin/loadcolors.sh b/bin/.local/bin/loadcolors.sh
deleted file mode 100755 (executable)
index 5a4a1dd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-openrgb -p simple
-
diff --git a/bin/.local/bin/mkchroot b/bin/.local/bin/mkchroot
deleted file mode 100755 (executable)
index 6a5f0b2..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-
-if [ "$UID" != "0" ]
-then
-     echo "You have to be root" >&2
-     exit 1
-fi
-
-CHROOT=$1
-
-if [ ! -f $CHROOT.in ]
-then
-     for mnt in /dev /dev/pts /proc /sys
-     do
-          echo "-- Mounting $mnt on $CHROOT/$mnt"
-          mount -o bind $mnt $CHROOT/$mnt || exit 1
-     done
-
-     if [ -f $CHROOT.shared ]
-     then
-          cat $CHROOT.shared | while read entry
-          do
-               folder=${entry%:*}
-               mnt=${entry#*:}
-
-               echo "-- Mounting $folder on $CHROOT/$mnt"
-               mkdir -p $CHROOT/$mnt || exit 1
-               mount -o bind $folder $CHROOT/$mnt || exit 1
-          done
-     fi
-
-     echo "1" > $CHROOT.in
-else
-     n=`cat $CHROOT.in`
-     let n=$n+1
-     echo "$n" > $CHROOT.in
-fi
-
-echo "-- Entering chroot"
-chroot $CHROOT /usr/bin/env HOME=/root TERM=$TERM /bin/bash --login +h || exit 1;
-
-n=`cat $CHROOT.in`
-let n=$n-1
-
-if [ "$n" = "0" ]
-then
-     for umnt in /sys /proc /dev/pts /dev
-     do
-          echo "-- Umounting $CHROOT/$umnt"
-          umount $CHROOT/$umnt || exit 1
-     done
-
-     if [ -f $CHROOT.shared ]
-     then
-          cat $CHROOT.shared | while read entry
-          do
-               mnt=${entry#*:}
-
-               echo "-- Umounting $CHROOT/$mnt"
-               umount $CHROOT/$mnt || exit 1
-          done
-     fi
-
-     rm $CHROOT.in
-else
-     echo "$n" > $CHROOT.in
-fi
-
diff --git a/bin/.local/bin/rndwallpaper b/bin/.local/bin/rndwallpaper
deleted file mode 100755 (executable)
index 5732edb..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-WALLDIR="$HOME/Bilder/Wallpapers"
-
-# set random wallpaper
-case "$1" in
-    dblquote)
-        find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1 | sed 's/^/"/;s/$/"/'
-        ;;
-    quote)
-        find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1 | sed "s/^/'/;s/$/'/"
-        ;;
-    swww)
-        swww img "$(find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1)"
-        ;;
-    *)
-        find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1
-        ;;
-esac
-
diff --git a/bin/.local/bin/rofi b/bin/.local/bin/rofi
deleted file mode 120000 (symlink)
index 0253838..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/wofi
\ No newline at end of file
diff --git a/bin/.local/bin/songinfo b/bin/.local/bin/songinfo
deleted file mode 100755 (executable)
index d6d2047..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-music_dir="/mnt/multimedia/Musik"
-previewdir="$HOME/.config/ncmpcpp/previews"
-filename="$(mpc --format "$music_dir"/%file% current)"
-previewname="$previewdir/$(mpc --format %album% current | base64).png"
-
-[ -e "$previewname" ] || ffmpeg -y -i "$filename" -an -vf scale=128:128 "$previewname" > /dev/null 2>&1
-
-notify-send -r 27072 "Now Playing" "$(mpc --format '%title% \n%artist% - %album%' current)" -i "$previewname"
diff --git a/bin/.local/bin/tasks_redirect.sh b/bin/.local/bin/tasks_redirect.sh
deleted file mode 100755 (executable)
index 904b071..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/bash
-
-echo "mounting the cpuset filesystem"
-if ! [ -d /dev/cpuset ]; then
-  mkdir /dev/cpuset
-  mount -t cpuset cpuset /dev/cpuset
-fi
-
-_prefix=""
-
-if [ -f /dev/cpuset/cpuset.cpus ];then
-  _prefix="cpuset."
-fi
-
-if ! [ -d /dev/cpuset/theUgly ]; then
-  echo "Creating theUgly"
-  mkdir /dev/cpuset/theUgly
-fi
-
-echo "Assigning CCX0's cores to the ugly cpu set"
-/bin/echo 8-15,24-31 > /dev/cpuset/theUgly/${_prefix}cpus
-
-echo "Giving the Ugly memory node 0"
-/bin/echo 0 > /dev/cpuset/theUgly/${_prefix}mems
-
-echo "Making the Ugly cpu exlusive"
-/bin/echo 1 > /dev/cpuset/theUgly/${_prefix}cpu_exclusive
-
-echo "Redirecting Processes"
-while read p; do
-  echo "Redirecting PID $p"
-  /bin/echo $p > /dev/cpuset/theUgly/tasks
-done < /dev/cpuset/tasks
-
-if ! [ -d /dev/cpuset/theGood ]; then
-  echo "Creating theGood"
-  mkdir /dev/cpuset/theGood
-fi
-
-echo "Assigning CCX1's cores to the Good cpu set"
-/bin/echo 0-7,16-23 > /dev/cpuset/theGood/${_prefix}cpus
-
-echo "Giving the Good memory node 0"
-/bin/echo 0 > /dev/cpuset/theGood/${_prefix}mems
-
-echo "Making the Good cpu exlusive"
-/bin/echo 1 > /dev/cpuset/theGood/${_prefix}cpu_exclusive
-
-read -p "Redirect Lutris to theGood ? y/n: "
-if [ "$REPLY" = "y" ];then
-  echo "Redirecting Lutris to theGood"
-  for i in  `pgrep lutris`; do echo $i > /dev/cpuset/theGood/tasks; done
-fi
-
-
-read -p "Redirect Steam to theGood ? y/n: "
-if [ "$REPLY" = "y" ];then
-  echo "Redirecting Lutris to theGood"
-  for i in  `pgrep steam`; do echo $i > /dev/cpuset/theGood/tasks; done
-fi
diff --git a/bin/.local/bin/winecleaner b/bin/.local/bin/winecleaner
deleted file mode 100755 (executable)
index 3a28176..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-
-function yes_or_no {
-    while true; do
-        read -rp "$* [y/n]: " yn
-        case $yn in
-            [Yy]*) return 0  ;;
-            [Nn]*) echo "Aborted" ; return  1 ;;
-        esac
-    done
-}
-
-PSOUTPUT="$(pgrep -l exe)"
-
-echo "Grepping ps for wine executables..."
-if [ -n "$PSOUTPUT" ]; then
-    echo "The following processes have been found:"
-    echo "$PSOUTPUT"
-    yes_or_no "Would you like to send sigkill to all processes?" && pgrep exe | xargs kill
-    echo "Verifying that all processes have been cleaned..."
-    sleep 7
-    PSOUTPUT="$(pgrep -l exe)"
-    if [ -n "$PSOUTPUT" ]; then
-        echo "Still some processes around. Please remove them manually..."
-        echo "$PSOUTPUT"
-    else
-        echo "All processes have been cleaned!"
-    fi
-else
-    echo "No wine executables found"
-fi
diff --git a/cava/.config/cava/config b/cava/.config/cava/config
deleted file mode 100644 (file)
index 21cf821..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
-
-
-[general]
-
-# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
-; mode = normal
-
-# Accepts only non-negative values.
-; framerate = 60
-
-# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
-# new as of 0.6.0 autosens of low values (dynamic range)
-# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
-; autosens = 1
-; overshoot = 20
-
-# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
-# 200 means double height. Accepts only non-negative values.
-; sensitivity = 100
-
-# The number of bars (0-200). 0 sets it to auto (fill up console).
-# Bars' width and space between bars in number of characters.
-; bars = 0
-bar_width = 6
-bar_spacing = 1
-# bar_height is only used for output in "noritake" format
-; bar_height = 32
-
-# For SDL width and space between bars is in pixels, defaults are:
-; bar_width = 20
-; bar_spacing = 5
-
-
-# Lower and higher cutoff frequencies for lowest and highest bars
-# the bandwidth of the visualizer.
-# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
-# Cava will automatically increase the higher cutoff if a too low band is specified.
-; lower_cutoff_freq = 50
-; higher_cutoff_freq = 10000
-
-
-# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
-# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
-; sleep_timer = 0
-
-
-[input]
-
-# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
-# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
-#
-# All input methods uses the same config variable 'source'
-# to define where it should get the audio.
-#
-# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
-# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
-#
-# For alsa 'source' will be the capture device.
-# For fifo 'source' will be the path to fifo-file.
-# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
-; method = pulse
-; source = auto
-
-; method = alsa
-; source = hw:Loopback,1
-
-; method = fifo
-; source = /tmp/mpd.fifo
-; sample_rate = 44100
-; sample_bits = 16
-
-; method = shmem
-; source = /squeezelite-AA:BB:CC:DD:EE:FF
-
-; method = portaudio
-; source = auto
-
-
-[output]
-
-# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake' or 'sdl'.
-# 'noncurses' uses a custom framebuffer technique and prints only changes
-# from frame to frame in the terminal. 'ncurses' is default if supported.
-#
-# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
-# stream of the bar heights that can be used to send to other applications.
-# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
-#
-# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
-#  in graphic mode. It only support the 3000 series graphical VFDs for now.
-#
-# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
-; method = ncurses
-
-# Visual channels. Can be 'stereo' or 'mono'.
-# 'stereo' mirrors both channels with low frequencies in center.
-# 'mono' outputs left to right lowest to highest frequencies.
-# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
-# set 'reverse' to 1 to display frequencies the other way around.
-; channels = stereo
-channels = mono
-; mono_option = average
-; reverse = 0
-
-# Raw output target. A fifo will be created if target does not exist.
-; raw_target = /dev/stdout
-
-# Raw data format. Can be 'binary' or 'ascii'.
-; data_format = binary
-
-# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
-; bit_format = 16bit
-
-# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
-; ascii_max_range = 1000
-
-# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
-# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
-; bar_delimiter = 59
-; frame_delimiter = 10
-
-# sdl window size and position. -1,-1 is centered.
-; sdl_width = 1000
-; sdl_height = 500
-; sdl_x = -1
-; sdl_y= -1
-
-[color]
-
-# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
-# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
-# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
-# if supported, ncurses mode will be forced on if user defined colors are used.
-# default is to keep current terminal color
-; background = default
-; foreground = default
-
-# SDL only support hex code colors, these are the default:
-; background = '#111111'
-; foreground = '#33cccc'
-
-
-# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
-# background must also be defined in hex  or remain commented out. 1 = on, 0 = off.
-# You can define as many as 8 different colors. They range from bottom to top of screen
-; gradient = 0
-; gradient_count = 8
-; gradient_color_1 = '#59cc33'
-; gradient_color_2 = '#80cc33'
-; gradient_color_3 = '#a6cc33'
-; gradient_color_4 = '#cccc33'
-; gradient_color_5 = '#cca633'
-; gradient_color_6 = '#cc8033'
-; gradient_color_7 = '#cc5933'
-; gradient_color_8 = '#cc3333'
-
-
-
-[smoothing]
-
-# Percentage value for integral smoothing. Takes values from 0 - 100.
-# Higher values means smoother, but less precise. 0 to disable.
-# DEPRECATED as of 0.8.0, use noise_reduction instead
-; integral = 77
-
-# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
-; monstercat = 0
-; waves = 0
-
-# Set gravity percentage for "drop off". Higher values means bars will drop faster.
-# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
-# DEPRECATED as of 0.8.0, use noise_reduction instead
-; gravity = 100
-
-
-# In bar height, bars that would have been lower that this will not be drawn.
-# DEPRECATED as of 0.8.0
-; ignore = 0
-
-# Noise reduction, float 0 - 1. default 0.77
-# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
-# 1 will be very slow and smooth, 0 will be fast but noisy.
-; noise_reduction = 0.77
-
-
-[eq]
-
-# This one is tricky. You can have as much keys as you want.
-# Remember to uncomment more then one key! More keys = more precision.
-# Look at readme.md on github for further explanations and examples.
-# DEPRECATED as of 0.8.0 can be brought back by popular request, open issue at:
-# https://github.com/karlstav/cava
-1 = 1.2 # bass
-2 = 1
-3 = 1 # midtone
-4 = 1
-5 = 1.2 # treble
diff --git a/cava/.config/cava/shaders/bar_spectrum.frag b/cava/.config/cava/shaders/bar_spectrum.frag
deleted file mode 100644 (file)
index b078913..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#version 330
-
-in vec2 fragCoord;
-out vec4 fragColor;
-
-// bar values. defaults to left channels first (low to high), then right (high to low).
-uniform float bars[512];
-
-uniform int bars_count;    // number of bars (left + right) (configurable)
-uniform int bar_width;    // bar width (configurable), not used here
-uniform int bar_spacing;    // space bewteen bars (configurable)
-
-uniform vec3 u_resolution; // window resolution
-
-//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
-uniform vec3 bg_color; // background color
-uniform vec3 fg_color; // foreground color
-
-uniform int gradient_count;
-uniform vec3 gradient_colors[8]; // gradient colors
-
-vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
-{
-    //create color based on fraction of this color and next color
-    float yr = (y - y_min) / (y_max - y_min);
-    return col_1 * (1.0 - yr) + col_2 * yr;
-}
-
-void main()
-{
-    // find which bar to use based on where we are on the x axis
-    float x = u_resolution.x * fragCoord.x;
-    int bar = int(bars_count * fragCoord.x);
-
-    //calculate a bar size
-    float bar_size = u_resolution.x / bars_count;
-
-    //the y coordinate and bar values are the same
-    float y =  bars[bar];
-
-    // make sure there is a thin line at bottom
-    if (y * u_resolution.y < 1.0)
-    {
-      y = 1.0 / u_resolution.y;
-    }
-
-    //draw the bar up to current height
-    if (y > fragCoord.y)
-    {
-        //make some space between bars basen on settings
-        if (x > (bar + 1) * (bar_size) - bar_spacing)
-        {
-            fragColor = vec4(bg_color,1.0);
-        }
-        else
-        {
-            if (gradient_count == 0)
-            {
-                fragColor = vec4(fg_color,1.0);
-            }
-            else
-            {
-                //find which color in the configured gradient we are at
-                int color = int((gradient_count - 1) * fragCoord.y);
-
-                //find where on y this and next color is supposed to be
-                float y_min = color / (gradient_count - 1.0);
-                float y_max = (color + 1.0) / (gradient_count - 1.0);
-
-                //make color
-                fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
-            }
-        }
-    }
-    else
-    {
-        fragColor = vec4(bg_color,1.0);
-    }
-}
\ No newline at end of file
diff --git a/cava/.config/cava/shaders/northern_lights.frag b/cava/.config/cava/shaders/northern_lights.frag
deleted file mode 100644 (file)
index ecd859a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#version 330
-
-in vec2 fragCoord;
-out vec4 fragColor;
-
-// bar values. defaults to left channels first (low to high), then right (high to low).
-uniform float bars[512];
-
-uniform int bars_count;    // number of bars (left + right) (configurable)
-
-uniform vec3 u_resolution; // window resolution, not used here
-
-//colors, configurable in cava config file
-uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
-uniform vec3 fg_color; // foreground color, not used here
-
-void main()
-{
-    // find which bar to use based on where we are on the x axis
-    int bar = int(bars_count * fragCoord.x);
-
-    float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0;
-    float y = (bars[bar]) * bar_y;
-
-    float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count;
-    float bar_r = 1.0 - abs((bar_x - 0.5)) * 2;
-
-    bar_r = bar_r * bar_r * 2;
-
-    // set color
-    fragColor.r = fg_color.x * y * bar_r;
-    fragColor.g = fg_color.y * y * bar_r;
-    fragColor.b = fg_color.z * y * bar_r;
-}
diff --git a/cava/.config/cava/shaders/pass_through.vert b/cava/.config/cava/shaders/pass_through.vert
deleted file mode 100644 (file)
index a4f20e5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#version 330
-
-
-// Input vertex data, different for all executions of this shader.
-layout(location = 0) in vec3 vertexPosition_modelspace;
-
-// Output data ; will be interpolated for each fragment.
-out vec2 fragCoord;
-
-void main()
-{
-    gl_Position =  vec4(vertexPosition_modelspace,1);
-    fragCoord  = (vertexPosition_modelspace.xy+vec2(1,1))/2.0;
-}
diff --git a/config/OpenRGB/Normal.orp b/config/OpenRGB/Normal.orp
new file mode 100644 (file)
index 0000000..f8b208c
Binary files /dev/null and b/config/OpenRGB/Normal.orp differ
diff --git a/config/OpenRGB/plugins/settings/gradients/my-gradient1 b/config/OpenRGB/plugins/settings/gradients/my-gradient1
new file mode 100644 (file)
index 0000000..6c63396
--- /dev/null
@@ -0,0 +1,25 @@
+{
+    "colors": [
+        {
+            "color": "#231557",
+            "position": 0.0
+        },
+        {
+            "color": "#44107a",
+            "position": 0.2800000011920929
+        },
+        {
+            "color": "#ff1361",
+            "position": 0.6700000166893005
+        },
+        {
+            "color": "#fff800",
+            "position": 1.0
+        }
+    ],
+    "rotate": 225,
+    "spread": "Pad",
+    "type": "Conical",
+    "x_offset": 86,
+    "y_offset": 36
+}
\ No newline at end of file
diff --git a/config/OpenRGB/plugins/settings/virtual-controllers/Normal b/config/OpenRGB/plugins/settings/virtual-controllers/Normal
new file mode 100644 (file)
index 0000000..aebdc9c
--- /dev/null
@@ -0,0 +1,403 @@
+{
+    "ctrl_zones": [
+        {
+            "controller": {
+                "location": "I2C: /dev/i2c-10, address 0x71",
+                "name": "ENE DRAM",
+                "serial": "",
+                "vendor": "ENE"
+            },
+            "custom_zone_name": "RAM1",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 1,
+                "x": 13,
+                "y": 38
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "I2C: /dev/i2c-10, address 0x73",
+                "name": "ENE DRAM",
+                "serial": "",
+                "vendor": "ENE"
+            },
+            "custom_zone_name": "RAM2",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 1,
+                "x": 15,
+                "y": 38
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "I2C: /dev/i2c-10, address 0x72",
+                "name": "ENE DRAM",
+                "serial": "",
+                "vendor": "ENE"
+            },
+            "custom_zone_name": "RAM4",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 1,
+                "x": 19,
+                "y": 38
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw5",
+                "name": "Razer Chroma Addressable RGB Controller",
+                "serial": "IO2117U08301116       ",
+                "vendor": "Razer"
+            },
+            "custom_zone_name": "Front Dual LED Strips",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 2,
+                "reverse": true,
+                "shape": 1,
+                "x": 62,
+                "y": 3
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw4",
+                "name": "Razer Mouse Bungee V3 Chroma",
+                "serial": "382112U07902334       ",
+                "vendor": "Razer"
+            },
+            "custom_zone_name": "",
+            "settings": {
+                "custom_shape": {
+                    "h": 9,
+                    "led_positions": [
+                        {
+                            "led_num": 0,
+                            "x": 8,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 1,
+                            "x": 7,
+                            "y": 5
+                        },
+                        {
+                            "led_num": 2,
+                            "x": 4,
+                            "y": 6
+                        },
+                        {
+                            "led_num": 3,
+                            "x": 1,
+                            "y": 5
+                        },
+                        {
+                            "led_num": 4,
+                            "x": 0,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 5,
+                            "x": 1,
+                            "y": 1
+                        },
+                        {
+                            "led_num": 6,
+                            "x": 4,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 7,
+                            "x": 7,
+                            "y": 1
+                        }
+                    ],
+                    "w": 9
+                },
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 2,
+                "x": 31,
+                "y": 8
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw12",
+                "name": "ASUS ROG CROSSHAIR VIII DARK HERO",
+                "serial": "9876543210",
+                "vendor": "ASUS"
+            },
+            "custom_zone_name": "",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 1,
+                "x": 54,
+                "y": 36
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw13",
+                "name": "Razer Strider Chroma",
+                "serial": "ST2252V14800417       ",
+                "vendor": "Razer"
+            },
+            "custom_zone_name": "",
+            "settings": {
+                "custom_shape": {
+                    "h": 4,
+                    "led_positions": [
+                        {
+                            "led_num": 0,
+                            "x": 0,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 1,
+                            "x": 1,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 2,
+                            "x": 2,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 3,
+                            "x": 3,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 4,
+                            "x": 4,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 5,
+                            "x": 5,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 6,
+                            "x": 6,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 7,
+                            "x": 7,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 8,
+                            "x": 7,
+                            "y": 1
+                        },
+                        {
+                            "led_num": 9,
+                            "x": 7,
+                            "y": 2
+                        },
+                        {
+                            "led_num": 10,
+                            "x": 7,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 11,
+                            "x": 5,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 12,
+                            "x": 4,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 13,
+                            "x": 3,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 14,
+                            "x": 2,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 15,
+                            "x": 1,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 16,
+                            "x": 0,
+                            "y": 3
+                        },
+                        {
+                            "led_num": 17,
+                            "x": 0,
+                            "y": 2
+                        },
+                        {
+                            "led_num": 18,
+                            "x": 6,
+                            "y": 3
+                        }
+                    ],
+                    "w": 8
+                },
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 2,
+                "x": 13,
+                "y": 10
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw19",
+                "name": "Razer Base Station V2 Chroma",
+                "serial": "382151U07800321       ",
+                "vendor": "Razer"
+            },
+            "custom_zone_name": "",
+            "settings": {
+                "custom_shape": {
+                    "h": 9,
+                    "led_positions": [
+                        {
+                            "led_num": 0,
+                            "x": 10,
+                            "y": 4
+                        },
+                        {
+                            "led_num": 1,
+                            "x": 8,
+                            "y": 7
+                        },
+                        {
+                            "led_num": 2,
+                            "x": 5,
+                            "y": 8
+                        },
+                        {
+                            "led_num": 3,
+                            "x": 2,
+                            "y": 7
+                        },
+                        {
+                            "led_num": 4,
+                            "x": 0,
+                            "y": 4
+                        },
+                        {
+                            "led_num": 5,
+                            "x": 2,
+                            "y": 1
+                        },
+                        {
+                            "led_num": 6,
+                            "x": 5,
+                            "y": 0
+                        },
+                        {
+                            "led_num": 7,
+                            "x": 8,
+                            "y": 1
+                        }
+                    ],
+                    "w": 11
+                },
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 2,
+                "x": 47,
+                "y": 6
+            },
+            "zone_idx": 0
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw12",
+                "name": "ASUS ROG CROSSHAIR VIII DARK HERO",
+                "serial": "9876543210",
+                "vendor": "ASUS"
+            },
+            "custom_zone_name": "",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 0,
+                "x": 0,
+                "y": 0
+            },
+            "zone_idx": 1
+        },
+        {
+            "controller": {
+                "location": "HID: /dev/hidraw5",
+                "name": "Razer Chroma Addressable RGB Controller",
+                "serial": "IO2117U08301116       ",
+                "vendor": "Razer"
+            },
+            "custom_zone_name": "",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 0,
+                "x": 31,
+                "y": 47
+            },
+            "zone_idx": 2
+        },
+        {
+            "controller": {
+                "location": "I2C: /dev/i2c-10, address 0x70",
+                "name": "ENE DRAM",
+                "serial": "",
+                "vendor": "ENE"
+            },
+            "custom_zone_name": "RAM3",
+            "settings": {
+                "custom_shape": null,
+                "led_spacing": 1,
+                "reverse": false,
+                "shape": 1,
+                "x": 17,
+                "y": 38
+            },
+            "zone_idx": 0
+        }
+    ],
+    "grid_settings": {
+        "auto_load": true,
+        "auto_register": true,
+        "grid_size": 1,
+        "h": 64,
+        "live_preview": true,
+        "show_bounds": true,
+        "show_grid": true,
+        "unregister_members": false,
+        "w": 64
+    }
+}
\ No newline at end of file
diff --git a/config/OpenRGB/simple.orp b/config/OpenRGB/simple.orp
new file mode 100644 (file)
index 0000000..e328c90
Binary files /dev/null and b/config/OpenRGB/simple.orp differ
diff --git a/config/OpenRGB/sizes.ors b/config/OpenRGB/sizes.ors
new file mode 100644 (file)
index 0000000..da86412
Binary files /dev/null and b/config/OpenRGB/sizes.ors differ
diff --git a/config/aerc/aerc.conf b/config/aerc/aerc.conf
new file mode 100644 (file)
index 0000000..69f4025
--- /dev/null
@@ -0,0 +1,340 @@
+#
+# aerc main configuration
+
+[general]
+#
+# If set to "gpg", aerc will use system gpg binary and keystore for all crypto
+# operations. Otherwise, the internal openpgp implementation will be used.
+#
+# Default: internal
+pgp-provider=internal
+
+# By default, the file permissions of accounts.conf must be restrictive and
+# only allow reading by the file owner (0600). Set this option to true to
+# ignore this permission check. Use this with care as it may expose your
+# credentials.
+#
+# Default: false
+unsafe-accounts-conf=false
+
+[ui]
+index-columns = date<20,name<17,flags>4,subject<*
+column-subject = {{.ThreadPrefix}}{{.Subject}}
+column-date = {{.DateAutoFormat .Date.Local}}
+column-name = {{index (.From | names) 0}}
+column-flags = {{.Flags | join ""}}
+
+dirlist-left = {{.Folder}}
+dirlist-right = {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
+
+#
+# See time.Time#Format at https://godoc.org/time#Time.Format
+#
+# Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)
+timestamp-format=2006-01-02 03:04 PM
+
+#
+# Index-only time format for messages that were received/sent today.
+# If this is not specified, timestamp-format is used instead.
+#
+# Default: "03:04 PM" (12 hour time)
+this-day-time-format=03:04 PM
+
+#
+# Index-only time format for messages that were received/sent within the last
+# 7 days. If this is not specified, timestamp-format is used instead.
+#
+# Default: "Monday 03:04 PM" (Week day + 12 hour time)
+this-week-time-format=Monday 03:04 PM
+
+#
+# Index-only time format for messages that were received/sent this year.
+# If this is not specified, timestamp-format is used instead.
+#
+# Default: "January 02" (Month + month day)
+this-year-time-format=January 02
+
+#
+# Width of the sidebar, including the border.
+#
+# Default: 20
+sidebar-width=28
+
+#
+# Message to display when viewing an empty folder.
+#
+# Default: (no messages)
+empty-message=(no messages)
+
+# Message to display when no folders exists or are all filtered
+#
+# Default: (no folders)
+empty-dirlist=(no folders)
+
+# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
+#
+# Default: false
+mouse-enabled=false
+
+#
+# Ring the bell when new messages are received
+#
+# Default: true
+new-message-bell=true
+
+# Marker to show before a pinned tab's name.
+#
+# Default: `
+pinned-tab-marker='`'
+
+# Delay after which the messages are actually listed when entering a directory.
+# This avoids loading messages when skipping over folders and makes the UI more
+# responsive. If you do not want that, set it to 0s.
+#
+# Default: 200ms
+dirlist-delay=200ms
+
+# Display the directory list as a foldable tree that allows to collapse and
+# expand the folders.
+#
+# Default: false
+dirlist-tree=false
+
+# If dirlist-tree is enabled, set level at which folders are collapsed by
+# default. Set to 0 to disable.
+#
+# Default: 0
+dirlist-collapse=0
+
+# List of space-separated criteria to sort the messages by, see *sort*
+# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
+# reverses that criterion.
+#
+# Example: "from -r date"
+#
+# Default: ""
+sort=
+
+# Moves to next message when the current message is deleted
+#
+# Default: true
+next-message-on-delete=true
+
+# The directories where the stylesets are stored. It takes a colon-separated
+# list of directories. If this is unset or if a styleset cannot be found, the
+# following paths will be used as a fallback in that order:
+#
+#   ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
+#   ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
+#   /usr/local/share/aerc/stylesets
+#   /usr/share/aerc/stylesets
+#
+# default: ""
+stylesets-dirs=
+
+# Uncomment to use box-drawing characters for vertical and horizontal borders.
+#
+# Default: spaces
+# border-char-vertical=│
+# border-char-horizontal=─
+
+# Sets the styleset to use for the aerc ui elements.
+#
+# Default: default
+styleset-name=default
+
+# Activates fuzzy search in commands and their arguments: the typed string is
+#   searched in the command or option in any position, and need not be
+#   consecutive characters in the command or option.
+#fuzzy-complete=false
+
+# How long to wait after the last input before auto-completion is triggered.
+#
+# Default: 250ms
+completion-delay=250ms
+
+#
+# Global switch for completion popovers
+#
+# Default: true
+completion-popovers=true
+
+# Uncomment to use UTF-8 symbols to indicate PGP status of messages
+#
+# Default: ASCII
+#icon-unencrypted=
+#icon-encrypted=✔
+#icon-signed=✔
+#icon-signed-encrypted=✔
+#icon-unknown=✘
+#icon-invalid=⚠
+
+#[ui:account=foo]
+#
+# Enable a threaded view of messages. If this is not supported by the backend
+# (IMAP server or notmuch), threads will be built by the client.
+#
+# Default: false
+#threading-enabled=false
+
+# Force client-side thread building
+#
+# Default: false
+#force-client-threads=false
+
+# Debounce client-side thread building
+#
+# Default: 50ms
+#client-threads-delay=50ms
+
+[statusline]
+status-columns = left<*,right>*
+column-left = [{{.Account}}] {{.StatusInfo}}
+column-right = {{.TrayInfo}}
+
+# Specifies the separator between grouped statusline elements.
+#
+# Default: " | "
+# separator=
+
+# Defines the mode for displaying the status elements.
+# Options: text, icon
+#
+# Default: text
+# display-mode=
+
+[viewer]
+#
+# Specifies the pager to use when displaying emails. Note that some filters
+# may add ANSI codes to add color to rendered emails, so you may want to use a
+# pager which supports ANSI codes.
+#
+# Default: less -R
+pager=less -R
+
+#
+# If an email offers several versions (multipart), you can configure which
+# mimetype to prefer. For example, this can be used to prefer plaintext over
+# html emails.
+#
+# Default: text/plain,text/html
+alternatives=text/plain,text/html
+
+#
+# Default setting to determine whether to show full headers or only parsed
+# ones in message viewer.
+#
+# Default: false
+show-headers=false
+
+#
+# Layout of headers when viewing a message. To display multiple headers in the
+# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
+# none of their specified headers are present in the message.
+#
+# Default: From|To,Cc|Bcc,Date,Subject
+header-layout=From|To,Cc|Bcc,Date,Subject
+
+# Whether to always show the mimetype of an email, even when it is just a single part
+#
+# Default: false
+always-show-mime=false
+
+# Parses and extracts http links when viewing a message. Links can then be
+# accessed with the open-link command.
+#
+# Default: true
+parse-http-links=true
+
+[compose]
+#
+# Specifies the command to run the editor with. It will be shown in an embedded
+# terminal, though it may also launch a graphical window if the environment
+# supports it. Defaults to $EDITOR, or vi.
+editor=
+
+#
+# Default header fields to display when composing a message. To display
+# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
+#
+# Default: To|From,Subject
+header-layout=To|From,Subject
+
+#
+# Specifies the command to be used to tab-complete email addresses. Any
+# occurrence of "%s" in the address-book-cmd will be replaced with what the
+# user has typed so far.
+#
+# The command must output the completions to standard output, one completion
+# per line. Each line must be tab-delimited, with an email address occurring as
+# the first field. Only the email address field is required. The second field,
+# if present, will be treated as the contact name. Additional fields are
+# ignored.
+#
+# This parameter can also be set per account in accounts.conf.
+address-book-cmd=
+
+#
+# Allow to address yourself when replying
+#
+# Default: true
+reply-to-self=true
+
+[filters]
+#
+# Filters allow you to pipe an email body through a shell command to render
+# certain emails differently, e.g. highlighting them with ANSI escape codes.
+#
+# The first filter which matches the email's mimetype will be used, so order
+# them from most to least specific.
+#
+# You can also match on non-mimetypes, by prefixing with the header to match
+# against (non-case-sensitive) and a comma, e.g. subject,text will match a
+# subject which contains "text". Use header,~regex to match against a regex.
+#subject,~^\[PATCH=colordiff
+text/plain=sed 's/^>\+.*/\x1b[36m&\x1b[0m/'
+#text/html=pandoc -f html -t plain
+#text/html=w3m -dump -I UTF-8 -T text/html
+#image/*=catimg -w $(tput cols) -
+
+[triggers]
+#
+# Triggers specify commands to execute when certain events occur.
+#
+# Example:
+# new-email=exec notify-send "New email from %n" "%s"
+
+#
+# Executed when a new email arrives in the selected folder
+new-email=
+
+[templates]
+# Templates are used to populate email bodies automatically.
+#
+
+# The directories where the templates are stored. It takes a colon-separated
+# list of directories. If this is unset or if a template cannot be found, the
+# following paths will be used as a fallback in that order:
+#
+#   ${XDG_CONFIG_HOME:-~/.config}/aerc/templates
+#   ${XDG_DATA_HOME:-~/.local/share}/aerc/templates
+#   /usr/local/share/aerc/templates
+#   /usr/share/aerc/templates
+#
+# default: ""
+template-dirs=
+
+# The default template to be used for new messages.
+#
+# default: new_message
+new-message=new_message
+
+# The default template to be used for quoted replies.
+#
+# default: quoted_reply
+quoted-reply=quoted_reply
+
+# The default template to be used for forward as body.
+#
+# default: forward_as_body
+forwards=forward_as_body
diff --git a/config/aerc/binds.conf b/config/aerc/binds.conf
new file mode 100644 (file)
index 0000000..cb5ffd3
--- /dev/null
@@ -0,0 +1,122 @@
+# Binds are of the form <key sequence> = <command to run>
+# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
+# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
+<C-p> = :prev-tab<Enter>
+<C-n> = :next-tab<Enter>
+<C-t> = :term<Enter>
+? = :help keys<Enter>
+
+[messages]
+q = :quit<Enter>
+
+j = :next<Enter>
+<Down> = :next<Enter>
+<C-d> = :next 50%<Enter>
+<C-f> = :next 100%<Enter>
+<PgDn> = :next 100%<Enter>
+
+k = :prev<Enter>
+<Up> = :prev<Enter>
+<C-u> = :prev 50%<Enter>
+<C-b> = :prev 100%<Enter>
+<PgUp> = :prev 100%<Enter>
+g = :select 0<Enter>
+G = :select -1<Enter>
+
+J = :next-folder<Enter>
+K = :prev-folder<Enter>
+H = :collapse-folder<Enter>
+L = :expand-folder<Enter>
+
+v = :mark -t<Enter>
+V = :mark -v<Enter>
+
+T = :toggle-threads<Enter>
+
+<Enter> = :view<Enter>
+d = :prompt 'Really delete this message?' 'delete-message'<Enter>
+D = :delete<Enter>
+A = :archive flat<Enter>
+
+C = :compose<Enter>
+
+rr = :reply -a<Enter>
+rq = :reply -aq<Enter>
+Rr = :reply<Enter>
+Rq = :reply -q<Enter>
+
+c = :cf<space>
+$ = :term<space>
+! = :term<space>
+| = :pipe<space>
+
+/ = :search<space>
+\ = :filter<space>
+n = :next-result<Enter>
+N = :prev-result<Enter>
+<Esc> = :clear<Enter>
+
+[messages:folder=Drafts]
+<Enter> = :recall<Enter>
+
+[view]
+/ = :toggle-key-passthrough<Enter>/
+q = :close<Enter>
+O = :open<Enter>
+S = :save<space>
+| = :pipe<space>
+D = :delete<Enter>
+A = :archive flat<Enter>
+
+<C-l> = :open-link <space>
+
+f = :forward<Enter>
+rr = :reply -a<Enter>
+rq = :reply -aq<Enter>
+Rr = :reply<Enter>
+Rq = :reply -q<Enter>
+
+H = :toggle-headers<Enter>
+<C-k> = :prev-part<Enter>
+<C-j> = :next-part<Enter>
+J = :next<Enter>
+K = :prev<Enter>
+
+[view::passthrough]
+$noinherit = true
+$ex = <C-x>
+<Esc> = :toggle-key-passthrough<Enter>
+
+[compose]
+# Keybindings used when the embedded terminal is not selected in the compose
+# view
+$ex = <C-x>
+<C-k> = :prev-field<Enter>
+<C-j> = :next-field<Enter>
+<tab> = :next-field<Enter>
+
+[compose::editor]
+# Keybindings used when the embedded terminal is selected in the compose view
+$noinherit = true
+$ex = <C-x>
+<C-k> = :prev-field<Enter>
+<C-j> = :next-field<Enter>
+<C-p> = :prev-tab<Enter>
+<C-n> = :next-tab<Enter>
+
+[compose::review]
+# Keybindings used when reviewing a message to be sent
+y = :send<Enter>
+n = :abort<Enter>
+p = :postpone<Enter>
+q = :choose -o d discard abort -o p postpone postpone<Enter>
+e = :edit<Enter>
+a = :attach<space>
+d = :detach<space>
+
+[terminal]
+$noinherit = true
+$ex = <C-x>
+
+<C-p> = :prev-tab<Enter>
+<C-n> = :next-tab<Enter>
diff --git a/config/aerc/scripts/wait-for-creds.sh b/config/aerc/scripts/wait-for-creds.sh
new file mode 100755 (executable)
index 0000000..7ab4f10
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+secret-tool lookup "$1" "$2"
+# wait until the password is available
+while [ $? != 0 ]; do
+       secret-tool lookup "$1" "$2"
+done
+
diff --git a/config/cava/config b/config/cava/config
new file mode 100644 (file)
index 0000000..21cf821
--- /dev/null
@@ -0,0 +1,198 @@
+## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
+
+
+[general]
+
+# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
+; mode = normal
+
+# Accepts only non-negative values.
+; framerate = 60
+
+# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
+# new as of 0.6.0 autosens of low values (dynamic range)
+# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
+; autosens = 1
+; overshoot = 20
+
+# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
+# 200 means double height. Accepts only non-negative values.
+; sensitivity = 100
+
+# The number of bars (0-200). 0 sets it to auto (fill up console).
+# Bars' width and space between bars in number of characters.
+; bars = 0
+bar_width = 6
+bar_spacing = 1
+# bar_height is only used for output in "noritake" format
+; bar_height = 32
+
+# For SDL width and space between bars is in pixels, defaults are:
+; bar_width = 20
+; bar_spacing = 5
+
+
+# Lower and higher cutoff frequencies for lowest and highest bars
+# the bandwidth of the visualizer.
+# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
+# Cava will automatically increase the higher cutoff if a too low band is specified.
+; lower_cutoff_freq = 50
+; higher_cutoff_freq = 10000
+
+
+# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
+# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
+; sleep_timer = 0
+
+
+[input]
+
+# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
+# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
+#
+# All input methods uses the same config variable 'source'
+# to define where it should get the audio.
+#
+# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
+# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
+#
+# For alsa 'source' will be the capture device.
+# For fifo 'source' will be the path to fifo-file.
+# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
+; method = pulse
+; source = auto
+
+; method = alsa
+; source = hw:Loopback,1
+
+; method = fifo
+; source = /tmp/mpd.fifo
+; sample_rate = 44100
+; sample_bits = 16
+
+; method = shmem
+; source = /squeezelite-AA:BB:CC:DD:EE:FF
+
+; method = portaudio
+; source = auto
+
+
+[output]
+
+# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake' or 'sdl'.
+# 'noncurses' uses a custom framebuffer technique and prints only changes
+# from frame to frame in the terminal. 'ncurses' is default if supported.
+#
+# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
+# stream of the bar heights that can be used to send to other applications.
+# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
+#
+# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
+#  in graphic mode. It only support the 3000 series graphical VFDs for now.
+#
+# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
+; method = ncurses
+
+# Visual channels. Can be 'stereo' or 'mono'.
+# 'stereo' mirrors both channels with low frequencies in center.
+# 'mono' outputs left to right lowest to highest frequencies.
+# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
+# set 'reverse' to 1 to display frequencies the other way around.
+; channels = stereo
+channels = mono
+; mono_option = average
+; reverse = 0
+
+# Raw output target. A fifo will be created if target does not exist.
+; raw_target = /dev/stdout
+
+# Raw data format. Can be 'binary' or 'ascii'.
+; data_format = binary
+
+# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
+; bit_format = 16bit
+
+# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
+; ascii_max_range = 1000
+
+# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
+# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
+; bar_delimiter = 59
+; frame_delimiter = 10
+
+# sdl window size and position. -1,-1 is centered.
+; sdl_width = 1000
+; sdl_height = 500
+; sdl_x = -1
+; sdl_y= -1
+
+[color]
+
+# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
+# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
+# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
+# if supported, ncurses mode will be forced on if user defined colors are used.
+# default is to keep current terminal color
+; background = default
+; foreground = default
+
+# SDL only support hex code colors, these are the default:
+; background = '#111111'
+; foreground = '#33cccc'
+
+
+# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
+# background must also be defined in hex  or remain commented out. 1 = on, 0 = off.
+# You can define as many as 8 different colors. They range from bottom to top of screen
+; gradient = 0
+; gradient_count = 8
+; gradient_color_1 = '#59cc33'
+; gradient_color_2 = '#80cc33'
+; gradient_color_3 = '#a6cc33'
+; gradient_color_4 = '#cccc33'
+; gradient_color_5 = '#cca633'
+; gradient_color_6 = '#cc8033'
+; gradient_color_7 = '#cc5933'
+; gradient_color_8 = '#cc3333'
+
+
+
+[smoothing]
+
+# Percentage value for integral smoothing. Takes values from 0 - 100.
+# Higher values means smoother, but less precise. 0 to disable.
+# DEPRECATED as of 0.8.0, use noise_reduction instead
+; integral = 77
+
+# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
+; monstercat = 0
+; waves = 0
+
+# Set gravity percentage for "drop off". Higher values means bars will drop faster.
+# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
+# DEPRECATED as of 0.8.0, use noise_reduction instead
+; gravity = 100
+
+
+# In bar height, bars that would have been lower that this will not be drawn.
+# DEPRECATED as of 0.8.0
+; ignore = 0
+
+# Noise reduction, float 0 - 1. default 0.77
+# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
+# 1 will be very slow and smooth, 0 will be fast but noisy.
+; noise_reduction = 0.77
+
+
+[eq]
+
+# This one is tricky. You can have as much keys as you want.
+# Remember to uncomment more then one key! More keys = more precision.
+# Look at readme.md on github for further explanations and examples.
+# DEPRECATED as of 0.8.0 can be brought back by popular request, open issue at:
+# https://github.com/karlstav/cava
+1 = 1.2 # bass
+2 = 1
+3 = 1 # midtone
+4 = 1
+5 = 1.2 # treble
diff --git a/config/cava/shaders/bar_spectrum.frag b/config/cava/shaders/bar_spectrum.frag
new file mode 100644 (file)
index 0000000..b078913
--- /dev/null
@@ -0,0 +1,79 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count;    // number of bars (left + right) (configurable)
+uniform int bar_width;    // bar width (configurable), not used here
+uniform int bar_spacing;    // space bewteen bars (configurable)
+
+uniform vec3 u_resolution; // window resolution
+
+//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
+uniform vec3 bg_color; // background color
+uniform vec3 fg_color; // foreground color
+
+uniform int gradient_count;
+uniform vec3 gradient_colors[8]; // gradient colors
+
+vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
+{
+    //create color based on fraction of this color and next color
+    float yr = (y - y_min) / (y_max - y_min);
+    return col_1 * (1.0 - yr) + col_2 * yr;
+}
+
+void main()
+{
+    // find which bar to use based on where we are on the x axis
+    float x = u_resolution.x * fragCoord.x;
+    int bar = int(bars_count * fragCoord.x);
+
+    //calculate a bar size
+    float bar_size = u_resolution.x / bars_count;
+
+    //the y coordinate and bar values are the same
+    float y =  bars[bar];
+
+    // make sure there is a thin line at bottom
+    if (y * u_resolution.y < 1.0)
+    {
+      y = 1.0 / u_resolution.y;
+    }
+
+    //draw the bar up to current height
+    if (y > fragCoord.y)
+    {
+        //make some space between bars basen on settings
+        if (x > (bar + 1) * (bar_size) - bar_spacing)
+        {
+            fragColor = vec4(bg_color,1.0);
+        }
+        else
+        {
+            if (gradient_count == 0)
+            {
+                fragColor = vec4(fg_color,1.0);
+            }
+            else
+            {
+                //find which color in the configured gradient we are at
+                int color = int((gradient_count - 1) * fragCoord.y);
+
+                //find where on y this and next color is supposed to be
+                float y_min = color / (gradient_count - 1.0);
+                float y_max = (color + 1.0) / (gradient_count - 1.0);
+
+                //make color
+                fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
+            }
+        }
+    }
+    else
+    {
+        fragColor = vec4(bg_color,1.0);
+    }
+}
\ No newline at end of file
diff --git a/config/cava/shaders/northern_lights.frag b/config/cava/shaders/northern_lights.frag
new file mode 100644 (file)
index 0000000..ecd859a
--- /dev/null
@@ -0,0 +1,34 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count;    // number of bars (left + right) (configurable)
+
+uniform vec3 u_resolution; // window resolution, not used here
+
+//colors, configurable in cava config file
+uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
+uniform vec3 fg_color; // foreground color, not used here
+
+void main()
+{
+    // find which bar to use based on where we are on the x axis
+    int bar = int(bars_count * fragCoord.x);
+
+    float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0;
+    float y = (bars[bar]) * bar_y;
+
+    float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count;
+    float bar_r = 1.0 - abs((bar_x - 0.5)) * 2;
+
+    bar_r = bar_r * bar_r * 2;
+
+    // set color
+    fragColor.r = fg_color.x * y * bar_r;
+    fragColor.g = fg_color.y * y * bar_r;
+    fragColor.b = fg_color.z * y * bar_r;
+}
diff --git a/config/cava/shaders/pass_through.vert b/config/cava/shaders/pass_through.vert
new file mode 100644 (file)
index 0000000..a4f20e5
--- /dev/null
@@ -0,0 +1,14 @@
+#version 330
+
+
+// Input vertex data, different for all executions of this shader.
+layout(location = 0) in vec3 vertexPosition_modelspace;
+
+// Output data ; will be interpolated for each fragment.
+out vec2 fragCoord;
+
+void main()
+{
+    gl_Position =  vec4(vertexPosition_modelspace,1);
+    fragCoord  = (vertexPosition_modelspace.xy+vec2(1,1))/2.0;
+}
diff --git a/config/fastfetch/config.conf b/config/fastfetch/config.conf
new file mode 100644 (file)
index 0000000..69bb33d
--- /dev/null
@@ -0,0 +1,519 @@
+# Fastfetch configuration
+# Write every argument in different lines.
+# Direct arguments will overwrite the corresponding ones in this file.
+# Argument keys are not case sensitive.
+# Whitespaces are trimmed at the beginning and the end.
+# Empty lines or lines starting with # are ignored.
+
+# This file was shipped with 2.1.2.
+# Use fastfetch --gen-config-force to overwrite this file with the current defaults
+
+# Below some often usefull options are listed. Uncomment and modify them so they take affect.
+# Note that there are a lot more options than the ones listed here, take a look at "fastfetch --help".
+# Of course all of them can be made persistent here too.
+
+# Config option:
+# Load additional config files.
+# Some are shipped with fastfetch, list them with "fastfetch --list-presets".
+# Must be a path to a config file or the name of a shipped preset.
+# The config file is completely loaded before continuing in the current file, so the placement of this option matters, as later options overwrite already set ones.
+# Can be used multiple times to load multiple config files / presets.
+#--load-config /path/to/config.txt
+
+# Structure option:
+# Sets the modules to use and their order.
+# Must be a list of module names, separated by colons.
+# List available modules with "fastfetch --list-modules".
+# Get the default structure with "fastfetch --print-structure".
+#--structure Title:Separator:OS:Host:Kernel:Uptime:Packages:Shell:Display:DE:WM:WMTheme:Theme:Icons:Font:Cursor:Terminal:TerminalFont:CPU:GPU:Memory:Disk:Battery:PowerAdapter:Locale:Break:Colors
+
+# Multithreading option:
+# Sets if fastfetch should use multiple threads to detect the values.
+# Must be true or false.
+# Default is true.
+#--multithreading true
+
+# Print stat option:
+# Sets if fastfetch should print time usage (in ms) for individual modules
+# If true, it will also enable --show-errors
+# Must be true or false.
+# Default is false.
+#--stat true
+
+# Slow operations option:
+# Sets if fastfetch is allowed to use known slow operations to detect more / better values.
+# Must be true or false.
+# Default is false.
+#--allow-slow-operations false
+
+# Linewrap option:
+# Sets if fastfetch should disable linewrap during the run.
+# Must be true or false.
+# Default is true.
+#--disable-linewrap true
+
+# Cursor option:
+# Sets if fastfetch should hide the console cursor during the run.
+# Must be true or false.
+# Default is true.
+#--hide-cursor true
+
+# Processing timeout option:
+# Sets the timeout (ms) when waiting for child processes
+# Must be an integer.
+# Default is 1000
+#--processing-timeout 1000
+
+# WMI timeout option:
+# Sets the timeout (ms) for WMI queries. Windows only
+# Must be an integer.
+# Default is 5000
+#--wmi-timeout 5000
+
+# Logo option:
+# Sets the logo to use.
+# List available logos with "fastfetch --list-logos".
+# Print available logos with "fastfetch --print-logos".
+# Must be the name of an available logo or a path to a text file containing a custom logo.
+# Default is the current distribution.
+#--logo arch
+
+# Logo type option:
+# Sets the logo type to use.
+# Must be auto, builtin, file, file-raw, data, data-raw, sixel, kitty or chafa.
+# Default is auto.
+#--logo-type auto
+
+# Logo width option:
+# Sets the width of the logo (in characters) if the logo is an image.
+# Must be a positive integer.
+# Default is 65.
+#--logo-width 65
+
+# Logo height option:
+# Sets the height of the logo (in characters) if the logo is an image.
+# Must be a positive integer.
+# Default is 0 (keeps aspect ration).
+#--logo-height 0
+
+# Logo color options:
+# Overwrite a color in the logo. Also works for user provided logos.
+# In the user logo, they replace $[1-9]. Use $$ to print a single $ sign.
+# Must be linux console color codes or the name of a color.
+# Default is the one specified by the logo.
+# Use "fastfetch --help color" to learn more and see examples.
+# Valid index range is [1-9].
+#--logo-color-1 red
+#--logo-color-2 32
+# [...]
+#--logo-color-9 yellow
+
+# Logo padding option:
+# Adds a padding to the left and the right side of the logo.
+# Must be a positive integer.
+# Default is 0.
+#--logo-padding 0
+
+# Logo padding left option:
+# Adds a padding to the left side of the logo.
+# Must be a positive integer.
+# Default is 0.
+--logo-padding-left 4
+
+# Logo padding right option:
+# Adds a padding to the right side of the logo.
+# Must be a positive integer.
+# Default is 0.
+#--logo-padding-right 0
+
+# Logo padding top option:
+# Adds a padding to the top side of the logo.
+# Must be a positive integer.
+# Default is 0.
+--logo-padding-top 1
+
+# Logo print remaining option:
+# Sets if the remaining logo should be printed, it is has more lines than modules to show.
+# Must be true or false.
+# Default is true.
+#--logo-print-remaining true
+
+# Color keys option:
+# Sets the color of the keys.
+# Must be linux console color codes or the name of a color.
+# Default is the key color of the logo.
+# Use "fastfetch --help color" to learn more and see examples.
+#--color-keys magenta
+
+# Color title option:
+# Sets the color of the title.
+# Must be linux console color codes or the name of a color.
+# Default is the title color of the logo.
+# Use "fastfetch --help color" to learn more and see examples.
+#--color-title magenta
+
+# Binary prefix option:
+# Sets the binary prefix to use.
+# Must be a IEC, SI or JEDEC.
+# Default is IEC.
+#--binary-prefix IEC
+
+# Size number of digits option:
+# Sets the number of digits to keep after the decimal point when formatting sizes.
+# Must be an possitive integer.
+# Default is 2.
+#--size-ndigits 2
+
+# Size max prefix option:
+# Sets the largest binary prefix to use when formatting sizes.
+# Must be one of B, kB, MB, GB, TB, PB, EB, ZB, YB
+# Default is YB.
+#--size-max-prefix YB
+
+# Disable output buffer option:
+# Sets if the stdout application buffer should be disabled.
+# Must be true or false.
+# Default is false.
+#--no-buffer false
+
+# Title FQDN option:
+# Sets if the title should use the fully qualified domain name.
+# Must be true or false.
+# Default is false.
+#--title-fqdn false
+
+# Title user color option:
+# Sets color of the user name (left part).
+# Default is empty (use color of `--color-title`).
+#--title-color-user
+
+# Title at color option:
+# Sets color of the @ symbol (middle part).
+# Default is empty (use color of `--color-title`).
+#--title-color-at
+
+# Title host color option:
+# Sets color of the host name (right part).
+# Default is empty (use color of `--color-title`).
+#--title-color-host
+
+# Separator option:
+# Sets the string placed between a key and its value.
+# Can be any string.
+# Default is ": ".
+#--separator ": "
+
+# Separator string option:
+# Sets the string printed by the "separator" module (usually between title and rest of output)
+# Must be any string. It is repated / cut to fit perfectly.
+# Default is "-"
+#--separator-string -
+
+# Public IP URL option:
+# Sets the URL of public IP detection server to be used.
+# Only HTTP protocol is supported, and the value should not contain "http://" prefix.
+# Default is "ipinfo.io/ip".
+#--publicip-url "ipinfo.io/ip"
+
+# Public IP timeout option:
+# Sets the time to wait for the public ip server to respond.
+# Must be a positive integer.
+# Default is 0 (disabled).
+#--publicip-timeout 0
+
+# Weather location option:
+# Sets the location to be used. It must be URI encoded (eg a whitespace must be encoded as `+`).
+# Default is empty (guessing by public IP)
+#--weather-location "Location"
+
+# Weather output format option:
+# Sets the weather format to be used. It must be URI encoded.
+# See: https://github.com/chubin/wttr.in#one-line-output
+# Default is "%t+-+%C+(%l)".
+#--weather-output-format "%t+-+%C+(%l)"
+
+# Weather timeout option:
+# Sets the time to wait for the weather server (wttr.in) to respond.
+# Must be a positive integer.
+# Default is 0 (disabled).
+#--weather-timeout 0
+
+# OS file option
+# Sets the path to the file containing the operating system information.
+# Should be a valid path to an existing file.
+# Default is /etc/os-release.
+#--os-file /etc/os-release
+
+# Player name option
+# Sets the name of the player. This is also used in song detection
+# Must be the exact name of the player or a dbus address (e.g. org.mpris.MediaPlayer2.spotify)
+# Default is the first match starting with org.mpris.MediaPlayer2.
+#--player-name spotify
+
+# Display server force DRM option
+# Sets if fastfetch should only use `/sys/class/drm` to detect displays if you get issues with the default behavior.
+# Note DRM doesn't support refresh rate or scaled resolution detection.
+# Only supported on Linux.
+# Must be true or false.
+# Default is false.
+#--ds-force-drm false
+
+# Escape bedrock option
+# Sets if fastfetch should escape the bedrock jail, if it detectes that it is running in one
+# Must be true or false.
+# Default is true.
+#--escape-bedrock true
+
+# OpenGL option
+# Sets with opengl context creation library to use
+# Must be either auto, egl, glx or osmesa
+# Default is auto.
+#--opengl-library auto
+
+# GPU hide options
+# Sets whether to hide certain gpu types
+# Must be either true or false
+# Default is false.
+#--gpu-hide-integrated
+#--gpu-hide-discrete
+
+# GPU detection options
+# Forces using vulkan to detect GPUs
+# which support video memory usage detection with `--allow-slow-operations`
+# Must be either true or false
+# Default is false.
+#--gpu-force-vulkan
+
+# Disk show options
+# Sets if certain types of disk should be printed
+# Must be either true or false
+# Default is false except for --disk-show-external.
+#--disk-show-external true
+#--disk-show-hidden false
+#--disk-show-subvolumes false
+#--disk-show-unknown false
+
+# Disk option
+# A colon (semicolon on Windows) separated list of folder paths for the disk output
+# This option override `--disk-show-*` options above
+# Must be a string
+# Default is "/:/home" ("C:\;D:\ ..." on Windows).
+#--disk-folders /:/home
+
+# Bluetooth show disconnected option
+# Sets if disconnected bluetooth devices should be printed
+# Must be either true or false
+# Default is false.
+#--bluetooth-show-disconnected false
+
+# Display compact output option
+# Sets if all displays should be printed in one line
+# Must be either original (print pixel resolution) or scaled (print scaled resolution)
+# Default is none.
+#--display-compact-type none
+
+# Display detect name option
+# Sets if display name should be detected and printed (if supported)
+# Must be either true of false
+# Default is false.
+#--display-detect-name none
+
+# Display precise refresh rate option
+# Sets if decimal refresh rates should not be rounded into integers when printing
+# Must be either true (keep decimals) of false (round into integers)
+# Default is false.
+#--display-precise-refresh-rate false
+
+# Sound show all option
+# Sets if all sound devices should be printed
+# Must be either main, active or all. Default is main
+# Default is main.
+#--sound-type main
+
+# Percentage output type option
+# Applies to all modules that prints percentage values. Currently memory, swap, disk, battery and CPU usage are supported.
+# Only works with default format ( without --module-format option ).
+# 0: prints none; 1: prints percent number only; 2: prints bar only; 3: prints both percent number and bar; 6: prints bar and hide other texts; 9: prints colored number
+#--percent-type 1
+
+# Key options:
+# Sets the displayed key of a module
+# Can be any string. Some of theme take an argument like a format string. See "fastfetch --help format" for help.
+#--os-key OS
+#--host-key Host
+#--chassis-key Chassis
+#--kernel-key Kernel
+#--uptime-key Uptime
+#--processes-key Processes
+#--packages-key Packages
+#--shell-key Shell
+#--display-key Display {1}
+#--brightness-key Brightness ({1})
+#--monitor-key Monitor
+#--de-key DE
+#--wm-key WM
+#--wmtheme-key WM Theme
+#--theme-key Theme
+#--icons-key Icons
+#--font-key Font
+#--cursor-key Cursor
+#--terminal-key Terminal
+#--terminalfont-key Terminal Font
+#--cpu-key CPU
+#--cpuusage-key CPU Usage
+#--gpu-key GPU {1}
+#--memory-key Memory
+#--swap-key Swap
+#--disk-key Disk ({1})
+#--battery-key Battery {1}
+#--poweradapter-key Power Adapter {1}
+#--lm-key LM
+#--locale-key Locale
+#--localip-key Local IP ({1})
+#--netio-key Network IO ({1})
+#--publicip-key Public IP
+#--wifi-key Wifi
+#--weather-key Weather
+#--player-key Media Player
+#--media-key Media
+#--datetime-key Date Time
+#--version-key Version
+#--vulkan-key Vulkan
+#--opengl-key OpenGL
+#--opencl-key OpenCL
+#--users-key Users
+#--bluetooth-key Bluetooth
+#--sound-key Sound
+#--gamepad-key Gamepad
+#--wallpaper-key Wallpaper
+
+# Format options:
+# Sets the format string for module values.
+# For information on format strings, see "fastfetch --help format".
+# To see the parameter they take and their default value, see "fastfetch --help *-format", e.g. "fastfetch --help os-format".
+# An empty format string (As they are currently below) will behave as if it was not set.
+#--title-format
+#--os-format
+#--host-format
+#--chassis-format
+#--kernel-format
+#--uptime-format
+#--processes-format
+#--packages-format
+#--shell-format
+#--display-format
+#--brightness-format
+#--de-format
+#--wm-format
+#--wmtheme-format
+#--theme-format
+#--icons-format
+#--font-format
+#--cursor-format
+#--terminal-format
+#--terminalfont-format
+#--cpu-format
+#--cpuusage-format
+#--gpu-format
+#--memory-format
+#--swap-format
+#--disk-format
+#--battery-format
+#--poweradapter-format
+#--lm-format
+#--locale-format
+#--localip-format
+#--netio-format
+#--publicip-format
+#--weather-format
+#--monitor-format
+#--player-format
+#--media-format
+#--datetime-format
+#--version-format
+#--vulkan-format
+#--opengl-format
+#--opencl-format
+#--users-format
+#--bluetooth-format
+#--sound-format
+#--gamepad-format
+#--wallpaper-format
+
+# Key color options:
+# Overrides the global `--color-keys` for one specified module
+#--title-key-color
+#--os-key-color
+#--host-key-color
+#--chassis-key-color
+#--kernel-key-color
+#--uptime-key-color
+#--processes-key-color
+#--packages-key-color
+#--shell-key-color
+#--display-key-color
+#--brightness-key-color
+#--de-key-color
+#--wm-key-color
+#--wmtheme-key-color
+#--theme-key-color
+#--icons-key-color
+#--font-key-color
+#--cursor-key-color
+#--terminal-key-color
+#--terminalfont-key-color
+#--cpu-key-color
+#--cpuusage-key-color
+#--gpu-key-color
+#--memory-key-color
+#--swap-key-color
+#--disk-key-color
+#--battery-key-color
+#--poweradapter-key-color
+#--lm-key-color
+#--locale-key-color
+#--localip-key-color
+#--netio-key-color
+#--publicip-key-color
+#--weather-key-color
+#--monitor-key-color
+#--player-key-color
+#--media-key-color
+#--datetime-key-color
+#--version-key-color
+#--vulkan-key-color
+#--opengl-key-color
+#--opencl-key-color
+#--users-key-color
+#--bluetooth-key-color
+#--sound-key-color
+#--gamepad-key-color
+#--wallpaper-key-color
+
+# Library options:
+# Sets an user specific path to a library to load.
+# Must be a valid path to a library.
+#--lib-PCI /usr/lib/libpci.so
+#--lib-vulkan /usr/lib/libvulkan.so (libMoltenVK.dylib on macOS)
+#--lib-wayland /usr/lib/libwayland-client.so
+#--lib-xcb-randr /usr/lib/libxcb-randr.so
+#--lib-xcb /usr/lib/libxcb.so
+#--lib-Xrandr /usr/lib/libXrandr.so
+#--lib-X11 /usr/lib/libX11.so
+#--lib-gio /usr/lib/libgio-2.0.so
+#--lib-DConf /usr/lib/libdconf.so
+#--lib-DBus /usr/lib/libdbus-1.so
+#--lib-XFConf /usr/lib/libxfconf-0.so
+#--lib-sqlite3 /usr/lib/libsqlite3.so
+#--lib-rpm /usr/lib/librpm.so
+#--lib-imagemagick /usr/lib/libMagickCore-7.Q16HDRI.so
+#--lib-z /usr/lib/libz.so
+#--lib-chafa /usr/lib/libchafa.so
+#--lib-egl /usr/lib/libEGL.so
+#--lib-glx /usr/lib/libGLX.so
+#--lib-osmesa /usr/lib/libOSMesa.so
+#--lib-opencl /usr/lib/libOpenCL.so
+#--lib-freetype /data/data/com.termux/files/usr/lib
+#--lib-pulse /usr/lib/libpulse.so
+#--lib-ddcutil /usr/lib/libddcutil.so
+#--lib-nm /usr/lib/libnm.so
diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc
new file mode 100644 (file)
index 0000000..93c665c
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+  "logo": {
+    "padding": {
+      "top": 1,
+      "left": 4
+    }
+  },
+  "modules": [
+    "title",
+    "separator",
+    "os",
+    "host",
+    "kernel",
+    "uptime",
+    "packages",
+    "locale",
+    "shell",
+    "de",
+    "wm",
+    "terminal",
+    "separator",
+    "cpu",
+    "gpu",
+    "display",
+    "memory",
+    "swap",
+    "disk",
+    "break",
+    "colors"
+  ]
+}
diff --git a/config/fish/completions/key-bindings.fish b/config/fish/completions/key-bindings.fish
new file mode 100644 (file)
index 0000000..743c7c1
--- /dev/null
@@ -0,0 +1,172 @@
+#     ____      ____
+#    / __/___  / __/
+#   / /_/_  / / /_
+#  / __/ / /_/ __/
+# /_/   /___/_/ key-bindings.fish
+#
+# - $FZF_TMUX_OPTS
+# - $FZF_CTRL_T_COMMAND
+# - $FZF_CTRL_T_OPTS
+# - $FZF_CTRL_R_OPTS
+# - $FZF_ALT_C_COMMAND
+# - $FZF_ALT_C_OPTS
+
+# Key bindings
+# ------------
+function fzf_key_bindings
+
+  # Store current token in $dir as root for the 'find' command
+  function fzf-file-widget -d "List files and folders"
+    set -l commandline (__fzf_parse_commandline)
+    set -l dir $commandline[1]
+    set -l fzf_query $commandline[2]
+    set -l prefix $commandline[3]
+
+    # "-path \$dir'*/\\.*'" matches hidden files/folders inside $dir but not
+    # $dir itself, even if hidden.
+    test -n "$FZF_CTRL_T_COMMAND"; or set -l FZF_CTRL_T_COMMAND "
+    command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
+    -o -type f -print \
+    -o -type d -print \
+    -o -type l -print 2> /dev/null | sed 's@^\./@@'"
+
+    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
+    begin
+      set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS"
+      eval "$FZF_CTRL_T_COMMAND | "(__fzfcmd)' -m --query "'$fzf_query'"' | while read -l r; set result $result $r; end
+    end
+    if [ -z "$result" ]
+      commandline -f repaint
+      return
+    else
+      # Remove last token from commandline.
+      commandline -t ""
+    end
+    for i in $result
+      commandline -it -- $prefix
+      commandline -it -- (string escape $i)
+      commandline -it -- ' '
+    end
+    commandline -f repaint
+  end
+
+  function fzf-history-widget -d "Show command history"
+    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
+    begin
+      set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT $FZF_DEFAULT_OPTS --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore $FZF_CTRL_R_OPTS +m"
+
+      set -l FISH_MAJOR (echo $version | cut -f1 -d.)
+      set -l FISH_MINOR (echo $version | cut -f2 -d.)
+
+      # history's -z flag is needed for multi-line support.
+      # history's -z flag was added in fish 2.4.0, so don't use it for versions
+      # before 2.4.0.
+      if [ "$FISH_MAJOR" -gt 2 -o \( "$FISH_MAJOR" -eq 2 -a "$FISH_MINOR" -ge 4 \) ];
+        history -z | eval (__fzfcmd) --read0 --print0 -q '(commandline)' | read -lz result
+        and commandline -- $result
+      else
+        history | eval (__fzfcmd) -q '(commandline)' | read -l result
+        and commandline -- $result
+      end
+    end
+    commandline -f repaint
+  end
+
+  function fzf-cd-widget -d "Change directory"
+    set -l commandline (__fzf_parse_commandline)
+    set -l dir $commandline[1]
+    set -l fzf_query $commandline[2]
+    set -l prefix $commandline[3]
+
+    test -n "$FZF_ALT_C_COMMAND"; or set -l FZF_ALT_C_COMMAND "
+    command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
+    -o -type d -print 2> /dev/null | sed 's@^\./@@'"
+    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
+    begin
+      set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS"
+      eval "$FZF_ALT_C_COMMAND | "(__fzfcmd)' +m --query "'$fzf_query'"' | read -l result
+
+      if [ -n "$result" ]
+        cd -- $result
+
+        # Remove last token from commandline.
+        commandline -t ""
+        commandline -it -- $prefix
+      end
+    end
+
+    commandline -f repaint
+  end
+
+  function __fzfcmd
+    test -n "$FZF_TMUX"; or set FZF_TMUX 0
+    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
+    if [ -n "$FZF_TMUX_OPTS" ]
+      echo "fzf-tmux $FZF_TMUX_OPTS -- "
+    else if [ $FZF_TMUX -eq 1 ]
+      echo "fzf-tmux -d$FZF_TMUX_HEIGHT -- "
+    else
+      echo "fzf"
+    end
+  end
+
+  bind \ct fzf-file-widget
+  bind \cr fzf-history-widget
+  bind \ec fzf-cd-widget
+
+  if bind -M insert > /dev/null 2>&1
+    bind -M insert \ct fzf-file-widget
+    bind -M insert \cr fzf-history-widget
+    bind -M insert \ec fzf-cd-widget
+  end
+
+  function __fzf_parse_commandline -d 'Parse the current command line token and return split of existing filepath, fzf query, and optional -option= prefix'
+    set -l commandline (commandline -t)
+
+    # strip -option= from token if present
+    set -l prefix (string match -r -- '^-[^\s=]+=' $commandline)
+    set commandline (string replace -- "$prefix" '' $commandline)
+
+    # eval is used to do shell expansion on paths
+    eval set commandline $commandline
+
+    if [ -z $commandline ]
+      # Default to current directory with no --query
+      set dir '.'
+      set fzf_query ''
+    else
+      set dir (__fzf_get_dir $commandline)
+
+      if [ "$dir" = "." -a (string sub -l 1 -- $commandline) != '.' ]
+        # if $dir is "." but commandline is not a relative path, this means no file path found
+        set fzf_query $commandline
+      else
+        # Also remove trailing slash after dir, to "split" input properly
+        set fzf_query (string replace -r "^$dir/?" -- '' "$commandline")
+      end
+    end
+
+    echo $dir
+    echo $fzf_query
+    echo $prefix
+  end
+
+  function __fzf_get_dir -d 'Find the longest existing filepath from input string'
+    set dir $argv
+
+    # Strip all trailing slashes. Ignore if $dir is root dir (/)
+    if [ (string length -- $dir) -gt 1 ]
+      set dir (string replace -r '/*$' -- '' $dir)
+    end
+
+    # Iteratively check if dir exists and strip tail end of path
+    while [ ! -d "$dir" ]
+      # If path is absolute, this can keep going until ends up at /
+      # If path is relative, this can keep going until entire input is consumed, dirname returns "."
+      set dir (dirname -- "$dir")
+    end
+
+    echo $dir
+  end
+
+end
diff --git a/config/fish/config.fish b/config/fish/config.fish
new file mode 100644 (file)
index 0000000..0d387d5
--- /dev/null
@@ -0,0 +1,7 @@
+if status is-interactive
+    # Commands to run in interactive sessions can go here
+    #
+    #cat ~/.config/banner.asc
+    fastfetch
+    set -g fish_greeting
+end
diff --git a/config/fish/fish_variables b/config/fish/fish_variables
new file mode 100644 (file)
index 0000000..d5b57ec
--- /dev/null
@@ -0,0 +1,40 @@
+# This file contains fish universal variable definitions.
+# VERSION: 3.0
+SETUVAR --export EDITOR:kcr\x20edit
+SETUVAR --export FZF_DEFAULT_OPTS:--multi\x20--layout=reverse\x20--preview-window=down:60%
+SETUVAR --export KCR_DEFAULT_SESSION:default
+SETUVAR --export VDPAU_DRIVER:radeonsi
+SETUVAR __fish_initialized:3400
+SETUVAR fish_color_autosuggestion:8e908c
+SETUVAR fish_color_cancel:\x2dr
+SETUVAR fish_color_command:8959a8
+SETUVAR fish_color_comment:eab700
+SETUVAR fish_color_cwd:green
+SETUVAR fish_color_cwd_root:red
+SETUVAR fish_color_end:8959a8
+SETUVAR fish_color_error:c82829
+SETUVAR fish_color_escape:00a6b2
+SETUVAR fish_color_history_current:\x2d\x2dbold
+SETUVAR fish_color_host:normal
+SETUVAR fish_color_host_remote:yellow
+SETUVAR fish_color_keyword:8959a8
+SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
+SETUVAR fish_color_normal:normal
+SETUVAR fish_color_operator:00a6b2
+SETUVAR fish_color_option:4271ae
+SETUVAR fish_color_param:4271ae
+SETUVAR fish_color_quote:718c00
+SETUVAR fish_color_redirection:3e999f
+SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
+SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
+SETUVAR fish_color_status:red
+SETUVAR fish_color_user:brgreen
+SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_greeting:\x1d
+SETUVAR fish_key_bindings:fish_default_key_bindings
+SETUVAR fish_pager_color_completion:normal
+SETUVAR fish_pager_color_description:B3A06D\x1eyellow
+SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
+SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
+SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack
+SETUVAR fish_user_paths:/home/andy/Applications\x1e/opt/android\x2dsdk/platform\x2dtools\x1e/home/andy/\x2ecargo/bin\x1e/home/andy/\x2elocal/bin
diff --git a/config/fish/functions/:cat.fish b/config/fish/functions/:cat.fish
new file mode 100644 (file)
index 0000000..c82ad68
--- /dev/null
@@ -0,0 +1,3 @@
+function :cat --wraps='kcr cat --raw' --description 'alias :cat=kcr cat --raw'
+  kcr cat --raw $argv; 
+end
diff --git a/config/fish/functions/K.fish b/config/fish/functions/K.fish
new file mode 100644 (file)
index 0000000..bf4cb13
--- /dev/null
@@ -0,0 +1,3 @@
+function K --wraps=kcr-fzf-shell --description 'alias K=kcr-fzf-shell'
+  kcr-fzf-shell $argv; 
+end
diff --git a/config/fish/functions/a.fish b/config/fish/functions/a.fish
new file mode 100644 (file)
index 0000000..1e2c651
--- /dev/null
@@ -0,0 +1,3 @@
+function a --wraps='kcr attach' --description 'alias a=kcr attach'
+  kcr attach $argv; 
+end
diff --git a/config/fish/functions/df.fish b/config/fish/functions/df.fish
new file mode 100644 (file)
index 0000000..8a46d4a
--- /dev/null
@@ -0,0 +1,3 @@
+function df --wraps='/bin/df -h | tail -n +2 |  sort -n' --wraps='/bin/df -ah | tail -n +2 |  sort -n' --wraps='/bin/df -ahk | tail -n +2 |  sort -n' --description 'alias df /bin/df -h | tail -n +2 |  sort -n'
+  /bin/df -h | tail -n +2 |  sort -n $argv; 
+end
diff --git a/config/fish/functions/emergelog.fish b/config/fish/functions/emergelog.fish
new file mode 100644 (file)
index 0000000..8412d62
--- /dev/null
@@ -0,0 +1,3 @@
+function emergelog --wraps='sudo cat /var/log/emerge.log | grep completed' --wraps=sudo\ cat\ /var/log/emerge.log\ \|\ grep\ -i\ \"completed\\\|started\" --wraps=sudo\ cat\ /var/log/emerge.log\ \|\ grep\ -i\ \"started\\\|completed\\\|exiting\" --description alias\ emergelog=sudo\ cat\ /var/log/emerge.log\ \|\ grep\ -i\ \"started\\\|completed\\\|exiting\"
+  sudo cat /var/log/emerge.log | grep -i "started\|completed\|exiting" $argv; 
+end
diff --git a/config/fish/functions/fish_prompt.fish b/config/fish/functions/fish_prompt.fish
new file mode 100644 (file)
index 0000000..b7d38e6
--- /dev/null
@@ -0,0 +1,139 @@
+function fish_prompt
+    # This prompt shows:
+    # - green lines if the last return command is OK, red otherwise
+    # - your user name, in red if root or yellow otherwise
+    # - your hostname, in cyan if ssh or blue otherwise
+    # - the current path (with prompt_pwd)
+    # - date +%X
+    # - the current virtual environment, if any
+    # - the current git status, if any, with fish_git_prompt
+    # - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi"
+    # - current background jobs, if any
+
+    # It goes from:
+    # ┬─[nim@Hattori:~]─[11:39:00]
+    # ╰─>$ echo here
+
+    # To:
+    # ┬─[nim@Hattori:~/w/dashboard]─[11:37:14]─[V:django20]─[G:master↑1|●1✚1…1]─[B:85%, 05:41:42 remaining]
+    # │ 2    15054    0%    arrêtée    sleep 100000
+    # │ 1    15048    0%    arrêtée    sleep 100000
+    # ╰─>$ echo there
+
+    set -l retc red
+    test $status = 0; and set retc green
+
+    set -q __fish_git_prompt_showupstream
+    or set -g __fish_git_prompt_showupstream auto
+
+    function _nim_prompt_wrapper
+        set retc $argv[1]
+        set -l field_name $argv[2]
+        set -l field_value $argv[3]
+
+        set_color normal
+        set_color $retc
+        echo -n '─'
+        set_color -o green
+        echo -n '['
+        set_color normal
+        test -n $field_name
+        and echo -n $field_name:
+        set_color $retc
+        echo -n $field_value
+        set_color -o green
+        echo -n ']'
+    end
+
+    set_color $retc
+    echo -n '┬─'
+    set_color -o green
+    echo -n [
+
+    if functions -q fish_is_root_user; and fish_is_root_user
+        set_color -o red
+    else
+        set_color -o yellow
+    end
+
+    echo -n $USER
+    set_color -o white
+    echo -n @
+
+    if test -z "$SSH_CLIENT"
+        set_color -o blue
+    else
+        set_color -o cyan
+    end
+
+    echo -n (prompt_hostname)
+    set_color -o white
+    echo -n :(prompt_pwd)
+    set_color -o green
+    echo -n ']'
+
+    # Date
+    _nim_prompt_wrapper $retc '' (date +%X)
+
+    # Vi-mode
+    # The default mode prompt would be prefixed, which ruins our alignment.
+    function fish_mode_prompt
+    end
+
+    if test "$fish_key_bindings" = fish_vi_key_bindings
+        or test "$fish_key_bindings" = fish_hybrid_key_bindings
+        set -l mode
+        switch $fish_bind_mode
+            case default
+                set mode (set_color --bold red)N
+            case insert
+                set mode (set_color --bold green)I
+            case replace_one
+                set mode (set_color --bold green)R
+                echo '[R]'
+            case replace
+                set mode (set_color --bold cyan)R
+            case visual
+                set mode (set_color --bold magenta)V
+        end
+        set mode $mode(set_color normal)
+        _nim_prompt_wrapper $retc '' $mode
+    end
+
+
+    # Virtual Environment
+    set -q VIRTUAL_ENV_DISABLE_PROMPT
+    or set -g VIRTUAL_ENV_DISABLE_PROMPT true
+    set -q VIRTUAL_ENV
+    and _nim_prompt_wrapper $retc V (basename "$VIRTUAL_ENV")
+
+    # git
+    set -l prompt_git (fish_git_prompt '%s')
+    test -n "$prompt_git"
+    and _nim_prompt_wrapper $retc G $prompt_git
+
+    # Battery status
+    type -q acpi
+    and test (acpi -a 2> /dev/null | string match -r off)
+    and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-)
+
+    # New line
+    echo
+
+    # Background jobs
+    set_color normal
+
+    for job in (jobs)
+        set_color $retc
+        echo -n '│ '
+        set_color brown
+        echo $job
+    end
+
+    set_color normal
+    set_color $retc
+    echo -n '╰─>'
+    set_color -o red
+    echo -n '$ '
+    set_color normal
+end
diff --git a/config/fish/functions/free.fish b/config/fish/functions/free.fish
new file mode 100644 (file)
index 0000000..1588642
--- /dev/null
@@ -0,0 +1,3 @@
+function free --wraps='/usr/bin/free --giga -h -w' --wraps='/usr/bin/free -h' --description 'alias free=free -wth --si'
+ command free -wth --si $argv; 
+end
diff --git a/config/fish/functions/gcp.fish b/config/fish/functions/gcp.fish
new file mode 100644 (file)
index 0000000..907c340
--- /dev/null
@@ -0,0 +1,3 @@
+function gcp --wraps='git cherry-pick' --description 'alias gcp=git cherry-pick'
+  git cherry-pick $argv; 
+end
diff --git a/config/fish/functions/glo.fish b/config/fish/functions/glo.fish
new file mode 100644 (file)
index 0000000..5d60fd5
--- /dev/null
@@ -0,0 +1,3 @@
+function glo --wraps='git log --oneline' --description 'alias gcp=git log --oneline'
+  git log --oneline $argv; 
+end
diff --git a/config/fish/functions/grep.fish b/config/fish/functions/grep.fish
new file mode 100644 (file)
index 0000000..65baf8e
--- /dev/null
@@ -0,0 +1,3 @@
+function grep --description 'alias grep=grep -i --color=auto'
+ command grep -i --color=auto $argv; 
+end
diff --git a/config/fish/functions/gs.fish b/config/fish/functions/gs.fish
new file mode 100644 (file)
index 0000000..0755f7c
--- /dev/null
@@ -0,0 +1,3 @@
+function gs --wraps='git status' --description 'alias gs=git status'
+  git status $argv; 
+end
diff --git a/config/fish/functions/hc.fish b/config/fish/functions/hc.fish
new file mode 100644 (file)
index 0000000..cfbfd46
--- /dev/null
@@ -0,0 +1,3 @@
+function hc --wraps='hyprctl clients' --description 'alias hc=hyprctl clients'
+  hyprctl clients $argv; 
+end
diff --git a/config/fish/functions/k.fish b/config/fish/functions/k.fish
new file mode 100644 (file)
index 0000000..ad41f0d
--- /dev/null
@@ -0,0 +1,3 @@
+function k --wraps='kks edit' --wraps='kcr attach' --wraps='kcr edit' --description 'alias k=kcr edit'
+  kcr edit $argv; 
+end
diff --git a/config/fish/functions/kl.fish b/config/fish/functions/kl.fish
new file mode 100644 (file)
index 0000000..a9dda47
--- /dev/null
@@ -0,0 +1,3 @@
+function kl --wraps='kcr list' --description 'alias kl=kcr list'
+  kcr list $argv; 
+end
diff --git a/config/fish/functions/ks.fish b/config/fish/functions/ks.fish
new file mode 100644 (file)
index 0000000..63d3f45
--- /dev/null
@@ -0,0 +1,3 @@
+function ks --wraps='kcr shell --session' --description 'alias ks=kcr shell --session'
+  kcr shell --session $argv; 
+end
diff --git a/config/fish/functions/l1.fish b/config/fish/functions/l1.fish
new file mode 100644 (file)
index 0000000..1422345
--- /dev/null
@@ -0,0 +1,3 @@
+function l1 --description 'list files bare'
+   exa --icons --group --time-style=iso --group-directories-first -l $argv;
+end
diff --git a/config/fish/functions/la.fish b/config/fish/functions/la.fish
new file mode 100644 (file)
index 0000000..e3d3f06
--- /dev/null
@@ -0,0 +1,3 @@
+function la --description 'list standard incl. hidden'
+   ls -a $argv;
+end
diff --git a/config/fish/functions/lg.fish b/config/fish/functions/lg.fish
new file mode 100644 (file)
index 0000000..705c12e
--- /dev/null
@@ -0,0 +1,3 @@
+function lg --description 'list files sorted by size'
+  exa --icons --group --long --sort=size -t=mod --time-style=iso --group-directories-first $argv;
+end
diff --git a/config/fish/functions/lgo.fish b/config/fish/functions/lgo.fish
new file mode 100644 (file)
index 0000000..c8bf2aa
--- /dev/null
@@ -0,0 +1,3 @@
+function lgo --wraps='git log --oneline' --description 'alias lgo=git log --oneline'
+  git log --oneline $argv; 
+end
diff --git a/config/fish/functions/ll.fish b/config/fish/functions/ll.fish
new file mode 100644 (file)
index 0000000..fe524fd
--- /dev/null
@@ -0,0 +1,3 @@
+function ll --description 'list files long'
+   exa --icons --group --time-style=iso --group-directories-first -l $argv;
+end
diff --git a/config/fish/functions/ls.fish b/config/fish/functions/ls.fish
new file mode 100644 (file)
index 0000000..2e4d264
--- /dev/null
@@ -0,0 +1,3 @@
+function ls --description 'list files standard'
+   exa --icons --time-style=iso --group-directories-first $argv;
+end
diff --git a/config/fish/functions/lsblk.fish b/config/fish/functions/lsblk.fish
new file mode 100644 (file)
index 0000000..0b1dbdb
--- /dev/null
@@ -0,0 +1,3 @@
+function lsblk --description 'alias lsblk=lsblk -o +MODEL,LABEL'
+ command lsblk -o +MODEL,LABEL $argv; 
+end
diff --git a/config/fish/functions/lt.fish b/config/fish/functions/lt.fish
new file mode 100644 (file)
index 0000000..ffa4b22
--- /dev/null
@@ -0,0 +1,3 @@
+function lt --description 'list files sorted by mtime'
+  exa --icons --group --long --sort=mod -t=mod --time-style=iso --group-directories-first $argv;
+end
diff --git a/config/fish/functions/lw.fish b/config/fish/functions/lw.fish
new file mode 100644 (file)
index 0000000..173cc73
--- /dev/null
@@ -0,0 +1,3 @@
+function lw --description 'list files wide'
+  exa --icons --group --long --grid --time-style=iso --group-directories-first $argv;
+end
diff --git a/config/fish/functions/r.fish b/config/fish/functions/r.fish
new file mode 100644 (file)
index 0000000..3bd11cd
--- /dev/null
@@ -0,0 +1,12 @@
+function r
+set tempfile (mktemp -t tmp.XXXXXX)
+set command_argument "tab_new;map Q chain shell echo %d > $tempfile; quitall"
+command ranger --cmd="$command_argument" $argv
+if test -s $tempfile
+set ranger_pwd (cat $tempfile)
+if test -n $ranger_pwd -a -d $ranger_pwd
+builtin cd -- $ranger_pwd
+end
+end
+command rm -f -- $tempfile
+end
diff --git a/config/fish/functions/stow.fish b/config/fish/functions/stow.fish
new file mode 100644 (file)
index 0000000..e38ae52
--- /dev/null
@@ -0,0 +1,4 @@
+function stow
+    bash -c "/usr/bin/stow $argv 2> >(grep -v 'BUG in find_stowed_path? Absolute/relative mismatch' 1>&2)"
+end
+
diff --git a/config/fish/functions/zdiff.fish b/config/fish/functions/zdiff.fish
new file mode 100644 (file)
index 0000000..028c850
--- /dev/null
@@ -0,0 +1,3 @@
+function zdiff --description 'alias zdiff=zdiff --color=auto'
+ command zdiff --color=auto $argv; 
+end
diff --git a/config/foot/base16 b/config/foot/base16
new file mode 160000 (submodule)
index 0000000..eedbcfa
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce
diff --git a/config/foot/foot.ini b/config/foot/foot.ini
new file mode 100644 (file)
index 0000000..c9199c8
--- /dev/null
@@ -0,0 +1,238 @@
+# -*- conf -*-
+
+# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
+# term=foot (or xterm-256color if built with -Dterminfo=disabled)
+# login-shell=no
+
+# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
+# title=foot
+# locked-title=no
+
+include=~/.config/foot/base16/colors/base16-default-dark.ini
+
+font=LiterationMono Nerd Font:size=13
+# font-bold=<bold variant of regular font>
+# font-italic=<italic variant of regular font>
+# font-bold-italic=<bold+italic variant of regular font>
+# font-size-adjustment=0.5
+# line-height=<font metrics>
+# letter-spacing=0
+# horizontal-letter-offset=0
+# vertical-letter-offset=0
+# underline-offset=<font metrics>
+# underline-thickness=<font underline thickness>
+# box-drawings-uses-font-glyphs=no
+# dpi-aware=no
+
+initial-window-size-pixels=1256x1344  # Or,
+# initial-window-size-chars=<COLSxROWS>
+# initial-window-mode=windowed
+# pad=0x0                             # optionally append 'center'
+# resize-delay-ms=100
+
+notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
+
+# bold-text-in-bright=no
+# word-delimiters=,│`|:"'()[]{}<>
+# selection-target=primary
+# workers=<number of logical CPUs>
+# utmp-helper=/usr/lib/utempter/utempter  # When utmp backend is ‘libutempter’ (Linux)
+# utmp-helper=/usr/libexec/ulog-helper    # When utmp backend is ‘ulog’ (FreeBSD)
+
+[environment]
+# name=value
+
+[bell]
+# urgent=no
+# notify=no
+# visual=no
+# command=
+# command-focused=no
+
+[scrollback]
+lines=16384
+# multiplier=3.0
+# indicator-position=relative
+# indicator-format=""
+indicator-format=percentage
+
+[url]
+# launch=xdg-open ${url}
+label-letters=adfghjkl
+# osc8-underline=url-mode
+# protocols=http, https, ftp, ftps, file, gemini, gopher
+# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
+
+[cursor]
+# style=block
+# color=<inverse foreground/background>
+# blink=no
+# beam-thickness=1.5
+# underline-thickness=<font underline thickness>
+
+[mouse]
+# hide-when-typing=no
+# alternate-scroll-mode=yes
+
+[touch]
+# long-press-delay=400
+
+[colors]
+alpha=0.90
+
+background=242124
+foreground=f5f5f5
+# flash=7f7f00
+# flash-alpha=0.5
+
+## Normal/regular colors (color palette 0-7)
+regular0=242424    # black
+# regular1=f62b5a  # red
+# regular2=47b413  # green
+regular2=91bc61   # bright green
+regular3=ffb852    # yellow
+# regular4=24acd4  # blue
+regular4=5d81d2
+regular5=776d96 # magenta
+# regular6=13c299  # cyan
+regular6=90e0e0
+regular7=f5f5f5  # white
+
+## Bright colors (color palette 8-15)
+bright0=3d4c59     # bright black
+# bright1=ff4d51   # bright red
+# bright2=35d450   # bright green
+bright2=91bc61   # bright green
+# bright3=e9e836   # bright yellow
+bright3=ffb852   # bright yellow
+# bright4=5dc5f8   # bright blue
+bright4=5d81d2
+# bright5=feabf2   # bright magenta
+bright5=776d96 # magenta
+# bright6=24dfc4   # bright cyan
+bright6=90e0e0
+# bright7=ffffff   # bright white
+
+## dimmed colors (see foot.ini(5) man page)
+# dim0=<not set>
+# ...
+# dim7=<not-set>
+
+## The remaining 256-color palette
+# 16 = <256-color palette #16>
+# ...
+# 255 = <256-color palette #255>
+
+## Misc colors
+# selection-foreground=<inverse foreground/background>
+# selection-background=<inverse foreground/background>
+# jump-labels=<regular0> <regular3>          # black-on-yellow
+# scrollback-indicator=<regular0> <bright4>  # black-on-bright-blue
+# search-box-no-match=<regular0> <regular1>  # black-on-red
+# search-box-match=<regular0> <regular3>     # black-on-yellow
+# urls=<regular3>
+
+[csd]
+# preferred=server
+# size=26
+# font=<primary font>
+# color=<foreground color>
+# hide-when-maximized=no
+# double-click-to-maximize=yes
+# border-width=0
+# border-color=<csd.color>
+# button-width=26
+# button-color=<background color>
+# button-minimize-color=<regular4>
+# button-maximize-color=<regular2>
+# button-close-color=<regular1>
+
+[key-bindings]
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# scrollback-home=none
+# scrollback-end=none
+# clipboard-copy=Control+Shift+c XF86Copy
+# clipboard-paste=Control+Shift+v XF86Paste
+# primary-paste=Shift+Insert
+# search-start=Control+Shift+r
+# font-increase=Control+plus Control+equal Control+KP_Add
+# font-decrease=Control+minus Control+KP_Subtract
+# font-reset=Control+0 Control+KP_0
+# spawn-terminal=Control+Shift+n
+# minimize=none
+# maximize=none
+# fullscreen=none
+# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-selected=[xargs -r firefox] none
+# show-urls-launch=Control+Shift+o
+# show-urls-copy=none
+# show-urls-persistent=none
+# prompt-prev=Control+Shift+z
+# prompt-next=Control+Shift+x
+# unicode-input=Control+Shift+u
+# noop=none
+
+[search-bindings]
+# cancel=Control+g Control+c Escape
+# commit=Return
+# find-prev=Control+r
+# find-next=Control+s
+# cursor-left=Left Control+b
+# cursor-left-word=Control+Left Mod1+b
+# cursor-right=Right Control+f
+# cursor-right-word=Control+Right Mod1+f
+# cursor-home=Home Control+a
+# cursor-end=End Control+e
+# delete-prev=BackSpace
+# delete-prev-word=Mod1+BackSpace Control+BackSpace
+# delete-next=Delete
+# delete-next-word=Mod1+d Control+Delete
+# extend-char=Shift+Right
+# extend-to-word-boundary=Control+w Control+Shift+Right
+# extend-to-next-whitespace=Control+Shift+w
+# extend-line-down=Shift+Down
+# extend-backward-char=Shift+Left
+# extend-backward-to-word-boundary=Control+Shift+Left
+# extend-backward-to-next-whitespace=none
+# extend-line-up=Shift+Up
+# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
+# primary-paste=Shift+Insert
+# unicode-input=none
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# scrollback-home=none
+# scrollback-end=none
+
+[url-bindings]
+# cancel=Control+g Control+c Control+d Escape
+# toggle-url-visible=t
+
+[text-bindings]
+# \x03=Mod4+c  # Map Super+c -> Ctrl+c
+
+[mouse-bindings]
+# scrollback-up-mouse=BTN_BACK
+# scrollback-down-mouse=BTN_FORWARD
+# selection-override-modifiers=Shift
+# primary-paste=BTN_MIDDLE
+# select-begin=BTN_LEFT
+# select-begin-block=Control+BTN_LEFT
+# select-extend=BTN_RIGHT
+# select-extend-character-wise=Control+BTN_RIGHT
+# select-word=BTN_LEFT-2
+# select-word-whitespace=Control+BTN_LEFT-2
+# select-quote = BTN_LEFT-3
+# select-row=BTN_LEFT-4
+
+# vim: ft=dosini
+
diff --git a/config/fuzzel/fuzzel.ini b/config/fuzzel/fuzzel.ini
new file mode 100644 (file)
index 0000000..4b36d1f
--- /dev/null
@@ -0,0 +1,94 @@
+# output=<not set>
+font=monospace:size=12
+# dpi-aware=auto
+# prompt="> "
+icon-theme=breeze-dark
+# icons-enabled=yes
+# fields=filename,name,generic
+# password-character=*
+# filter-desktop=no
+# fuzzy=yes
+# show-actions=no
+terminal=foot -e
+# launch-prefix=<not set>
+
+# anchor=center
+# lines=15
+# width=30
+# tabs=8
+# horizontal-pad=40
+# vertical-pad=8
+# inner-pad=0
+
+# image-size-ratio=0.5
+
+# line-height=<use font metrics>
+line-height=20
+# letter-spacing=0
+
+# layer = top
+# exit-on-keyboard-focus-loss = yes
+
+[colors]
+background=282828dd
+text=d8d8d8ff
+# match=cb4b16ff
+selection=add8e6dd
+selection-text=282828ff
+# selection-match=cb4b16ff
+border=595959ff
+
+[border]
+width=2
+# radius=10
+
+[dmenu]
+# mode=text  # text|index
+# exit-immediately-if-empty=no
+
+[key-bindings]
+# cancel=Escape Control+g
+# execute=Return KP_Enter Control+y
+# execute-or-next=Tab
+# execute-input=Shift+Return Shift+KP_Enter
+# cursor-left=Left Control+b
+# cursor-left-word=Control+Left Mod1+b
+# cursor-right=Right Control+f
+# cursor-right-word=Control+Right Mod1+f
+# cursor-home=Home Control+a
+# cursor-end=End Control+e
+# delete-prev=BackSpace
+# delete-prev-word=Mod1+BackSpace Control+BackSpace
+# delete-next=Delete KP_Delete Control+d
+# delete-next-word=Mod1+d Control+Delete Control+KP_Delete
+# delete-line=Control+k
+# prev=Up Control+p
+# prev-with-wrap=ISO_Left_Tab
+# prev-page=Page_Up KP_Page_Up
+# next=Down Control+n
+# next-with-wrap=none
+# next-page=Page_Down KP_Page_Down
+
+# custom-N: *dmenu mode only*. Like execute, but with a non-zero
+# exit-code; custom-1 exits with code 10, custom-2 with 11, custom-3
+# with 12, and so on.
+
+# custom-1=Mod1+1
+# custom-2=Mod1+2
+# custom-3=Mod1+3
+# custom-4=Mod1+4
+# custom-5=Mod1+5
+# custom-6=Mod1+6
+# custom-7=Mod1+7
+# custom-8=Mod1+8
+# custom-9=Mod1+9
+# custom-10=Mod1+0
+# custom-11=Mod1+exclam
+# custom-12=Mod1+at
+# custom-13=Mod1+numbersign
+# custom-14=Mod1+dollar
+# custom-15=Mod1+percent
+# custom-16=Mod1+dead_circumflex
+# custom-17=Mod1+ampersand
+# custom-18=Mod1+asterix
+# custom-19=Mod1+parentleft
diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf
new file mode 100644 (file)
index 0000000..10e343e
--- /dev/null
@@ -0,0 +1,300 @@
+# ░█░█░█░█░█▀█░█▀▄░█░░░█▀█░█▀█░█▀▄░░░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀
+# ░█▀█░░█░░█▀▀░█▀▄░█░░░█▀█░█░█░█░█░░░█░░░█░█░█░█░█▀▀░░█░░█░█
+# ░▀░▀░░▀░░▀░░░▀░▀░▀▀▀░▀░▀░▀░▀░▀▀░░░░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀i
+
+autogenerated = 0 # remove this line to remove the warning
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+#monitor=DP-3,preferred,auto,1.125,vrr,2
+monitor=DP-3,preferred,auto,1,vrr,2
+
+# unscale XWayland
+xwayland {
+       force_zero_scaling = true
+}
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+env = VK_ICD_FILENAMES,/usr/share/vulkan/icd.d/radeon_icd.x86_64.json
+env = WLR_RENDERER,vulkan
+env = XDG_CURRENT_DESKTOP, Hyprland
+env = XDG_SESSION_TYPE, wayland
+env = XDG_SESSION_DESKTOP, Hyprland
+
+# Execute your favorite apps at launch
+
+exec-once = ~/.config/hypr/scripts/startup.sh
+exec-once = ~/.config/hypr/scripts/daemons.sh
+
+# Source a file (multi-file configs)
+# source = ~/.config/hypr/myColors.conf
+
+# Some default env vars.
+env = GDK_SCALE=1 # scaling XWayland clients
+env = XCURSOR_SIZE,24
+env = QT_QPA_PLATFORM,wayland
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = GDK_BACKEND=wayland
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+env = MOZ_ENABLE_WAYLAND,1
+env = GTK_USE_PORTAL,1
+
+# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
+input {
+    kb_layout = us
+    kb_variant = de_se_fi
+    kb_model =
+    kb_options =
+    kb_rules =
+
+    follow_mouse = 1
+
+    touchpad {
+        natural_scroll = no
+    }
+
+    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+}
+
+general {
+    # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+    gaps_in = 10
+    gaps_out = 20
+    border_size = 2
+    col.active_border = rgba(2394bbee) rgba(638c9bee) 45deg
+    col.inactive_border = rgba(595959ee) rgba(333333ee) 45deg
+    col.nogroup_border = rgba(732673ee) rgba(4c2673ee) 45deg
+    col.nogroup_border_active = rgba(993399ee) rgba(663399ee) 45deg
+
+    layout = dwindle
+
+    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+    allow_tearing = false
+}
+
+dwindle {
+    force_split = 2
+}
+
+decoration {
+    # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+    rounding = 4
+
+    blur {
+        enabled = true
+        size = 3
+        passes = 1
+        vibrancy = 0.1696
+    }
+
+    drop_shadow = yes
+    shadow_range = 8
+    shadow_render_power = 3
+    col.shadow = rgba(1a1a1aee)
+}
+
+animations {
+    enabled = yes
+
+    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+    bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+    bezier = overshot, 0.05, 0.9, 0.1, 1.1
+
+    animation = windows, 1, 7, myBezier
+    animation = windowsOut, 1, 7, default, popin 80%
+    animation = border, 1, 10, default
+    animation = borderangle, 1, 8, default
+    animation = fade, 1, 7, default
+    animation = workspaces, 1, 6, default, slidefade 30%
+}
+
+dwindle {
+    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+    preserve_split = yes # you probably want this
+}
+
+master {
+    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+    new_is_master = true
+}
+
+gestures {
+    # See https://wiki.hyprland.org/Configuring/Variables/ for more
+    workspace_swipe = false
+}
+
+misc {
+    # See https://wiki.hyprland.org/Configuring/Variables/ for more
+    force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
+device:epic-mouse-v1 {
+    sensitivity = -0.5
+}
+
+group {
+       insert_after_current = false
+       col.border_active = rgba(fe920eee) rgba(fca230ee) 45deg
+       col.border_inactive = rgba(fca230ee) rgba(f7ca88ee) 45deg
+       col.border_locked_active = rgba(2e8b57ee) rgba(2e8a73ee) 45deg
+       col.border_locked_inactive = rgba(226841ee) rgba(226856ee) 45deg
+    groupbar {
+        font_family = LiterationMono Nerd Font
+        font_size = 11
+               gradients = true
+               col.active = 0xeefe920e
+               col.inactive = 0x99fca230
+               col.locked_active = 0x772e8b57
+               col.locked_inactive = 0x55194d40
+    }
+}
+
+# Example windowrule v1
+# windowrule = float, ^(kitty)$
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# more windowrules
+
+# handle steam client
+windowrule = float,^(steam)$
+windowrule = float,title:^(Steam)$
+windowrule = float,title:^(Freundesliste)$
+windowrulev2 = stayfocused, title:^()$, class:^(steam)$
+windowrulev2 = minsize 1 1, title:^()$, class:^(steam)$
+
+# handle other clients
+windowrulev2 = float, size 1560 1000, pin, workspace special:overlay, class:^(org.keepassxc.KeePassXC)$
+windowrule = float, ^(firefox)$
+windowrulev2 = opacity 1.0 override 0.8 override, group, class:^(foot)$
+windowrulev2 = float, opacity 1.0 override 0.8 override, class:^(popup)$
+windowrulev2 = float, noanim, stayfocused, maxsize 1280 800, center, opacity 1.0 override, class:^(kakpopup)$
+windowrule = float, ^(openrgb)$
+windowrule = float, ^(org.kde.*)$
+# windowrule = float, ^(org.kde.okular)$
+# windowrule = float, ^(org.kde.gwenview)$
+# windowrule = float, ^(org.kde.skanlite)$
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+$suremod = SUPER ALT CTRL
+$mainmod = SUPER
+
+# binds that don't want to get fat-fingered
+bind = $suremod, Q, killactive,
+bind = $suremod, M, exit,
+bind = $suremod, F, fullscreen,0
+bind = $suremod, Return, exec, konsole
+bind = $suremod, D, denywindowfromgroup, toggle
+bind = $suremod, V, togglefloating,
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainmod, Return, exec, foot -L /usr/bin/fish --
+bind = $mainmod Shift, Return, exec, foot -w 1280x800 -a popup -L /usr/bin/fish --
+bind = $mainmod, E, exec, dolphin
+bind = $mainmod, F, fullscreen,1
+bind = $mainmod, V, exec, killall fuzzel || cliphist list | fuzzel -d -w 100 | cliphist decode | wl-copy
+bind = $mainmod, D, exec, killall fuzzel || fuzzel
+bind = $mainmod, R, exec, killall rofi || rofi -show run # rofi installed for keepassxc-browser script
+bind = $mainmod, P, pseudo, # dwindle
+bind = $mainmod, S, togglesplit, # dwindle
+bind = ALT SHIFT, F12, exec, ~/.config/hypr/scripts/gamemode.sh
+bind = $mainmod, G, togglegroup
+bind = $mainmod SHIFT, G, lockactivegroup, toggle
+bind = $mainmod, TAB, focuscurrentorlast
+
+# Move focus with mainMod + arrow keys
+bind = $mainmod, left, movefocus, l
+bind = $mainmod, right, movefocus, r
+bind = $mainmod, up, movefocus, u
+bind = $mainmod, down, movefocus, d
+bind = $mainmod, H, movefocus, l
+bind = $mainmod, L, movefocus, r
+bind = $mainmod, K, movefocus, u
+bind = $mainmod, J, movefocus, d
+
+# Move windows or groups with mainMod + Shift + arrow keys
+bind = $mainmod SHIFT, left, movewindoworgroup, l
+bind = $mainmod SHIFT, right, movewindoworgroup, r
+bind = $mainmod SHIFT, up, movewindoworgroup, u
+bind = $mainmod SHIFT, down, movewindoworgroup, d
+bind = $mainmod SHIFT, H, movewindoworgroup, l
+bind = $mainmod SHIFT, L, movewindoworgroup, r
+bind = $mainmod SHIFT, K, movewindoworgroup, u
+bind = $mainmod SHIFT, J, movewindoworgroup, d
+
+# Move windows into groups
+bind = $mainmod ALT, left, moveintogroup, l
+bind = $mainmod ALT, right, moveintogroup, r
+bind = $mainmod ALT, up, moveintogroup, u
+bind = $mainmod ALT, down, moveintogroup, d
+bind = $mainmod ALT, H, moveintogroup, l
+bind = $mainmod ALT, L, moveintogroup, r
+bind = $mainmod ALT, K, moveintogroup, u
+bind = $mainmod ALT, J, moveintogroup, d
+
+# Move windows out of groups
+bind = $mainmod SHIFT ALT, left, moveoutofgroup, l
+bind = $mainmod SHIFT ALT, right, moveoutofgroup, r
+bind = $mainmod SHIFT ALT, up, moveoutofgroup, u
+bind = $mainmod SHIFT ALT, down, moveoutofgroup, d
+bind = $mainmod SHIFT ALT, H, moveoutofgroup, l
+bind = $mainmod SHIFT ALT, L, moveoutofgroup, r
+bind = $mainmod SHIFT ALT, K, moveoutofgroup, u
+bind = $mainmod SHIFT ALT, J, moveoutofgroup, d
+
+# Switch through group windows
+bind = $mainmod, O, changegroupactive, f
+bind = $mainmod, U, changegroupactive, b
+
+# Switch workspaces with mainMod + [0-9]
+bind = $mainmod, 1, workspace, 1
+bind = $mainmod, 2, workspace, 2
+bind = $mainmod, 3, workspace, 3
+bind = $mainmod, 4, workspace, 4
+bind = $mainmod, 5, workspace, 5
+bind = $mainmod, 6, workspace, 6
+bind = $mainmod, 7, workspace, 7
+bind = $mainmod, 8, workspace, 8
+bind = $mainmod, 9, workspace, 9
+bind = $mainmod, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainmod SHIFT, 1, movetoworkspace, 1
+bind = $mainmod SHIFT, 2, movetoworkspace, 2
+bind = $mainmod SHIFT, 3, movetoworkspace, 3
+bind = $mainmod SHIFT, 4, movetoworkspace, 4
+bind = $mainmod SHIFT, 5, movetoworkspace, 5
+bind = $mainmod SHIFT, 6, movetoworkspace, 6
+bind = $mainmod SHIFT, 7, movetoworkspace, 7
+bind = $mainmod SHIFT, 8, movetoworkspace, 8
+bind = $mainmod SHIFT, 9, movetoworkspace, 9
+bind = $mainmod SHIFT, 0, movetoworkspace, 10
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainmod, mouse_down, workspace, e+1
+bind = $mainmod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainmod, mouse:272, movewindow
+bindm = $mainmod, mouse:273, resizewindow
+
+# media keys
+bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
+bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bind = , XF86AudioMute, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0%
+bind = , XF86AudioPlay, exec, playerctl play-pause
+bind = , XF86AudioNext, exec, playerctl next
+bind = , XF86AudioPrev, exec, playerctl previous
+bind = , XF86audiostop, exec, playerctl stop
+
+# printscr
+bind = $mainmod, Print, exec, grim -g "$(slurp)" - | swappy -f -
+
+# 'scratchpad
+bind = $mainmod, I, togglespecialworkspace, overlay
+bind = $mainmod SHIFT, I, movetoworkspace, special:overlay
diff --git a/config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf
new file mode 100644 (file)
index 0000000..dfc9e4c
--- /dev/null
@@ -0,0 +1,5 @@
+preload = /mnt/multimedia/Wallpapers/wp10330139-5120x1440-star-wars-wallpapers.jpg
+wallpaper = DP-3,/mnt/multimedia/Wallpapers/wp10330139-5120x1440-star-wars-wallpapers.jpg
+
+ipc = on
+
diff --git a/config/hypr/scripts/daemons.sh b/config/hypr/scripts/daemons.sh
new file mode 100755 (executable)
index 0000000..f25aefa
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/env bash
+logger '=============================='
+logger 'userland daemons startup begin'
+
+
+if [[ ! $(pidof mpd) ]]; then
+       mpd && mpd-mpris &
+       logger 'mpd started'
+fi
+
+if [[ ! $(pidof swww-daemon) ]]; then
+    swww init &
+    logger 'swww-daemon started'
+    swww img ~/Bilder/Wallpapers/default.jpg &
+fi
+
+openrgb -p simple.orp &
+kak -d -s default & # kakoune default server
+
+wl-paste --type  text --watch cliphist store &
+wl-paste --type image --watch cliphist store &
+
+sleep 2 && logger 'userland daemons startup begin' && logger '=============================='
diff --git a/config/hypr/scripts/gamemode.sh b/config/hypr/scripts/gamemode.sh
new file mode 100755 (executable)
index 0000000..f97d4f4
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env sh
+HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '2p' | awk '{print $2}')
+if [ $HYPRGAMEMODE = 1 ] ; then
+    hyprctl --batch "\
+        keyword animations:enabled 0;\
+        keyword decoration:drop_shadow 0;\
+        keyword decoration:blur 0;\
+        keyword general:gaps_in 0;\
+        keyword general:gaps_out 0;\
+        keyword general:border_size 1;\
+        keyword decoration:rounding 0"
+    exit
+fi
+hyprctl reload
+
diff --git a/config/hypr/scripts/powermenu.sh b/config/hypr/scripts/powermenu.sh
new file mode 100755 (executable)
index 0000000..fe73800
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+# shamelessly stolen from https://github.com/luispabon/sway-dotfiles
+
+entries="⇠ Logout\n⏾ Suspend\n⭮ Reboot\n⏻ Shutdown"
+
+selected=$(echo -e $entries|wofi --width 250 --height 210 --dmenu --cache-file /dev/null | awk '{print tolower($2)}')
+
+case $selected in
+  logout)
+    hyprctl dispatch exit;;
+  suspend)
+    exec loginctl suspend;;
+  reboot)
+    exec loginctl reboot;;
+  shutdown)
+    exec loginctl poweroff -i;;
+esac
diff --git a/config/hypr/scripts/startup.sh b/config/hypr/scripts/startup.sh
new file mode 100755 (executable)
index 0000000..da33dd6
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+
+logger '============================'
+logger 'hyperland main startup begin'
+
+CONFIG="$HOME/.config/mako/config"
+
+if [[ ! -d "$XDG_RUNTIME_DIR" ]] ; then
+    # shellcheck disable=SC2155
+    # shellcheck disable=SC2046
+    export XDG_RUNTIME_DIR=$(mktemp -d /tmp/$(id -u)-runtime-dir.XXX)
+    logger 'xdg-runtime dir set'
+fi
+
+if [[ ! "$DBUS_SESSION_BUS_ADDRESS" ]]; then
+    dbus-daemon --session --address=unix:path="$XDG_RUNTIME_DIR"/bus &
+    logger 'dbus session daemon started'
+fi
+
+if [[ ! $(pidof /usr/lib64/libexec/polkit-kde-authentication-agent-1) ]]; then
+    /usr/lib64/libexec/polkit-kde-authentication-agent-1 &
+    logger 'polit-kde started'
+fi
+
+if [[ ! $(pidof mako) ]]; then
+       mako --config "${CONFIG}" &
+       logger 'mako started'
+fi
+
+killall xdg-desktop-portal-hyprland
+killall xdg-desktop-portal-gnome
+killall xdg-desktop-portal-gtk
+killall xdg-desktop-portal-kde
+killall xdg-desktop-portal-wlr
+killall xdg-desktop-portal
+logger 'killed all xdg-desktop'
+sleep 1
+/usr/lib64/libexec/xdg-desktop-portal-kde &
+logger 'xdg-desktop-portal-kde started'
+sleep 1
+/usr/libexec/xdg-desktop-portal-hyprland &
+logger 'xdg-desktop-portal-hyprland started'
+sleep 2
+/usr/libexec/xdg-desktop-portal &
+logger 'xdg-desktop-portal started'
+
+if [[ ! $(pidof pipewire) ]]; then
+    gentoo-pipewire-launcher &
+    logger 'gentoo-pipewire-launcher started'
+else
+    gentoo-pipewire-launcher restart &
+    logger 'gentoo-pipewire-launcher (re-)started'
+fi
+
+if [[ ! $(pidof waybar) ]]; then
+    waybar &
+    logger 'waybar started'
+fi
+
+sleep 2 && logger 'hyperland main startup begin' && logger '============================'
+
diff --git a/config/hypr/scripts/xdg-desktop-portal.sh b/config/hypr/scripts/xdg-desktop-portal.sh
new file mode 100755 (executable)
index 0000000..b2ab7ed
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+killall xdg-desktop-portal-hyprland
+killall xdg-desktop-portal-gnome
+killall xdg-desktop-portal-gnome
+killall xdg-desktop-portal-kde
+killall xdg-desktop-portal-wlr
+killall xdg-desktop-portal
+logger 'killed all xdg-desktop'
+sleep 1
+/usr/lib64/libexec/xdg-desktop-portal-kde &
+logger 'xdg-desktop-portal-kde started'
+sleep 1
+/usr/libexec/xdg-desktop-portal-hyprland &
+logger 'xdg-desktop-portal-hyprland started'
+sleep 2
+/usr/libexec/xdg-desktop-portal &
+logger 'xdg-desktop-portal started'
diff --git a/config/kak/colors/base16.kak b/config/kak/colors/base16.kak
new file mode 100644 (file)
index 0000000..0ae479e
--- /dev/null
@@ -0,0 +1,76 @@
+##
+## base16.kak by lenormf
+##
+
+evaluate-commands %sh{
+    black_lighterer='rgb:383838'
+    black_lighter='rgb:2D2D2D'
+    black_light='rgb:1C1C1C'
+    cyan_light='rgb:7CB0FF'
+    green_dark='rgb:A1B56C'
+    grey_dark='rgb:585858'
+    grey_medium='rgb:989898'
+    grey_light='rgb:D8D8D8'
+    magenta_dark='rgb:AB4642'
+    magenta_light='rgb:AB4434'
+    orange_dark='rgb:DC9656'
+    orange_light='rgb:F7CA88'
+    purple_dark='rgb:BA8BAF'
+
+    ## code
+    echo "
+        face global value ${orange_dark}+b
+        face global type ${orange_light}
+        face global variable ${magenta_dark}
+        face global module ${green_dark}
+        face global function ${cyan_light}
+        face global string ${green_dark}
+        face global keyword ${purple_dark}+b
+        face global operator ${cyan_light}
+        face global attribute ${orange_dark}
+        face global comment ${grey_medium}
+        face global documentation comment
+        face global meta ${orange_light}
+        face global builtin default+b
+    "
+
+    ## markup
+    echo "
+        face global title blue
+        face global header ${cyan_light}
+        face global mono ${green_dark}
+        face global block ${orange_dark}
+        face global link blue
+        face global bullet ${magenta_light}
+        face global list ${magenta_dark}
+    "
+
+    ## builtin
+    echo "
+        face global Default ${grey_light},${black_light}
+        face global PrimarySelection white,blue+fg
+        face global SecondarySelection black,blue+fg
+        face global PrimaryCursor black,white+fg
+        face global SecondaryCursor black,white+fg
+        face global PrimaryCursorEol black,${cyan_light}+fg
+        face global SecondaryCursorEol black,${cyan_light}+fg
+        face global LineNumbers ${grey_light},${black_lighter}
+        face global LineNumberCursor ${grey_light},rgb:282828+b
+        face global MenuForeground ${grey_light},blue
+        face global MenuBackground blue,${grey_light}
+        face global MenuInfo ${cyan_light}
+        face global Information ${black_light},${cyan_light}
+        face global Error ${grey_light},${magenta_light}
+        face global DiagnosticError ${magenta_light}
+        face global DiagnosticWarning ${cyan_light}
+        face global StatusLine ${grey_light},${black_lighterer}
+        face global StatusLineMode ${orange_dark}
+        face global StatusLineInfo ${cyan_light}
+        face global StatusLineValue ${green_dark}
+        face global StatusCursor ${black_lighterer},${cyan_light}
+        face global Prompt ${black_light},${cyan_light}
+        face global MatchingChar ${cyan_light},${black_light}+b
+        face global BufferPadding ${cyan_light},${black_lighter}
+        face global Whitespace ${grey_dark}+f
+    "
+}
diff --git a/config/kak/colors/dabruin.kak b/config/kak/colors/dabruin.kak
new file mode 120000 (symlink)
index 0000000..da4a46b
--- /dev/null
@@ -0,0 +1 @@
+../plugins/dabruin.kak/dabruin.kak
\ No newline at end of file
diff --git a/config/kak/kakrc b/config/kak/kakrc
new file mode 100644 (file)
index 0000000..bf62166
--- /dev/null
@@ -0,0 +1,270 @@
+# Clipboard (wayland) integration
+# ──────────────────────────────────────────────────────────────────────────────
+hook global NormalKey y %{ nop %sh{
+  printf %s "$kak_main_reg_dquote" | wl-copy > /dev/null 2>&1 &
+}}
+
+# Enable PLUGin manager
+# ──────────────────────────────────────────────────────────────────────────────
+source "%val{config}/plugins/plug.kak/rc/plug.kak"
+plug "andreyorst/plug.kak" noload
+    plug "Ersikan/bookmarks.kak" %{
+        hook global WinCreate .* bookmarks-enable
+    }
+    plug "andreyorst/smarttab.kak" defer smarttab %{
+        # when 'backspace' is pressed, 4 spaces are deleted at once
+       set-option global softtabstop 4
+    } config %{
+       hook global WinSetOption filetype=(rust|markdown|kak|lisp|scheme|py|sh|perl) expandtab
+       hook global WinSetOption filetype=(makefile|gas) noexpandtab
+       hook global WinSetOption filetype=(c|cpp) smarttab
+    }
+    plug "whereswaldon/shellcheck.kak"
+    plug "occivink/kakoune-filetree"
+    plug "occivink/kakoune-sudo-write"
+    plug "occivink/kakoune-find"
+    plug "foot.kak"
+    plug "https://git.sr.ht/~nasmevka/dabruin.kak"
+    plug "andreyorst/powerline.kak" defer powerline_freerunner %{
+        powerline-format global 'mode_info git bufname session client line_column position '
+        powerline-theme freerunner
+        powerline-separator triangle
+    } config %{
+        powerline-start
+    }
+    plug "raiguard/kak-harpoon" %{
+        hook global WinCreate .* harpoon-add-bindings
+    }
+
+
+# Look and Feel
+# ──────────────────────────────────────────────────────────────────────────────
+add-highlighter global/trailing-whitespace regex '\h+$' 0:Error                         # trailing whitespaces in red
+add-highlighter global/todos regex '(//|#|/\*)\h*(TODO|WARNING|FIXME)[:]?[^\n]*' 2:+bu  # highlight comment tags
+add-highlighter global/ show-matching                                                   # show matching brackets
+add-highlighter global/ number-lines -min-digits 3                                      # absolute line nums everywhere
+colorscheme dabruin
+set-option global tabstop 4
+set-option global indentwidth 4
+
+
+# dynamic scrolloff
+# ──────────────────────────────────────────────────────────────────────────────
+hook global WinCreate [^*].* %{
+    hook -once window WinDisplay .* %{
+        hook window WinResize [0-9]*\.[0-9]* %{
+            set-option window scrolloff %sh{
+                printf '%u,%u' "$(($kak_window_height / 6))" "$(($kak_window_width / 8))"
+            }
+        }
+    }
+}
+
+
+# Different Cursor color in insert mode
+# ──────────────────────────────────────────────────────────────────────────────
+# Shades of blue/cyan for normal mode
+set-face global PrimarySelection white,blue+F
+set-face global SecondarySelection black,blue+F
+set-face global PrimaryCursor black,bright-cyan+F
+set-face global SecondaryCursor black,bright-blue+F
+set-face global PrimaryCursorEol black,bright-cyan
+set-face global SecondaryCursorEol black,bright-blue
+
+# Shades of green/yellow for insert mode.
+hook global ModeChange (push|pop):.*:insert %{
+    set-face window PrimarySelection black,yellow+F
+    set-face window SecondarySelection black,yellow+F
+    set-face window PrimaryCursor black,bright-red+F
+    set-face window SecondaryCursor black,bright-yellow+F
+    set-face window PrimaryCursorEol black,bright-red
+    set-face window SecondaryCursorEol black,bright-yellow
+}
+
+# Undo colour changes when we leave insert mode.
+hook global ModeChange (push|pop):insert:.* %{
+    unset-face window PrimarySelection
+    unset-face window SecondarySelection
+    unset-face window PrimaryCursor
+    unset-face window SecondaryCursor
+    unset-face window PrimaryCursorEol
+    unset-face window SecondaryCursorEol
+}
+
+
+# Enable editor config
+# ──────────────────────────────────────────────────────────────────────────────
+hook global WinCreate ^[^*]+$ %{ editorconfig-load }
+
+
+# Extra editor commands
+# ──────────────────────────────────────────────────────────────────────────────
+# tab replacement
+define-command clean-selections -docstring 'Replace tabs with spaces and trim trailing whitespace' %{ try %{
+    execute-keys -draft @s\h+$<ret>d
+} }
+define-command clean-buffer -docstring 'Replace tabs with spaces and trim trailing whitespace' %{ try %{
+    execute-keys -draft \%@s\h+$<ret>d
+} }
+# Bring back <c-a> and <c-x> from Vim to increment/decrement the number under the cursor
+define-command -hidden -params 2 inc %{ try %{
+    evaluate-commands %sh{
+        [ "$1" = 0 ] && count=1 || count="$1"
+        printf '%s%s' 'exec h"_/\d<ret><a-i>na' "$2($count)<esc>|{<space>cat<semicolon>echo<semicolon>}|bc<ret>"
+    }
+} catch %{
+    execute-keys l
+}}
+
+
+# Various mappings
+# ──────────────────────────────────────────────────────────────────────────────
+map global normal '#' :comment-line<ret> -docstring 'comment line'
+map global normal '<a-#>' :comment-block<ret> -docstring 'comment block'
+map global goto m '<esc>m;' -docstring 'matching char'
+map -docstring 'select lines downwards' global normal X T<ret>Lx
+# see #inc
+map global normal <c-a> ': inc %val{count} +<ret>'
+map global normal <c-x> ': inc %val{count} -<ret>'
+map global normal Q q # map q to Q 
+#map global normal q -docstring 'tabs mode' ': enter-user-mode tabs<ret>' # map q to tabs mode
+
+
+# default user mode
+# ──────────────────────────────────────────────────────────────────────────────
+map global user -docstring 'enable autocomplete' a ': set-option -add buffer autocomplete insert<ret>'
+map global user -docstring 'disable autocomplete' A ': set-option -remove buffer autocomplete insert<ret>'
+map global user -docstring 'edit kakrc' e ': e ~/.config/kak/kakrc<ret>'
+map global user -docstring 'clean tabs and trailing whitespace in selections' c ': clean-selections<ret>'
+map global user -docstring 'clean tabs and trailing whitespace in the buffer' C ': clean-buffer<ret>'
+map global user -docstring 'buffer backward' b ': buffer-previous<ret>'
+map global user -docstring 'buffer forward' n ': buffer-next<ret>'
+map global user -docstring 'lint-buffer' L ': buffer *lint-output*<ret>'
+map global user -docstring 'relative line numbers enable' r ': add-highlighter window/nl number-lines -relative -hlcursor<ret>'
+map global user -docstring 'relative line numbers disable' R ': remove-highlighter window/nl<ret>'
+map global user -docstring 'wrap enable' w ': add-highlighter buffer/bw wrap<ret>'
+map global user -docstring 'wrap disable' W ': remove-highlighter buffer/bw<ret>'
+
+
+# terminal config (via foot.kak)
+# ──────────────────────────────────────────────────────────────────────────────
+set-option global foot_normal_cmd 'foot'
+set-option global foot_popup_cmd 'foot'
+set-option global foot_normal_flags ''
+set-option global foot_popup_flags '-a kakpopup'
+set-option global foot_panel_cmd 'foot'
+
+
+# # suspend and resume
+# # # ──────────
+# def suspend-and-resume \
+#     -params 1..2 \
+#     -docstring 'suspend-and-resume <cli command> [<kak command after resume>]: backgrounds current kakoune client and runs specified cli command.  Upon exit of command the optional kak command is executed.' \
+#     %{ evaluate-commands %sh{
+
+#     # Note we are adding '&& fg' which resumes the kakoune client process after the cli command exits
+#     cli_cmd="$1 && fg"
+#     post_resume_cmd="$2"
+
+#     # automation is different platform to platform
+#     platform=$(uname -s)
+#     case $platform in
+#         Darwin)
+#             automate_cmd="sleep 0.01; osascript -e 'tell application \"System Events\" to keystroke \"$cli_cmd\" & return '"
+#             kill_cmd="/bin/kill"
+#             break
+#             ;;
+#         Linux)
+#             automate_cmd="sleep 0.2; xdotool type '$cli_cmd'; xdotool key Return"
+#             kill_cmd="/usr/bin/kill"
+#             break
+#             ;;
+#     esac
+
+#     # Uses platforms automation to schedule the typing of our cli command
+#     nohup sh -c "$automate_cmd"  > /dev/null 2>&1 &
+#     # Send kakoune client to the background
+#     $kill_cmd -SIGTSTP $kak_client_pid
+
+#     # ...At this point the kakoune client is paused until the " && fg " gets run in the $automate_cmd
+
+#     # Upon resume, run the kak command is specified
+#     if [ ! -z "$post_resume_cmd" ]; then
+#         echo "$post_resume_cmd"
+#     fi
+# }}
+
+# def for-each-line \
+#     -docstring "for-each-line <command> <path to file>: run command with the value of each line in the file" \
+#     -params 2 \
+#     %{ evaluate-commands %sh{
+
+#     while read f; do
+#         printf "$1 $f\n"
+#     done < "$2"
+# }}
+
+# def toggle-ranger %{
+#     suspend-and-resume \
+#         "ranger --choosefiles=/tmp/ranger-files-%val{client_pid}" \
+#         "for-each-line edit /tmp/ranger-files-%val{client_pid}"
+# }
+
+# map global user f ': toggle-ranger<ret>' -docstring 'select files in ranger'
+
+
+# run on file open
+# ──────────────────────────────────────────────────────────────────────────────
+hook global BufOpenFile .* %{
+    modeline-parse
+}
+
+# session manager
+# ──────────────────────────────────────────────────────────────────────────────
+evaluate-commands %sh{
+    kcr init kakoune
+}
+
+# kakoune.cr Mappings
+map -docstring 'new client' global normal <c-t> ': new<ret>'
+map -docstring 'terminal (popup)' global normal <c-ret> ': connect terminal-popup<ret>'
+map -docstring 'git (popup)' global normal <c-l> ': connect terminal-popup gitui<ret>'
+#map -docstring 'file explorer' global normal <c-e> ': connect terminal-panel sidetree --select %val{buffile}<ret>'
+map -docstring 'file picker' global normal <c-f> ': connect terminal-popup kcr fzf files<ret>'
+map -docstring 'buffer picker' global normal <c-b> ': connect terminal-popup kcr fzf buffers<ret>'
+map global normal <q> <Q>
+unmap global normal <q>
+map -docstring 'buffer picker' global normal <q> ': connect terminal-popup kcr fzf buffers<ret>'
+map -docstring 'grep picker' global normal <c-g> ': connect terminal-popup kcr fzf grep<ret>'
+#map -docstring 'grep picker (buffer)' global normal <c-r> ': connect terminal-popup kcr fzf grep %val{buflist}<ret>'
+
+
+# Reload kakrc and .kak when saving.
+# ──────────────────────────────────────────────────────────────────────────────
+# Adds -override to definitions (unless they seem to be python defs!)
+# Evals provide module directly
+
+def resource -params 1 %{
+    eval %sh{
+        file=$(dirname "$1")/.reload.kak
+        cat "$1" |
+            sed 's/^def \([^:]*\)$/def -override \1/'   |
+            sed 's/^define-command /def -override /'    |
+            sed 's/^addhl /addhl -override/'            |
+            sed 's/^add-highlighter /addhl -override /' |
+            sed 's/^provide-module \w\+ /eval /'        |
+            cat > "$file"
+        printf %s "
+            source $file
+            nop %sh{
+                rm $file
+            }
+        "
+    }
+    echo Reloaded %arg{1}
+}
+
+rmhooks global reload-kak
+hook -group reload-kak global BufWritePost (.*kakrc|.*\.kak) %{
+     resource %val{hook_param}
+}
diff --git a/config/kak/plugins/bookmarks.kak/LICENSE b/config/kak/plugins/bookmarks.kak/LICENSE
new file mode 100644 (file)
index 0000000..e95f6f9
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Ersikan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/config/kak/plugins/bookmarks.kak/README.md b/config/kak/plugins/bookmarks.kak/README.md
new file mode 100644 (file)
index 0000000..3ddb5b5
--- /dev/null
@@ -0,0 +1,30 @@
+# bookmarks.kak
+
+A bookmarks plugin for the kakoune editor.
+
+## Installation
+
+The recommended way to install this plugin is using [plug.kak](https://github.com/andreyorst/plug.kak).
+
+```kak
+plug "Ersikan/bookmarks.kak"
+```
+
+## Configuration
+
+You can enable the bookmarks user mode for all windows like this :
+```kak
+plug "Ersikan/bookmarks.kak" %{
+    hook global WinCreate .* bookmarks-enable
+}
+```
+
+## Usage
+
+`bookmarks-enable` enables the `bookmarks` user mode, which can be entered by pressing `,b`.
+
+`bookmarks-add` (`,ba`) adds a new bookmark at the current cursor position.
+
+`bookmarks-delete` (`,bd`) deletes an existing bookmark.
+
+`bookmarks-menu` (`,bb`) jumps to a specific bookmark.
diff --git a/config/kak/plugins/bookmarks.kak/bookmarks.kak b/config/kak/plugins/bookmarks.kak/bookmarks.kak
new file mode 100644 (file)
index 0000000..d069020
--- /dev/null
@@ -0,0 +1,92 @@
+declare-option -hidden line-specs bookmarks
+
+declare-user-mode bookmarks
+
+map global bookmarks j '<esc>: bookmarks-menu<ret>' -docstring "Jump to a bookmark"
+map global bookmarks d '<esc>: bookmarks-delete<ret>' -docstring "Delete a bookmark"
+map global bookmarks a '<esc>: bookmarks-add<ret>' -docstring "Bookmark current cursor position"
+
+define-command bookmarks-enable %{
+    map window user j '<esc>: enter-user-mode bookmarks<ret>' -docstring "Bookmarks mode"
+} -docstring "Enables bookmarks user mode"
+
+define-command bookmarks-disable %{
+    unmap window user j '<esc>: enter-user-mode bookmarks<ret>'
+} -docstring "Disables bookmarks user mode"
+
+define-command bookmarks-add %{
+    prompt "Bookmark name:" %{
+        update-option window bookmarks
+        set-option -add window bookmarks "%val{cursor_line}|%val{text}"       
+    }
+}
+
+define-command bookmarks-menu %{
+    bookmarks-menu-command bookmarks-jump-id
+}
+
+define-command bookmarks-delete %{
+    bookmarks-menu-command bookmarks-delete-id
+}
+
+define-command -params 1 bookmarks-menu-command %{ evaluate-commands %sh{
+    arg=$1
+    eval set -- ${kak_quoted_opt_bookmarks}
+    shift
+
+    if [ $# -eq 0 ] ; then
+       printf "fail 'Bookmarks list is empty'\n"
+       exit
+    fi
+
+
+    # Start the menu
+    printf 'menu '
+
+    # Iterate over bookmarks
+    i=1
+    for bookmark; do
+       #printf 'echo -debug "bookmark %i: %s"\n' $i "$bookmark"
+        name=$(printf "$bookmark" | cut -s -d '|' -f 2)
+
+       # Print the menu entry
+       printf "'%s' '%s %i' " "$name" "$arg" $i
+
+       i=$((i+1))
+    done
+}}
+
+define-command -params 1 bookmarks-jump-id %{
+    update-option window bookmarks
+    evaluate-commands %sh{
+    arg=$1
+    eval set -- ${kak_quoted_opt_bookmarks}
+    shift $arg
+    line=$(printf "$1" | cut -s -d '|' -f 1)
+    name=$(printf "$1" | cut -s -d '|' -f 2)
+    if [ -z "$line" -o -z "$name"]; then
+       printf 'fail "Invalid bookmark number: %s"\n' "$arg"
+    else
+        printf "execute-keys '%ig'\n" "$line"
+        printf "echo 'bookmark arg $arg line $line name $name'\n"
+        printf "info 'Went to bookmark \"$name\"'"
+    fi
+}}
+
+define-command -params 1 bookmarks-delete-id %{
+    update-option window bookmarks
+    evaluate-commands %sh{
+        arg="$1"
+        eval set -- ${kak_quoted_opt_bookmarks}
+        shift
+        printf 'set-option window bookmarks %%val{timestamp}'
+        i=1
+        for bookmark; do
+            if [ $i -ne "$arg" ] ; then
+               printf " '%s'" "$bookmark"
+            fi
+           i=$((i+1))
+       done
+    }
+}
+
diff --git a/config/kak/plugins/dabruin.kak b/config/kak/plugins/dabruin.kak
new file mode 160000 (submodule)
index 0000000..1bb17f3
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1bb17f3ffcee620a7985a4bdcaa07a053e4e9ded
diff --git a/config/kak/plugins/foot.kak b/config/kak/plugins/foot.kak
new file mode 160000 (submodule)
index 0000000..406cbad
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 406cbaddb7daaeb33a308557b4faf94697bcc91a
diff --git a/config/kak/plugins/kak-harpoon b/config/kak/plugins/kak-harpoon
new file mode 160000 (submodule)
index 0000000..15e0a01
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 15e0a01d2c5720c576375e7e6b271a5f84dcad2a
diff --git a/config/kak/plugins/kakoune-filetree b/config/kak/plugins/kakoune-filetree
new file mode 160000 (submodule)
index 0000000..be8158c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit be8158ce83e295830a48057c0580fe17a843d661
diff --git a/config/kak/plugins/kakoune-find b/config/kak/plugins/kakoune-find
new file mode 160000 (submodule)
index 0000000..09afcc8
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 09afcc8520d4c92928fe69da4c370b9979aa90d3
diff --git a/config/kak/plugins/kakoune-sudo-write b/config/kak/plugins/kakoune-sudo-write
new file mode 160000 (submodule)
index 0000000..ec0d6d2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ec0d6d26ceaadd93d6824630ba587b31e442214d
diff --git a/config/kak/plugins/plug.kak/LICENSE b/config/kak/plugins/plug.kak/LICENSE
new file mode 100644 (file)
index 0000000..fb09a1a
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Andrey Orst
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/config/kak/plugins/plug.kak/README.md b/config/kak/plugins/plug.kak/README.md
new file mode 100644 (file)
index 0000000..9422272
--- /dev/null
@@ -0,0 +1,378 @@
+# plug.kak
+[![GitHub issues][1]][2] ![license][3]
+
+![plug.kak][4]
+
+**plug.kak** is a plugin manager for Kakoune, that was inspired by [vim-plug][5] and [use-package][6].
+It can install and update plugins, run post-update actions, and helps to encapsulate the configuration within itself.
+
+
+## Installation
+
+**plug.kak** can be installed anywhere in your system, but in order to update itself, it is required to install **plug.kak** in the plugin installation directory.
+By default, **plug.kak** installs plugins to the `%val{config}/plugins`, which is usually at `$HOME/.config/kak/plugins`:
+
+``` sh
+mkdir -p $HOME/.config/kak/plugins
+git clone https://github.com/andreyorst/plug.kak.git $HOME/.config/kak/plugins/plug.kak
+```
+
+Now, when **plug.kak** is installed, we need to tell Kakoune about it.
+Add this to the `kakrc` file:
+
+``` kak
+source "%val{config}/plugins/plug.kak/rc/plug.kak"
+plug "andreyorst/plug.kak" noload
+```
+
+Alternatively, this process can be automated, by adding the following snippet to the `kakrc`:
+
+``` sh
+evaluate-commands %sh{
+    plugins="$kak_config/plugins"
+    mkdir -p "$plugins"
+    [ ! -e "$plugins/plug.kak" ] && \
+        git clone -q https://github.com/andreyorst/plug.kak.git "$plugins/plug.kak"
+    printf "%s\n" "source '$plugins/plug.kak/rc/plug.kak'"
+}
+plug "andreyorst/plug.kak" noload
+```
+
+This will create all needed directories on Kakoune launch, and download **plug.kak** if it is not installed already.
+
+**Note**: `plug "andreyorst/plug.kak" noload` is needed to register **plug.kak** as manually loaded plugin, so `plug-clean` will not delete **plug.kak**.
+
+
+## Usage
+
+All plugins are installed and loaded with the `plug` command.
+This command accepts one-or-more arguments, which are keywords and attributes, that change how **plug.kak** behaves.
+
+The first strict rule of the `plug` command is that the first argument is always the plugin name formatted as in GitHub URL: `"author/repository"`.
+
+``` kak
+plug "author/repository"
+```
+
+By default **plug.kak** will look for the plugin at GitHub.com, and download it.
+When the plugin is hosted on a different service, a URL can be used as the first argument.
+So in most cases it is enough to add this to the `kakrc` to use a plugin:
+
+```kak
+plug "delapouite/kakoune-text-objects"
+```
+
+Or with URL:
+
+```kak
+plug "https://gitlab.com/Screwtapello/kakoune-inc-dec"
+```
+
+After adding this, `kakrc` needs to be re-sourced to let **plug.kak** know that configuration was changed.
+Alternatively, Kakoune can be restarted.
+After that newly added plugins can be installed with the `plug-install` command.
+More information about other commands available in [Commands](#Commands) section.
+
+
+### Keywords and attributes
+
+The `plug` command accepts optional attributes, that change how **plug.kak** works, or add additional steps for `plug` to perform.
+
+These keywords are supported:
+
+- [branch, tag, commit](#branch-tag-or-commit)
+- [load-path](#loading-plugin-from-different-path)
+- [noload](#skipping-loading-of-a-plugin)
+- [do](#automatically-do-certain-tasks-on-install-or-update)
+- [theme](#installing-color-schemes)
+- [config](#handling-user-configurations)
+- [defer](#deferring-plugin-configuration)
+- [demand](#demanding-plugin-module-configuration)
+- [ensure](#ensuring-that-plugins-are-installed)
+
+
+#### Branch, Tag or Commit
+
+`plug` can checkout a plugin to desired branch, commit or tag before loading it.
+It can be done by adding the following keywords with parameters: `branch "branch_name"`, `tag "tag_name"` or `commit "commit_hash"`.
+
+
+#### Loading plugin from different path
+
+Plugins can be loaded from arbitrary path by specifying the `load-path` keyword and providing the path as an argument:
+
+``` kak
+plug "plugin_name" load-path "~/Development/plugin_dir"
+```
+
+However all `plug` related commands, like `plug-update` or `plug-clean` will not work for plugins that aren't installed to `plug_install_dir`.
+
+
+#### Skipping loading of a plugin
+
+If plugin needs to be loaded manually, the `noload` keyword can be used.
+This can also be used to avoid loading the plugin second time, like in the example with **plug.kak** from the [installation](#installation) section:
+
+```kak
+source "%val{config}/plugins/plug.kak/rc/plug.kak"
+plug "andreyorst/plug.kak" noload
+```
+
+Note, that plugins with the `noload` keyword are still configured and managed.
+See [handling-user-configuration](#handling-user-configurations) for more details.
+
+
+#### Automatically do certain tasks on install or update
+
+When the plugin requires some additional steps to preform after installation or update, the `do` keyword can be used.
+This keyword expects the body which will be executed in the shell, thus it can only contain shell commands, not Kakoune commands.
+
+```kak
+plug "ul/kak-lsp" do %{
+    cargo build --release --locked
+    cargo install --force --path .
+}
+```
+
+In the example above **plug.kak** will run these `cargo` commands after `kak-lsp` was installed or updated.
+
+**Note** that even though this is technically a shell expansion, the `%sh{}` expansion can't be used with `do`, as it will be evaluated immediately each time `kakrc` loaded.
+Use `%{}` instead.
+
+
+#### Installing color schemes
+
+To register the plugin as a color scheme, use `theme` keyword.
+Such plugins will be copied to the `%val{config}/colors` directory.
+
+```kak
+plug "andreyorst/base16-gruvbox.kak" theme config %{
+    colorscheme base16-gruvbox-dark-soft
+}
+```
+
+
+#### Ensuring that plugins are installed
+
+`plug` command can be explicitly told to install the plugin automatically with the `ensure` keyword.
+The `plug_always_ensure` option can be set to `true` to perform this for each and every plugin specified in the `kakrc`.
+
+Note that `ensure` plugins are installed (if missing) in a background job; they are then only loaded when the install finishes.
+Thus, subsequent `kakrc` commands should not depend on functionality provided by such plugins.
+Only use `ensure` with non-essential plugins, which are not required for `kakrc` to complete loading.
+
+
+#### Handling user configurations
+
+The configuration of the plugin is performed only when the plugin is installed.
+There's a second strict rule of `plug` command: every parameter that doesn't have a keyword before it, is treated as plugin configuration.
+For example:
+
+```kak
+plug "andreyorst/fzf.kak" config %{
+    map -docstring 'fzf mode' global normal '<c-p>' ': fzf-mode<ret>'
+}
+```
+
+Here, `plug` will map <kbd>Ctrl</kbd>+<kbd>p</kbd> key only if the plugin is installed.
+Everything within the `config %{}` block is an ordinary kakscript.
+
+The `config` keyword is optional, and can be skipped.
+Multiple `config` blocks are also supported.
+
+
+#### Commenting out `plug` options
+
+It may be tricky to "toggle" `plug` options, for debugging or testing purposes, because it is impossible to continue a command past a `#...` comment (also, `config` blocks usually span multiple lines).
+To solve this, `plug` supports a `comment` keyword that ignores its next argument.
+For example, to toggle a `load-path` option, wrap it in `comment %{}`; then remove the "wrapper" to turn it back on (without having to re-type the full path):
+```kak
+plug "andreyorst/fzf.kak" comment %{load-path /usr/local/src/fzf} config %{
+    # ...
+}
+```
+
+
+### Deferring plugin configuration
+
+With the introduction of the module system, some configurations have to be preformed after loading the module.
+The `defer` keyword is a shorthand to register a `ModuleLoaded` hook for given `module`.
+You need to **`require` the module explicitly** elsewhere.
+
+Below is the configuration of [fzf.kak](https://github.com/andreyorst/fzf.kak) plugin, which provides the `fzf` module:
+
+```kak
+plug "andreyorst/fzf.kak" config %{
+    map -docstring 'fzf mode' global normal '<c-p>' ': fzf-mode<ret>'
+} defer fzf %{
+    set-option global fzf_preview_width '65%'
+    set-option global fzf_project_use_tilda true
+}
+```
+
+**Note**: the `ModuleLoaded` hook is defined as early as possible - before sourcing any of plugin files.
+
+### Demanding plugin module configuration
+
+Works the same as `defer` except requires the module immediately:
+
+```kak
+plug "andreyorst/fzf.kak" config %{
+    # config1 (evaluated before demanding the module)
+} demand fzf %{
+    # demand block (will generate `require-modlue fzf` call, and a respective hook)
+    set-option global fzf_project_use_tilda true
+} config %{
+    # config2 (evaluated after demanding the module)
+}
+```
+
+The above snippet is a shorthand for this code:
+
+``` kak
+plug "andreyorst/fzf.kak" defer fzf %{
+    # the body of demand block
+    set-option global fzf_project_use_tilda true # demand block
+} config %{
+    # config1 (evaluated before demanding the module)
+    require-module fzf # the demand hook
+    # config2 (evaluated after demanding the module)
+}
+```
+
+**Note**: the `ModuleLoaded` hook is defined as early as possible - before sourcing any of plugin files.
+The place where `require-module` call will be placed depends on the order of config blocks in the `plug` command.
+As soon as the module is required, the `ModuleLoaded` hook will execute.
+
+
+## **plug.kak** Configuration
+
+Several configuration options are available:
+
+- Changing the [plugin installation directory](#plugin-installation-directory),
+- Limiting the [maximum amount of active downloads](#maximum-downloads),
+- Specifying the [default git domain](#default-git-domain),
+- And [ensuring that plugins are installed](#ensuring-that-plugins-are-installed).
+
+Proper way to configure **plug.kak** is to load it with the `plug` command, and providing both `noload` and `config` blocks:
+This should be done before loading other plugins.
+
+```kak
+plug "andreyorst/plug.kak" noload config %{
+    # configure plug.kak here
+}
+```
+
+
+### Plugin installation directory
+
+By default **plug.kak** automatically detects its installation path and installs plugins to the same directory.
+To change this, use the `plug_install_dir` option:
+
+```kak
+plug "andreyorst/plug.kak" noload config %{
+    set-option global plug_install_dir %sh{ echo $HOME/.cache/kakoune_plugins }
+}
+```
+
+
+### Maximum downloads
+
+**plug.kak** downloads plugins from github.com asynchronously via `git`.
+By default it allows only `10` simultaneously active `git` processes.
+To change this, use the `plug_max_simultaneous_downloads` option.
+
+
+### Default git domain
+
+If majority of plugins is installed from the service other than GitHub, default git domain can be changed to avoid specifying the `domain` keyword for each plugin, or using URLs.
+
+
+### Notify on configuration error
+
+By default, **plug.kak** will display an `info` box when any plugin's `config` block has errors while being evaluated.
+To change this, use the `plug_report_conf_errors` option:
+
+```kak
+set-option global plug_report_conf_errors false
+```
+
+
+## Commands
+
+**plug.kak** adds five new commands to Kakoune.
+
+
+### `plug-install`
+
+This command installs all plugins that were specified in any of the configuration files sourced after Kakoune launch.
+It accepts optional argument, which can be the plugin name or the URL, so it could be used to install a plugin from command prompt without restarting Kakoune.
+This plugin will be enabled automatically, but you still need to add `plug` command to your configuration files in order to use that plugin after the restart.
+
+
+### `plug-list`
+
+Display the buffer with all installed plugins, and check for updates.
+The <kbd>Enter</kbd> key is remapped to execute `plug-update` or `plug-install` command for selected plugin, depending on its state.
+This command accepts an optional argument `noupdate`, and if it is specified, check for updates will not be performed.
+
+
+### `plug-update`
+
+This command updates all installed plugins.
+It accepts one optional argument, which is a plugin name, so it could be used to update single plugin.
+When called from prompt, it shows all installed plugins in the completion menu.
+
+
+### `plug-clean`
+
+Remove plugins, that are installed, but disabled or missing in configuration files.
+This command also accepts optional argument, which is a plugin name, and can be used to remove any installed plugin.
+
+
+### `plug`
+
+Load plugin from plugin installation directory by its name.
+
+
+### `plug-chain`
+
+This command can collapse separate `plug` invocations and thus saves startup time by reducing multiple shell calls; it may come in handy if you're invoking `kak` frequently (e.g. as the `$EDITOR`). Replace the first `plug` command in your `kakrc` with `plug-chain`, then append subsequent `plug` calls and their parameters, as in the following:
+```
+plug-chain https://github.com/Delapouite/kakoune-select-view config %{
+  map global view s '<esc>: select-view<ret>' -docstring 'select view'
+} plug https://github.com/occivink/kakoune-vertical-selection %{
+} plug https://github.com/jbomanson/search-doc.kak demand search-doc %{
+  alias global doc-search search-doc
+}
+```
+
+Backslashes can also be used to separate individual `plug` "clauses" (which avoids the "visual hack" of empty config blocks, as above, serving as newlines).
+An initial `plug` redundant argument is also supported for symmetry.
+Either way, `plug-chain` simply figures out the parameters intended for each individual `plug` clause (using "`plug`" as a delimiter), and executes all implied `plug`s in a single shell call.
+All regular `plug` features are supported.
+Mix and match `plug` / `plug-chain` invocations in any order, any number of times.
+
+Note, that if plug.kak own variables are altered in the `plug-chain` body, the chained `plug` commands won't get updated values.
+This happens because Kakoune reads its variables only once per shell invocation, and calling `set-option` won't update the value of a variable for current shell.
+
+
+### Alternative plugin managers
+
+Here are some other plugin managers to consider as alternatives to plug.kak:
+
+- [kak-bundle][7]
+- [cork.kak][8]
+
+[1]: https://img.shields.io/github/issues/andreyorst/plug.kak.svg
+[2]: https://github.com/andreyorst/plug.kak/issues
+[3]: https://img.shields.io/github/license/andreyorst/plug.kak.svg
+[4]: https://user-images.githubusercontent.com/19470159/51197223-f2c26a80-1901-11e9-9494-b79ce823a364.png
+[5]: https://github.com/junegunn/vim-plug
+[6]: https://github.com/jwiegley/use-package
+[7]: https://github.com/jdugan6240/kak-bundle
+[8]: https://github.com/topisani/cork.kak
+
+<!--  LocalWords:  kak Kakoune Kakoune's GitLab Gitea noload config
+      LocalWords:  kakscript kbd Ctrl github fzf
+ -->
diff --git a/config/kak/plugins/plug.kak/rc/plug.kak b/config/kak/plugins/plug.kak/rc/plug.kak
new file mode 100644 (file)
index 0000000..3ab2ab5
--- /dev/null
@@ -0,0 +1,330 @@
+# Author: Andrey Listopadov
+# plug.kak is a plugin manager for Kakoune. It can install plugins, keep them updated, configure and build dependencies
+# https://github.com/andreyorst/plug.kak
+
+# Public options
+declare-option -docstring \
+"Path where plugins should be installed.
+
+    Defaults to the plug.kak installation directory" \
+str plug_install_dir %sh{ echo "${kak_source%%/rc*}/../" }
+
+declare-option -docstring \
+"Default domain to access git repositories. Can be changed to any preferred domain, like gitlab, bitbucket, gitea, etc.
+
+    Default value: 'https://github.com'" \
+str plug_git_domain 'https://github.com'
+
+declare-option -docstring \
+"Profile plugin loading." \
+bool plug_profile false
+
+declare-option -docstring \
+"Maximum amount of simultaneously active downloads when installing or updating all plugins
+    Default value: 10
+" \
+int plug_max_active_downloads 10
+
+declare-option -docstring \
+"Always ensure that all plugins are installed. If this option specified, all uninstalled plugins are being installed when Kakoune starts." \
+bool plug_always_ensure false
+
+declare-option -docstring "name of the client in which utilities display information" \
+str toolsclient
+
+declare-option -docstring \
+"Block UI until operation completes." \
+bool plug_block_ui false
+
+# Private options
+declare-option -hidden -docstring \
+"Path to plug.sh script." \
+str plug_sh_source %sh{ echo "${kak_source%%.kak}.sh" }
+
+declare-option -hidden -docstring \
+"Array of all plugins, mentioned in any configuration file.
+Empty by default, and erased on reload of main Kakoune configuration, to track if some plugins were disabled
+Should not be modified by user." \
+str plug_plugins ""
+
+declare-option -hidden -docstring \
+"List of loaded plugins. Has no default value.
+Should not be cleared during update of configuration files. Should not be modified by user." \
+str plug_loaded_plugins ""
+
+declare-option -docstring \
+"Whether or not to report errors in config blocks. Defaults to true." \
+bool plug_report_conf_errors true
+
+declare-option -hidden -docstring \
+"This will be set if there are any errors with a plugin's config block. Has no default value.
+Should not be cleared during update of configuration files. Should not be modified by user." \
+str plug_conf_errors ""
+
+# since we want to add highlighters to kak filetype we need to require kak module
+# using `try' here since kakrc module may not be available in rare cases
+try %@
+    require-module kak
+
+    try %$
+        add-highlighter shared/kakrc/code/plug_keywords   regex '\b(plug|plug-chain|do|config|domain|defer|demand|load-path|branch|tag|commit|comment)(?=[ \t])' 0:keyword
+        add-highlighter shared/kakrc/code/plug_attributes regex '(?<=[ \t])(noload|ensure|theme)\b' 0:attribute
+        add-highlighter shared/kakrc/plug_post_hooks1     region -recurse '\{' '\bdo\K\h+%\{' '\}' ref sh
+        add-highlighter shared/kakrc/plug_post_hooks2     region -recurse '\[' '\bdo\K\h+%\[' '\]' ref sh
+        add-highlighter shared/kakrc/plug_post_hooks3     region -recurse '\(' '\bdo\K\h+%\(' '\)' ref sh
+        add-highlighter shared/kakrc/plug_post_hooks4     region -recurse '<'  '\bdo\K\h+%<'  '>'  ref sh
+    $ catch %$
+        echo -debug "Error: plug.kak: can't declare highlighters for 'kak' filetype: %val{error}"
+    $
+@ catch %{
+    echo -debug "Error: plug.kak: can't require 'kak' module to declare highlighters for plug.kak. Check if kakrc.kak is available in your autoload."
+}
+
+# *plug* highlighters
+try %{
+    add-highlighter shared/plug_buffer group
+    add-highlighter shared/plug_buffer/done          regex [^:]+:\h+(Up\h+to\h+date|Done|Installed)$                    1:string
+    add-highlighter shared/plug_buffer/update        regex [^:]+:\h+(Update\h+available|Deleted)$                       1:keyword
+    add-highlighter shared/plug_buffer/not_installed regex [^:]+:\h+(Not\h+(installed|loaded)|(\w+\h+)?Error([^\n]+)?)$ 1:red+b
+    add-highlighter shared/plug_buffer/updating      regex [^:]+:\h+(Installing|Updating|Local\h+changes)$              1:type
+    add-highlighter shared/plug_buffer/working       regex [^:]+:\h+(Running\h+post-update\h+hooks|Waiting[^\n]+)$      1:attribute
+} catch %{
+    echo -debug "Error: plug.kak: Can't declare highlighters for *plug* buffer: %val{error}"
+}
+
+hook -group plug-syntax global WinSetOption filetype=plug %{
+    add-highlighter buffer/plug_buffer ref plug_buffer
+    hook -always -once window WinSetOption filetype=.* %{
+        remove-highlighter buffer/plug_buffer
+    }
+}
+
+define-command -override -docstring \
+"plug <plugin> [<switches>]: manage <plugin> from ""%opt{plug_install_dir}""
+Switches:
+    branch (tag, commit) <str>      checkout to <str> before loading plugin
+    noload                          do not source plugin files
+    subset <subset>                 source only <subset> of plugin files
+    load-path <path>                path for loading plugin from foreign location
+    defer <module> <configurations> load plugin <configurations> only when <module> is loaded
+    config <configurations>         plugin <configurations>" \
+plug -params 1.. -shell-script-candidates %{ ls -1 ${kak_opt_plug_install_dir} } %{ try %{
+    evaluate-commands %sh{
+        # $kak_client
+        # $kak_config
+        # $kak_opt_plug_always_ensure
+        # $kak_opt_plug_git_domain
+        # $kak_opt_plug_install_dir
+        # $kak_opt_plug_loaded_plugins
+        # $kak_opt_plug_max_active_downloads
+        # $kak_opt_plug_plugin
+        # $kak_opt_plug_plugins
+        # $kak_opt_plug_profile
+        # $kak_opt_plug_block_ui
+        # $kak_opt_plug_report_conf_errors
+        # $kak_opt_plug_conf_errors
+        # $kak_session
+
+        . "${kak_opt_plug_sh_source}"
+        plug "$@"
+    }
+}}
+
+define-command -override plug-chain -params 0.. -docstring %{
+  Chain plug commands (see docs, saves startup time by reducing sh calls)
+} %{ try %{
+    evaluate-commands %sh{
+        # $kak_client
+        # $kak_config
+        # $kak_opt_plug_always_ensure
+        # $kak_opt_plug_git_domain
+        # $kak_opt_plug_install_dir
+        # $kak_opt_plug_loaded_plugins
+        # $kak_opt_plug_max_active_downloads
+        # $kak_opt_plug_plugin
+        # $kak_opt_plug_plugins
+        # $kak_opt_plug_profile
+        # $kak_opt_plug_block_ui
+        # $kak_opt_plug_report_conf_errors
+        # $kak_opt_plug_conf_errors
+        # $kak_session
+
+        set -u
+        . "${kak_opt_plug_sh_source}"
+        plug1() {
+          for _plug_param; do
+            # reset "$@" on 1st iteration; args still in 'for'
+            [ "$_plug_processed_args" != 0 ] || set --
+            _plug_processed_args=$((_plug_processed_args + 1))
+            [ plug != "$_plug_param" ] || break
+            set -- "$@" "$_plug_param"
+          done
+          [ $# = 0 ] || plug "$@"  # subshell would be safer, but slower
+        }
+        while [ "$#" != 0 ]; do
+          _plug_processed_args=0
+          plug1 "$@"
+          shift "$_plug_processed_args"
+        done
+    }
+}}
+
+define-command -override -docstring \
+"plug-install [<plugin>] [<noload>]: install <plugin>.
+If <plugin> omitted installs all plugins mentioned in configuration
+files.  If <noload> is supplied skip loading the plugin." \
+plug-install -params ..2 %{ nop %sh{
+    # $kak_client
+    # $kak_config
+    # $kak_opt_plug_always_ensure
+    # $kak_opt_plug_git_domain
+    # $kak_opt_plug_install_dir
+    # $kak_opt_plug_loaded_plugins
+    # $kak_opt_plug_max_active_downloads
+    # $kak_opt_plug_plugin
+    # $kak_opt_plug_plugins
+    # $kak_opt_plug_profile
+    # $kak_opt_plug_block_ui
+    # $kak_opt_plug_report_conf_errors
+    # $kak_opt_plug_conf_errors
+    # $kak_session
+
+    . "${kak_opt_plug_sh_source}"
+    plug_install "$@"
+}}
+
+define-command -override -docstring \
+"plug-update [<plugin>]: Update plugin.
+If <plugin> omitted all installed plugins are updated" \
+plug-update -params ..1 -shell-script-candidates %{ printf "%s\n" ${kak_opt_plug_plugins} | tr ' ' '\n' } %{
+    evaluate-commands %sh{
+        # $kak_client
+        # $kak_config
+        # $kak_opt_plug_always_ensure
+        # $kak_opt_plug_git_domain
+        # $kak_opt_plug_install_dir
+        # $kak_opt_plug_loaded_plugins
+        # $kak_opt_plug_max_active_downloads
+        # $kak_opt_plug_plugin
+        # $kak_opt_plug_plugins
+        # $kak_opt_plug_profile
+        # $kak_opt_plug_block_ui
+        # $kak_opt_plug_report_conf_errors
+        # $kak_opt_plug_conf_errors
+        # $kak_session
+
+        . "${kak_opt_plug_sh_source}"
+        plug_update "$@"
+}}
+
+define-command -override -docstring \
+"plug-clean [<plugin>]: delete <plugin>.
+If <plugin> omitted deletes all plugins that are installed but not presented in configuration files" \
+plug-clean -params ..1 -shell-script-candidates %{ ls -1 ${kak_opt_plug_install_dir} } %{ nop %sh{
+    # $kak_client
+    # $kak_config
+    # $kak_opt_plug_always_ensure
+    # $kak_opt_plug_git_domain
+    # $kak_opt_plug_install_dir
+    # $kak_opt_plug_loaded_plugins
+    # $kak_opt_plug_max_active_downloads
+    # $kak_opt_plug_plugin
+    # $kak_opt_plug_plugins
+    # $kak_opt_plug_profile
+    # $kak_opt_plug_block_ui
+    # $kak_opt_plug_report_conf_errors
+    # $kak_opt_plug_conf_errors
+    # $kak_session
+
+    . "${kak_opt_plug_sh_source}"
+    plug_clean "$@"
+}}
+
+define-command -override -hidden \
+-docstring "plug-eval-hooks: wrapper for post update/install hooks" \
+plug-eval-hooks -params 1 %{ nop %sh{
+    # $kak_client
+    # $kak_config
+    # $kak_opt_plug_always_ensure
+    # $kak_opt_plug_git_domain
+    # $kak_opt_plug_install_dir
+    # $kak_opt_plug_loaded_plugins
+    # $kak_opt_plug_max_active_downloads
+    # $kak_opt_plug_plugin
+    # $kak_opt_plug_plugins
+    # $kak_opt_plug_profile
+    # $kak_opt_plug_block_ui
+    # $kak_opt_plug_report_conf_errors
+    # $kak_opt_plug_conf_errors
+    # $kak_session
+
+    . "${kak_opt_plug_sh_source}"
+    plug_eval_hooks "$@"
+}}
+
+define-command -override \
+-docstring "plug-list [<noupdate>]: list all installed plugins in *plug* buffer. Checks updates by default unless <noupdate> is specified." \
+plug-list -params ..1 %{ evaluate-commands -try-client %opt{toolsclient} %sh{
+    # $kak_client
+    # $kak_config
+    # $kak_opt_plug_always_ensure
+    # $kak_opt_plug_git_domain
+    # $kak_opt_plug_install_dir
+    # $kak_opt_plug_loaded_plugins
+    # $kak_opt_plug_max_active_downloads
+    # $kak_opt_plug_plugin
+    # $kak_opt_plug_plugins
+    # $kak_opt_plug_profile
+    # $kak_opt_plug_block_ui
+    # $kak_opt_plug_report_conf_errors
+    # $kak_opt_plug_conf_errors
+    # $kak_session
+
+    . "${kak_opt_plug_sh_source}"
+    plug_list "$@"
+}}
+
+define-command -hidden -override \
+-docstring "operate on *plug* buffer contents based on current cursor position" \
+plug-fifo-operate -params 1 %{ evaluate-commands -save-regs t %{
+    execute-keys -save-regs '' "<a-h><a-l>"
+    set-register t %val{selection}
+    evaluate-commands %sh{
+    # $kak_reg_t
+    # $kak_client
+    # $kak_config
+    # $kak_opt_plug_always_ensure
+    # $kak_opt_plug_git_domain
+    # $kak_opt_plug_install_dir
+    # $kak_opt_plug_loaded_plugins
+    # $kak_opt_plug_max_active_downloads
+    # $kak_opt_plug_plugin
+    # $kak_opt_plug_plugins
+    # $kak_opt_plug_profile
+    # $kak_opt_plug_block_ui
+    # $kak_opt_plug_report_conf_errors
+    # $kak_opt_plug_conf_errors
+    # $kak_session
+
+    . "${kak_opt_plug_sh_source}"
+    plug_fifo_operate "$@"
+}}}
+
+define-command -hidden -override \
+plug-display-log -params 1 %{ evaluate-commands %sh{
+    plugin_log="${TMPDIR:-/tmp}/${1##*/}-log"
+    [ -s "${plugin_log}" ] && printf "%s\n" "edit! -existing -debug -readonly -scroll %{${plugin_log}}"
+}}
+
+define-command -override \
+-docstring "displays help message" \
+plug-show-help %{
+    info -title "plug.kak Help" "h,j,k,l: Move
+<ret>:   Update or Install plugin
+I:       Install plugin
+U:       Update plugin
+D:       clean (Delete) plugin
+L:       show Log, if any
+R:       Run post-update hooks manually
+H        show Help message"
+}
diff --git a/config/kak/plugins/plug.kak/rc/plug.sh b/config/kak/plugins/plug.kak/rc/plug.sh
new file mode 100644 (file)
index 0000000..efca9f8
--- /dev/null
@@ -0,0 +1,531 @@
+#!/usr/bin/env sh
+
+# Author: Andrey Listopadov
+# https://github.com/andreyorst/plug.kak
+#
+# plug.kak is a plugin manager for Kakoune. It can install plugins,
+# keep them updated, configure and build dependencies.
+#
+# plug.sh contains a set of functions plug.kak calls via shell
+# expansions.
+
+plug_code_append () {
+    eval "$1=\"\$$1
+\$2\""
+}
+
+plug () {
+    [ "${kak_opt_plug_profile:-}" = "true" ] && plug_save_timestamp profile_start
+    plugin_arg=$1
+    plugin="${1%%.git}"; plugin=${plugin%%/}
+    shift
+    plugin_name="${plugin##*/}"
+    path_to_plugin="${kak_opt_plug_install_dir:?}/$plugin_name"
+    build_dir="${kak_opt_plug_install_dir:?}/.build/$plugin_name"
+    conf_file="$build_dir/config"
+    hook_file="$build_dir/hooks"
+    domain_file="$build_dir/domain"
+
+    configurations= hooks= domain= checkout= checkout_type= noload= ensure=
+
+    case "${kak_opt_plug_loaded_plugins:-}" in
+      (*"$plugin"*)
+        printf "%s\n" "echo -markup %{{Information}$plugin_name already loaded}"
+        exit
+        ;;
+      (*)
+        printf "%s\n" "set-option -add global plug_plugins %{$plugin }"
+        ;;
+    esac
+
+    while [ $# -gt 0 ]; do
+        case $1 in
+            (branch|tag|commit) checkout_type=$1; shift; checkout=${1?} ;;
+            (noload) noload=1 ;;
+            (load-path) shift; eval "path_to_plugin=${1?}" ;;
+            (comment) shift ;;
+            (defer|demand)
+                demand=$1
+                shift; module=${1?}
+                if [ $# -ge 2 ]; then
+                    case "$2" in
+                        (branch|tag|commit|noload|load-path|ensure|theme|domain|depth-sort|subset|no-depth-sort|config|defer|demand|comment)
+                        ;;
+                        (*)
+                            shift
+                            deferred=$1
+                            case "$deferred" in (*[![:space:]]*)
+                                case "$deferred" in (*'@'*)
+                                    deferred=$(printf "%s\n" "$deferred" | sed "s/@/@@/g") ;;
+                                esac
+                                printf "%s\n" "hook global ModuleLoaded '$module' %@ $deferred @"
+                            esac
+                            [ "$demand" = demand ] && plug_code_append configurations "require-module $module" ;;
+                    esac
+                fi
+                ;;
+            ('do') shift; plug_code_append hooks "set -e
+${1?}" ;;
+            (ensure) ensure=1 ;;
+            (theme)
+                noload=1
+                plug_code_append hooks "[ -d \"${kak_config:?}/colors\" ] || mkdir -p \"${kak_config}/colors\"; ln -sf \"\$PWD\" \"$kak_config/colors\""
+            ;;
+            (domain) shift; domain=${1?} ;;
+            (depth-sort|subset)
+                printf "%s\n" "echo -debug %{Error: plug.kak: '$plugin_name': keyword '$1' is no longer supported. Use the module system instead}"
+                exit 1 ;;
+            (no-depth-sort) printf "%s\n" "echo -debug %{Warning: plug.kak: '$plugin_name': use of deprecated '$1' keyword which has no effect}" ;;
+            (config) shift; plug_code_append configurations "${1?}" ;;
+            (*) plug_code_append configurations "$1" ;;
+        esac
+        shift
+    done
+
+    [ -d "$build_dir" ] || mkdir -p "$build_dir"
+    rm -rf "$build_dir"/* "$build_dir"/.[!.]* "$build_dir"/..?*
+    [ -n "$hooks" ] && printf "%s" "$hooks" > "$hook_file"
+    [ -n "$domain" ] && printf "%s" "$domain" > "$domain_file"
+
+    if [ -n "$configurations" ]; then
+        if [ "${kak_opt_plug_report_conf_errors:-}" = "true" ]; then
+            cat > "$conf_file" <<ERRHANDLE
+try %{ $configurations } catch %{
+    echo -debug "Error while evaluating '$plugin_name' configuration: %val{error}"
+
+    set-option -add current plug_conf_errors "Error while evaluating '$plugin_name' configuration:"
+    set-option -add current plug_conf_errors %sh{ printf "\n    " }
+    set-option -add current plug_conf_errors %val{error}
+    set-option -add current plug_conf_errors %sh{ printf "\n\n" }
+
+    hook -once -group plug-conf-err global WinDisplay .* %{
+        info -style modal -title "plug.kak error" "%opt{plug_conf_errors}"
+        on-key %{
+            info -style modal
+            execute-keys -with-maps -with-hooks %val{key}
+        }
+    }
+}
+ERRHANDLE
+        else
+          printf "%s" "$configurations" > "$conf_file"
+        fi
+    fi
+
+    if [ -d "$path_to_plugin" ]; then
+        if [ -n "$checkout" ]; then
+            (
+                cd "$path_to_plugin" || exit
+                # shellcheck disable=SC2030,SC2031
+                [ -z "${GIT_TERMINAL_PROMPT:-}" ] && export GIT_TERMINAL_PROMPT=0
+                if [ "$checkout_type" = "branch" ]; then
+                    [ "$(git branch --show-current)" != "$checkout" ] && git fetch >/dev/null 2>&1
+                fi
+                git checkout "$checkout" >/dev/null 2>&1
+            )
+        fi
+        plug_load "$plugin" "$path_to_plugin" "$noload"
+        if  [ "$kak_opt_plug_profile" = "true" ]; then
+            plug_save_timestamp profile_end
+            profile_time=$(echo "scale=3; x=($profile_end-$profile_start)/1000; if(x<1) print 0; x" | bc -l)
+            printf "%s\n" "echo -debug %{'$plugin_name' loaded in $profile_time sec}"
+        fi
+    else
+        if [ -n "$ensure" ] || [ "${kak_opt_plug_always_ensure:-}" = "true" ]; then
+            (
+                plug_install "$plugin_arg" "$noload"
+                wait
+                if  [ "$kak_opt_plug_profile" = "true" ]; then
+                    plug_save_timestamp profile_end
+                    profile_time=$(echo "scale=3; x=($profile_end-$profile_start)/1000; if(x<1) print 0; x" | bc -l)
+                    printf "%s\n" "echo -debug %{'$plugin_name' loaded in $profile_time sec}" | kak -p "${kak_session:?}"
+                fi
+            ) > /dev/null 2>&1 < /dev/null &
+        fi
+    fi
+}
+
+plug_install () {
+    (
+        plugin="${1%%.git}"; plugin=${plugin%%/}
+        noload=$2
+        plugin_name="${plugin##*/}"
+        build_dir="${kak_opt_plug_install_dir:?}/.build/$plugin_name"
+        domain_file="$build_dir/domain"
+
+        # shellcheck disable=SC2030,SC2031
+        [ -z "${GIT_TERMINAL_PROMPT:-}" ] && export GIT_TERMINAL_PROMPT=0
+
+        if [ ! -d "${kak_opt_plug_install_dir}" ]; then
+            if ! mkdir -p "${kak_opt_plug_install_dir}" >/dev/null 2>&1; then
+                printf "%s\n" "evaluate-commands -client ${kak_client:-client0} echo -debug 'Error: plug.kak: unable to create directory for plugins'" | kak -p "${kak_session:?}"
+                exit
+            fi
+        fi
+
+        printf "%s\n" "evaluate-commands -client ${kak_client:-client0} %{ try %{ buffer *plug* } catch %{ plug-list noupdate } }" | kak -p "${kak_session}"
+        sleep 0.3
+
+        lockfile="${kak_opt_plug_install_dir}/.${plugin_name:-global}.plug.kak.lock"
+        if [ -d "${lockfile}" ]; then
+            plug_fifo_update "${plugin_name}" "Waiting for .plug.kak.lock"
+        fi
+
+        # this creates the lock file for a plugin, if specified to
+        # prevent several processes of installation of the same
+        # plugin, but will allow install different plugins without
+        # waiting for each other.  Should be fine, since different
+        # plugins doesn't interfere with each other.
+        while ! mkdir "${lockfile}" 2>/dev/null; do sleep 1; done
+        # shellcheck disable=SC2064
+        trap "rmdir '${lockfile}'" EXIT
+
+        # if plugin specified as an argument add it to the *plug*
+        # buffer, if it isn't there already otherwise update all
+        # plugins
+        if [ -n "${plugin}" ]; then
+            plugin_list=${plugin}
+            printf "%s\n" "
+                evaluate-commands -buffer *plug* %{ try %{
+                    execute-keys /${plugin}<ret>
+                } catch %{
+                    execute-keys gjO${plugin}:<space>Not<space>installed<esc>
+                }}" | kak -p "${kak_session}"
+            sleep 0.2
+        else
+            plugin_list=${kak_opt_plug_plugins}
+        fi
+
+        for plugin in ${plugin_list}; do
+            plugin_name="${plugin##*/}"
+            [ -e "$domain_file" ] && git_domain="https://$(cat "$domain_file")" || git_domain=${kak_opt_plug_git_domain:?}
+            if [ ! -d "${kak_opt_plug_install_dir}/${plugin_name}" ]; then
+                (
+                    plugin_log="${TMPDIR:-/tmp}/${plugin_name}-log"
+                    printf "%s\n" "hook global -always KakEnd .* %{ nop %sh{rm -rf \"$plugin_log\"}} " | kak -p "${kak_session}"
+                    plug_fifo_update "${plugin_name}" "Installing"
+                    cd "${kak_opt_plug_install_dir}" || exit
+                    case ${plugin} in
+                        (https://*|http://*|*@*|file://*|ext::*)
+                            git clone --recurse-submodules "${plugin}" "$plugin_name" >> "$plugin_log" 2>&1 ;;
+                        (*)
+                            git clone --recurse-submodules "$git_domain/$plugin" "$plugin_name" >> "$plugin_log" 2>&1 ;;
+                    esac
+                    status=$?
+                    if [ ${status} -ne 0 ]; then
+                        plug_fifo_update "$plugin_name" "Download Error ($status)"
+                    else
+                        plug_eval_hooks "$plugin_name"
+                        wait
+                        plug_load "$plugin" "${kak_opt_plug_install_dir:?}/$plugin_name" "$noload" | kak -p "${kak_session:?}"
+                    fi
+                ) > /dev/null 2>&1 < /dev/null &
+            fi
+            # this is a hacky way to measure amount of active
+            # processes. We need this because dash shell has this long
+            # term bug:
+            # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482999
+            jobs=$(mktemp "${TMPDIR:-/tmp}"/plug.kak.jobs.XXXXXX)
+            jobs > "${jobs}"; active=$(wc -l < "${jobs}")
+            while [ "${active}" -ge "${kak_opt_plug_max_active_downloads:?}" ]; do
+                sleep 1
+                jobs > "${jobs}"; active=$(wc -l < "${jobs}")
+            done
+            rm -rf "${jobs}"
+        done
+        wait
+    ) > /dev/null 2>&1 < /dev/null &
+}
+
+plug_load() {
+    plugin="${1%%.git}"
+    path_to_plugin=$2
+    noload=$3
+    plugin_name="${plugin##*/}"
+    build_dir="${kak_opt_plug_install_dir:?}/.build/$plugin_name"
+    conf_file="$build_dir/config"
+
+    if [ -z "${noload}" ]; then
+        find -L "${path_to_plugin}" -path '*/.git' -prune -o -type f -name '*.kak' -exec printf 'source "%s"\n' {} +
+    fi
+    [ -e "$conf_file" ] && printf "%s\n" "source $conf_file"
+    printf "%s\n" "set-option -add global plug_loaded_plugins %{${plugin} }"
+}
+
+plug_update () {
+    (
+        plugin="${1%%.git}"
+        plugin_name="${plugin##*/}"
+
+        # shellcheck disable=SC2030,SC2031
+        [ -z "${GIT_TERMINAL_PROMPT:-}" ] && export GIT_TERMINAL_PROMPT=0
+
+        printf "%s\n" "evaluate-commands -client ${kak_client:-client0} %{ try %{ buffer *plug* } catch %{ plug-list noupdate } }" | kak -p "${kak_session}"
+
+        lockfile="${kak_opt_plug_install_dir}/.${plugin_name:-global}.plug.kak.lock"
+        if [ -d "${lockfile}" ]; then
+            plug_fifo_update "${plugin##*/}" "Waiting for .plug.kak.lock"
+        fi
+
+        while ! mkdir "${lockfile}" 2>/dev/null; do sleep 1; done
+        # shellcheck disable=SC2064
+        trap "rmdir '${lockfile}'" EXIT
+
+        [ -n "${plugin}" ] && plugin_list=${plugin} || plugin_list=${kak_opt_plug_plugins}
+        for plugin in ${plugin_list}; do
+            plugin_name="${plugin##*/}"
+            if [ -d "${kak_opt_plug_install_dir}/${plugin_name}" ]; then
+                (
+                    plugin_log="${TMPDIR:-/tmp}/${plugin_name}-log"
+                    printf "%s\n" "hook global -always KakEnd .* %{ nop %sh{rm -rf ${plugin_log}}} " | kak -p "${kak_session}"
+                    plug_fifo_update "${plugin_name}" "Updating"
+                    cd "${kak_opt_plug_install_dir}/${plugin_name}" && rev=$(git rev-parse HEAD) && git pull --recurse-submodules >> "${plugin_log}" 2>&1
+                    status=$?
+                    if [ ${status} -ne 0 ]; then
+                        plug_fifo_update "${plugin_name}" "Update Error (${status})"
+                    else
+                        if [ "${rev}" != "$(git rev-parse HEAD)" ]; then
+                            printf "%s\n" "evaluate-commands -client ${kak_client:-client0} plug-eval-hooks ${plugin_name}" | kak -p "${kak_session}"
+                        else
+                            plug_fifo_update "${plugin_name}" "Done"
+                        fi
+                    fi
+                ) > /dev/null 2>&1 < /dev/null &
+            fi
+            jobs=$(mktemp "${TMPDIR:-/tmp}"/jobs.XXXXXX)
+            jobs > "${jobs}"; active=$(wc -l < "${jobs}")
+            # TODO: re-check this
+            # For some reason I need to multiply the amount of jobs by five here.
+            while [ "${active}" -ge $((kak_opt_plug_max_active_downloads * 5)) ]; do
+                sleep 1
+                jobs > "${jobs}"; active=$(wc -l < "${jobs}")
+            done
+            rm -rf "${jobs}"
+        done
+        wait
+    ) > /dev/null 2>&1 < /dev/null &
+
+    if [ "${kak_opt_plug_block_ui:-}" = "true" ]; then
+        wait
+    fi
+}
+
+
+plug_clean () {
+    (
+        plugin="${1%%.git}"
+        plugin_name="${plugin##*/}"
+
+        printf "%s\n" "evaluate-commands -client ${kak_client:-client0} %{ try %{ buffer *plug* } catch %{ plug-list noupdate } }" | kak -p "${kak_session}"
+
+        lockfile="${kak_opt_plug_install_dir}/.${plugin_name:-global}.plug.kak.lock"
+        if [ -d "${lockfile}" ]; then
+            plug_fifo_update "${plugin_name}" "Waiting for .plug.kak.lock"
+        fi
+
+        while ! mkdir "${lockfile}" 2>/dev/null; do sleep 1; done
+        # shellcheck disable=SC2064
+        trap "rmdir '${lockfile}'" EXIT
+
+        if [ -n "${plugin}" ]; then
+            if [ -d "${kak_opt_plug_install_dir}/${plugin_name}" ]; then
+                (
+                    cd "${kak_opt_plug_install_dir}" && rm -rf "${plugin_name}"
+                    plug_fifo_update "${plugin_name}" "Deleted"
+                )
+            else
+                printf "%s\n" "evaluate-commands -client ${kak_client:-client0} echo -markup %{{Error}No such plugin '${plugin}'}" | kak -p "${kak_session}"
+                exit
+            fi
+        else
+            for installed_plugin in $(printf "%s\n" "${kak_opt_plug_install_dir}"/*); do
+                skip=
+                for enabled_plugin in ${kak_opt_plug_plugins}; do
+                    [ "${installed_plugin##*/}" = "${enabled_plugin##*/}" ] && { skip=1; break; }
+                done
+                [ "${skip}" = "1" ] || plugins_to_remove=${plugins_to_remove}" ${installed_plugin}"
+            done
+            for plugin in ${plugins_to_remove}; do
+                plug_fifo_update "${plugin##*/}" "Deleted"
+                rm -rf "${plugin}"
+            done
+        fi
+    ) > /dev/null 2>&1 < /dev/null &
+
+    if [ "$kak_opt_plug_block_ui" = "true" ]; then
+        wait
+    fi
+}
+
+plug_eval_hooks () {
+    (
+        plugin="${1%%.git}"
+        plugin_name="${plugin##*/}"
+        path_to_plugin="${kak_opt_plug_install_dir:?}/$plugin_name"
+        build_dir="${kak_opt_plug_install_dir:?}/.build/$plugin_name"
+        hook_file="$build_dir/hooks"
+
+        plugin_log="${TMPDIR:-/tmp}/${plugin_name}-log"
+        cd "$path_to_plugin" || exit
+
+        printf "%s\n" "hook global -always KakEnd .* %{ nop %sh{rm -rf ${plugin_log}}}" | kak -p "${kak_session}"
+        plug_fifo_update "${plugin_name}" "Running post-update hooks"
+
+        status=0
+        if [ -e "$hook_file" ]; then
+            # shellcheck disable=SC1090
+            (. "$hook_file" >> "$plugin_log" 2>&1)
+            status=$?
+        fi
+        [ ${status} -ne 0 ] && message="Error (${status})" || message="Done"
+
+        plug_fifo_update "${plugin_name}" "${message}"
+    ) > /dev/null 2>&1 < /dev/null &
+
+    if [ "$kak_opt_plug_block_ui" = "true" ]; then
+        wait
+    fi
+}
+
+plug_list () {
+    noupdate=$1
+    tmp=$(mktemp -d "${TMPDIR:-/tmp}/plug-kak.XXXXXXXX")
+    fifo="${tmp}/fifo"
+    plug_buffer="${tmp}/plug-buffer"
+    mkfifo "${fifo}"
+
+    printf "%s\n" "edit! -fifo ${fifo} *plug*
+                   set-option buffer filetype plug
+                   plug-show-help
+                   hook -always -once buffer BufCloseFifo .* %{ nop %sh{ rm -rf ${tmp} } }
+                   map buffer normal '<ret>' ':<space>plug-fifo-operate install-update<ret>'
+                   map buffer normal 'H' ':<space>plug-show-help<ret>'
+                   map buffer normal 'U' ':<space>plug-fifo-operate update<ret>'
+                   map buffer normal 'I' ':<space>plug-fifo-operate install<ret>'
+                   map buffer normal 'L' ':<space>plug-fifo-operate log<ret>'
+                   map buffer normal 'D' ':<space>plug-fifo-operate clean<ret>'
+                   map buffer normal 'R' ':<space>plug-fifo-operate hooks<ret>'"
+
+    # get those plugins which were loaded by plug.kak
+    eval "set -- ${kak_opt_plug_plugins}"
+    while [ $# -gt 0 ]; do
+        if [ -d "${kak_opt_plug_install_dir}/${1##*/}" ]; then
+            printf "%s: Installed\n" "$1" >> "${plug_buffer}"
+        else
+            printf "%s: Not installed\n" "$1" >> "${plug_buffer}"
+        fi
+        shift
+    done
+
+    # get those plugins which have a directory at installation path,
+    # but wasn't mentioned in any config file
+    for existing_plugin in "${kak_opt_plug_install_dir}"/*; do
+        case "${kak_opt_plug_plugins}" in
+          (*"${existing_plugin##*/}"*) ;;
+          (*)
+            printf "%s: Not loaded\n" "${existing_plugin##*/}" >> "${plug_buffer}"
+            ;;
+        esac
+    done
+
+    ( sort "${plug_buffer}" > "${fifo}" )  > /dev/null 2>&1 < /dev/null &
+
+    if [ -z "${noupdate}" ]; then
+        (
+            # shellcheck disable=SC2030,SC2031
+            [ -z "${GIT_TERMINAL_PROMPT:-}" ] && export GIT_TERMINAL_PROMPT=0
+            eval "set -- ${kak_opt_plug_plugins}"
+            while [ $# -gt 0 ]; do
+                plugin_dir="${1##*/}"
+                if [ -d "${kak_opt_plug_install_dir}/${plugin_dir}" ]; then (
+                    cd "${kak_opt_plug_install_dir}/${plugin_dir}" || exit
+                    git fetch > /dev/null 2>&1
+                    status=$?
+                    if [ ${status} -eq 0 ]; then
+                        { IFS= read -r LOCAL; IFS= read -r REMOTE; IFS= read -r BASE; } <<EOF
+$(
+                        git rev-parse  @ '@{u}'  # prints 2 lines
+                        git merge-base @ '@{u}'
+)
+EOF
+
+                        if [ "${LOCAL}" = "${REMOTE}" ]; then
+                            message="Up to date"
+                        elif [ "${LOCAL}" = "${BASE}" ]; then
+                            message="Update available"
+                        elif [ "${REMOTE}" = "${BASE}" ]; then
+                            message="Local changes"
+                        else
+                            message="Installed"
+                        fi
+                    else
+                        message="Fetch Error (${status})"
+                    fi
+                    plug_fifo_update "$1" "${message}"
+                ) > /dev/null 2>&1 < /dev/null & fi
+                shift
+            done
+        ) > /dev/null 2>&1 < /dev/null &
+    fi
+}
+
+plug_fifo_operate() {
+    plugin="${kak_reg_t%:*}"
+    case $1 in
+        (install-update)
+            if [ -d "${kak_opt_plug_install_dir}/${plugin##*/}" ]; then
+                plug_update "${plugin}"
+            else
+                plug_install "${plugin}" true
+            fi ;;
+        (update)
+            if [ -d "${kak_opt_plug_install_dir}/${plugin##*/}" ]; then
+                plug_update "${plugin}"
+            else
+                printf "%s\n" "echo -markup %{{Information}'${plugin}' is not installed}"
+            fi ;;
+        (install)
+            if [ ! -d "${kak_opt_plug_install_dir}/${plugin##*/}" ]; then
+                plug_install "${plugin}"
+            else
+                printf "%s\n" "echo -markup %{{Information}'${plugin}' already installed}"
+            fi ;;
+        (clean) plug_clean "${plugin}" ;;
+        (log) printf "%s\n" "plug-display-log $plugin" ;;
+        (hooks) plug_eval_hooks "${plugin##*/}" ;;
+        (*) ;;
+    esac
+}
+
+plug_fifo_update() {
+    printf "%s\n" "
+        evaluate-commands -draft -buffer *plug* -save-regs \"/\"\"\" %{ try %{
+            set-register / \"$1: \"
+            set-register dquote %{$2}
+            execute-keys -draft /<ret>lGlR
+        }}" | kak -p "$kak_session"
+}
+
+plug_save_timestamp() {
+  plug_tstamp=${EPOCHREALTIME:-}
+  if [ -n "$plug_tstamp" ]; then
+    plug_tstamp_ms=${plug_tstamp#*.}
+    case "$plug_tstamp_ms" in
+      (????*) plug_tstamp_ms=${plug_tstamp_ms%"${plug_tstamp_ms#???}"} ;;
+      (???)   ;;
+      (*)     plug_tstamp= ;;  # redo with date
+    esac
+    if [ -n "$plug_tstamp" ]; then
+      plug_tstamp=${plug_tstamp%.*}${plug_tstamp_ms}
+    fi
+  fi
+  : "${plug_tstamp:=$(date +%s%3N)}"
+  if [ -n "$1" ]; then eval "$1=\$plug_tstamp"; fi
+}
+
+#  Spell-checker local dictionary
+#  LocalWords:  Andrey Listopadov github kak usr config dir Kakoune
+#  LocalWords:  expr ModuleLoaded mkdir ln PWD conf shellcheck noload
+#  LocalWords:  TMPDIR tmp noupdate lockfile rmdir ret gjO esc KakEnd
+#  LocalWords:  nop rf hacky eval fifo filetype BufCloseFifo regs
+#  LocalWords:  dquote lGlR
diff --git a/config/kak/plugins/powerline.kak b/config/kak/plugins/powerline.kak
new file mode 160000 (submodule)
index 0000000..16be282
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 16be282ec6aa514997ec370049babd3a070f2e1f
diff --git a/config/kak/plugins/prelude.kak/CONTRIBUTING b/config/kak/plugins/prelude.kak/CONTRIBUTING
new file mode 100644 (file)
index 0000000..3d438b2
--- /dev/null
@@ -0,0 +1,18 @@
+The preferred way to contribute would be through GitHub pull requests,
+as an alternative patches can be discussed on the IRC channel.
+
+When contributing your first changes, please include an empty commit for
+copyright waiver using the following message (replace 'John Doe' with
+your name or nickname):
+
+  John Doe Copyright Waiver
+
+  I dedicate any and all copyright interest in this software to the
+  public domain.  I make this dedication for the benefit of the public at
+  large and to the detriment of my heirs and successors.  I intend this
+  dedication to be an overt act of relinquishment in perpetuity of all
+  present and future rights to this software under copyright law.
+
+The command to create an empty commit from the command-line is:
+
+  git commit --allow-empty
diff --git a/config/kak/plugins/prelude.kak/README.md b/config/kak/plugins/prelude.kak/README.md
new file mode 100644 (file)
index 0000000..d1fe135
--- /dev/null
@@ -0,0 +1,37 @@
+# prelude.kak
+
+Prelude of shell blocks for [Kakoune].
+
+## Installation
+
+Add [`prelude.kak`](rc/prelude.kak) to your autoload or source it manually.
+
+``` kak
+require-module prelude
+```
+
+## Usage
+
+```
+kak_escape [text…]
+```
+
+Similar to `shell_escape` you may find in other programming languages,
+`kak_escape` escapes each argument so that it can be safely passed to Kakoune.
+
+**Implementation**:
+Single quotes each argument and doubles the single quotes inside.
+
+**Note**:
+The resulted text should be used unquoted and is not intended for use in double quotes, nor in single quotes.
+
+**Example**:
+
+``` kak
+evaluate-commands %sh{
+  . "$kak_opt_prelude_path"
+  kak_escape evaluate-commands -try-client "$kak_client" 'echo Tchou' | kak -p "$kak_session"
+}
+```
+
+[Kakoune]: https://kakoune.org
diff --git a/config/kak/plugins/prelude.kak/UNLICENSE b/config/kak/plugins/prelude.kak/UNLICENSE
new file mode 100644 (file)
index 0000000..efb9808
--- /dev/null
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org/>
diff --git a/config/kak/plugins/prelude.kak/rc/prelude.kak b/config/kak/plugins/prelude.kak/rc/prelude.kak
new file mode 100644 (file)
index 0000000..6454ef0
--- /dev/null
@@ -0,0 +1,5 @@
+declare-option -hidden str prelude_root_path %sh(dirname "$kak_source")
+
+provide-module prelude %{
+  declare-option -docstring 'Path to the prelude of shell blocks' str prelude_path "%opt{prelude_root_path}/prelude.sh"
+}
diff --git a/config/kak/plugins/prelude.kak/rc/prelude.sh b/config/kak/plugins/prelude.kak/rc/prelude.sh
new file mode 100644 (file)
index 0000000..c7dead6
--- /dev/null
@@ -0,0 +1,24 @@
+kak_escape() {
+  for text do
+    printf "'"
+    while true; do
+      case "$text" in
+        *"'"*)
+          head=${text%%"'"*}
+          tail=${text#*"'"}
+          printf "%s''" "$head"
+          text=$tail
+          ;;
+        *)
+          printf "%s' " "$text"
+          break
+          ;;
+      esac
+    done
+  done
+  printf "${KAK_ESCAPE_EOF:-\n}"
+}
+
+kak_escape_partial() {
+  KAK_ESCAPE_EOF=' ' kak_escape "$@"
+}
diff --git a/config/kak/plugins/shellcheck.kak/LICENSE b/config/kak/plugins/shellcheck.kak/LICENSE
new file mode 100644 (file)
index 0000000..cf1ab25
--- /dev/null
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org>
diff --git a/config/kak/plugins/shellcheck.kak/README.md b/config/kak/plugins/shellcheck.kak/README.md
new file mode 100644 (file)
index 0000000..ad06a7c
--- /dev/null
@@ -0,0 +1,48 @@
+# shellcheck.kak
+[ShellCheck](https://www.shellcheck.net) integration for [Kakoune](https://kakoune.org)
+
+## Installation
+
+First, install `shellcheck`. See [here](https://github.com/koalaman/shellcheck#installing) for directions.
+
+### With plug.kak
+
+To install the plugin, I recommend using [`plug.kak`](https://github.com/andreyorst/plug.kak). You can install it by adding the following to your `kakrc`:
+
+```
+plug "whereswaldon/shellcheck.kak"
+```
+
+### Manually
+
+If you prefer to install it manually, you can use:
+
+```bash
+mkdir -p ~/.config/kak/plugins/
+git clone https://github.com/whereswaldon/shellcheck.kak ~/.config/kak/plugins/shellcheck.kak/
+```
+
+You'll need to add the following to your kakrc as well:
+
+```
+source "%val{config}/plugins/shellcheck.kak/shellcheck.kak"
+```
+
+## Commands
+
+- `shellcheck-enable` starts linting the current window with shellcheck when you `:write` it.
+- `shellcheck-disable` turns off linting the current window.
+
+## Configuration
+
+Currently, the plugin will automatically enable linting when kakoune
+determines that the current filetype is a shell script.
+
+## Contribute
+
+Feature requests and pull requests welcome!
+
+## License
+
+Unlicense
+
diff --git a/config/kak/plugins/shellcheck.kak/shellcheck.kak b/config/kak/plugins/shellcheck.kak/shellcheck.kak
new file mode 100644 (file)
index 0000000..a388136
--- /dev/null
@@ -0,0 +1,74 @@
+######################
+# Internal utilities #
+######################
+
+define-command -hidden -override -docstring "check whether shellcheck is installed" shellcheck-check-installed %{
+    evaluate-commands %sh{
+        if command -v shellcheck > /dev/null 2>&1; then
+            printf "set-option window shellcheck_installed true\n"
+        else
+            printf "set-option window shellcheck_installed false\n"
+        fi
+    }
+}
+
+define-command -hidden -override -docstring "populate options with shellcheck version information" shellcheck-parse-version %{
+    evaluate-commands %sh{
+        version="$(shellcheck -V|egrep 'version:'|tr -s ' '|cut -d' ' -f2)"
+        printf "set-option window shellcheck_major_version %d\n" "$(echo "$version" | cut -d'.' -f 1)"
+        printf "set-option window shellcheck_minor_version %d\n" "$(echo "$version" | cut -d'.' -f 2)"
+        printf "set-option window shellcheck_patch_version %d\n" "$(echo "$version" | cut -d'.' -f 3)"
+    }
+    echo -debug "Using shellcheck v%opt{shellcheck_major_version}.%opt{shellcheck_minor_version}.%opt{shellcheck_patch_version}"
+}
+
+define-command -hidden -override -docstring "enable shellcheck in the current window" shellcheck-configure-window %{
+    set window lintcmd %sh{
+        # format like gcc, check files other than the current buffer if they are 'source'd
+        flags="-f gcc -x"
+        # if version >= v0.4.7
+        if [ "$kak_opt_shellcheck_minor_version" -ge 4 ] && [ "$kak_opt_shellcheck_patch_version" -ge 7 ]; then
+            # enable warnings from sourced files
+            flags="$flags -a"
+        fi
+        echo "shellcheck $flags"
+    }
+    lint
+    hook -group shellcheck window BufWritePre .* %{
+        lint
+    }
+}
+
+###############################
+# Externally-visible commands #
+###############################
+
+define-command -override -docstring "enable shellcheck in the current window" shellcheck-enable %{
+    evaluate-commands %sh{
+        if $kak_optshellcheck_installed; then
+            echo "shellcheck-parse-version"
+            echo "shellcheck-configure-window"
+        else
+            echo "echo -debug 'Missing shellcheck executable'"
+        fi
+    }
+}
+define-command -override -docstring "disable shellcheck in the current window" shellcheck-disable %{
+    lint-hide-diagnostics
+    remove-hooks window shellcheck
+}
+
+##################
+# Initialization #
+##################
+
+declare-option -hidden int shellcheck_major_version
+declare-option -hidden int shellcheck_minor_version
+declare-option -hidden int shellcheck_patch_version
+declare-option -hidden bool shellcheck_installed
+
+hook global WinSetOption filetype=sh %{
+    # check whether binary exists
+    shellcheck-check-installed
+    shellcheck-enable
+}
diff --git a/config/kak/plugins/smarttab.kak/LICENSE b/config/kak/plugins/smarttab.kak/LICENSE
new file mode 100644 (file)
index 0000000..fb09a1a
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Andrey Orst
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/config/kak/plugins/smarttab.kak/README.md b/config/kak/plugins/smarttab.kak/README.md
new file mode 100644 (file)
index 0000000..1df6e15
--- /dev/null
@@ -0,0 +1,125 @@
+# smarttab.kak
+![license](https://img.shields.io/github/license/andreyorst/smarttab.kak.svg)
+
+`smarttab.kak` is a plugin for [Kakoune](https://github.com/mawww/kakoune).
+It provides three different ways for handling indentation and alignment with the tab key.
+
+
+## Installation
+
+### With [plug.kak](https://github.com/andreyorst/plug.kak)
+
+Add this to your `kakrc`:
+
+```kak
+plug "andreyorst/smarttab.kak"
+```
+
+Source your `kakrc`, or restart Kakoune.
+Then execute `:plug-install`.
+Or, if you don't want to restart Kakoune or source its config, simply run `plug-install andreyorst/smarttab.kak`.
+It will then be enabled automatically.
+
+### Without plugin manager
+
+Clone this repo:
+
+```sh
+git clone https://github.com/andreyorst/smarttab.kak.git
+```
+
+You can put this repo in your `autoload` directory, or else manually `source` the `smarttab.kak` script in your configuration file.
+
+After that, you can use `smarttab.kak`.
+
+
+## Usage
+
+This plugin adds three commands to toggle between different policies when using the <kbd>Tab</kbd> and <kbd>></kbd> keys:
+
+- `noexpandtab` - use `tab` for everything.
+  <kbd>Tab</kbd> will insert the `\t` character, and <kbd>></kbd> will use the `\t` character when indenting.
+  Aligning cursors with <kbd>&</kbd> uses the `\t` character.
+- `expandtab` - use `space` for everything.
+  <kbd>Tab</kbd> will insert `%opt{indentwidth}` amount of spaces, and <kbd>></kbd> will indent with spaces.
+- `smarttab` - indent with `tab`, align with `space`.
+  <kbd>Tab</kbd> will insert the `\t` character if your cursor is inside an indentation area, e.g., before any non-whitespace character, and insert spaces if the cursor is after any non-whitespace character.
+  Aligning cursors with <kbd>&</kbd> uses `space`.
+- `autoconfigtab` - choose the above based upon one of the existing settings (see later section).
+
+By default, smarttab.kak affects only the <kbd>Tab</kbd> and <kbd>></kbd> keys.
+If you want to deindent lines that are being indented with spaces when hitting <kbd>Backspace</kbd>, you can set the `softtabstop` option.
+This option specifies how many `space`s should be treated as a single `tab` character when deleting them with a backspace.
+
+In order to automatically enable different modes for different languages, you can use `hook`s like so:
+
+```kak
+hook global WinSetOption filetype=c smarttab
+hook global WinSetOption filetype=rust expandtab
+```
+
+To adjust smarttab.kak related options, you need to use the  `ModuleLoaded` hook, because all options are defined withing the `smarttab` module:
+
+```sh
+hook global ModuleLoaded smarttab %{
+    set-option global softtabstop 4
+    # you can configure text that is being used to represent curent active mode
+    set-option global smarttab_expandtab_mode_name 'exp'
+    set-option global smarttab_noexpandtab_mode_name 'noexp'
+    set-option global smarttab_smarttab_mode_name 'smart'
+}
+```
+
+If you've used plug.kak for installation, it's better to configure smarttab.kak from within the `plug` command because it can handle lazy loading the configurations for the plugin, as well as configure the editor's behavior:
+
+```sh
+plug "andreyorst/smarttab.kak" defer smarttab %{
+    # when `backspace' is pressed, 4 spaces are deleted at once
+    set-option global softtabstop 4
+} config %{
+    # these languages will use `expandtab' behavior
+    hook global WinSetOption filetype=(rust|markdown|kak|lisp|scheme|sh|perl) expandtab
+    # these languages will use `noexpandtab' behavior
+    hook global WinSetOption filetype=(makefile|gas) noexpandtab
+    # these languages will use `smarttab' behavior
+    hook global WinSetOption filetype=(c|cpp) smarttab
+}
+```
+
+### Setting the default mode
+
+In your `kakrc` add:
+
+```kak
+hook global BufOpenFile .* _mode_
+hook global BufNewFile  .* _mode_
+```
+
+Where the `_mode_` is one of the `smarttab.kak` modes, described [above](#usage).
+
+
+### `autoconfigtab` configuration
+
+If you just want to set the behavior based upon your `editorconfig` settings, you can use the `autoconfigtab` setting:
+
+```kak
+hook global BufCreate .* %{
+    editorconfig-load
+    autoconfigtab
+}
+```
+
+This config will choose `expandtab` or `noexpandtab` based upon whether `indent_style` is set as `space` or `tab` respectively.
+
+If you'd prefer to use `smarttab` instead of `noexpandtab` for `indent_style = tab` (without affecting `indent_style = space`), you can manually override the `aligntab` option to `false` before running `autoconfigtab`, as seen in the below config:
+
+```kak
+hook global BufCreate .* %{
+    editorconfig-load
+    set-option buffer aligntab false
+    autoconfigtab
+}
+```
+
+Currently, `autoconfigtab` does not cover the case where `indentwidth` is nonzero but `aligntab` is set to `true`, as this would mean indenting with spaces and aligning with tabs.
+In this particular case, tab alignment takes priority and `noexpandtab` is chosen.
diff --git a/config/kak/plugins/smarttab.kak/rc/smarttab-powerline.kak b/config/kak/plugins/smarttab.kak/rc/smarttab-powerline.kak
new file mode 100644 (file)
index 0000000..1b03038
--- /dev/null
@@ -0,0 +1,45 @@
+# ╭─────────────╥────────────────────────╮
+# │ Author:     ║ File:                  │
+# │ Andrey Orst ║ smarttab-powerline.kak │
+# ╞═════════════╩════════════════════════╡
+# │ Smarttab module for powerline.kak    │
+# ╞══════════════════════════════════════╡
+# │ GitHub.com/andreyorst/smarttab.kak   │
+# │ GitHub.com/andreyorst/powerline.kak  │
+# ╰──────────────────────────────────────╯
+
+hook global ModuleLoaded powerline %{ require-module powerline_expandtab }
+
+provide-module powerline_expandtab %§
+
+declare-option -hidden bool powerline_module_smarttab true
+
+declare-option -hidden str-list powerline_modules
+set-option -add global powerline_modules 'smarttab'
+
+define-command -hidden powerline-smarttab %{ evaluate-commands %sh{
+    default=$kak_opt_powerline_base_bg
+    next_bg=$kak_opt_powerline_next_bg
+    normal=$kak_opt_powerline_separator
+    thin=$kak_opt_powerline_separator_thin
+    if [ "$kak_opt_powerline_module_smarttab" = "true" ]; then
+        fg=$kak_opt_powerline_color18
+        bg=$kak_opt_powerline_color20
+        if [ ! -z "$kak_opt_smarttab_mode" ]; then
+        [ "$next_bg" = "$bg" ] && separator="{$fg,$bg}$thin" || separator="{$bg,${next_bg:-$default}}$normal"
+            echo "set-option -add global powerlinefmt %{$separator{$fg,$bg} %opt{smarttab_mode} }"
+            echo "set-option global powerline_next_bg $bg"
+        fi
+    fi
+}}
+
+define-command -hidden powerline-toggle-smarttab -params ..1 %{ evaluate-commands %sh{
+    [ "$kak_opt_powerline_module_smarttab" = "true" ] && value=false || value=true
+    if [ -n "$1" ]; then
+        [ "$1" = "on" ] && value=true || value=false
+    fi
+    echo "set-option global powerline_module_smarttab $value"
+    echo "powerline-rebuild"
+}}
+
diff --git a/config/kak/plugins/smarttab.kak/rc/smarttab.kak b/config/kak/plugins/smarttab.kak/rc/smarttab.kak
new file mode 100644 (file)
index 0000000..53b53b6
--- /dev/null
@@ -0,0 +1,119 @@
+# ╭─────────────╥──────────────────────╮
+# │ Author:     ║ File:                │
+# │ Andrey Orst ║ smarttab.kak         │
+# ╞═════════════╩══════════════════════╡
+# │ Extends tab handling by adding     │
+# │ three different commands for       │
+# │ each mode.                         │
+# ╞════════════════════════════════════╡
+# │ Rest of .dotfiles:                 │
+# │ GitHub.com/andreyorst/smarttab.kak │
+# ╰────────────────────────────────────╯
+
+define-command -docstring "noexpandtab: use tab character to indent and align" \
+noexpandtab %{ require-module smarttab; noexpandtab-impl }
+
+define-command -docstring "expandtab: use space character to indent and align" \
+expandtab %{ require-module smarttab; expandtab-impl }
+
+define-command -docstring "smarttab: use tab character for indentation and space character for alignment" \
+smarttab %{ require-module smarttab; smarttab-impl }
+
+# note: there is no space-indent, tab-align setting; this is assumed to be equivalent to noexpandtab
+define-command -docstring "autoconfigtab: use tab or space character to indent and align based upon existing settings (e.g. via editorconfig)" \
+autoconfigtab %{ require-module smarttab; autoconfigtab-impl }
+
+provide-module smarttab %§
+
+# Options
+# ‾‾‾‾‾‾‾
+
+declare-option -docstring "amount of spaces that should be treated as single tab character when deleting spaces" \
+int softtabstop 0
+
+declare-option -docstring "displays current tab handling mode" \
+str smarttab_mode ''
+
+declare-option -docstring 'what text to display in ''%opt{smarttab_mode}'' when expandtab mode is on' \
+str smarttab_expandtab_mode_name 'expandtab'
+
+declare-option -docstring 'what text to display in ''%opt{smarttab_mode}'' when expandtab mode is on' \
+str smarttab_noexpandtab_mode_name 'noexpandtab'
+
+declare-option -docstring 'what text to display in ''%opt{smarttab_mode}'' when expandtab mode is on' \
+str smarttab_smarttab_mode_name 'smarttab'
+
+declare-option -hidden int oldindentwidth %opt{indentwidth}
+
+# Commands
+# ‾‾‾‾‾‾‾‾
+
+define-command -hidden noexpandtab-impl %{
+    set-option buffer smarttab_mode %opt{smarttab_noexpandtab_mode_name}
+    remove-hooks buffer smarttab-mode
+    smarttab-set
+    set-option buffer indentwidth 0
+    set-option buffer aligntab true
+    hook -group smarttab-mode buffer InsertDelete ' ' %{ try %sh{
+        if [ $kak_opt_softtabstop -gt 1 ]; then
+           printf "%s\n" 'execute-keys -draft "<a-h><a-k>^\h+.\z<ret>I<space><esc><lt>"'
+        fi
+    } catch %{ try %{
+        execute-keys -itersel -draft "h%opt{softtabstop}<s-h>2<s-l>s\h+\z<ret>d"
+    }}}
+}
+
+define-command -hidden expandtab-impl %{
+    set-option buffer smarttab_mode %opt{smarttab_expandtab_mode_name}
+    remove-hooks buffer smarttab-mode
+    smarttab-set
+    set-option buffer aligntab false
+    hook -group smarttab-mode buffer InsertChar '\t' %{ execute-keys -draft "h%opt{indentwidth}@" }
+    hook -group smarttab-mode buffer InsertDelete ' ' %{ try %sh{
+        if [ $kak_opt_softtabstop -gt 1 ]; then
+            printf "%s\n" 'execute-keys -draft -itersel "<a-h><a-k>^\h+.\z<ret>I<space><esc><lt>"'
+        fi
+    } catch %{ try %{
+        execute-keys -itersel -draft "h%opt{softtabstop}<s-h>2<s-l>s\h+\z<ret>d"
+    }}}
+}
+
+define-command -hidden smarttab-impl %{
+    set-option buffer smarttab_mode %opt{smarttab_smarttab_mode_name}
+    remove-hooks buffer smarttab-mode
+    smarttab-set
+    set-option buffer indentwidth 0
+    set-option buffer aligntab false
+    hook -group smarttab-mode buffer InsertChar '\t' %{ try %{
+        execute-keys -draft "<a-h><a-k>^\h*.\z<ret>"
+    } catch %{
+        execute-keys -draft "h@"
+    }}
+    hook -group smarttab-mode buffer InsertDelete ' ' %{ try %sh{
+        if [ $kak_opt_softtabstop -gt 1 ]; then
+            printf "%s\n" 'execute-keys -draft "<a-h><a-k>^\h+.\z<ret>I<space><esc><lt>"'
+        fi
+    } catch %{ try %{
+        execute-keys -itersel -draft "h%opt{softtabstop}<s-h>2<s-l>s\h+\z<ret>d"
+    }}}
+}
+
+define-command -hidden autoconfigtab-impl %{ evaluate-commands %sh{
+    if [ $kak_opt_aligntab = true ]; then
+        echo "noexpandtab"
+    elif [ $kak_opt_indentwidth -eq 0 ]; then
+        echo "smarttab"
+    else
+        echo "expandtab"
+    fi
+}}
+
+define-command -hidden smarttab-set %{ evaluate-commands %sh{
+    if [ $kak_opt_indentwidth -eq 0 ]; then
+        printf "%s\n" "set-option buffer indentwidth $kak_opt_oldindentwidth"
+    else
+        printf "%s\n" "set-option buffer oldindentwidth $kak_opt_indentwidth"
+    fi
+}}
+
diff --git a/config/mako/config b/config/mako/config
new file mode 100644 (file)
index 0000000..6e722f2
--- /dev/null
@@ -0,0 +1,53 @@
+## Mako configuration file
+
+# GLOBAL CONFIGURATION OPTIONS
+max-history=100
+sort=-time
+
+# BINDING OPTIONS
+on-button-left=dismiss
+on-button-middle=none
+on-button-right=dismiss-all
+on-touch=dismiss
+on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
+
+# STYLE OPTIONS
+font=LiterationMono Nerd Font 16
+width=500
+height=132
+margin=10
+padding=15
+border-size=2
+border-radius=0
+icons=1
+max-icon-size=128
+icon-location=left
+markup=1
+actions=1
+history=1
+text-alignment=left
+default-timeout=5000
+ignore-timeout=0
+max-visible=5
+layer=overlay
+anchor=bottom-center
+
+
+background-color=#181818cc
+text-color=#d8d8d8
+border-color=#7cafc2
+
+[urgency=low]
+background-color=#181818cc
+text-color=#f7ca88
+border-color=#7cafc2
+
+[urgency=high]
+background-color=#181818cc
+text-color=#ab4642
+border-color=#7cafc2
+
+[category=mpd]
+border-color=#f9e2af
+default-timeout=2000
+group-by=category
diff --git a/config/mpd/mpd.conf b/config/mpd/mpd.conf
new file mode 100644 (file)
index 0000000..86cc159
--- /dev/null
@@ -0,0 +1,39 @@
+user "andy"
+bind_to_address "localhost"
+
+log_file "~/mpd/log"
+pid_file "~/mpd/pid"
+state_file "~/mpd/state"
+sticker_file "~/mpd/sticker.sql"
+
+database {
+       plugin "simple"
+       path "~/mpd/database"
+       cache_directory "~/.cache/mpd"
+}
+
+auto_update    "yes"
+auto_update_depth "2"
+
+filesystem_charset "UTF-8"
+music_directory "/mnt/multimedia/Musik"
+playlist_directory "/mnt/multimedia/Musik/Playlists"
+
+
+input {
+        plugin "curl"
+}
+
+audio_output {
+       type    "pipewire"
+       name    "Pipewire Output"
+}
+
+audio_output {
+       type    "fifo"
+       name    "mpdFIFO"
+       path    "/tmp/mpd.fifo"
+       enabled "yes"
+       format  "44100:16:2"
+}
+
diff --git a/config/ncmpcpp/bindings b/config/ncmpcpp/bindings
new file mode 100644 (file)
index 0000000..20e26f8
--- /dev/null
@@ -0,0 +1,32 @@
+def_key "j"
+  scroll_down
+def_key "k"
+  scroll_up
+def_key "J"
+  move_sort_order_down
+def_key "K"
+  move_sort_order_up
+def_key "h"
+  previous_column
+def_key "l"
+  next_column
+def_key "ctrl-b"
+  page_up
+def_key "ctrl-u"
+  page_up
+def_key "ctrl-f"
+  page_down
+def_key "ctrl-d"
+  page_down
+def_key "g"
+  move_home
+def_key "G"
+  move_end
+def_key "n"
+  next_found_item
+def_key "N"
+  previous_found_item
+def_key "9"
+  show_lyrics
+def_key "0"
+  show_clock
diff --git a/config/ncmpcpp/config b/config/ncmpcpp/config
new file mode 100644 (file)
index 0000000..d1deba7
--- /dev/null
@@ -0,0 +1,20 @@
+visualizer_output_name = mpdFIFO
+visualizer_fps = 60
+visualizer_in_stereo = yes
+visualizer_spectrum_hz_min = 28
+visualizer_spectrum_hz_max = 18000
+visualizer_spectrum_smooth_look = yes
+visualizer_spectrum_gain = 1.5
+
+volume_change_step = 5
+user_interface = alternative
+#progressbar_look = ⤼⤻
+store_lyrics_in_song_dir = no
+generate_win32_compatible_filenames = yes
+follow_now_playing_lyrics = yes
+display_bitrate = yes
+display_remaining_time = yes
+use_console_editor = yes
+
+execute_on_song_change = $HOME/.local/bin/songinfo
+
diff --git a/config/qutebrowser/config.py b/config/qutebrowser/config.py
new file mode 100644 (file)
index 0000000..1b1e36a
--- /dev/null
@@ -0,0 +1,1260 @@
+# Autogenerated config.py
+#
+# NOTE: config.py is intended for advanced users who are comfortable
+# with manually migrating the config file on qutebrowser upgrades. If
+# you prefer, you can also configure qutebrowser using the
+# :set/:bind/:config-* commands without having to write a config.py
+# file.
+#
+# Documentation:
+#   qute://help/configuring.html
+#   qute://help/settings.html
+
+# Change the argument to True to still load settings configured via autoconfig.yml
+config.load_autoconfig(False)
+
+# Require a confirmation before quitting the application.
+# Type: ConfirmQuit
+# Valid values:
+#   - always: Always show a confirmation.
+#   - multiple-tabs: Show a confirmation if multiple tabs are opened.
+#   - downloads: Show a confirmation if downloads are running
+#   - never: Never show a confirmation.
+c.confirm_quit = ['downloads']
+
+# When to show a changelog after qutebrowser was upgraded.
+# Type: String
+# Valid values:
+#   - major: Show changelog for major upgrades (e.g. v2.0.0 -> v3.0.0).
+#   - minor: Show changelog for major and minor upgrades (e.g. v2.0.0 -> v2.1.0).
+#   - patch: Show changelog for major, minor and patch upgrades (e.g. v2.0.0 -> v2.0.1).
+#   - never: Never show changelog after upgrades.
+c.changelog_after_upgrade = 'patch'
+
+# How to open links in an existing instance if a new one is launched.
+# This happens when e.g. opening a link from a terminal. See
+# `new_instance_open_target_window` to customize in which window the
+# link is opened in.
+# Type: String
+# Valid values:
+#   - tab: Open a new tab in the existing window and activate the window.
+#   - tab-bg: Open a new background tab in the existing window and activate the window.
+#   - tab-silent: Open a new tab in the existing window without activating the window.
+#   - tab-bg-silent: Open a new background tab in the existing window without activating the window.
+#   - window: Open in a new window.
+#   - private-window: Open in a new private window.
+c.new_instance_open_target = 'tab-bg'
+
+# Load a restored tab as soon as it takes focus.
+# Type: Bool
+c.session.lazy_restore = True
+
+# Backend to use to display websites. qutebrowser supports two different
+# web rendering engines / backends, QtWebEngine and QtWebKit (not
+# recommended). QtWebEngine is Qt's official successor to QtWebKit, and
+# both the default/recommended backend. It's based on a stripped-down
+# Chromium and regularly updated with security fixes and new features by
+# the Qt project: https://wiki.qt.io/QtWebEngine QtWebKit was
+# qutebrowser's original backend when the project was started. However,
+# support for QtWebKit was discontinued by the Qt project with Qt 5.6 in
+# 2016. The development of QtWebKit was picked up in an official fork:
+# https://github.com/qtwebkit/qtwebkit - however, the project seems to
+# have stalled again. The latest release (5.212.0 Alpha 4) from March
+# 2020 is based on a WebKit version from 2016, with many known security
+# vulnerabilities. Additionally, there is no process isolation and
+# sandboxing. Due to all those issues, while support for QtWebKit is
+# still available in qutebrowser for now, using it is strongly
+# discouraged.
+# Type: String
+# Valid values:
+#   - webengine: Use QtWebEngine (based on Chromium - recommended).
+#   - webkit: Use QtWebKit (based on WebKit, similar to Safari - many known security issues!).
+c.backend = 'webengine'
+
+# Force software rendering for QtWebEngine. This is needed for
+# QtWebEngine to work with Nouveau drivers and can be useful in other
+# scenarios related to graphic issues.
+# Type: String
+# Valid values:
+#   - software-opengl: Tell LibGL to use a software implementation of GL (`LIBGL_ALWAYS_SOFTWARE` / `QT_XCB_FORCE_SOFTWARE_OPENGL`)
+#   - qt-quick: Tell Qt Quick to use a software renderer instead of OpenGL. (`QT_QUICK_BACKEND=software`)
+#   - chromium: Tell Chromium to disable GPU support and use Skia software rendering instead. (`--disable-gpu`)
+#   - none: Don't force software rendering.
+c.qt.force_software_rendering = 'chromium'
+
+# Force a Qt platform to use. This sets the `QT_QPA_PLATFORM`
+# environment variable and is useful to force using the XCB plugin when
+# running QtWebEngine on Wayland.
+# Type: String
+c.qt.force_platform = None
+
+# Force a Qt platformtheme to use. This sets the `QT_QPA_PLATFORMTHEME`
+# environment variable which controls dialogs like the filepicker. By
+# default, Qt determines the platform theme based on the desktop
+# environment.
+# Type: String
+c.qt.force_platformtheme = 'qt6ct'
+
+# Which Chromium process model to use. Alternative process models use
+# less resources, but decrease security and robustness. See the
+# following pages for more details:    -
+# https://www.chromium.org/developers/design-documents/process-models
+# - https://doc.qt.io/qt-6/qtwebengine-features.html#process-models
+# Type: String
+# Valid values:
+#   - process-per-site-instance: Pages from separate sites are put into separate processes and separate visits to the same site are also isolated.
+#   - process-per-site: Pages from separate sites are put into separate processes. Unlike Process per Site Instance, all visits to the same site will share an OS process. The benefit of this model is reduced memory consumption, because more web pages will share processes. The drawbacks include reduced security, robustness, and responsiveness.
+#   - single-process: Run all tabs in a single process. This should be used for debugging purposes only, and it disables `:open --private`.
+c.qt.chromium.process_model = 'process-per-site-instance'
+
+# Turn on Qt HighDPI scaling. This is equivalent to setting
+# QT_ENABLE_HIGHDPI_SCALING=1 (Qt >= 5.14) in the environment. It's off
+# by default as it can cause issues with some bitmap fonts. As an
+# alternative to this, it's possible to set font sizes and the
+# `zoom.default` setting.
+# Type: Bool
+c.qt.highdpi = False
+
+# Always restore open sites when qutebrowser is reopened. Without this
+# option set, `:wq` (`:quit --save`) needs to be used to save open tabs
+# (and restore them), while quitting qutebrowser in any other way will
+# not save/restore the session. By default, this will save to the
+# session which was last loaded. This behavior can be customized via the
+# `session.default_name` setting.
+# Type: Bool
+c.auto_save.session = True
+
+# Automatically start playing `<video>` elements.
+# Type: Bool
+c.content.autoplay = False
+
+# Size (in bytes) of the HTTP network cache. Null to use the default
+# value. With QtWebEngine, the maximum supported value is 2147483647 (~2
+# GB).
+# Type: Int
+c.content.cache.size = 0
+
+# Allow websites to read canvas elements. Note this is needed for some
+# websites to work properly.
+# Type: Bool
+c.content.canvas_reading = True
+
+# Which cookies to accept. With QtWebEngine, this setting also controls
+# other features with tracking capabilities similar to those of cookies;
+# including IndexedDB, DOM storage, filesystem API, service workers, and
+# AppCache. Note that with QtWebKit, only `all` and `never` are
+# supported as per-domain values. Setting `no-3rdparty` or `no-
+# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
+# `all`. If this setting is used with URL patterns, the pattern gets
+# applied to the origin/first party URL of the page making the request,
+# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
+# from URLs, so URL patterns using paths will not match. With
+# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
+# you will typically need to set this setting for `example.com` when the
+# cookie is set on `somesubdomain.example.com` for it to work properly.
+# To debug issues with this setting, start qutebrowser with `--debug
+# --logfilter network --debug-flag log-cookies` which will show all
+# cookies being set.
+# Type: String
+# Valid values:
+#   - all: Accept all cookies.
+#   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
+#   - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
+#   - never: Don't accept cookies at all.
+config.set('content.cookies.accept', 'all', 'chrome-devtools://*')
+
+# Which cookies to accept. With QtWebEngine, this setting also controls
+# other features with tracking capabilities similar to those of cookies;
+# including IndexedDB, DOM storage, filesystem API, service workers, and
+# AppCache. Note that with QtWebKit, only `all` and `never` are
+# supported as per-domain values. Setting `no-3rdparty` or `no-
+# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
+# `all`. If this setting is used with URL patterns, the pattern gets
+# applied to the origin/first party URL of the page making the request,
+# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
+# from URLs, so URL patterns using paths will not match. With
+# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
+# you will typically need to set this setting for `example.com` when the
+# cookie is set on `somesubdomain.example.com` for it to work properly.
+# To debug issues with this setting, start qutebrowser with `--debug
+# --logfilter network --debug-flag log-cookies` which will show all
+# cookies being set.
+# Type: String
+# Valid values:
+#   - all: Accept all cookies.
+#   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
+#   - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
+#   - never: Don't accept cookies at all.
+config.set('content.cookies.accept', 'all', 'devtools://*')
+
+# Which cookies to accept. With QtWebEngine, this setting also controls
+# other features with tracking capabilities similar to those of cookies;
+# including IndexedDB, DOM storage, filesystem API, service workers, and
+# AppCache. Note that with QtWebKit, only `all` and `never` are
+# supported as per-domain values. Setting `no-3rdparty` or `no-
+# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
+# `all`. If this setting is used with URL patterns, the pattern gets
+# applied to the origin/first party URL of the page making the request,
+# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
+# from URLs, so URL patterns using paths will not match. With
+# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
+# you will typically need to set this setting for `example.com` when the
+# cookie is set on `somesubdomain.example.com` for it to work properly.
+# To debug issues with this setting, start qutebrowser with `--debug
+# --logfilter network --debug-flag log-cookies` which will show all
+# cookies being set.
+# Type: String
+# Valid values:
+#   - all: Accept all cookies.
+#   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
+#   - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
+#   - never: Don't accept cookies at all.
+c.content.cookies.accept = 'no-3rdparty'
+
+# Default encoding to use for websites. The encoding must be a string
+# describing an encoding such as _utf-8_, _iso-8859-1_, etc.
+# Type: String
+c.content.default_encoding = '_utf-8_,iso-8859-1'
+
+# Limit fullscreen to the browser window (does not expand to fill the
+# screen).
+# Type: Bool
+c.content.fullscreen.window = True
+
+# Try to pre-fetch DNS entries to speed up browsing.
+# Type: Bool
+c.content.dns_prefetch = False
+
+# Allow websites to request geolocations.
+# Type: BoolAsk
+# Valid values:
+#   - true
+#   - false
+#   - ask
+config.set('content.geolocation', False, 'https://www.clubderdampfer.de')
+
+# Allow websites to request geolocations.
+# Type: BoolAsk
+# Valid values:
+#   - true
+#   - false
+#   - ask
+config.set('content.geolocation', False, 'https://www.r-m.de')
+
+# Value to send in the `Accept-Language` header. Note that the value
+# read from JavaScript is always the global value.
+# Type: String
+config.set('content.headers.accept_language', '', 'https://matchmaker.krunker.io/*')
+
+# Value to send in the `Accept-Language` header. Note that the value
+# read from JavaScript is always the global value.
+# Type: String
+c.content.headers.accept_language = 'en-US,en;q=0.9'
+
+# Value to send in the `DNT` header. When this is set to true,
+# qutebrowser asks websites to not track your identity. If set to null,
+# the DNT header is not sent at all.
+# Type: Bool
+c.content.headers.do_not_track = False
+
+# User agent to send.  The following placeholders are defined:  *
+# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
+# The underlying WebKit version (set to a fixed value   with
+# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
+# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
+# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
+# QtWebEngine. * `{upstream_browser_version}`: The corresponding
+# Safari/Chrome version. * `{qutebrowser_version}`: The currently
+# running qutebrowser version.  The default value is equal to the
+# unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
+# read from JavaScript is always the global value. With QtWebEngine
+# between 5.12 and 5.14 (inclusive), changing the value exposed to
+# JavaScript requires a restart.
+# Type: FormatString
+config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}', 'https://web.whatsapp.com/')
+
+# User agent to send.  The following placeholders are defined:  *
+# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
+# The underlying WebKit version (set to a fixed value   with
+# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
+# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
+# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
+# QtWebEngine. * `{upstream_browser_version}`: The corresponding
+# Safari/Chrome version. * `{qutebrowser_version}`: The currently
+# running qutebrowser version.  The default value is equal to the
+# unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
+# read from JavaScript is always the global value. With QtWebEngine
+# between 5.12 and 5.14 (inclusive), changing the value exposed to
+# JavaScript requires a restart.
+# Type: FormatString
+config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0', 'https://accounts.google.com/*')
+
+# User agent to send.  The following placeholders are defined:  *
+# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
+# The underlying WebKit version (set to a fixed value   with
+# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
+# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
+# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
+# QtWebEngine. * `{upstream_browser_version}`: The corresponding
+# Safari/Chrome version. * `{qutebrowser_version}`: The currently
+# running qutebrowser version.  The default value is equal to the
+# unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
+# read from JavaScript is always the global value. With QtWebEngine
+# between 5.12 and 5.14 (inclusive), changing the value exposed to
+# JavaScript requires a restart.
+# Type: FormatString
+config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112 Safari/537.36', 'https://*.slack.com/*')
+
+# Enable the ad/host blocker
+# Type: Bool
+c.content.blocking.enabled = True
+
+# Block subdomains of blocked hosts. Note: If only a single subdomain is
+# blocked but should be allowed, consider using
+# `content.blocking.whitelist` instead.
+# Type: Bool
+c.content.blocking.hosts.block_subdomains = True
+
+# List of URLs to ABP-style adblocking rulesets.  Only used when Brave's
+# ABP-style adblocker is used (see `content.blocking.method`).  You can
+# find an overview of available lists here:
+# https://adblockplus.org/en/subscriptions - note that the special
+# `subscribe.adblockplus.org` links aren't handled by qutebrowser, you
+# will instead need to find the link to the raw `.txt` file (e.g. by
+# extracting it from the `location` parameter of the subscribe URL and
+# URL-decoding it).
+# Type: List of Url
+c.content.blocking.adblock.lists = ['https://easylist.to/easylist/easylist.txt', 'https://easylist.to/easylist/easyprivacy.txt']
+
+# A list of patterns that should always be loaded, despite being blocked
+# by the ad-/host-blocker. Local domains are always exempt from
+# adblocking. Note this whitelists otherwise blocked requests, not
+# first-party URLs. As an example, if `example.org` loads an ad from
+# `ads.example.org`, the whitelist entry could be
+# `https://ads.example.org/*`. If you want to disable the adblocker on a
+# given page, use the `content.blocking.enabled` setting with a URL
+# pattern instead.
+# Type: List of UrlPattern
+c.content.blocking.whitelist = ['piwik.org']
+
+# Load images automatically in web pages.
+# Type: Bool
+config.set('content.images', True, 'chrome-devtools://*')
+
+# Load images automatically in web pages.
+# Type: Bool
+config.set('content.images', True, 'devtools://*')
+
+# Allow JavaScript to read from or write to the clipboard. With
+# QtWebEngine, writing the clipboard as response to a user interaction
+# is always allowed.
+# Type: String
+# Valid values:
+#   - none: Disable access to clipboard.
+#   - access: Allow reading from and writing to the clipboard.
+#   - access-paste: Allow accessing the clipboard and pasting clipboard content.
+config.set('content.javascript.clipboard', 'access', 'wago.io')
+
+# Allow JavaScript to read from or write to the clipboard. With
+# QtWebEngine, writing the clipboard as response to a user interaction
+# is always allowed.
+# Type: String
+# Valid values:
+#   - none: Disable access to clipboard.
+#   - access: Allow reading from and writing to the clipboard.
+#   - access-paste: Allow accessing the clipboard and pasting clipboard content.
+config.set('content.javascript.clipboard', 'access', 'wowhead.com')
+
+# Enable JavaScript.
+# Type: Bool
+config.set('content.javascript.enabled', True, 'chrome-devtools://*')
+
+# Enable JavaScript.
+# Type: Bool
+config.set('content.javascript.enabled', True, 'devtools://*')
+
+# Enable JavaScript.
+# Type: Bool
+config.set('content.javascript.enabled', True, 'chrome://*/*')
+
+# Enable JavaScript.
+# Type: Bool
+config.set('content.javascript.enabled', True, 'qute://*/*')
+
+# Enable JavaScript.
+# Type: Bool
+c.content.javascript.enabled = True
+
+# Javascript messages to *not* show in the UI, despite a corresponding
+# `content.javascript.log_message.levels` setting. Both keys and values
+# are glob patterns, with the key matching the location of the error,
+# and the value matching the error message. By default, the
+# https://web.dev/csp/[Content security policy] violations triggered by
+# qutebrowser's stylesheet handling are excluded, as those errors are to
+# be expected and can't be easily handled by the underlying code.
+# Type: Dict
+c.content.javascript.log_message.excludes = {'userscript:_qute_stylesheet': ['*Refused to apply inline style because it violates the following Content Security Policy directive: *']}
+
+# Allow locally loaded documents to access remote URLs.
+# Type: Bool
+config.set('content.local_content_can_access_remote_urls', True, 'file:///home/andy/.local/share/qutebrowser/userscripts/*')
+
+# Allow locally loaded documents to access other local URLs.
+# Type: Bool
+config.set('content.local_content_can_access_file_urls', False, 'file:///home/andy/.local/share/qutebrowser/userscripts/*')
+
+# Allow websites to show notifications.
+# Type: BoolAsk
+# Valid values:
+#   - true
+#   - false
+#   - ask
+c.content.notifications.enabled = True
+
+# What notification presenter to use for web notifications. Note that
+# not all implementations support all features of notifications: - The
+# `qt` and `systray` options only support showing one notification at
+# the time   and ignore the `tag` option to replace existing
+# notifications. - The `herbe` option only supports showing one
+# notification at the time and doesn't   show icons. - The `messages`
+# option doesn't show icons and doesn't support the `click` and
+# `close` events.
+# Type: String
+# Valid values:
+#   - auto: Tries `libnotify`, `systray` and `messages`, uses the first one available without showing error messages.
+#   - qt: Use Qt's native notification presenter, based on a system tray icon. Switching from or to this value requires a restart of qutebrowser.
+#   - libnotify: Shows messages via DBus in a libnotify-compatible way. If DBus isn't available, falls back to `systray` or `messages`, but shows an error message.
+#   - systray: Use a notification presenter based on a systray icon. Falls back to `libnotify` or `messages` if not systray is available. This is a reimplementation of the `qt` setting value, but with the possibility to switch to it at runtime.
+#   - messages: Show notifications as qutebrowser messages. Most notification features aren't available.
+#   - herbe: (experimental!) Show notifications using herbe (github.com/dudik/herbe). Most notification features aren't available.
+c.content.notifications.presenter = 'auto'
+
+# Display PDF files via PDF.js in the browser without showing a download
+# prompt. Note that the files can still be downloaded by clicking the
+# download button in the pdf.js viewer. With this set to `false`, the
+# `:prompt-open-download --pdfjs` command (bound to `<Ctrl-p>` by
+# default) can be used in the download prompt.
+# Type: Bool
+c.content.pdfjs = False
+
+# Enable plugins in Web pages.
+# Type: Bool
+c.content.plugins = True
+
+# Allow websites to register protocol handlers via
+# `navigator.registerProtocolHandler`.
+# Type: BoolAsk
+# Valid values:
+#   - true
+#   - false
+#   - ask
+config.set('content.register_protocol_handler', True, 'https://mail.google.com?extsrc=mailto&url=%25s')
+
+# Enable WebGL.
+# Type: Bool
+c.content.webgl = True
+
+# Monitor load requests for cross-site scripting attempts. Suspicious
+# scripts will be blocked and reported in the devtools JavaScript
+# console. Note that bypasses for the XSS auditor are widely known and
+# it can be abused for cross-site info leaks in some scenarios, see:
+# https://www.chromium.org/developers/design-documents/xss-auditor
+# Type: Bool
+c.content.xss_auditing = False
+
+# Width (in pixels) of the scrollbar in the completion window.
+# Type: Int
+c.completion.scrollbar.width = 16
+
+# Number of URLs to show in the web history. 0: no history / -1:
+# unlimited
+# Type: Int
+c.completion.web_history.max_items = 1000
+
+# Directory to save downloads to. If unset, a sensible OS-specific
+# default is used.
+# Type: Directory
+c.downloads.location.directory = None
+
+# Prompt the user for the download location. If set to false,
+# `downloads.location.directory` will be used.
+# Type: Bool
+c.downloads.location.prompt = False
+
+# Remember the last used download directory.
+# Type: Bool
+c.downloads.location.remember = True
+
+# What to display in the download filename input.
+# Type: String
+# Valid values:
+#   - path: Show only the download path.
+#   - filename: Show only download filename.
+#   - both: Show download path and filename.
+c.downloads.location.suggestion = 'both'
+
+# Which categories to show (in which order) in the :open completion.
+# Type: FlagList
+# Valid values:
+#   - searchengines
+#   - quickmarks
+#   - bookmarks
+#   - history
+#   - filesystem
+c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history', 'filesystem']
+
+# Where to show the downloaded files.
+# Type: VerticalPosition
+# Valid values:
+#   - top
+#   - bottom
+c.downloads.position = 'bottom'
+
+# Automatically abort insecure (HTTP) downloads originating from secure
+# (HTTPS) pages. For per-domain settings, the relevant URL is the URL
+# initiating the download, not the URL the download itself is coming
+# from. It's not recommended to set this setting to false globally.
+# Type: Bool
+c.downloads.prevent_mixed_content = True
+
+# Editor (and arguments) to use for the `edit-*` commands. The following
+# placeholders are defined:  * `{file}`: Filename of the file to be
+# edited. * `{line}`: Line in which the caret is found in the text. *
+# `{column}`: Column in which the caret is found in the text. *
+# `{line0}`: Same as `{line}`, but starting from index 0. * `{column0}`:
+# Same as `{column}`, but starting from index 0.
+# Type: ShellCommand
+c.editor.command = ['foot', '-a', 'popup', 'kak', '{file}']
+
+# Handler for selecting file(s) in forms. If `external`, then the
+# commands specified by `fileselect.single_file.command`,
+# `fileselect.multiple_files.command` and `fileselect.folder.command`
+# are used to select one file, multiple files, and folders,
+# respectively.
+# Type: String
+# Valid values:
+#   - default: Use the default file selector.
+#   - external: Use an external command.
+c.fileselect.handler = 'default'
+
+# Minimum number of characters used for hint strings.
+# Type: Int
+c.hints.min_chars = 2
+
+# Scatter hint key chains (like Vimium) or not (like dwb). Ignored for
+# number hints.
+# Type: Bool
+c.hints.scatter = True
+
+# Automatically enter insert mode if an editable element is focused
+# after loading the page.
+# Type: Bool
+c.input.insert_mode.auto_load = True
+
+# Enter insert mode if an editable element is clicked.
+# Type: Bool
+c.input.insert_mode.auto_enter = True
+
+# Leave insert mode when starting a new page load. Patterns may be
+# unreliable on this setting, and they may match the url you are
+# navigating to, or the URL you are navigating from.
+# Type: Bool
+c.input.insert_mode.leave_on_load = True
+
+# Mode to change to when focusing on a tab/URL changes.
+# Type: String
+# Valid values:
+#   - normal
+#   - insert
+#   - passthrough
+c.input.mode_override = 'normal'
+
+# When/how to show the scrollbar.
+# Type: String
+# Valid values:
+#   - always: Always show the scrollbar.
+#   - never: Never show the scrollbar.
+#   - when-searching: Show the scrollbar when searching for text in the webpage. With the QtWebKit backend, this is equal to `never`.
+#   - overlay: Show an overlay scrollbar. On macOS, this is unavailable and equal to `when-searching`; with the QtWebKit backend, this is equal to `never`. Enabling/disabling overlay scrollbars requires a restart.
+c.scrolling.bar = 'overlay'
+
+# Enable smooth scrolling for web pages. Note smooth scrolling does not
+# work with the `:scroll-px` command.
+# Type: Bool
+c.scrolling.smooth = True
+
+# When to show the statusbar.
+# Type: String
+# Valid values:
+#   - always: Always show the statusbar.
+#   - never: Always hide the statusbar.
+#   - in-mode: Show the statusbar when in modes other than normal mode.
+c.statusbar.show = 'always'
+
+# List of widgets displayed in the statusbar.
+# Type: List of StatusbarWidget
+# Valid values:
+#   - url: Current page URL.
+#   - scroll: Percentage of the current page position like `10%`.
+#   - scroll_raw: Raw percentage of the current page position like `10`.
+#   - history: Display an arrow when possible to go back/forward in history.
+#   - search_match: A match count when searching, e.g. `Match [2/10]`.
+#   - tabs: Current active tab, e.g. `2`.
+#   - keypress: Display pressed keys when composing a vi command.
+#   - progress: Progress bar for the current page loading.
+#   - text:foo: Display the static text after the colon, `foo` in the example.
+#   - clock: Display current time. The format can be changed by adding a format string via `clock:...`. For supported format strings, see https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes[the Python datetime documentation].
+c.statusbar.widgets = ['url', 'progress', 'scroll']
+
+# Open new tabs (middleclick/ctrl+click) in the background.
+# Type: Bool
+c.tabs.background = True
+
+# Scaling factor for favicons in the tab bar. The tab size is unchanged,
+# so big favicons also require extra `tabs.padding`.
+# Type: Float
+c.tabs.favicons.scale = 1.0
+
+# When to show favicons in the tab bar. When switching this from never
+# to always/pinned, note that favicons might not be loaded yet, thus
+# tabs might require a reload to display them.
+# Type: String
+# Valid values:
+#   - always: Always show favicons.
+#   - never: Always hide favicons.
+#   - pinned: Show favicons only on pinned tabs.
+c.tabs.favicons.show = 'always'
+
+# Padding (in pixels) around text for tabs.
+# Type: Padding
+c.tabs.padding = {'bottom': 4, 'left': 5, 'right': 5, 'top': 4}
+
+# Position of the tab bar.
+# Type: Position
+# Valid values:
+#   - top
+#   - bottom
+#   - left
+#   - right
+c.tabs.position = 'left'
+
+# Which tab to select when the focused tab is removed.
+# Type: SelectOnRemove
+# Valid values:
+#   - prev: Select the tab which came before the closed one (left in horizontal, above in vertical).
+#   - next: Select the tab which came after the closed one (right in horizontal, below in vertical).
+#   - last-used: Select the previously selected tab.
+c.tabs.select_on_remove = 'last-used'
+
+# Alignment of the text inside of tabs.
+# Type: TextAlignment
+# Valid values:
+#   - left
+#   - right
+#   - center
+c.tabs.title.alignment = 'left'
+
+# Position of ellipsis in truncated title of tabs.
+# Type: ElidePosition
+# Valid values:
+#   - left
+#   - right
+#   - middle
+#   - none
+c.tabs.title.elide = 'right'
+
+# Format to use for the tab title. The following placeholders are
+# defined:  * `{perc}`: Percentage as a string like `[10%]`. *
+# `{perc_raw}`: Raw percentage, e.g. `10`. * `{current_title}`: Title of
+# the current web page. * `{title_sep}`: The string `" - "` if a title
+# is set, empty otherwise. * `{index}`: Index of this tab. *
+# `{aligned_index}`: Index of this tab padded with spaces to have the
+# same   width. * `{relative_index}`: Index of this tab relative to the
+# current tab. * `{id}`: Internal tab ID of this tab. * `{scroll_pos}`:
+# Page scroll position. * `{host}`: Host of the current web page. *
+# `{backend}`: Either `webkit` or `webengine` * `{private}`: Indicates
+# when private mode is enabled. * `{current_url}`: URL of the current
+# web page. * `{protocol}`: Protocol (http/https/...) of the current web
+# page. * `{audio}`: Indicator for audio/mute status.
+# Type: FormatString
+c.tabs.title.format = '{audio}{index}: {current_title}'
+
+# Format to use for the tab title for pinned tabs. The same placeholders
+# like for `tabs.title.format` are defined.
+# Type: FormatString
+c.tabs.title.format_pinned = '{audio}{index}: ** {current_title}'
+
+# Width (in pixels or as percentage of the window) of the tab bar if
+# it's vertical.
+# Type: PercOrInt
+c.tabs.width = 240
+
+# Minimum width (in pixels) of tabs (-1 for the default minimum size
+# behavior). This setting only applies when tabs are horizontal. This
+# setting does not apply to pinned tabs, unless `tabs.pinned.shrink` is
+# False.
+# Type: Int
+c.tabs.min_width = -1
+
+# Width (in pixels) of the progress indicator (0 to disable).
+# Type: Int
+c.tabs.indicator.width = 12
+
+# Padding (in pixels) for tab indicators.
+# Type: Padding
+c.tabs.indicator.padding = {'bottom': 1, 'left': 0, 'right': 6, 'top': 1}
+
+# Shrink pinned tabs down to their contents.
+# Type: Bool
+c.tabs.pinned.shrink = True
+
+# Number of closed tabs (per window) and closed windows to remember for
+# :undo (-1 for no maximum).
+# Type: Int
+c.tabs.undo_stack_size = 50
+
+# Hide the window decoration.  This setting requires a restart on
+# Wayland.
+# Type: Bool
+c.window.hide_decoration = False
+
+# Default zoom level.
+# Type: Perc
+c.zoom.default = '123%'
+
+# Number of zoom increments to divide the mouse wheel movements to.
+# Type: Int
+c.zoom.mouse_divider = 1024
+
+# Text color of the completion widget. May be a single color to use for
+# all columns or a list of three colors, one for each column.
+# Type: List of QtColor, or QtColor
+c.colors.completion.fg = '#eff0f1'
+
+# Background color of the completion widget for odd rows.
+# Type: QssColor
+c.colors.completion.odd.bg = '#3b4045'
+
+# Background color of the completion widget for even rows.
+# Type: QssColor
+c.colors.completion.even.bg = '#2a2e32'
+
+# Foreground color of completion widget category headers.
+# Type: QtColor
+c.colors.completion.category.fg = '#1d99f3'
+
+# Background color of the completion widget category headers.
+# Type: QssColor
+c.colors.completion.category.bg = '#2a2e32'
+
+# Top border color of the completion widget category headers.
+# Type: QssColor
+c.colors.completion.category.border.top = '#2a2e32'
+
+# Bottom border color of the completion widget category headers.
+# Type: QssColor
+c.colors.completion.category.border.bottom = '#2a2e32'
+
+# Foreground color of the selected completion item.
+# Type: QtColor
+c.colors.completion.item.selected.fg = '#fcfcfc'
+
+# Background color of the selected completion item.
+# Type: QssColor
+c.colors.completion.item.selected.bg = '#1d99f3'
+
+# Top border color of the selected completion item.
+# Type: QssColor
+c.colors.completion.item.selected.border.top = '#3b4045'
+
+# Bottom border color of the selected completion item.
+# Type: QssColor
+c.colors.completion.item.selected.border.bottom = '#3b4045'
+
+# Foreground color of the matched text in the selected completion item.
+# Type: QtColor
+c.colors.completion.item.selected.match.fg = '#3b4045'
+
+# Foreground color of the matched text in the completion.
+# Type: QtColor
+c.colors.completion.match.fg = '#fdbc4b'
+
+# Color of the scrollbar handle in the completion view.
+# Type: QssColor
+c.colors.completion.scrollbar.fg = '#9b59b6'
+
+# Color of the scrollbar in the completion view.
+# Type: QssColor
+c.colors.completion.scrollbar.bg = '#2a2e32'
+
+# Background color for the download bar.
+# Type: QssColor
+c.colors.downloads.bar.bg = '#2a2e32'
+
+# Color gradient start for download text.
+# Type: QtColor
+c.colors.downloads.start.fg = '#2a2e32'
+
+# Color gradient start for download backgrounds.
+# Type: QtColor
+c.colors.downloads.start.bg = '#9b59b6'
+
+# Color gradient end for download text.
+# Type: QtColor
+c.colors.downloads.stop.fg = '#2a2e32'
+
+# Color gradient stop for download backgrounds.
+# Type: QtColor
+c.colors.downloads.stop.bg = '#1d99f3'
+
+# Foreground color for downloads with errors.
+# Type: QtColor
+c.colors.downloads.error.fg = '#27ae60'
+
+# Background color for downloads with errors.
+# Type: QtColor
+c.colors.downloads.error.bg = '#2a2e32'
+
+# Font color for hints.
+# Type: QssColor
+c.colors.hints.fg = '#fdbc4b'
+
+# Background color for hints. Note that you can use a `rgba(...)` value
+# for transparency.
+# Type: QssColor
+c.colors.hints.bg = '#4d4d4d'
+
+# Font color for the matched part of hints.
+# Type: QtColor
+c.colors.hints.match.fg = '#9b59b6'
+
+# Text color for the keyhint widget.
+# Type: QssColor
+c.colors.keyhint.fg = '#9b59b6'
+
+# Highlight color for keys to complete the current keychain.
+# Type: QssColor
+c.colors.keyhint.suffix.fg = '#9b59b6'
+
+# Background color of the keyhint widget.
+# Type: QssColor
+c.colors.keyhint.bg = '#2a2e32'
+
+# Foreground color of an error message.
+# Type: QssColor
+c.colors.messages.error.fg = '#2a2e32'
+
+# Background color of an error message.
+# Type: QssColor
+c.colors.messages.error.bg = '#da4453'
+
+# Border color of an error message.
+# Type: QssColor
+c.colors.messages.error.border = '#da4453'
+
+# Foreground color of a warning message.
+# Type: QssColor
+c.colors.messages.warning.fg = '#da4453'
+
+# Background color of a warning message.
+# Type: QssColor
+c.colors.messages.warning.bg = '#fdbc4b'
+
+# Border color of a warning message.
+# Type: QssColor
+c.colors.messages.warning.border = '#fdbc4b'
+
+# Foreground color of an info message.
+# Type: QssColor
+c.colors.messages.info.fg = '#fcfcfc'
+
+# Background color of an info message.
+# Type: QssColor
+c.colors.messages.info.bg = '#27ae60'
+
+# Border color of an info message.
+# Type: QssColor
+c.colors.messages.info.border = '#27ae60'
+
+# Foreground color for prompts.
+# Type: QssColor
+c.colors.prompts.fg = '#9b59b6'
+
+# Border used around UI elements in prompts.
+# Type: String
+c.colors.prompts.border = '#2a2e32'
+
+# Background color for prompts.
+# Type: QssColor
+c.colors.prompts.bg = '#2a2e32'
+
+# Background color for the selected item in filename prompts.
+# Type: QssColor
+c.colors.prompts.selected.bg = '#3b4045'
+
+# Foreground color of the statusbar.
+# Type: QssColor
+c.colors.statusbar.normal.fg = '#fdbc4b'
+
+# Background color of the statusbar.
+# Type: QssColor
+c.colors.statusbar.normal.bg = '#2a2e32'
+
+# Foreground color of the statusbar in insert mode.
+# Type: QssColor
+c.colors.statusbar.insert.fg = '#2a2e32'
+
+# Background color of the statusbar in insert mode.
+# Type: QssColor
+c.colors.statusbar.insert.bg = '#9b59b6'
+
+# Foreground color of the statusbar in passthrough mode.
+# Type: QssColor
+c.colors.statusbar.passthrough.fg = '#2a2e32'
+
+# Background color of the statusbar in passthrough mode.
+# Type: QssColor
+c.colors.statusbar.passthrough.bg = '#1d99f3'
+
+# Foreground color of the statusbar in private browsing mode.
+# Type: QssColor
+c.colors.statusbar.private.fg = '#9b59b6'
+
+# Background color of the statusbar in private browsing mode.
+# Type: QssColor
+c.colors.statusbar.private.bg = '#2a2e32'
+
+# Foreground color of the statusbar in command mode.
+# Type: QssColor
+c.colors.statusbar.command.fg = '#fcfcfc'
+
+# Background color of the statusbar in command mode.
+# Type: QssColor
+c.colors.statusbar.command.bg = '#1d99f3'
+
+# Foreground color of the statusbar in private browsing + command mode.
+# Type: QssColor
+c.colors.statusbar.command.private.fg = '#9b59b6'
+
+# Background color of the statusbar in private browsing + command mode.
+# Type: QssColor
+c.colors.statusbar.command.private.bg = '#2a2e32'
+
+# Foreground color of the statusbar in caret mode.
+# Type: QssColor
+c.colors.statusbar.caret.fg = '#2a2e32'
+
+# Background color of the statusbar in caret mode.
+# Type: QssColor
+c.colors.statusbar.caret.bg = '#1cdc9a'
+
+# Foreground color of the statusbar in caret mode with a selection.
+# Type: QssColor
+c.colors.statusbar.caret.selection.fg = '#2a2e32'
+
+# Background color of the statusbar in caret mode with a selection.
+# Type: QssColor
+c.colors.statusbar.caret.selection.bg = '#9b59b6'
+
+# Background color of the progress bar.
+# Type: QssColor
+c.colors.statusbar.progress.bg = '#fdbc4b'
+
+# Default foreground color of the URL in the statusbar.
+# Type: QssColor
+c.colors.statusbar.url.fg = '#9b59b6'
+
+# Foreground color of the URL in the statusbar on error.
+# Type: QssColor
+c.colors.statusbar.url.error.fg = '#3b4045'
+
+# Foreground color of the URL in the statusbar for hovered links.
+# Type: QssColor
+c.colors.statusbar.url.hover.fg = '#9b59b6'
+
+# Foreground color of the URL in the statusbar on successful load
+# (http).
+# Type: QssColor
+c.colors.statusbar.url.success.http.fg = '#1d99f3'
+
+# Foreground color of the URL in the statusbar on successful load
+# (https).
+# Type: QssColor
+c.colors.statusbar.url.success.https.fg = '#fcfcfc'
+
+# Foreground color of the URL in the statusbar when there's a warning.
+# Type: QssColor
+c.colors.statusbar.url.warn.fg = '#da4453'
+
+# Background color of the tab bar.
+# Type: QssColor
+c.colors.tabs.bar.bg = '#2a2e32'
+
+# Color gradient start for the tab indicator.
+# Type: QtColor
+c.colors.tabs.indicator.start = '#fdbc4b'
+
+# Color gradient end for the tab indicator.
+# Type: QtColor
+c.colors.tabs.indicator.stop = '#27ae60'
+
+# Color for the tab indicator on errors.
+# Type: QtColor
+c.colors.tabs.indicator.error = '#da4453'
+
+# Color gradient interpolation system for the tab indicator.
+# Type: ColorSystem
+# Valid values:
+#   - rgb: Interpolate in the RGB color system.
+#   - hsv: Interpolate in the HSV color system.
+#   - hsl: Interpolate in the HSL color system.
+#   - none: Don't show a gradient.
+c.colors.tabs.indicator.system = 'rgb'
+
+# Foreground color of unselected odd tabs.
+# Type: QtColor
+c.colors.tabs.odd.fg = '#eff0f1'
+
+# Background color of unselected odd tabs.
+# Type: QtColor
+c.colors.tabs.odd.bg = '#3b4045'
+
+# Foreground color of unselected even tabs.
+# Type: QtColor
+c.colors.tabs.even.fg = '#eff0f1'
+
+# Background color of unselected even tabs.
+# Type: QtColor
+c.colors.tabs.even.bg = '#2a2e32'
+
+# Foreground color of selected odd tabs.
+# Type: QtColor
+c.colors.tabs.selected.odd.fg = '#eff0f1'
+
+# Background color of selected odd tabs.
+# Type: QtColor
+c.colors.tabs.selected.odd.bg = '#1d99f3'
+
+# Foreground color of selected even tabs.
+# Type: QtColor
+c.colors.tabs.selected.even.fg = '#eff0f1'
+
+# Background color of selected even tabs.
+# Type: QtColor
+c.colors.tabs.selected.even.bg = '#1d99f3'
+
+# Foreground color of pinned unselected odd tabs.
+# Type: QtColor
+c.colors.tabs.pinned.odd.fg = '#2a2e32'
+
+# Background color of pinned unselected odd tabs.
+# Type: QtColor
+c.colors.tabs.pinned.odd.bg = '#fdbc4b'
+
+# Foreground color of pinned unselected even tabs.
+# Type: QtColor
+c.colors.tabs.pinned.even.fg = '#2a2e32'
+
+# Background color of pinned unselected even tabs.
+# Type: QtColor
+c.colors.tabs.pinned.even.bg = '#fdbc4b'
+
+# Foreground color of pinned selected odd tabs.
+# Type: QtColor
+c.colors.tabs.pinned.selected.odd.fg = '#1d99f3'
+
+# Background color of pinned selected odd tabs.
+# Type: QtColor
+c.colors.tabs.pinned.selected.odd.bg = '#fdbc4b'
+
+# Foreground color of pinned selected even tabs.
+# Type: QtColor
+c.colors.tabs.pinned.selected.even.fg = '#1d99f3'
+
+# Background color of pinned selected even tabs.
+# Type: QtColor
+c.colors.tabs.pinned.selected.even.bg = '#fdbc4b'
+
+# Background color for webpages if unset (or empty to use the theme's
+# color).
+# Type: QtColor
+c.colors.webpage.bg = 'white'
+
+# Render all web contents using a dark theme. Example configurations
+# from Chromium's `chrome://flags`:  - "With simple HSL/CIELAB/RGB-based
+# inversion": Set   `colors.webpage.darkmode.algorithm` accordingly.  -
+# "With selective image inversion": Set
+# `colors.webpage.darkmode.policy.images` to `smart`.  - "With selective
+# inversion of non-image elements": Set
+# `colors.webpage.darkmode.threshold.text` to 150 and
+# `colors.webpage.darkmode.threshold.background` to 205.  - "With
+# selective inversion of everything": Combines the two variants   above.
+# - "With increased text contrast": Set
+# `colors.webpage.darkmode.increase_text_contrast` (QtWebEngine 6.3+)
+# Type: Bool
+c.colors.webpage.darkmode.enabled = False
+
+# Default font families to use. Whenever "default_family" is used in a
+# font setting, it's replaced with the fonts listed here. If set to an
+# empty value, a system-specific monospace default is used.
+# Type: List of Font, or Font
+c.fonts.default_family = '12pt LiterationMono Nerd Font'
+
+# Default font size to use. Whenever "default_size" is used in a font
+# setting, it's replaced with the size listed here. Valid values are
+# either a float value with a "pt" suffix, or an integer value with a
+# "px" suffix.
+# Type: String
+c.fonts.default_size = '12pt'
+
+# Font used in the completion widget.
+# Type: Font
+c.fonts.completion.entry = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used in the completion categories.
+# Type: Font
+c.fonts.completion.category = 'bold 12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for tooltips. If set to null, the Qt default is used.
+# Type: Font
+c.fonts.tooltip = '12pt LiterationMono Nerd Font'
+
+# Font used for the context menu. If set to null, the Qt default is
+# used.
+# Type: Font
+c.fonts.contextmenu = '12pt LiterationMono Nerd Font'
+
+# Font used for the debugging console.
+# Type: Font
+c.fonts.debug_console = 'default_size default_family'
+
+# Font used for the downloadbar.
+# Type: Font
+c.fonts.downloads = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for the hints.
+# Type: Font
+c.fonts.hints = 'bold 12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used in the keyhint widget.
+# Type: Font
+c.fonts.keyhint = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for error messages.
+# Type: Font
+c.fonts.messages.error = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for info messages.
+# Type: Font
+c.fonts.messages.info = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for warning messages.
+# Type: Font
+c.fonts.messages.warning = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for prompts.
+# Type: Font
+c.fonts.prompts = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used in the statusbar.
+# Type: Font
+c.fonts.statusbar = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for selected tabs.
+# Type: Font
+c.fonts.tabs.selected = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font used for unselected tabs.
+# Type: Font
+c.fonts.tabs.unselected = '12pt LiterationMono\\ Nerd\\ Font'
+
+# Font family for standard fonts.
+# Type: FontFamily
+c.fonts.web.family.standard = 'Noto Sans'
+
+# Font family for fixed fonts.
+# Type: FontFamily
+c.fonts.web.family.fixed = 'LiterationMono Nerd Font'
+
+# Font family for serif fonts.
+# Type: FontFamily
+c.fonts.web.family.serif = 'Noto Serif'
+
+# Font family for sans-serif fonts.
+# Type: FontFamily
+c.fonts.web.family.sans_serif = 'Noto Sans'
+
+# Font family for cursive fonts.
+# Type: FontFamily
+c.fonts.web.family.cursive = 'Noto Sans Old Italic'
+
+# Font family for fantasy fonts.
+# Type: FontFamily
+c.fonts.web.family.fantasy = 'FantasqueSansM Nerd Font'
+
+# Default font size (in pixels) for regular text.
+# Type: Int
+c.fonts.web.size.default = 15
+
+# Default font size (in pixels) for fixed-pitch text.
+# Type: Int
+c.fonts.web.size.default_fixed = 15
+
+# Hard minimum font size (in pixels).
+# Type: Int
+c.fonts.web.size.minimum = 6
+
+# Minimum logical font size (in pixels) that is applied when zooming
+# out.
+# Type: Int
+c.fonts.web.size.minimum_logical = 7
+
+# Bindings for normal mode
+config.unbind('+')
+config.bind('j', 'cmd-run-with-count 3 scroll down')
+config.bind('k', 'cmd-run-with-count 3 scroll up')
+config.bind(',M', 'hint links spawn vlc {hint-url}')
+config.bind(',m', 'spawn vlc {url}')
+config.unbind('-')
+config.bind('<Alt+h>', 'home')
+config.bind('<Ctrl++>', 'zoom-in')
+config.bind('<Ctrl+->', 'zoom-out')
+config.bind('<Ctrl+h>', 'back')
+config.bind('<Ctrl+l>', 'forward')
+config.bind('<Shift+PgDown>', 'scroll-page 0 +0.75')
+config.bind('<Shift+PgUp>', 'scroll-page 0 -0.75')
+config.bind('Ctrl-+', 'zoom-in')
+config.bind('Ctrl--', 'zoom-out')
+config.bind('E', 'edit-url')
+config.unbind('d')
+config.bind('dd', 'tab-close')
+config.bind('dlA', 'spawn -u yt-dlp-video {url}')
+config.bind('dlV', 'spawn -u yt-dlp-video {url}')
+config.bind('dla', 'hint links userscript yt-dlp-audio')
+config.bind('dlv', 'hint links userscript yt-dlp-video')
+config.bind('eu', 'edit-url')
+config.unbind('ga')
+config.bind('ge', 'scroll-to-perc 100')
+config.bind('gg', 'scroll-to-perc 0')
+config.bind('gh', 'open duckduckgo.com')
+config.bind('pw', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='normal')
+config.bind('tG', 'home')
+config.bind('tda', 'tab-only')
+config.bind('tg1', 'tab-give 1')
+config.bind('tg2', 'tab-give 2')
+config.bind('tg3', 'tab-give 3')
+config.bind('tgg', 'tab-give 0')
+config.bind('tp', 'tab-pin')
+config.bind('ttb', 'set tabs.position bottom')
+config.bind('ttl', 'set tabs.position left')
+config.bind('ttr', 'set tabs.position right')
+config.bind('ttt', 'set tabs.position top')
+config.bind('tw1', 'set tabs.width  48')
+config.bind('tw2', 'set tabs.width  96')
+config.bind('tw3', 'set tabs.width 160')
+config.bind('tw4', 'set tabs.width 240')
+config.bind('tw5', 'set tabs.width 320')
+config.bind('tw6', 'set tabs.width 480')
+
+# Bindings for insert mode
+config.bind('<Alt+Shift+u>', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='insert')
diff --git a/config/qutebrowser/config.qt5-backup.py b/config/qutebrowser/config.qt5-backup.py
new file mode 100644 (file)
index 0000000..1b761bd
--- /dev/null
@@ -0,0 +1,370 @@
+import subprocess
+config.load_autoconfig()
+
+## testing
+#
+config.bind('<Alt-Shift-u>', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='insert')
+config.bind('pw', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='normal')
+
+## Generic
+#
+c.auto_save.session = True
+c.session.lazy_restore = True
+c.content.fullscreen.window = True
+c.content.notifications.enabled = True
+c.content.cookies.accept = 'no-3rdparty'
+c.content.blocking.whitelist = ["piwik.org"]
+c.downloads.position = "bottom"
+c.editor.command = ["konsole", "--separate", "-e", "kak", "{file}"]
+c.statusbar.widgets = ["url", "progress", "scroll"]
+c.zoom.default = "123%"
+c.completion.web_history.max_items = 1000
+c.input.insert_mode.auto_load = True
+c.new_instance_open_target = "tab-bg"
+
+## Key bindings
+#
+config.unbind('d')
+config.unbind('ga')
+config.unbind('+')
+config.unbind('-')
+config.bind ('gg', 'scroll-to-perc 0')
+config.bind ('ge', 'scroll-to-perc 100')
+config.bind ('gh', 'open duckduckgo.com')
+config.bind('dd', 'tab-close')
+config.bind('tda', 'tab-only')
+config.bind('tgg', 'tab-give 0')
+config.bind('tg1', 'tab-give 1')
+config.bind('tg2', 'tab-give 2')
+config.bind('tg3', 'tab-give 3')
+config.bind('tp', 'tab-pin')
+config.bind('E', 'edit-url')
+config.bind('eu', 'edit-url')
+config.bind('ttl', 'set tabs.position left')
+config.bind('ttr', 'set tabs.position right')
+config.bind('ttt', 'set tabs.position top')
+config.bind('ttb', 'set tabs.position bottom')
+config.bind('tw1', 'set tabs.width  48')
+config.bind('tw2', 'set tabs.width  96')
+config.bind('tw3', 'set tabs.width 160')
+config.bind('tw4', 'set tabs.width 240')
+config.bind('tw5', 'set tabs.width 320')
+config.bind('tw6', 'set tabs.width 480')
+config.unbind('<Ctrl-h>')
+config.bind('<Ctrl-h>', 'back')
+config.bind('<Ctrl-l>', 'forward')
+config.bind('<Alt-h>', 'home')
+config.bind('tG', 'home')
+config.bind('dlV', 'spawn -u yt-dlp-video {url}')
+config.bind('dlA', 'spawn -u yt-dlp-video {url}')
+config.bind('dlv', 'hint links userscript yt-dlp-video')
+config.bind('dla', 'hint links userscript yt-dlp-audio')
+config.bind(',m', 'spawn vlc {url}')
+config.bind(',M', 'hint links spawn vlc {hint-url}')
+config.bind('<Ctrl-+>', 'zoom-in')
+config.bind('<Ctrl-->', 'zoom-out')
+config.bind('<Shift-PgUp>', 'scroll-page 0 -0.75')
+config.bind('<Shift-PgDown>', 'scroll-page 0 +0.75')
+
+## Font config
+#
+c.fonts.completion.category = 'bold 12pt LiterationMono\ Nerd\ Font'
+c.fonts.completion.entry = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.downloads = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.hints = 'bold 12pt LiterationMono\ Nerd\ Font'
+c.fonts.keyhint = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.messages.error = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.messages.info = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.messages.warning = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.prompts = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.statusbar = '12pt LiterationMono\ Nerd\ Font'
+c.fonts.tabs.selected= '12pt LiterationMono\ Nerd\ Font'
+c.fonts.tabs.unselected= '12pt LiterationMono\ Nerd\ Font'
+
+## Tabs config
+#
+c.tabs.position = "left"
+c.tabs.indicator.width = 12
+c.tabs.favicons.show = "always"
+c.tabs.select_on_remove = 'last-used'
+c.tabs.background = True
+
+## Color config
+#
+base00 = '#2a2e32' #black
+base01 = '#da4453' #red
+base02 = '#27ae60' #green
+base03 = '#fdbc4b' #yellow
+base04 = '#1d99f3' #blue
+base05 = '#9b59b6' #magenta
+base06 = '#1cdc9a' #cyan
+base07 = '#eff0f1' #white
+base08 = '#4d4d4d' #brightblack
+base09 = '#da4453' #brightred
+base0A = '#27ae60' #brightgreen
+base0B = '#fdbc4b' #brightyellow
+base0C = '#1d99f3' #brightblue
+base0D = '#9b59b6' #brightmagenta
+base0E = '#1cdc9a' #brightcyan
+base0F = '#fcfcfc' #brightwhite
+base10 = '#3b4045'  #backgroundalternate1
+
+# Text color of the completion widget. May be a single color to use for
+# all columns or a list of three colors, one for each column.
+c.colors.completion.fg = base07
+
+# Background color of the completion widget for odd rows.
+c.colors.completion.odd.bg = base10
+
+# Background color of the completion widget for even rows.
+c.colors.completion.even.bg = base00
+
+# Foreground color of completion widget category headers.
+c.colors.completion.category.fg = base04
+
+# Background color of the completion widget category headers.
+c.colors.completion.category.bg = base00
+
+# Top border color of the completion widget category headers.
+c.colors.completion.category.border.top = base00
+
+# Bottom border color of the completion widget category headers.
+c.colors.completion.category.border.bottom = base00
+
+# Foreground color of the selected completion item.
+c.colors.completion.item.selected.fg = base0F
+
+# Background color of the selected completion item.
+c.colors.completion.item.selected.bg = base04
+
+# Top border color of the completion widget category headers.
+c.colors.completion.item.selected.border.top = base10
+
+# Bottom border color of the selected completion item.
+c.colors.completion.item.selected.border.bottom = base10
+
+# Foreground color of the matched text in the selected completion item.
+c.colors.completion.item.selected.match.fg = base10
+
+# Foreground color of the matched text in the completion.
+c.colors.completion.match.fg = base0B
+
+# Color of the scrollbar handle in the completion view.
+c.colors.completion.scrollbar.fg = base05
+
+# Color of the scrollbar in the completion view.
+c.colors.completion.scrollbar.bg = base00
+
+# Background color for the download bar.
+c.colors.downloads.bar.bg = base00
+
+# Color gradient start for download text.
+c.colors.downloads.start.fg = base00
+
+# Color gradient start for download backgrounds.
+c.colors.downloads.start.bg = base0D
+
+# Color gradient end for download text.
+c.colors.downloads.stop.fg = base00
+
+# Color gradient stop for download backgrounds.
+c.colors.downloads.stop.bg = base0C
+
+# Background color for downloads with errors.
+c.colors.downloads.error.bg = base00
+
+# Foreground color for downloads with errors.
+c.colors.downloads.error.fg = base02
+
+# Font color for hints.
+c.colors.hints.fg = base03
+
+# Background color for hints. Note that you can use a `rgba(...)` value
+# for transparency.
+c.colors.hints.bg = base08
+
+# Font color for the matched part of hints.
+c.colors.hints.match.fg = base05
+
+# Text color for the keyhint widget.
+c.colors.keyhint.fg = base05
+
+# Highlight color for keys to complete the current keychain.
+c.colors.keyhint.suffix.fg = base05
+
+# Background color of the keyhint widget.
+c.colors.keyhint.bg = base00
+
+# Foreground color of an error message.
+c.colors.messages.error.fg = base00
+
+# Background color of an error message.
+c.colors.messages.error.bg = base01
+
+# Border color of an error message.
+c.colors.messages.error.border = base01
+
+# Foreground color of a warning message.
+c.colors.messages.warning.fg = base09
+
+# Background color of a warning message.
+c.colors.messages.warning.bg = base03
+
+# Border color of a warning message.
+c.colors.messages.warning.border = base03
+
+# Foreground color of an info message.
+c.colors.messages.info.fg = base0F
+
+# Background color of an info message.
+c.colors.messages.info.bg = base02
+
+# Border color of an info message.
+c.colors.messages.info.border = base02
+
+# Foreground color for prompts.
+c.colors.prompts.fg = base05
+
+# Border used around UI elements in prompts.
+c.colors.prompts.border = base00
+
+# Background color for prompts.
+c.colors.prompts.bg = base00
+
+# Background color for the selected item in filename prompts.
+c.colors.prompts.selected.bg = base10
+
+# Foreground color of the statusbar.
+c.colors.statusbar.normal.fg = base0B
+
+# Background color of the statusbar.
+c.colors.statusbar.normal.bg = base00
+
+# Foreground color of the statusbar in insert mode.
+c.colors.statusbar.insert.fg = base00
+
+# Background color of the statusbar in insert mode.
+c.colors.statusbar.insert.bg = base0D
+
+# Foreground color of the statusbar in passthrough mode.
+c.colors.statusbar.passthrough.fg = base00
+
+# Background color of the statusbar in passthrough mode.
+c.colors.statusbar.passthrough.bg = base0C
+
+# Foreground color of the statusbar in private browsing mode.
+c.colors.statusbar.private.fg = base05
+
+# Background color of the statusbar in private browsing mode.
+c.colors.statusbar.private.bg = base00
+
+# Foreground color of the statusbar in command mode.
+c.colors.statusbar.command.fg = base0F
+
+# Background color of the statusbar in command mode.
+c.colors.statusbar.command.bg = base04
+
+# Foreground color of the statusbar in private browsing + command mode.
+c.colors.statusbar.command.private.fg = base05
+
+# Background color of the statusbar in private browsing + command mode.
+c.colors.statusbar.command.private.bg = base00
+
+# Foreground color of the statusbar in caret mode.
+c.colors.statusbar.caret.fg = base00
+
+# Background color of the statusbar in caret mode.
+c.colors.statusbar.caret.bg = base0E
+
+# Foreground color of the statusbar in caret mode with a selection.
+c.colors.statusbar.caret.selection.fg = base00
+
+# Background color of the statusbar in caret mode with a selection.
+c.colors.statusbar.caret.selection.bg = base0D
+
+# Background color of the progress bar.
+c.colors.statusbar.progress.bg = base0B
+
+# Default foreground color of the URL in the statusbar.
+c.colors.statusbar.url.fg = base05
+
+# Foreground color of the URL in the statusbar on error.
+c.colors.statusbar.url.error.fg = base10
+
+# Foreground color of the URL in the statusbar for hovered links.
+c.colors.statusbar.url.hover.fg = base05
+
+# Foreground color of the URL in the statusbar on successful load
+# (http).
+c.colors.statusbar.url.success.http.fg = base0C
+
+# Foreground color of the URL in the statusbar on successful load
+# (https).
+c.colors.statusbar.url.success.https.fg = base0F
+
+# Foreground color of the URL in the statusbar when there's a warning.
+c.colors.statusbar.url.warn.fg = base01
+
+# Background color of the tab bar.
+c.colors.tabs.bar.bg = base00
+
+# Color gradient start for the tab indicator.
+c.colors.tabs.indicator.start = base03
+
+# Color gradient end for the tab indicator.
+c.colors.tabs.indicator.stop = base02
+
+# Color for the tab indicator on errors.
+c.colors.tabs.indicator.error = base01
+
+# Foreground color of unselected odd tabs.
+c.colors.tabs.odd.fg = base07
+
+# Background color of unselected odd tabs.
+c.colors.tabs.odd.bg = base10
+
+# Foreground color of unselected even tabs.
+c.colors.tabs.even.fg = base07
+
+# Background color of unselected even tabs.
+c.colors.tabs.even.bg = base00
+
+# Background color of pinned unselected even tabs.
+c.colors.tabs.pinned.even.bg = base03
+
+# Foreground color of pinned unselected even tabs.
+c.colors.tabs.pinned.even.fg = base00
+
+# Background color of pinned unselected odd tabs.
+c.colors.tabs.pinned.odd.bg = base03
+
+# Foreground color of pinned unselected odd tabs.
+c.colors.tabs.pinned.odd.fg = base00
+
+# Background color of pinned selected even tabs.
+c.colors.tabs.pinned.selected.even.bg = base03
+
+# Foreground color of pinned selected even tabs.
+c.colors.tabs.pinned.selected.even.fg = base04
+
+# Background color of pinned selected odd tabs.
+c.colors.tabs.pinned.selected.odd.bg = base03
+
+# Foreground color of pinned selected odd tabs.
+c.colors.tabs.pinned.selected.odd.fg = base04
+
+# Foreground color of selected odd tabs.
+c.colors.tabs.selected.odd.fg = base07
+
+# Background color of selected odd tabs.
+c.colors.tabs.selected.odd.bg = base04
+
+# Foreground color of selected even tabs.
+c.colors.tabs.selected.even.fg = base07
+
+# Background color of selected even tabs.
+c.colors.tabs.selected.even.bg = base04
+
+# Background color for webpages if unset (or empty to use the theme's
+# color).
+# c.colors.webpage.bg = base00
diff --git a/config/qutebrowser/userscripts/qr b/config/qutebrowser/userscripts/qr
new file mode 100755 (executable)
index 0000000..8421524
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+pngfile=$(mktemp --suffix=.png)
+trap 'rm -f "$pngfile"' EXIT
+
+qrencode -t PNG -o "$pngfile" -s 10 "$QUTE_URL"
+echo ":open -t file:///$pngfile" >> "$QUTE_FIFO"
+sleep 1  # give qutebrowser time to open the file before it gets removed
diff --git a/config/qutebrowser/userscripts/qute-keepassxc b/config/qutebrowser/userscripts/qute-keepassxc
new file mode 100755 (executable)
index 0000000..d5970cf
--- /dev/null
@@ -0,0 +1,435 @@
+#!/usr/bin/env python3
+
+# Copyright (c) 2018-2021 Markus Blöchl <ususdei@gmail.com>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+"""
+# Introduction
+
+This is a [qutebrowser][2] [userscript][5] to fill website credentials from a [KeepassXC][1] password database.
+
+
+# Installation
+
+First, you need to enable [KeepassXC-Browser][6] extensions in your KeepassXC config.
+
+
+Second, you must make sure to have a working private-public-key-pair in your [GPG keyring][3].
+
+
+Third, install the python module `pynacl`.
+
+
+Finally, adapt your qutebrowser config.
+You can e.g. add the following lines to your `~/.config/qutebrowser/config.py`
+Remember to replace `ABC1234` with your actual GPG key.
+
+```python
+config.bind('<Alt-Shift-u>', 'spawn --userscript qute-keepassxc --key ABC1234', mode='insert')
+config.bind('pw', 'spawn --userscript qute-keepassxc --key ABC1234', mode='normal')
+```
+
+To manage multiple accounts you also need [rofi](https://github.com/davatorium/rofi) installed.
+
+
+# Usage
+
+If you are on a webpage with a login form, simply activate one of the configured key-bindings.
+
+The first time you run this script, KeepassXC will ask you for authentication like with any other browser extension.
+Just provide a name of your choice and accept the request if nothing looks fishy.
+
+
+# How it works
+
+This script will talk to KeepassXC using the native [KeepassXC-Browser protocol][4].
+
+
+This script needs to store the key used to associate with your KeepassXC instance somewhere.
+Unlike most browser extensions which only use plain local storage, this one attempts to do so in a safe way
+by storing the key in encrypted form using GPG.
+Therefore you need to have a public-key-pair readily set up.
+
+GPG might then ask for your private-key password whenever you query the database for login credentials.
+
+
+# TOTP
+
+This script recently received experimental TOTP support.
+To use it, you need to have working TOTP authentication within KeepassXC.
+Then call `qute-keepassxc` with the `--totp` flags.
+
+For example, I have the following line in my `config.py`:
+
+```python
+config.bind('pt', 'spawn --userscript qute-keepassxc --key ABC1234 --totp', mode='normal')
+```
+
+For now this script will simply insert the TOTP-token into the currently selected
+input field, since I have not yet found a reliable way to identify the correct field
+within all existing login forms.
+Thus you need to manually select the TOTP input field, press escape to leave input
+mode and then enter `pt` to fill in the token (or configure another key-binding for
+insert mode if you prefer that).
+
+
+[1]: https://keepassxc.org/
+[2]: https://qutebrowser.org/
+[3]: https://gnupg.org/
+[4]: https://github.com/keepassxreboot/keepassxc-browser/blob/develop/keepassxc-protocol.md
+[5]: https://github.com/qutebrowser/qutebrowser/blob/main/doc/userscripts.asciidoc
+[6]: https://keepassxc.org/docs/KeePassXC_GettingStarted.html#_setup_browser_integration
+"""
+
+import sys
+import os
+import socket
+import json
+import base64
+import subprocess
+import argparse
+
+import nacl.utils
+import nacl.public
+
+
+def parse_args():
+    parser = argparse.ArgumentParser(description="Full passwords from KeepassXC")
+    parser.add_argument('url', nargs='?', default=os.environ.get('QUTE_URL'))
+    parser.add_argument('--totp', action='store_true',
+                        help="Fill in current TOTP field instead of username/password")
+    parser.add_argument('--socket', '-s', default='/run/user/{}/org.keepassxc.KeePassXC.BrowserServer'.format(os.getuid()),
+                        help='Path to KeepassXC browser socket')
+    parser.add_argument('--key', '-k', default='alice@example.com',
+                        help='GPG key to encrypt KeepassXC auth key with')
+    parser.add_argument('--insecure', action='store_true',
+                        help="Do not encrypt auth key")
+    return parser.parse_args()
+
+
+class KeepassError(Exception):
+    def __init__(self, code, desc):
+        self.code = code
+        self.description = desc
+
+    def __str__(self):
+        return f"KeepassXC Error [{self.code}]: {self.description}"
+
+
+class KeepassXC:
+    """ Wrapper around the KeepassXC socket API """
+    def __init__(self, id=None, *, key, socket_path):
+        self.sock        = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+        self.id          = id
+        self.socket_path = socket_path
+        self.client_key  = nacl.public.PrivateKey.generate()
+        self.id_key      = nacl.public.PrivateKey.from_seed(key)
+        self.cryptobox   = None
+
+    def connect(self):
+        if not os.path.exists(self.socket_path):
+            raise KeepassError(-1, "KeepassXC Browser socket does not exists")
+        self.client_id = base64.b64encode(nacl.utils.random(nacl.public.Box.NONCE_SIZE)).decode('utf-8')
+        self.sock.connect(self.socket_path)
+
+        self.send_raw_msg(dict(
+            action    = 'change-public-keys',
+            publicKey = base64.b64encode(self.client_key.public_key.encode()).decode('utf-8'),
+            nonce     = base64.b64encode(nacl.utils.random(nacl.public.Box.NONCE_SIZE)).decode('utf-8'),
+            clientID  = self.client_id
+        ))
+
+        resp = self.recv_raw_msg()
+        assert resp['action'] == 'change-public-keys'
+        assert resp['success'] == 'true'
+        assert resp['nonce']
+        self.cryptobox = nacl.public.Box(
+            self.client_key,
+            nacl.public.PublicKey(base64.b64decode(resp['publicKey']))
+        )
+
+    def get_databasehash(self):
+        self.send_msg(dict(action='get-databasehash'))
+        return self.recv_msg()['hash']
+
+    def lock_database(self):
+        self.send_msg(dict(action='lock-database'))
+        try:
+            self.recv_msg()
+        except KeepassError as e:
+            if e.code == 1:
+                return True
+            raise
+        return False
+
+
+    def test_associate(self):
+        if not self.id:
+            return False
+        self.send_msg(dict(
+            action = 'test-associate',
+            id     = self.id,
+            key    = base64.b64encode(self.id_key.public_key.encode()).decode('utf-8')
+        ), triggerUnlock = 'true')
+        return self.recv_msg()['success'] == 'true'
+
+    def associate(self):
+        self.send_msg(dict(
+            action = 'associate',
+            key    = base64.b64encode(self.client_key.public_key.encode()).decode('utf-8'),
+            idKey  = base64.b64encode(self.id_key.public_key.encode()).decode('utf-8')
+        ))
+        resp = self.recv_msg()
+        self.id = resp['id']
+
+    def get_logins(self, url):
+        self.send_msg(dict(
+            action = 'get-logins',
+            url    = url,
+            keys   = [{ 'id': self.id, 'key': base64.b64encode(self.id_key.public_key.encode()).decode('utf-8') }]
+        ))
+        return self.recv_msg()['entries']
+
+    def get_totp(self, uuid):
+        self.send_msg(dict(
+            action = 'get-totp',
+            uuid = uuid
+        ))
+        response = self.recv_msg()
+        if response['success'] != 'true' or not response['totp']:
+            return None
+        return response['totp']
+
+    def send_raw_msg(self, msg):
+        self.sock.send( json.dumps(msg).encode('utf-8') )
+
+    def recv_raw_msg(self):
+        return json.loads( self.sock.recv(4096).decode('utf-8') )
+
+    def send_msg(self, msg, **extra):
+        nonce = nacl.utils.random(nacl.public.Box.NONCE_SIZE)
+        self.send_raw_msg(dict(
+            action   = msg['action'],
+            message  = base64.b64encode(self.cryptobox.encrypt(json.dumps(msg).encode('utf-8'), nonce).ciphertext).decode('utf-8'),
+            nonce    = base64.b64encode(nonce).decode('utf-8'),
+            clientID = self.client_id,
+            **extra
+        ))
+
+    def recv_msg(self):
+        resp = self.recv_raw_msg()
+        if 'error' in resp:
+            raise KeepassError(resp['errorCode'], resp['error'])
+        assert resp['action']
+        return json.loads(self.cryptobox.decrypt(base64.b64decode(resp['message']), base64.b64decode(resp['nonce'])).decode('utf-8'))
+
+
+
+class SecretKeyStore:
+    def __init__(self, gpgkey, insecure):
+        self.gpgkey = gpgkey
+        self.insecure = insecure
+        if self.insecure:
+            self.path = os.path.join(os.environ['QUTE_DATA_DIR'], 'keepassxc.key')
+        else:
+            self.path = os.path.join(os.environ['QUTE_DATA_DIR'], 'keepassxc.key.gpg')
+
+    def load(self):
+        "Load existing association key from file"
+        if self.insecure:
+            jsondata = open(self.path, 'r').read()
+        else:
+            jsondata = subprocess.check_output(['gpg', '--decrypt', self.path]).decode('utf-8')
+        data = json.loads(jsondata)
+        self.id = data['id']
+        self.key = base64.b64decode(data['key'])
+
+    def create(self):
+        "Create new association key"
+        self.key = nacl.utils.random(32)
+        self.id = None
+
+    def store(self, id):
+        "Store newly created association key in file"
+        self.id = id
+        jsondata = json.dumps({'id':self.id, 'key':base64.b64encode(self.key).decode('utf-8')})
+        if self.insecure:
+            open(self.path, "w").write(jsondata)
+        else:
+            subprocess.run(['gpg', '--encrypt', '-o', self.path, '-r', self.gpgkey], input=jsondata.encode('utf-8'), check=True)
+
+
+def qute(cmd):
+    with open(os.environ['QUTE_FIFO'], 'w') as fifo:
+        fifo.write(cmd)
+        fifo.write('\n')
+        fifo.flush()
+
+def error(msg):
+    print(msg, file=sys.stderr)
+    qute('message-error "{}"'.format(msg))
+
+
+def connect_to_keepassxc(args):
+    if not args.insecure and not args.key:
+        error("Missing GPG key to use for auth key encryption")
+        return
+    keystore = SecretKeyStore(args.key, args.insecure)
+    if os.path.isfile(keystore.path):
+        keystore.load()
+        kp = KeepassXC(keystore.id, key=keystore.key, socket_path=args.socket)
+        kp.connect()
+        if not kp.test_associate():
+            error('No KeepassXC association')
+            return None
+    else:
+        keystore.create()
+        kp = KeepassXC(key=keystore.key, socket_path=args.socket)
+        kp.connect()
+        kp.associate()
+        if not kp.test_associate():
+            error('No KeepassXC association')
+            return None
+        keystore.store(kp.id)
+    return kp
+
+
+def select_account(creds):
+    try:
+        if len(creds) == 1:
+            return creds[0]
+        idx = subprocess.check_output(
+                ['rofi', '-dmenu', '-format', 'i', '-matching', 'fuzzy',
+                '-p', 'Search',
+                '-mesg', '<b>qute-keepassxc</b>: select an account, please!'],
+                input=b"\n".join(c['login'].encode('utf-8') for c in creds)
+        )
+        idx = int(idx)
+        if idx < 0:
+            return None
+        return creds[idx]
+    except subprocess.CalledProcessError:
+        return None
+    except FileNotFoundError:
+        error("rofi not found. Please install rofi to select from multiple credentials")
+        return creds[0]
+    except Exception as e:
+        error(f"Error while picking account: {e}")
+        return None
+
+
+def make_js_code(username, password):
+    return ' '.join("""
+        function isVisible(elem) {
+            var style = elem.ownerDocument.defaultView.getComputedStyle(elem, null);
+
+            if (style.getPropertyValue("visibility") !== "visible" ||
+                style.getPropertyValue("display") === "none" ||
+                style.getPropertyValue("opacity") === "0") {
+                return false;
+            }
+
+            return elem.offsetWidth > 0 && elem.offsetHeight > 0;
+        };
+
+        function hasPasswordField(form) {
+            var inputs = form.getElementsByTagName("input");
+            for (var j = 0; j < inputs.length; j++) {
+                var input = inputs[j];
+                if (input.type === "password") {
+                    return true;
+                }
+            }
+            return false;
+        };
+
+        function loadData2Form (form) {
+            var inputs = form.getElementsByTagName("input");
+            for (var j = 0; j < inputs.length; j++) {
+                var input = inputs[j];
+                if (isVisible(input) && (input.type === "text" || input.type === "email")) {
+                    input.focus();
+                    input.value = %s;
+                    input.dispatchEvent(new Event('input', { 'bubbles': true }));
+                    input.dispatchEvent(new Event('change', { 'bubbles': true }));
+                    input.blur();
+                }
+                if (input.type === "password") {
+                    input.focus();
+                    input.value = %s;
+                    input.dispatchEvent(new Event('input', { 'bubbles': true }));
+                    input.dispatchEvent(new Event('change', { 'bubbles': true }));
+                    input.blur();
+                }
+            }
+        };
+
+        function fillFirstForm() {
+            var forms = document.getElementsByTagName("form");
+            for (i = 0; i < forms.length; i++) {
+                if (hasPasswordField(forms[i])) {
+                    loadData2Form(forms[i]);
+                    return;
+                }
+            }
+            alert("No Credentials Form found");
+        };
+
+        fillFirstForm()
+    """.splitlines()) % (json.dumps(username), json.dumps(password))
+
+
+def make_js_totp_code(totp):
+    return ' '.join("""
+        (function () {
+            var input = document.activeElement;
+            if (!input || input.tagName !== "INPUT") {
+                alert("No TOTP input field selected");
+                return;
+            }
+            input.value = %s;
+            input.dispatchEvent(new Event('input', { 'bubbles': true }));
+            input.dispatchEvent(new Event('change', { 'bubbles': true }));
+        })();
+    """.splitlines()) % (json.dumps(totp),)
+
+
+def main():
+    if 'QUTE_FIFO' not in os.environ:
+        print(f"No QUTE_FIFO found - {sys.argv[0]} must be run as a qutebrowser userscript")
+        sys.exit(-1)
+
+    try:
+        args = parse_args()
+        assert args.url, "Missing URL"
+        kp = connect_to_keepassxc(args)
+        if not kp:
+            error('Could not connect to KeepassXC')
+            return
+        creds = kp.get_logins(args.url)
+        if not creds:
+            error('No credentials found')
+            return
+        cred = select_account(creds)
+        if not cred:
+            error('No credentials selected')
+            return
+        if args.totp:
+            uuid = cred['uuid']
+            totp = kp.get_totp(uuid)
+            if not totp:
+                error('No TOTP key found')
+                return
+            qute('jseval -q ' + make_js_totp_code(totp))
+        else:
+            name, pw = cred['login'], cred['password']
+            if name and pw:
+                qute('jseval -q ' + make_js_code(name, pw))
+    except Exception as e:
+        error(str(e))
+
+
+if __name__ == '__main__':
+    main()
+
diff --git a/config/qutebrowser/userscripts/view_in_mpv b/config/qutebrowser/userscripts/view_in_mpv
new file mode 100755 (executable)
index 0000000..4f371c6
--- /dev/null
@@ -0,0 +1,142 @@
+#!/usr/bin/env bash
+#
+# Behavior:
+#   Userscript for qutebrowser which views the current web page in mpv using
+#   sensible mpv-flags. While viewing the page in MPV, all <video>, <embed>,
+#   and <object> tags in the original page are temporarily removed. Clicking on
+#   such a removed video restores the respective video.
+#
+#   In order to use this script, just start it using `spawn --userscript` from
+#   qutebrowser. I recommend using an alias, e.g. put this in the
+#   [alias]-section of qutebrowser.conf:
+#
+#     mpv = spawn --userscript /path/to/view_in_mpv
+#
+# Background:
+#   Most of my machines are too slow to play youtube videos using html5, but
+#   they work fine in mpv (and mpv has further advantages like video scaling,
+#   etc). Of course, I don't want the video to be played (or even to be
+#   downloaded) twice — in MPV and in qwebkit. So I often close the tab after
+#   opening it in mpv. However, I actually want to keep the rest of the page
+#   (comments and video suggestions), i.e. only the videos should disappear
+#   when mpv is started. And that's precisely what the present script does.
+#
+# Thorsten Wißmann, 2015 (thorsten` on Libera Chat)
+# Any feedback is welcome!
+
+set -e
+
+if [ -z "$QUTE_FIFO" ] ; then
+    cat 1>&2 <<EOF
+Error: $0 can not be run as a standalone script.
+
+It is a qutebrowser userscript. In order to use it, call it using
+'spawn --userscript' as described in qute://help/userscripts.html
+EOF
+    exit 1
+fi
+
+msg() {
+    local cmd="$1"
+    shift
+    local msg="$*"
+    if [ -z "$QUTE_FIFO" ] ; then
+        echo "$cmd: $msg" >&2
+    else
+        echo "message-$cmd '${msg//\'/\\\'}'" >> "$QUTE_FIFO"
+    fi
+}
+
+MPV_COMMAND=${MPV_COMMAND:-mpv}
+# Warning: spaces in single flags are not supported
+MPV_FLAGS=${MPV_FLAGS:- --force-window --quiet --keep-open=yes --ytdl}
+IFS=" " read -r -a video_command <<< "$MPV_COMMAND $MPV_FLAGS"
+
+js() {
+cat <<EOF
+
+    function descendantOfTagName(child, ancestorTagName) {
+        // tells whether child has some (proper) ancestor
+        // with the tag name ancestorTagName
+        while (child.parentNode != null) {
+            child = child.parentNode;
+            if (typeof child.tagName === 'undefined') break;
+            if (child.tagName.toUpperCase() == ancestorTagName.toUpperCase()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    var App = {};
+
+    var all_videos = [];
+    all_videos.push.apply(all_videos, document.getElementsByTagName("video"));
+    all_videos.push.apply(all_videos, document.getElementsByTagName("object"));
+    all_videos.push.apply(all_videos, document.getElementsByTagName("embed"));
+    App.backup_videos = Array();
+    App.all_replacements = Array();
+    for (i = 0; i < all_videos.length; i++) {
+        var video = all_videos[i];
+        if (descendantOfTagName(video, "object")) {
+            // skip tags that are contained in an object, because we hide
+            // the object anyway.
+            continue;
+        }
+        var replacement = document.createElement("div");
+        replacement.innerHTML = "
+            <p style=\\"margin-bottom: 0.5em\\">
+            Opening page with:
+            <span style=\\"font-family: monospace;\\">${video_command[*]}</span>
+            </p>
+            <p>
+            In order to restore this particular video
+            <a style=\\"font-weight: bold;
+                        color: white;
+                        background: transparent;
+                        cursor: pointer;
+                     \\"
+               onClick=\\"restore_video(this, " + i + ");\\"
+              >click here</a>.
+            </p>
+        ";
+        replacement.style.position = "relative";
+        replacement.style.zIndex = "100003000000";
+        replacement.style.fontSize = "1rem";
+        replacement.style.textAlign = "center";
+        replacement.style.verticalAlign = "middle";
+        replacement.style.height = "100%";
+        replacement.style.background = "#101010";
+        replacement.style.color = "white";
+        replacement.style.border = "4px dashed #545454";
+        replacement.style.padding = "2em";
+        replacement.style.margin = "auto";
+        App.all_replacements[i] = replacement;
+        App.backup_videos[i] = video;
+        video.parentNode.replaceChild(replacement, video);
+    }
+
+    function restore_video(obj, index) {
+        obj = App.all_replacements[index];
+        video = App.backup_videos[index];
+        obj.parentNode.replaceChild(video, obj);
+    }
+
+    /** force repainting the video, thanks to:
+     * http://web.archive.org/web/20151029064649/https://martinwolf.org/2014/06/10/force-repaint-of-an-element-with-javascript/
+     */
+    var siteHeader = document.getElementById('header');
+    siteHeader.style.display='none';
+    siteHeader.offsetHeight; // no need to store this anywhere, the reference is enough
+    siteHeader.style.display='block';
+
+EOF
+}
+
+printjs() {
+    js | sed 's,//.*$,,' | tr '\n' ' '
+}
+echo "jseval -q -w main $(printjs)" >> "$QUTE_FIFO"
+
+msg info "Opening $QUTE_URL with mpv"
+"${video_command[@]}" "$@" "$QUTE_URL"
diff --git a/config/ranger/rc.conf b/config/ranger/rc.conf
new file mode 100644 (file)
index 0000000..d7bcd9f
--- /dev/null
@@ -0,0 +1,765 @@
+# ===================================================================
+# This file contains the default startup commands for ranger.
+# To change them, it is recommended to create either /etc/ranger/rc.conf
+# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
+# commands there.
+#
+# If you copy this whole file there, you may want to set the environment
+# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
+#
+# The purpose of this file is mainly to define keybindings and settings.
+# For running more complex python code, please create a plugin in "plugins/" or
+# a command in "commands.py".
+#
+# Each line is a command that will be run before the user interface
+# is initialized.  As a result, you can not use commands which rely
+# on the UI such as :delete or :mark.
+# ===================================================================
+
+# ===================================================================
+# == Options
+# ===================================================================
+
+# Which viewmode should be used?  Possible values are:
+#     miller: Use miller columns which show multiple levels of the hierarchy
+#     multipane: Midnight-commander like multipane view showing all tabs next
+#                to each other
+set viewmode miller
+#set viewmode multipane
+
+# How many columns are there, and what are their relative widths?
+set column_ratios 1,3,4
+
+# Which files should be hidden? (regular expression)
+set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
+
+# Show hidden files? You can toggle this by typing 'zh'
+set show_hidden false
+
+# Ask for a confirmation when running the "delete" command?
+# Valid values are "always", "never", "multiple" (default)
+# With "multiple", ranger will ask only if you delete multiple files at once.
+set confirm_on_delete multiple
+
+# Use non-default path for file preview script?
+# ranger ships with scope.sh, a script that calls external programs (see
+# README.md for dependencies) to preview images, archives, etc.
+set preview_script ~/.config/ranger/scope.sh
+
+# Use the external preview script or display simple plain text or image previews?
+set use_preview_script true
+
+# Automatically count files in the directory, even before entering them?
+set automatically_count_files true
+
+# Open all images in this directory when running certain image viewers
+# like feh or sxiv?  You can still open selected files by marking them.
+set open_all_images true
+
+# Be aware of version control systems and display information.
+set vcs_aware false
+
+# State of the four backends git, hg, bzr, svn. The possible states are
+# disabled, local (only show local info), enabled (show local and remote
+# information).
+set vcs_backend_git enabled
+set vcs_backend_hg disabled
+set vcs_backend_bzr disabled
+set vcs_backend_svn disabled
+
+# Truncate the long commit messages to this length when shown in the statusbar.
+set vcs_msg_length 50
+
+# Use one of the supported image preview protocols
+set preview_images true
+
+# Set the preview image method. Supported methods:
+#
+# * w3m (default):
+#   Preview images in full color with the external command "w3mimgpreview"?
+#   This requires the console web browser "w3m" and a supported terminal.
+#   It has been successfully tested with "xterm" and "urxvt" without tmux.
+#
+# * iterm2:
+#   Preview images in full color using iTerm2 image previews
+#   (http://iterm2.com/images.html). This requires using iTerm2 compiled
+#   with image preview support.
+#
+#   This feature relies on the dimensions of the terminal's font.  By default, a
+#   width of 8 and height of 11 are used.  To use other values, set the options
+#   iterm2_font_width and iterm2_font_height to the desired values.
+#
+# * terminology:
+#   Previews images in full color in the terminology terminal emulator.
+#   Supports a wide variety of formats, even vector graphics like svg.
+#
+# * urxvt:
+#   Preview images in full color using urxvt image backgrounds. This
+#   requires using urxvt compiled with pixbuf support.
+#
+# * urxvt-full:
+#   The same as urxvt but utilizing not only the preview pane but the
+#   whole terminal window.
+#
+# * kitty:
+#   Preview images in full color using kitty image protocol.
+#   Requires python PIL or pillow library.
+#   If ranger does not share the local filesystem with kitty
+#   the transfer method is changed to encode the whole image;
+#   while slower, this allows remote previews,
+#   for example during an ssh session.
+#   Tmux is unsupported.
+#
+# * ueberzug:
+#   Preview images in full color with the external command "ueberzug".
+#   Images are shown by using a child window.
+#   Only for users who run X11 in GNU/Linux.
+set preview_images_method ueberzug
+
+# Delay in seconds before displaying an image with the w3m method.
+# Increase it in case of experiencing display corruption.
+set w3m_delay 0.02
+
+# Manually adjust the w3mimg offset when using a terminal which needs this
+set w3m_offset 0
+
+# Default iTerm2 font size (see: preview_images_method: iterm2)
+set iterm2_font_width 9
+set iterm2_font_height 12
+
+# Use a unicode "..." character to mark cut-off filenames?
+set unicode_ellipsis true
+
+# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
+# Requires the python-bidi pip package
+set bidi_support false
+
+# Show dotfiles in the bookmark preview box?
+set show_hidden_bookmarks true
+
+# Which colorscheme to use?  These colorschemes are available by default:
+# default, jungle, snow, solarized
+set colorscheme jungle
+
+# Preview files on the rightmost column?
+# And collapse (shrink) the last column if there is nothing to preview?
+set preview_files true
+set preview_directories true
+set collapse_preview true
+
+# Wrap long lines in plain text previews?
+set wrap_plaintext_previews false
+
+# Save the console history on exit?
+set save_console_history true
+
+# Draw the status bar on top of the browser window (default: bottom)
+set status_bar_on_top false
+
+# Draw a progress bar in the status bar which displays the average state of all
+# currently running tasks which support progress bars?
+set draw_progress_bar_in_status_bar true
+
+# Draw borders around columns? (separators, outline, both, or none)
+# Separators are vertical lines between columns.
+# Outline draws a box around all the columns.
+# Both combines the two.
+set draw_borders none
+
+# Display the directory name in tabs?
+set dirname_in_tabs false
+
+# Enable the mouse support?
+set mouse_enabled true
+
+# Display the file size in the main column or status bar?
+set display_size_in_main_column true
+set display_size_in_status_bar true
+
+# Display the free disk space in the status bar?
+set display_free_space_in_status_bar true
+
+# Display files tags in all columns or only in main column?
+set display_tags_in_all_columns true
+
+# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
+set update_title false
+
+# Set the tmux/screen window-name to "ranger"?
+set update_tmux_title true
+
+# Shorten the title if it gets long?  The number defines how many
+# directories are displayed at once, 0 turns off this feature.
+set shorten_title 3
+
+# Show hostname in titlebar?
+set hostname_in_titlebar true
+
+# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
+set tilde_in_titlebar false
+
+# How many directory-changes or console-commands should be kept in history?
+set max_history_size 20
+set max_console_history_size 50
+
+# Try to keep so much space between the top/bottom border when scrolling:
+set scroll_offset 8
+
+# Flush the input after each key hit?  (Noticeable when ranger lags)
+set flushinput true
+
+# Padding on the right when there's no preview?
+# This allows you to click into the space to run the file.
+set padding_right true
+
+# Save bookmarks (used with mX and `X) instantly?
+# This helps to synchronize bookmarks between multiple ranger
+# instances but leads to *slight* performance loss.
+# When false, bookmarks are saved when ranger is exited.
+set autosave_bookmarks true
+
+# Save the "`" bookmark to disk.  This can be used to switch to the last
+# directory by typing "``".
+
+# You can display the "real" cumulative size of directories by using the
+# command :get_cumulative_size or typing "dc".  The size is expensive to
+# calculate and will not be updated automatically.  You can choose
+# to update it automatically though by turning on this option:
+set autoupdate_cumulative_size false
+
+# Turning this on makes sense for screen readers:
+set show_cursor false
+
+# One of: size, natural, basename, atime, ctime, mtime, type, random
+set sort natural
+
+# Additional sorting options
+set sort_reverse false
+set sort_case_insensitive true
+set sort_directories_first true
+set sort_unicode false
+
+# Enable this if key combinations with the Alt Key don't work for you.
+# (Especially on xterm)
+set xterm_alt_key false
+
+# Whether to include bookmarks in cd command
+set cd_bookmarks true
+
+# Changes case sensitivity for the cd command tab completion
+set cd_tab_case sensitive
+
+# Use fuzzy tab completion with the "cd" command. For example,
+# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
+set cd_tab_fuzzy false
+
+# Avoid previewing files larger than this size, in bytes.  Use a value of 0 to
+# disable this feature.
+set preview_max_size 5000000
+
+# The key hint lists up to this size have their sublists expanded.
+# Otherwise the submaps are replaced with "...".
+set hint_collapse_threshold 10
+
+# Add the highlighted file to the path in the titlebar
+set show_selection_in_titlebar true
+
+# The delay that ranger idly waits for user input, in milliseconds, with a
+# resolution of 100ms.  Lower delay reduces lag between directory updates but
+# increases CPU load.
+set idle_delay 2000
+
+# When the metadata manager module looks for metadata, should it only look for
+# a ".metadata.json" file in the current directory, or do a deep search and
+# check all directories above the current one as well?
+set metadata_deep_search false
+
+# Clear all existing filters when leaving a directory
+set clear_filters_on_dir_change false
+
+# Disable displaying line numbers in main column.
+# Possible values: false, absolute, relative.
+set line_numbers false
+
+# When line_numbers=relative show the absolute line number in the
+# current line.
+set relative_current_zero false
+
+# Start line numbers from 1 instead of 0
+set one_indexed true
+
+# Save tabs on exit
+set save_tabs_on_exit true
+
+# Enable scroll wrapping - moving down while on the last item will wrap around to
+# the top and vice versa.
+set wrap_scroll false
+
+# Set the global_inode_type_filter to nothing.  Possible options: d, f and l for
+# directories, files and symlinks respectively.
+set global_inode_type_filter
+
+# This setting allows to freeze the list of files to save I/O bandwidth.  It
+# should be 'false' during start-up, but you can toggle it by pressing F.
+set freeze_files false
+
+# Print file sizes in bytes instead of the default human-readable format.
+set size_in_bytes false
+
+# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
+# give a warning when you nest ranger in a subshell started by ranger.
+# Special value "error" makes the warning more visible.
+set nested_ranger_warning true
+
+# ===================================================================
+# == Local Options
+# ===================================================================
+# You can set local options that only affect a single directory.
+
+# Examples:
+# setlocal path=~/downloads sort mtime
+setlocal path=~/Downloads sort mtime
+
+# ===================================================================
+# == Command Aliases in the Console
+# ===================================================================
+
+alias e     edit
+alias q     quit
+alias q!    quit!
+alias qa    quitall
+alias qa!   quitall!
+alias qall  quitall
+alias qall! quitall!
+alias setl  setlocal
+
+alias filter     scout -prts
+alias find       scout -aets
+alias mark       scout -mr
+alias unmark     scout -Mr
+alias search     scout -rs
+alias search_inc scout -rts
+alias travel     scout -aefklst
+
+# ===================================================================
+# == Define keys for the browser
+# ===================================================================
+
+# Basic
+map     Q quitall
+map     q quit
+copymap q ZZ ZQ
+
+map R     reload_cwd
+map F     set freeze_files!
+map <C-r> reset
+map <C-l> redraw_window
+map <C-c> abort
+map <esc> change_mode normal
+map ~ set viewmode!
+
+map i display_file
+map <A-j> scroll_preview 1
+map <A-k> scroll_preview -1
+map ? help
+map W display_log
+map w taskview_open
+map S shell $SHELL
+
+map :  console
+map ;  console
+map !  console shell%space
+map @  console -p6 shell  %%s
+map #  console shell -p%space
+map s  console shell%space
+map r  chain draw_possible_programs; console open_with%space
+map f  console find%space
+map cd console cd%space
+
+map <C-p> chain console; eval fm.ui.console.history_move(-1)
+
+# Change the line mode
+map Mf linemode filename
+map Mi linemode fileinfo
+map Mm linemode mtime
+map Mh linemode humanreadablemtime
+map Mp linemode permissions
+map Ms linemode sizemtime
+map MH linemode sizehumanreadablemtime
+map Mt linemode metatitle
+
+# Tagging / Marking
+map t       tag_toggle
+map ut      tag_remove
+map "<any>  tag_toggle tag=%any
+map <Space> mark_files toggle=True
+map v       mark_files all=True toggle=True
+map uv      mark_files all=True val=False
+map V       toggle_visual_mode
+map uV      toggle_visual_mode reverse=True
+
+# For the nostalgics: Midnight Commander bindings
+map <F1> help
+map <F2> rename_append
+map <F3> display_file
+map <F4> edit
+map <F5> copy
+map <F6> cut
+map <F7> console mkdir%space
+map <F8> console delete
+#map <F8> console trash
+map <F10> exit
+
+# In case you work on a keyboard with dvorak layout
+map <UP>       move up=1
+map <DOWN>     move down=1
+map <LEFT>     move left=1
+map <RIGHT>    move right=1
+map <HOME>     move to=0
+map <END>      move to=-1
+map <PAGEDOWN> move down=1   pages=True
+map <PAGEUP>   move up=1     pages=True
+map <CR>       move right=1
+#map <DELETE>   console delete
+map <INSERT>   console touch%space
+
+# VIM-like
+copymap <UP>       k
+copymap <DOWN>     j
+copymap <LEFT>     h
+copymap <RIGHT>    l
+copymap <HOME>     gg
+copymap <END>      G
+copymap <END>      ge
+copymap <PAGEDOWN> <C-F>
+copymap <PAGEUP>   <C-B>
+
+map J  move down=0.5  pages=True
+map K  move up=0.5    pages=True
+copymap J <C-D>
+copymap K <C-U>
+
+# Jumping around
+map H     history_go -1
+map L     history_go 1
+map ]     move_parent 1
+map [     move_parent -1
+map }     traverse
+map {     traverse_backwards
+map )     jump_non
+
+map ga cd /mnt/fastgames/Battle.net/World of Warcraft/_retail_/Interface/AddOns
+map gh cd ~
+map gH cd ~/.config
+map gE cd /etc
+map gu cd /usr
+map gd cd ~/Downloads
+map gD cd /dev
+#map gL cd -r %f
+map go cd /opt
+map gv cd /var
+map gM cd /media
+map gi eval fm.cd('/run/media/' + os.getenv('USER'))
+map gm cd /mnt
+map gs cd /srv
+map gp cd /tmp
+#map gr cd /
+#map gR eval fm.cd(ranger.RANGERDIR)
+map g/ cd /
+#map g? cd /usr/share/doc/ranger
+
+# External Programs
+map E  edit
+map du shell -p du --max-depth=1 -h --apparent-size
+map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
+map yp yank path
+map yd yank dir
+map yn yank name
+map y. yank name_without_extension
+
+# Filesystem Operations
+map =  chmod
+
+map cw console rename%space
+map a  rename_append
+map A  eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
+map I  eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
+
+map pp paste
+map po paste overwrite=True
+map pP paste append=True
+map pO paste overwrite=True append=True
+map pl paste_symlink relative=False
+map pL paste_symlink relative=True
+map phl paste_hardlink
+map pht paste_hardlinked_subtree
+map pd console paste dest=
+map p`<any> paste dest=%any_path
+map p'<any> paste dest=%any_path
+
+map dr shell fileToRestore=$(cat ~/.config/ranger/trash_history | grep "^trashed" | tail -n 1 | cut -c10- | awk -F "from_dir " '{print $1}' | rev | cut -c3- | rev) && mv -i ~/.Trash/$fileToRestore $fileToRestore && echo "untrashed $(pwd)/$fileToRestore" >> ~/.config/ranger/trash_history && unset fileToRestore
+map dh shell less ~/.config/ranger/trash_history
+map dD console delete
+#map dT console trash
+map dT shell mv -i %s ~/.local/share/Trash/files/ && echo "trashed %s from_dir $(pwd)" >> ~/.config/ranger/trash_history 
+
+map dd cut
+map ud uncut
+map da cut mode=add
+map dr cut mode=remove
+map dt cut mode=toggle
+
+map yy copy
+map uy uncut
+map ya copy mode=add
+map yr copy mode=remove
+map yt copy mode=toggle
+
+# Temporary workarounds
+map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
+map dG  eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
+map dj  eval fm.cut(dirarg=dict(down=1), narg=quantifier)
+map dk  eval fm.cut(dirarg=dict(up=1), narg=quantifier)
+map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
+map yG  eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
+map yj  eval fm.copy(dirarg=dict(down=1), narg=quantifier)
+map yk  eval fm.copy(dirarg=dict(up=1), narg=quantifier)
+
+# Searching
+map /  console search%space
+map n  search_next
+map N  search_next forward=False
+map ct search_next order=tag
+map cs search_next order=size
+map ci search_next order=mimetype
+map cc search_next order=ctime
+map cm search_next order=mtime
+map ca search_next order=atime
+
+# Tabs
+map <C-n>     eval fm.tab_new('%d')
+map <C-w>     tab_close
+map <TAB>     tab_move 1
+map <S-TAB>   tab_move -1
+map <A-Right> tab_move 1
+map <A-Left>  tab_move -1
+map gt        tab_move 1
+map gT        tab_move -1
+map gn        tab_new
+map gc        tab_close
+map uq        tab_restore
+map <a-1>     tab_open 1
+map <a-2>     tab_open 2
+map <a-3>     tab_open 3
+map <a-4>     tab_open 4
+map <a-5>     tab_open 5
+map <a-6>     tab_open 6
+map <a-7>     tab_open 7
+map <a-8>     tab_open 8
+map <a-9>     tab_open 9
+map <a-r>     tab_shift 1
+map <a-l>     tab_shift -1
+
+# Sorting
+map or set sort_reverse!
+map oz set sort=random
+map os chain set sort=size;      set sort_reverse=False
+map ob chain set sort=basename;  set sort_reverse=False
+map on chain set sort=natural;   set sort_reverse=False
+map om chain set sort=mtime;     set sort_reverse=False
+map oc chain set sort=ctime;     set sort_reverse=False
+map oa chain set sort=atime;     set sort_reverse=False
+map ot chain set sort=type;      set sort_reverse=False
+map oe chain set sort=extension; set sort_reverse=False
+
+map oS chain set sort=size;      set sort_reverse=True
+map oB chain set sort=basename;  set sort_reverse=True
+map oN chain set sort=natural;   set sort_reverse=True
+map oM chain set sort=mtime;     set sort_reverse=True
+map oC chain set sort=ctime;     set sort_reverse=True
+map oA chain set sort=atime;     set sort_reverse=True
+map oT chain set sort=type;      set sort_reverse=True
+map oE chain set sort=extension; set sort_reverse=True
+
+map dc get_cumulative_size
+
+# Settings
+map zc    set collapse_preview!
+map zd    set sort_directories_first!
+map zh    set show_hidden!
+map <C-h> set show_hidden!
+copymap <C-h> <backspace>
+copymap <backspace> <backspace2>
+map zI    set flushinput!
+map zi    set preview_images!
+map zm    set mouse_enabled!
+map zp    set preview_files!
+map zP    set preview_directories!
+map zs    set sort_case_insensitive!
+map zu    set autoupdate_cumulative_size!
+map zv    set use_preview_script!
+map zf    console filter%space
+copymap zf zz
+
+# Filter stack
+map .d filter_stack add type d
+map .f filter_stack add type f
+map .l filter_stack add type l
+map .m console filter_stack add mime%space
+map .n console filter_stack add name%space
+map .# console filter_stack add hash%space
+map ." filter_stack add duplicate
+map .' filter_stack add unique
+map .| filter_stack add or
+map .& filter_stack add and
+map .! filter_stack add not
+map .r filter_stack rotate
+map .c filter_stack clear
+map .* filter_stack decompose
+map .p filter_stack pop
+map .. filter_stack show
+
+# Bookmarks
+map `<any>  enter_bookmark %any
+map '<any>  enter_bookmark %any
+map m<any>  set_bookmark %any
+map um<any> unset_bookmark %any
+
+map m<bg>   draw_bookmarks
+copymap m<bg>  um<bg> `<bg> '<bg>
+
+# Generate all the chmod bindings with some python help:
+eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +{0}  shell -f chmod u+{0} %s".format(arg))
+
+eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -{0}  shell -f chmod u-{0} %s".format(arg))
+
+# ===================================================================
+# == Define keys for the console
+# ===================================================================
+# Note: Unmapped keys are passed directly to the console.
+
+# Basic
+cmap <tab>   eval fm.ui.console.tab()
+cmap <s-tab> eval fm.ui.console.tab(-1)
+cmap <ESC>   eval fm.ui.console.close()
+cmap <CR>    eval fm.ui.console.execute()
+cmap <C-l>   redraw_window
+
+copycmap <ESC> <C-c>
+copycmap <CR>  <C-j>
+
+# Move around
+cmap <up>    eval fm.ui.console.history_move(-1)
+cmap <down>  eval fm.ui.console.history_move(1)
+cmap <left>  eval fm.ui.console.move(left=1)
+cmap <right> eval fm.ui.console.move(right=1)
+cmap <home>  eval fm.ui.console.move(right=0, absolute=True)
+cmap <end>   eval fm.ui.console.move(right=-1, absolute=True)
+cmap <a-b> eval fm.ui.console.move_word(left=1)
+cmap <a-f> eval fm.ui.console.move_word(right=1)
+
+copycmap <a-b> <a-left>
+copycmap <a-f> <a-right>
+
+# Line Editing
+cmap <backspace>  eval fm.ui.console.delete(-1)
+cmap <delete>     eval fm.ui.console.delete(0)
+cmap <C-w>        eval fm.ui.console.delete_word()
+cmap <A-d>        eval fm.ui.console.delete_word(backward=False)
+cmap <C-k>        eval fm.ui.console.delete_rest(1)
+cmap <C-u>        eval fm.ui.console.delete_rest(-1)
+cmap <C-y>        eval fm.ui.console.paste()
+
+# And of course the emacs way
+copycmap <ESC>       <C-g>
+copycmap <up>        <C-p>
+copycmap <down>      <C-n>
+copycmap <left>      <C-b>
+copycmap <right>     <C-f>
+copycmap <home>      <C-a>
+copycmap <end>       <C-e>
+copycmap <delete>    <C-d>
+copycmap <backspace> <C-h>
+
+# Note: There are multiple ways to express backspaces.  <backspace> (code 263)
+# and <backspace2> (code 127).  To be sure, use both.
+copycmap <backspace> <backspace2>
+
+# This special expression allows typing in numerals:
+cmap <allow_quantifiers> false
+
+# ===================================================================
+# == Pager Keybindings
+# ===================================================================
+
+# Movement
+pmap  <down>      pager_move  down=1
+pmap  <up>        pager_move  up=1
+pmap  <left>      pager_move  left=4
+pmap  <right>     pager_move  right=4
+pmap  <home>      pager_move  to=0
+pmap  <end>       pager_move  to=-1
+pmap  <pagedown>  pager_move  down=1.0  pages=True
+pmap  <pageup>    pager_move  up=1.0    pages=True
+pmap  <C-d>       pager_move  down=0.5  pages=True
+pmap  <C-u>       pager_move  up=0.5    pages=True
+
+copypmap <UP>       k  <C-p>
+copypmap <DOWN>     j  <C-n> <CR>
+copypmap <LEFT>     h
+copypmap <RIGHT>    l
+copypmap <HOME>     g
+copypmap <END>      G
+copypmap <C-d>      d
+copypmap <C-u>      u
+copypmap <PAGEDOWN> n  f  <C-F>  <Space>
+copypmap <PAGEUP>   p  b  <C-B>
+
+# Basic
+pmap     <C-l> redraw_window
+pmap     <ESC> pager_close
+copypmap <ESC> q Q i <F3>
+pmap E      edit_file
+
+# ===================================================================
+# == Taskview Keybindings
+# ===================================================================
+
+# Movement
+tmap <up>        taskview_move up=1
+tmap <down>      taskview_move down=1
+tmap <home>      taskview_move to=0
+tmap <end>       taskview_move to=-1
+tmap <pagedown>  taskview_move down=1.0  pages=True
+tmap <pageup>    taskview_move up=1.0    pages=True
+tmap <C-d>       taskview_move down=0.5  pages=True
+tmap <C-u>       taskview_move up=0.5    pages=True
+
+copytmap <UP>       k  <C-p>
+copytmap <DOWN>     j  <C-n> <CR>
+copytmap <HOME>     g
+copytmap <END>      G
+copytmap <C-u>      u
+copytmap <PAGEDOWN> n  f  <C-F>  <Space>
+copytmap <PAGEUP>   p  b  <C-B>
+
+# Changing priority and deleting tasks
+tmap J          eval -q fm.ui.taskview.task_move(-1)
+tmap K          eval -q fm.ui.taskview.task_move(0)
+tmap dd         eval -q fm.ui.taskview.task_remove()
+tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
+tmap <pageup>   eval -q fm.ui.taskview.task_move(0)
+tmap <delete>   eval -q fm.ui.taskview.task_remove()
+
+# Basic
+tmap <C-l> redraw_window
+tmap <ESC> taskview_close
+copytmap <ESC> q Q w <C-c>
diff --git a/config/ranger/scope.sh b/config/ranger/scope.sh
new file mode 100755 (executable)
index 0000000..0a61b37
--- /dev/null
@@ -0,0 +1,477 @@
+#!/usr/bin/env bash
+
+set -o noclobber -o noglob -o nounset -o pipefail
+IFS=$'\n'
+
+## If the option `use_preview_script` is set to `true`,
+## then this script will be called and its output will be displayed in ranger.
+## ANSI color codes are supported.
+## STDIN is disabled, so interactive scripts won't work properly
+
+## This script is considered a configuration file and must be updated manually.
+## It will be left untouched if you upgrade ranger.
+
+## Because of some automated testing we do on the script #'s for comments need
+## to be doubled up. Code that is commented out, because it's an alternative for
+## example, gets only one #.
+
+## Meanings of exit codes:
+## code | meaning    | action of ranger
+## -----+------------+-------------------------------------------
+## 0    | success    | Display stdout as preview
+## 1    | no preview | Display no preview at all
+## 2    | plain text | Display the plain content of the file
+## 3    | fix width  | Don't reload when width changes
+## 4    | fix height | Don't reload when height changes
+## 5    | fix both   | Don't ever reload
+## 6    | image      | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
+## 7    | image      | Display the file directly as an image
+
+## Script arguments
+FILE_PATH="${1}"         # Full path of the highlighted file
+PV_WIDTH="${2}"          # Width of the preview pane (number of fitting characters)
+## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
+PV_HEIGHT="${3}"         # Height of the preview pane (number of fitting characters)
+IMAGE_CACHE_PATH="${4}"  # Full path that should be used to cache image preview
+PV_IMAGE_ENABLED="${5}"  # 'True' if image previews are enabled, 'False' otherwise.
+
+FILE_EXTENSION="${FILE_PATH##*.}"
+FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
+
+## Settings
+HIGHLIGHT_SIZE_MAX=262143  # 256KiB
+HIGHLIGHT_TABWIDTH="${HIGHLIGHT_TABWIDTH:-8}"
+HIGHLIGHT_STYLE="${HIGHLIGHT_STYLE:-pablo}"
+HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
+PYGMENTIZE_STYLE="${PYGMENTIZE_STYLE:-autumn}"
+BAT_STYLE="${BAT_STYLE:-plain}"
+OPENSCAD_IMGSIZE="${RNGR_OPENSCAD_IMGSIZE:-1000,1000}"
+OPENSCAD_COLORSCHEME="${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}"
+SQLITE_TABLE_LIMIT=20  # Display only the top <limit> tables in database, set to 0 for no exhaustive preview (only the sqlite_master table is displayed).
+SQLITE_ROW_LIMIT=5     # Display only the first and the last (<limit> - 1) records in each table, set to 0 for no limits.
+
+handle_extension() {
+    case "${FILE_EXTENSION_LOWER}" in
+        ## Archive
+        a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
+        rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
+            atool --list -- "${FILE_PATH}" && exit 5
+            bsdtar --list --file "${FILE_PATH}" && exit 5
+            exit 1;;
+        rar)
+            ## Avoid password prompt by providing empty password
+            unrar lt -p- -- "${FILE_PATH}" && exit 5
+            exit 1;;
+        7z)
+            ## Avoid password prompt by providing empty password
+            7z l -p -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## PDF
+        pdf)
+            ## Preview as text conversion
+            pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
+              fmt -w "${PV_WIDTH}" && exit 5
+            mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
+              fmt -w "${PV_WIDTH}" && exit 5
+            exiftool "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## BitTorrent
+        torrent)
+            transmission-show -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## OpenDocument
+        odt|sxw)
+            ## Preview as text conversion
+            odt2txt "${FILE_PATH}" && exit 5
+            ## Preview as markdown conversion
+            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
+            exit 1;;
+        ods|odp)
+            ## Preview as text conversion (unsupported by pandoc for markdown)
+            odt2txt "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## XLSX
+        xlsx)
+            ## Preview as csv conversion
+            ## Uses: https://github.com/dilshod/xlsx2csv
+            xlsx2csv -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## HTML
+        htm|html|xhtml)
+            ## Preview as text conversion
+            w3m -dump "${FILE_PATH}" && exit 5
+            lynx -dump -- "${FILE_PATH}" && exit 5
+            elinks -dump "${FILE_PATH}" && exit 5
+            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
+            ;;
+
+        ## JSON
+        json)
+            jq --color-output . "${FILE_PATH}" && exit 5
+            python -m json.tool -- "${FILE_PATH}" && exit 5
+            ;;
+
+        ## Jupyter Notebooks
+        ipynb)
+            jupyter nbconvert --to markdown "${FILE_PATH}" --stdout | env COLORTERM=8bit bat --color=always --style=plain --language=markdown && exit 5
+            jupyter nbconvert --to markdown "${FILE_PATH}" --stdout && exit 5
+            jq --color-output . "${FILE_PATH}" && exit 5
+            python -m json.tool -- "${FILE_PATH}" && exit 5
+            ;;
+
+        ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
+        ## by file(1).
+        dff|dsf|wv|wvc)
+            mediainfo "${FILE_PATH}" && exit 5
+            exiftool "${FILE_PATH}" && exit 5
+            ;; # Continue with next handler on failure
+    esac
+}
+
+handle_image() {
+    ## Size of the preview if there are multiple options or it has to be
+    ## rendered from vector graphics. If the conversion program allows
+    ## specifying only one dimension while keeping the aspect ratio, the width
+    ## will be used.
+    local DEFAULT_SIZE="1920x1080"
+
+    local mimetype="${1}"
+    case "${mimetype}" in
+        ## SVG
+        image/svg+xml|image/svg)
+            rsvg-convert --keep-aspect-ratio --width "${DEFAULT_SIZE%x*}" "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}.png" \
+                && mv "${IMAGE_CACHE_PATH}.png" "${IMAGE_CACHE_PATH}" \
+                && exit 6
+            exit 1;;
+
+        ## DjVu
+        image/vnd.djvu)
+            ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
+                  - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
+                  && exit 6 || exit 1;;
+
+        ## Image
+        image/*)
+            local orientation
+            orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
+            ## If orientation data is present and the image actually
+            ## needs rotating ("1" means no rotation)...
+            if [[ -n "$orientation" && "$orientation" != 1 ]]; then
+                ## ...auto-rotate the image according to the EXIF data.
+                convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
+            fi
+
+            ## `w3mimgdisplay` will be called for all images (unless overridden
+            ## as above), but might fail for unsupported types.
+            exit 7;;
+
+        ## Video
+        # video/*)
+        #     # Get embedded thumbnail
+        #     ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy "${IMAGE_CACHE_PATH}" && exit 6
+        #     # Get frame 10% into video
+        #     ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
+        #     exit 1;;
+
+        ## Audio
+        # audio/*)
+        #     # Get embedded thumbnail
+        #     ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy \
+        #       "${IMAGE_CACHE_PATH}" && exit 6;;
+
+        ## PDF
+        # application/pdf)
+        #     pdftoppm -f 1 -l 1 \
+        #              -scale-to-x "${DEFAULT_SIZE%x*}" \
+        #              -scale-to-y -1 \
+        #              -singlefile \
+        #              -jpeg -tiffcompression jpeg \
+        #              -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
+        #         && exit 6 || exit 1;;
+
+
+        ## ePub, MOBI, FB2 (using Calibre)
+        # application/epub+zip|application/x-mobipocket-ebook|\
+        # application/x-fictionbook+xml)
+        #     # ePub (using https://github.com/marianosimone/epub-thumbnailer)
+        #     epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
+        #         "${DEFAULT_SIZE%x*}" && exit 6
+        #     ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
+        #         >/dev/null && exit 6
+        #     exit 1;;
+
+        ## Font
+        application/font*|application/*opentype)
+            preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
+            if fontimage -o "${preview_png}" \
+                         --pixelsize "120" \
+                         --fontname \
+                         --pixelsize "80" \
+                         --text "  ABCDEFGHIJKLMNOPQRSTUVWXYZ  " \
+                         --text "  abcdefghijklmnopqrstuvwxyz  " \
+                         --text "  0123456789.:,;(*!?') ff fl fi ffi ffl  " \
+                         --text "  The quick brown fox jumps over the lazy dog.  " \
+                         "${FILE_PATH}";
+            then
+                convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
+                    && rm "${preview_png}" \
+                    && exit 6
+            else
+                exit 1
+            fi
+            ;;
+
+        ## Preview archives using the first image inside.
+        ## (Very useful for comic book collections for example.)
+        # application/zip|application/x-rar|application/x-7z-compressed|\
+        #     application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
+        #     local fn=""; local fe=""
+        #     local zip=""; local rar=""; local tar=""; local bsd=""
+        #     case "${mimetype}" in
+        #         application/zip) zip=1 ;;
+        #         application/x-rar) rar=1 ;;
+        #         application/x-7z-compressed) ;;
+        #         *) tar=1 ;;
+        #     esac
+        #     { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
+        #     { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
+        #     { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
+        #     { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
+        #
+        #     fn=$(echo "$fn" | python -c "from __future__ import print_function; \
+        #             import sys; import mimetypes as m; \
+        #             [ print(l, end='') for l in sys.stdin if \
+        #               (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
+        #         sort -V | head -n 1)
+        #     [ "$fn" = "" ] && return
+        #     [ "$bsd" ] && fn=$(printf '%b' "$fn")
+        #
+        #     [ "$tar" ] && tar --extract --to-stdout \
+        #         --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
+        #     fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
+        #     [ "$bsd" ] && bsdtar --extract --to-stdout \
+        #         --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
+        #     [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
+        #     [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
+        #         "${IMAGE_CACHE_PATH}" && exit 6
+        #     [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
+        #         "${IMAGE_CACHE_PATH}" && exit 6
+        #     [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
+        #     ;;
+    esac
+
+    # openscad_image() {
+    #     TMPPNG="$(mktemp -t XXXXXX.png)"
+    #     openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
+    #         --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
+    #         -o "${TMPPNG}" "${1}"
+    #     mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
+    # }
+
+    case "${FILE_EXTENSION_LOWER}" in
+       ## 3D models
+       ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
+       ## is hardcoded as jpeg. So we make a tempfile.png and just
+       ## move/rename it to jpg. This works because image libraries are
+       ## smart enough to handle it.
+       # csg|scad)
+       #     openscad_image "${FILE_PATH}" && exit 6
+       #     ;;
+       # 3mf|amf|dxf|off|stl)
+       #     openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
+       #     ;;
+       drawio)
+           draw.io -x "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" \
+               --width "${DEFAULT_SIZE%x*}" && exit 6
+           exit 1;;
+    esac
+}
+
+handle_mime() {
+    local mimetype="${1}"
+    case "${mimetype}" in
+        ## RTF and DOC
+        text/rtf|*msword)
+            ## Preview as text conversion
+            ## note: catdoc does not always work for .doc files
+            ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
+            catdoc -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## DOCX, ePub, FB2 (using markdown)
+        ## You might want to remove "|epub" and/or "|fb2" below if you have
+        ## uncommented other methods to preview those formats
+        *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
+            ## Preview as markdown conversion
+            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## E-mails
+        message/rfc822)
+            ## Parsing performed by mu: https://github.com/djcb/mu
+            mu view -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## XLS
+        *ms-excel)
+            ## Preview as csv conversion
+            ## xls2csv comes with catdoc:
+            ##   http://www.wagner.pp.ru/~vitus/software/catdoc/
+            xls2csv -- "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## SQLite
+        *sqlite3)
+            ## Preview as text conversion
+            sqlite_tables="$( sqlite3 "file:${FILE_PATH}?mode=ro" '.tables' )" \
+                || exit 1
+            [ -z "${sqlite_tables}" ] &&
+                { echo "Empty SQLite database." && exit 5; }
+            sqlite_show_query() {
+                sqlite-utils query "${FILE_PATH}" "${1}" --table --fmt fancy_grid \
+                || sqlite3 "file:${FILE_PATH}?mode=ro" "${1}" -header -column
+            }
+            ## Display basic table information
+            sqlite_rowcount_query="$(
+                sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
+                    'SELECT group_concat(
+                        "SELECT """ || name || """ AS tblname,
+                                          count(*) AS rowcount
+                         FROM " || name,
+                        " UNION ALL "
+                    )
+                    FROM sqlite_master
+                    WHERE type="table" AND name NOT LIKE "sqlite_%";'
+            )"
+            sqlite_show_query \
+                "SELECT tblname AS 'table', rowcount AS 'count',
+                (
+                    SELECT '(' || group_concat(name, ', ') || ')'
+                    FROM pragma_table_info(tblname)
+                ) AS 'columns',
+                (
+                    SELECT '(' || group_concat(
+                        upper(type) || (
+                            CASE WHEN pk > 0 THEN ' PRIMARY KEY' ELSE '' END
+                        ),
+                        ', '
+                    ) || ')'
+                    FROM pragma_table_info(tblname)
+                ) AS 'types'
+                FROM (${sqlite_rowcount_query});"
+            if [ "${SQLITE_TABLE_LIMIT}" -gt 0 ] &&
+               [ "${SQLITE_ROW_LIMIT}" -ge 0 ]; then
+                ## Do exhaustive preview
+                echo && printf '>%.0s' $( seq "${PV_WIDTH}" ) && echo
+                sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
+                    "SELECT name FROM sqlite_master
+                    WHERE type='table' AND name NOT LIKE 'sqlite_%'
+                    LIMIT ${SQLITE_TABLE_LIMIT};" |
+                    while read -r sqlite_table; do
+                        sqlite_rowcount="$(
+                            sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
+                                "SELECT count(*) FROM ${sqlite_table}"
+                        )"
+                        echo
+                        if [ "${SQLITE_ROW_LIMIT}" -gt 0 ] &&
+                           [ "${SQLITE_ROW_LIMIT}" \
+                             -lt "${sqlite_rowcount}" ]; then
+                            echo "${sqlite_table} [${SQLITE_ROW_LIMIT} of ${sqlite_rowcount}]:"
+                            sqlite_ellipsis_query="$(
+                                sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
+                                    "SELECT 'SELECT ' || group_concat(
+                                        '''...''', ', '
+                                    )
+                                    FROM pragma_table_info(
+                                        '${sqlite_table}'
+                                    );"
+                            )"
+                            sqlite_show_query \
+                                "SELECT * FROM (
+                                    SELECT * FROM ${sqlite_table} LIMIT 1
+                                )
+                                UNION ALL ${sqlite_ellipsis_query} UNION ALL
+                                SELECT * FROM (
+                                    SELECT * FROM ${sqlite_table}
+                                    LIMIT (${SQLITE_ROW_LIMIT} - 1)
+                                    OFFSET (
+                                        ${sqlite_rowcount}
+                                        - (${SQLITE_ROW_LIMIT} - 1)
+                                    )
+                                );"
+                        else
+                            echo "${sqlite_table} [${sqlite_rowcount}]:"
+                            sqlite_show_query "SELECT * FROM ${sqlite_table};"
+                        fi
+                    done
+            fi
+            exit 5;;
+
+        ## Text
+        text/* | */xml)
+            ## Syntax highlight
+            if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
+                exit 2
+            fi
+            if [[ "$( tput colors )" -ge 256 ]]; then
+                local pygmentize_format='terminal256'
+                local highlight_format='xterm256'
+            else
+                local pygmentize_format='terminal'
+                local highlight_format='ansi'
+            fi
+            env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
+                --out-format="${highlight_format}" \
+                --force -- "${FILE_PATH}" && exit 5
+            env COLORTERM=8bit bat --color=always --style="${BAT_STYLE}" \
+                -- "${FILE_PATH}" && exit 5
+            pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
+                -- "${FILE_PATH}" && exit 5
+            exit 2;;
+
+        ## DjVu
+        image/vnd.djvu)
+            ## Preview as text conversion (requires djvulibre)
+            djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
+            exiftool "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## Image
+        image/*)
+            ## Preview as text conversion
+            # img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
+            exiftool "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## Video and audio
+        video/* | audio/*)
+            mediainfo "${FILE_PATH}" && exit 5
+            exiftool "${FILE_PATH}" && exit 5
+            exit 1;;
+
+        ## ELF files (executables and shared objects)
+        application/x-executable | application/x-pie-executable | application/x-sharedlib)
+            readelf -WCa "${FILE_PATH}" && exit 5
+            exit 1;;
+    esac
+}
+
+handle_fallback() {
+    echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
+}
+
+
+MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
+if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
+    handle_image "${MIMETYPE}"
+fi
+handle_extension
+handle_mime "${MIMETYPE}"
+handle_fallback
+
+exit 1
diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi
new file mode 100644 (file)
index 0000000..bfd6d0f
--- /dev/null
@@ -0,0 +1,9 @@
+configuration {
+  modes: [ combi ];
+  combi-modes: [ window, drun, run ];
+}
+
+@theme "rounded-yellow-dark"
+/* Insert theme modifications after this */
+
diff --git a/config/rofi/rounded-common.rasi b/config/rofi/rounded-common.rasi
new file mode 100644 (file)
index 0000000..e53f5f9
--- /dev/null
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * ROUNDED THEME FOR ROFI 
+ * User                 : LR-Tech               
+ * Theme Repo           : https://github.com/lr-tech/rofi-themes-collection
+ *******************************************************************************/
+
+* {
+    font:   "Roboto 12";
+
+    background-color:   transparent;
+    text-color:         @fg0;
+
+    margin:     0px;
+    padding:    0px;
+    spacing:    0px;
+}
+
+window {
+    location:       center;
+    width:          480;
+    border-radius:  24px;
+    
+    background-color:   @bg0;
+}
+
+mainbox {
+    padding:    12px;
+}
+
+inputbar {
+    background-color:   @bg1;
+    border-color:       @bg3;
+
+    border:         2px;
+    border-radius:  16px;
+
+    padding:    8px 16px;
+    spacing:    8px;
+    children:   [ prompt, entry ];
+}
+
+prompt {
+    text-color: @fg2;
+}
+
+entry {
+    placeholder:        "Search";
+    placeholder-color:  @fg3;
+}
+
+message {
+    margin:             12px 0 0;
+    border-radius:      16px;
+    border-color:       @bg2;
+    background-color:   @bg2;
+}
+
+textbox {
+    padding:    8px 24px;
+}
+
+listview {
+    background-color:   transparent;
+
+    margin:     12px 0 0;
+    lines:      8;
+    columns:    1;
+
+    fixed-height: false;
+}
+
+element {
+    padding:        8px 16px;
+    spacing:        8px;
+    border-radius:  16px;
+}
+
+element normal active {
+    text-color: @bg3;
+}
+
+element selected normal, element selected active {
+    background-color:   @bg3;
+       text-color:         @bg1;
+}
+
+element-icon {
+    size:           1em;
+    vertical-align: 0.5;
+}
+
+element-text {
+    text-color: inherit;
+}
diff --git a/config/rofi/rounded-yellow-dark.rasi b/config/rofi/rounded-yellow-dark.rasi
new file mode 100644 (file)
index 0000000..e82b823
--- /dev/null
@@ -0,0 +1,20 @@
+
+
+/*******************************************************************************
+ * ROUNDED THEME FOR ROFI 
+ * User                 : LR-Tech               
+ * Theme Repo           : https://github.com/lr-tech/rofi-themes-collection
+ *******************************************************************************/
+
+* {
+    bg0:    #212121F2;
+    bg1:    #2A2A2A;
+    bg2:    #3D3D3D80;
+    bg3:    #FBC02DF2;
+    fg0:    #E6E6E6;
+    fg1:    #FFFFFF;
+    fg2:    #969696;
+    fg3:    #3D3D3D;
+}
+
+@import "rounded-common.rasi"
diff --git a/config/swappy/config b/config/swappy/config
new file mode 100644 (file)
index 0000000..0ddbebe
--- /dev/null
@@ -0,0 +1,10 @@
+[Default]
+save_dir=$HOME/Bilder
+save_filename_format=scrot-%Y%m%d-%H%M%S.png
+show_panel=false
+line_size=5
+text_size=20
+text_font=sans-serif
+paint_mode=brush
+early_exit=false
+fill_shape=false
diff --git a/config/waybar/config b/config/waybar/config
new file mode 100644 (file)
index 0000000..f99955b
--- /dev/null
@@ -0,0 +1,207 @@
+{
+    "layer": "top", // Waybar at top layer
+    "position": "bottom", // Waybar position (top|bottom|left|right)
+    "height": 26, // Waybar height (to be removed for auto height)
+    // "width": 1280, // Waybar width
+    "spacing": 6, // Gaps between modules (4px)
+    // Choose the order of the modules
+    "modules-left": ["hyprland/workspaces", "mpd"],
+    "modules-center": ["hyprland/window"],
+       "margin": "0",
+    "modules-right": ["keyboard-state", "cpu", "memory", "temperature#temp2", "temperature", "pulseaudio", "clock", "tray", "idle_inhibitor", "custom/wallpaper", "custom/powermenu"],
+
+    // Modules configuration
+
+    "hyprland/workspaces": {
+        "format": "{icon}",
+        "format-window-separator": " ",
+        //"window-rewrite-default": "",
+        //"window-rewrite": {
+        //    "firefox": "",
+        //    "kitty":   "",
+        //    "dolphin": "󱢴",
+        //    "elisa":   "",
+        //    "steam":   "󰓓",
+        //    },
+        "format-icons": {
+            "1": "1",
+            "2": "2",
+            "3": "3",
+            "4": "4",
+            "5": "5",
+            "6": "6",
+            "7": "7",
+            "8": "8",
+            "9": "9",
+            "0": "0",
+            // "urgent": "",
+            // "active": "",
+            // "default": "",
+        },
+        "persistent-workspaces": {
+            "1": [],
+            "2": [],
+            "3": [],
+            "4": [],
+            "5": [],
+            "6": [],
+            "7": [],
+            "8": [],
+            "9": [],
+            "0": [],
+        },
+        "on-click": "activate",
+        "on-click-middle-release": "close",
+        "on-scroll-up": "hyprctl dispatch workspace e+1",
+        "on-scroll-down": "hyprctl dispatch workspace e-1",
+        "sort-by-number": true
+    },
+
+    "hyprland/window": {
+        "format": "{title}",
+    },
+
+
+    "keyboard-state": {
+        "numlock": true,
+        "capslock": true,
+        "format": "{icon} {name}",
+        "format-icons": {
+            "locked": " ",
+            "unlocked": " "
+        },
+    },
+
+
+    "mpd": {
+        "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+        "format-disconnected": "Disconnected ",
+        "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon} ",
+        "unknown-tag": "N/A",
+        "interval": 2,
+        "consume-icons": {
+            "on": " "
+        },
+        "random-icons": {
+            //"off": "<span color=\"#f53c3c\"></span> ",
+            "off": "",
+            "on": " "
+        },
+        "repeat-icons": {
+            "on": " "
+        },
+        "single-icons": {
+            "on": "1 "
+        },
+        "state-icons": {
+            "paused": "",
+            "playing": ""
+        },
+        "tooltip-format": "MPD (connected)",
+        "tooltip-format-disconnected": "MPD (disconnected)"
+    },
+
+
+    "tray": {
+        // "icon-size": 21,
+        "spacing": 10
+    },
+
+
+    "cpu": {
+        "format": " {usage:2}%",
+               "on-click": "/usr/bin/foot -a popup htop",
+               "interval": 2,
+    },
+
+
+    "memory": {
+        "format": " {percentage:2}%",
+               "on-click": "/usr/bin/foot -a popup htop",
+               "interval": 2,
+    },
+
+
+    "temperature": {
+        // "thermal-zone": 2,
+        "hwmon-path": "/sys/class/hwmon/hwmon4/temp7_input",
+        "critical-threshold": 60,
+        // "format-critical": "{temperatureC}°C {icon}",
+        "format": "{icon} {temperatureC}°C WaterGPU",
+        "format-icons": ["", "", ""]
+    },
+
+    "temperature#temp2": {
+        // "thermal-zone": 2,
+        "hwmon-path": "/sys/class/hwmon/hwmon4/temp6_input",
+        "critical-threshold": 60,
+        // "format-critical": "{temperatureC}°C {icon}",
+        "format": "{icon} {temperatureC}°C WaterCPU",
+        "format-icons": ["", "", ""]
+    },
+
+
+    "network": {
+        // "interface": "wlp2*", // (Optional) To force the use of this interface
+        "format-wifi": "{essid} ({signalStrength}%) ",
+        "format-ethernet": "{ipaddr}/{cidr} ",
+        "tooltip-format": "{ifname} via {gwaddr} ",
+        "format-linked": "{ifname} (No IP) ",
+        "format-disconnected": "Disconnected ⚠",
+        "format-alt": "{ifname}: {ipaddr}/{cidr}"
+    },
+
+
+    "pulseaudio": {
+        // "scroll-step": 1, // %, can be a float
+        "format": "{icon} {volume}% {format_source}",
+        "format-bluetooth": "{icon} {volume}% {format_source}",
+        "format-bluetooth-muted": " {icon} {format_source}",
+        "format-muted": "  {format_source}",
+        "format-source": " {volume}%",
+        "format-source-muted": "",
+        "format-icons": {
+            "headphone": "",
+            "hands-free": "",
+            "headset": "",
+            "phone": "",
+            "portable": "",
+            "car": "",
+            "default": ["", "", ""]
+        },
+        "on-click": "pavucontrol"
+    },
+
+
+    "clock": {
+        // "timezone": "America/New_York",
+        "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+        "format-alt": "{:%Y-%m-%d}"
+    },
+
+
+    "idle_inhibitor": {
+        "format": "{icon}",
+        "format-icons": {
+            "activated": "",
+            "deactivated": ""
+        }
+    },
+
+
+     "custom/wallpaper": {
+        "format": "  ",
+        "on-click": "$HOME/.local/bin/rndwallpaper swww",
+       "tooltip": false,
+       "interval": "once",
+     },
+
+
+     "custom/powermenu": {
+        "format": " ⏻ ",
+        "on-click-middle": "$HOME/.config/hypr/scripts/powermenu.sh",
+       "tooltip": false,
+       "interval": "once",
+     },
+}
+# kak: filetype=json:ts=2:iw=2
diff --git a/config/waybar/oldstyle.css b/config/waybar/oldstyle.css
new file mode 100644 (file)
index 0000000..fa32580
--- /dev/null
@@ -0,0 +1,184 @@
+/* window#waybar {*/
+   /*background: transparent;*/
+/*   background-color: rgba(43, 48, 59, 1);*/
+   /*    border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
+/*   border-top: 1px solid rgba(100, 114, 125, 0.8);*/
+/*   color: #ffffff;*/
+/*   transition-property: background-color;*/
+/*   transition-duration: .5s;*/
+/* }*/
+/* */
+/* window#waybar.hidden {*/
+/*   opacity: 0.2;*/
+/* }*/
+/* */
+/* #waybar.empty #window {*/
+/*   background-color: transparent;*/
+/* }*/
+/* */
+/* #workspaces {*/
+/* }*/
+/* */
+/* #window {*/
+/*   margin: 2px;*/
+/*   padding-left: 8px;*/
+/*   padding-right: 8px;*/
+/*   background-color: rgba(23,28,39,0.3);*/
+/* }*/
+/* */
+/* */
+/* #workspaces button {*/
+/*   padding: 0 8px;*/
+/*   background-color: rgba(23,28,39,0.3);*/
+/*   color:#ffffff;*/
+/*   border-top: 1px solid rgba(100, 114, 125, 0.8);*/
+/*   font-weight: bold;*/
+/*   border: none;*/
+/*   border-radius: 0;*/
+/* }*/
+/* */
+/* #workspaces button:hover {*/
+/*   background: inherit;*/
+/*   border-top: 2px solid tomato;*/
+/*  box-shadow: inset 0 -28px #c9545d;*/
+/* }*/
+/* */
+/* #workspaces button.active {*/
+/*     font-weight: bold;*/
+/*     border-top: 2px solid lightblue;*/
+/* }*/
+/* */
+/* #workspaces button.focused {*/
+   /*    box-shadow: inset 0 -2px #c9545d; */
+/*   background-color: rgba(23,28,39,0.5);*/
+/*   color:#c9545d;*/
+/*   border-top: 2px solid #c9545d;*/
+/* }*/
+/* */
+/* #workspaces button.urgent {*/
+   /*background-color: #eb4d4b;*/
+/*   border-top: 2px solid #eb4d4b;*/
+/* }*/
+/* */
+/* #mode {*/
+/*   background-color: #64727D;*/
+/*   border-bottom: 3px solid #ffffff;*/
+/* }*/
+/* */
+/* #clock,*/
+/* #battery,*/
+/* #cpu,*/
+/* #memory,*/
+/* #disk,*/
+/* #temperature,*/
+/* #backlight,*/
+/* #network,*/
+/* #pulseaudio,*/
+/* #wireplumber,*/
+/* #custom-media,*/
+/* #tray,*/
+/* #mode,*/
+/* #idle_inhibitor,*/
+/* #scratchpad,*/
+/* #mpris {*/
+/*   margin: 2px;*/
+/*   padding-left: 4px;*/
+/*   padding-right: 4px;*/
+/*   background-color: rgba(23,28,39,0.3);*/
+/*   color: #ffffff;*/
+/* }*/
+/* */
+/* If workspaces is the leftmost module, omit left margin */
+/* .modules-left > widget:first-child > #workspaces {*/
+/*   margin-left: 0;*/
+/* }*/
+/* */
+/* If workspaces is the rightmost module, omit right margin */
+/* .modules-right > widget:last-child > #workspaces {*/
+/*   margin-right: 0;*/
+/* }*/
+/* */
+/* #clock {*/
+/*   font-size: 18px;*/
+/*   font-weight: normal;*/
+/* }*/
+/* */
+/* #battery icon {*/
+/*   color: red;*/
+/* }*/
+/* */
+/* #battery.charging, #battery.plugged {*/
+/*   color: #ffffff;*/
+/*   background-color: #26A65B;*/
+/* }*/
+/* */
+/* @keyframes blink {*/
+/*   to {*/
+/*     background-color: #ffffff;*/
+/*     color: #000000;*/
+/*   }*/
+/* }*/
+/* */
+/* #battery.warning:not(.charging) {*/
+/*   background-color: #f53c3c;*/
+/*   color: #ffffff;*/
+/*   animation-name: blink;*/
+/*   animation-duration: 0.5s;*/
+/*   animation-timing-function: linear;*/
+/*   animation-iteration-count: infinite;*/
+/*   animation-direction: alternate;*/
+/* }*/
+/* */
+/* #battery.critical:not(.charging) {*/
+/*   background-color: #f53c3c;*/
+/*   color: #ffffff;*/
+/*   animation-name: blink;*/
+/*   animation-duration: 0.5s;*/
+/*   animation-timing-function: linear;*/
+/*   animation-iteration-count: infinite;*/
+/*   animation-direction: alternate;*/
+/* }*/
+/* */
+/* label:focus {*/
+/*   background-color: #000000;*/
+/* }*/
+/* */
+/* #network.disconnected {*/
+/*   background-color: #f53c3c;*/
+/* }*/
+/* */
+/* #temperature.critical {*/
+/*   background-color: #eb4d4b;*/
+/* }*/
+/* */
+/* #idle_inhibitor.activated {*/
+/*   background-color: #ecf0f1;*/
+/*   color: #2d3436;*/
+/* }*/
+/* */
+/* #tray > .passive {*/
+/*   -gtk-icon-effect: dim;*/
+/* }*/
+/* */
+/* #tray > .needs-attention {*/
+/*   -gtk-icon-effect: highlight;*/
+/*   background-color: #eb4d4b;*/
+/* }*/
+/* */
+/* */
+/* */
+/* window#waybar.solo {*/
+/* background-color: #FFFFFF;*/
+/* }*/
+/* */
+/* window#waybar.kitty {*/
+/* background-color: #3F3F3F;*/
+/* }*/
+/* */
+/* window#waybar.chromium {*/
+/* background-color: #000000;*/
+/* border: none;*/
+/* }*/
+/*  */
+/* */
+
diff --git a/config/waybar/style.css b/config/waybar/style.css
new file mode 100644 (file)
index 0000000..7e8eb99
--- /dev/null
@@ -0,0 +1,90 @@
+* {
+  font-family: "LiterationMono Nerd Font";
+  font-size: 17px;
+  min-height: 0px;
+}
+
+
+window#waybar {
+    background-color: rgba(43, 48, 59, 1.0);
+    border-bottom: 2px solid rgba(100, 114, 125, 1);
+    color: #ffffff;
+    transition-property: background-color;
+    transition-duration: .5s;
+}
+window#waybar.hidden {
+    opacity: 0.2;
+}
+window#waybar.empty {
+    background-color: transparent;
+    background-image: linear-gradient(0deg, rgba(22,24,30,1.0), rgba(0,0,0,0))
+}
+window#waybar.foot {
+    background-color: rgba(24,24,24,1.0);
+}
+
+
+#workspaces button {
+       padding: 0 10px;
+       background: inherit;
+       color:#ffffff;
+       border-bottom: 2px solid rgba(100, 114, 125, 0.0);
+       font-weight: bold;
+       border: none;
+       border-radius: 0;
+}
+#workspaces button:hover {
+       background: inherit;
+       border-bottom: 2px solid tomato;
+       box-shadow: inset 0 -28px #c9545d;
+}
+#workspaces button.active {
+       font-weight: bold;
+       border-bottom: 2px solid lightblue;
+}
+#workspaces button.focused {
+       border-bottom: 2px solid #c9545d;
+}
+#workspaces button.urgent {
+       border-bottom: 2px solid #eb4d4b;
+}
+
+
+#cpu,
+#memory,
+#temperature {
+    padding: 0 15px;
+    color: #ffffff;
+}
+
+
+#temperature#temp2 {
+    padding: 0 15px;
+    color: #ffffff;
+}
+
+
+#mpris {
+  margin: 2px;
+  padding: 10px;
+  background-color: rgba(23,28,39,0.3);
+  color: #ffffff;
+}
+
+
+#mpd {
+    padding: 0 20px;
+    color: #ffffff;
+}
+
+
+#clock {
+    padding: 0 3px;
+    margin: 0 2px;
+}
+
+
+#idle_inhibitor {
+    padding: 0 15px;
+    color: #ffffff;
+}
diff --git a/fastfetch/.config/fastfetch/config.conf b/fastfetch/.config/fastfetch/config.conf
deleted file mode 100644 (file)
index 69bb33d..0000000
+++ /dev/null
@@ -1,519 +0,0 @@
-# Fastfetch configuration
-# Write every argument in different lines.
-# Direct arguments will overwrite the corresponding ones in this file.
-# Argument keys are not case sensitive.
-# Whitespaces are trimmed at the beginning and the end.
-# Empty lines or lines starting with # are ignored.
-
-# This file was shipped with 2.1.2.
-# Use fastfetch --gen-config-force to overwrite this file with the current defaults
-
-# Below some often usefull options are listed. Uncomment and modify them so they take affect.
-# Note that there are a lot more options than the ones listed here, take a look at "fastfetch --help".
-# Of course all of them can be made persistent here too.
-
-# Config option:
-# Load additional config files.
-# Some are shipped with fastfetch, list them with "fastfetch --list-presets".
-# Must be a path to a config file or the name of a shipped preset.
-# The config file is completely loaded before continuing in the current file, so the placement of this option matters, as later options overwrite already set ones.
-# Can be used multiple times to load multiple config files / presets.
-#--load-config /path/to/config.txt
-
-# Structure option:
-# Sets the modules to use and their order.
-# Must be a list of module names, separated by colons.
-# List available modules with "fastfetch --list-modules".
-# Get the default structure with "fastfetch --print-structure".
-#--structure Title:Separator:OS:Host:Kernel:Uptime:Packages:Shell:Display:DE:WM:WMTheme:Theme:Icons:Font:Cursor:Terminal:TerminalFont:CPU:GPU:Memory:Disk:Battery:PowerAdapter:Locale:Break:Colors
-
-# Multithreading option:
-# Sets if fastfetch should use multiple threads to detect the values.
-# Must be true or false.
-# Default is true.
-#--multithreading true
-
-# Print stat option:
-# Sets if fastfetch should print time usage (in ms) for individual modules
-# If true, it will also enable --show-errors
-# Must be true or false.
-# Default is false.
-#--stat true
-
-# Slow operations option:
-# Sets if fastfetch is allowed to use known slow operations to detect more / better values.
-# Must be true or false.
-# Default is false.
-#--allow-slow-operations false
-
-# Linewrap option:
-# Sets if fastfetch should disable linewrap during the run.
-# Must be true or false.
-# Default is true.
-#--disable-linewrap true
-
-# Cursor option:
-# Sets if fastfetch should hide the console cursor during the run.
-# Must be true or false.
-# Default is true.
-#--hide-cursor true
-
-# Processing timeout option:
-# Sets the timeout (ms) when waiting for child processes
-# Must be an integer.
-# Default is 1000
-#--processing-timeout 1000
-
-# WMI timeout option:
-# Sets the timeout (ms) for WMI queries. Windows only
-# Must be an integer.
-# Default is 5000
-#--wmi-timeout 5000
-
-# Logo option:
-# Sets the logo to use.
-# List available logos with "fastfetch --list-logos".
-# Print available logos with "fastfetch --print-logos".
-# Must be the name of an available logo or a path to a text file containing a custom logo.
-# Default is the current distribution.
-#--logo arch
-
-# Logo type option:
-# Sets the logo type to use.
-# Must be auto, builtin, file, file-raw, data, data-raw, sixel, kitty or chafa.
-# Default is auto.
-#--logo-type auto
-
-# Logo width option:
-# Sets the width of the logo (in characters) if the logo is an image.
-# Must be a positive integer.
-# Default is 65.
-#--logo-width 65
-
-# Logo height option:
-# Sets the height of the logo (in characters) if the logo is an image.
-# Must be a positive integer.
-# Default is 0 (keeps aspect ration).
-#--logo-height 0
-
-# Logo color options:
-# Overwrite a color in the logo. Also works for user provided logos.
-# In the user logo, they replace $[1-9]. Use $$ to print a single $ sign.
-# Must be linux console color codes or the name of a color.
-# Default is the one specified by the logo.
-# Use "fastfetch --help color" to learn more and see examples.
-# Valid index range is [1-9].
-#--logo-color-1 red
-#--logo-color-2 32
-# [...]
-#--logo-color-9 yellow
-
-# Logo padding option:
-# Adds a padding to the left and the right side of the logo.
-# Must be a positive integer.
-# Default is 0.
-#--logo-padding 0
-
-# Logo padding left option:
-# Adds a padding to the left side of the logo.
-# Must be a positive integer.
-# Default is 0.
---logo-padding-left 4
-
-# Logo padding right option:
-# Adds a padding to the right side of the logo.
-# Must be a positive integer.
-# Default is 0.
-#--logo-padding-right 0
-
-# Logo padding top option:
-# Adds a padding to the top side of the logo.
-# Must be a positive integer.
-# Default is 0.
---logo-padding-top 1
-
-# Logo print remaining option:
-# Sets if the remaining logo should be printed, it is has more lines than modules to show.
-# Must be true or false.
-# Default is true.
-#--logo-print-remaining true
-
-# Color keys option:
-# Sets the color of the keys.
-# Must be linux console color codes or the name of a color.
-# Default is the key color of the logo.
-# Use "fastfetch --help color" to learn more and see examples.
-#--color-keys magenta
-
-# Color title option:
-# Sets the color of the title.
-# Must be linux console color codes or the name of a color.
-# Default is the title color of the logo.
-# Use "fastfetch --help color" to learn more and see examples.
-#--color-title magenta
-
-# Binary prefix option:
-# Sets the binary prefix to use.
-# Must be a IEC, SI or JEDEC.
-# Default is IEC.
-#--binary-prefix IEC
-
-# Size number of digits option:
-# Sets the number of digits to keep after the decimal point when formatting sizes.
-# Must be an possitive integer.
-# Default is 2.
-#--size-ndigits 2
-
-# Size max prefix option:
-# Sets the largest binary prefix to use when formatting sizes.
-# Must be one of B, kB, MB, GB, TB, PB, EB, ZB, YB
-# Default is YB.
-#--size-max-prefix YB
-
-# Disable output buffer option:
-# Sets if the stdout application buffer should be disabled.
-# Must be true or false.
-# Default is false.
-#--no-buffer false
-
-# Title FQDN option:
-# Sets if the title should use the fully qualified domain name.
-# Must be true or false.
-# Default is false.
-#--title-fqdn false
-
-# Title user color option:
-# Sets color of the user name (left part).
-# Default is empty (use color of `--color-title`).
-#--title-color-user
-
-# Title at color option:
-# Sets color of the @ symbol (middle part).
-# Default is empty (use color of `--color-title`).
-#--title-color-at
-
-# Title host color option:
-# Sets color of the host name (right part).
-# Default is empty (use color of `--color-title`).
-#--title-color-host
-
-# Separator option:
-# Sets the string placed between a key and its value.
-# Can be any string.
-# Default is ": ".
-#--separator ": "
-
-# Separator string option:
-# Sets the string printed by the "separator" module (usually between title and rest of output)
-# Must be any string. It is repated / cut to fit perfectly.
-# Default is "-"
-#--separator-string -
-
-# Public IP URL option:
-# Sets the URL of public IP detection server to be used.
-# Only HTTP protocol is supported, and the value should not contain "http://" prefix.
-# Default is "ipinfo.io/ip".
-#--publicip-url "ipinfo.io/ip"
-
-# Public IP timeout option:
-# Sets the time to wait for the public ip server to respond.
-# Must be a positive integer.
-# Default is 0 (disabled).
-#--publicip-timeout 0
-
-# Weather location option:
-# Sets the location to be used. It must be URI encoded (eg a whitespace must be encoded as `+`).
-# Default is empty (guessing by public IP)
-#--weather-location "Location"
-
-# Weather output format option:
-# Sets the weather format to be used. It must be URI encoded.
-# See: https://github.com/chubin/wttr.in#one-line-output
-# Default is "%t+-+%C+(%l)".
-#--weather-output-format "%t+-+%C+(%l)"
-
-# Weather timeout option:
-# Sets the time to wait for the weather server (wttr.in) to respond.
-# Must be a positive integer.
-# Default is 0 (disabled).
-#--weather-timeout 0
-
-# OS file option
-# Sets the path to the file containing the operating system information.
-# Should be a valid path to an existing file.
-# Default is /etc/os-release.
-#--os-file /etc/os-release
-
-# Player name option
-# Sets the name of the player. This is also used in song detection
-# Must be the exact name of the player or a dbus address (e.g. org.mpris.MediaPlayer2.spotify)
-# Default is the first match starting with org.mpris.MediaPlayer2.
-#--player-name spotify
-
-# Display server force DRM option
-# Sets if fastfetch should only use `/sys/class/drm` to detect displays if you get issues with the default behavior.
-# Note DRM doesn't support refresh rate or scaled resolution detection.
-# Only supported on Linux.
-# Must be true or false.
-# Default is false.
-#--ds-force-drm false
-
-# Escape bedrock option
-# Sets if fastfetch should escape the bedrock jail, if it detectes that it is running in one
-# Must be true or false.
-# Default is true.
-#--escape-bedrock true
-
-# OpenGL option
-# Sets with opengl context creation library to use
-# Must be either auto, egl, glx or osmesa
-# Default is auto.
-#--opengl-library auto
-
-# GPU hide options
-# Sets whether to hide certain gpu types
-# Must be either true or false
-# Default is false.
-#--gpu-hide-integrated
-#--gpu-hide-discrete
-
-# GPU detection options
-# Forces using vulkan to detect GPUs
-# which support video memory usage detection with `--allow-slow-operations`
-# Must be either true or false
-# Default is false.
-#--gpu-force-vulkan
-
-# Disk show options
-# Sets if certain types of disk should be printed
-# Must be either true or false
-# Default is false except for --disk-show-external.
-#--disk-show-external true
-#--disk-show-hidden false
-#--disk-show-subvolumes false
-#--disk-show-unknown false
-
-# Disk option
-# A colon (semicolon on Windows) separated list of folder paths for the disk output
-# This option override `--disk-show-*` options above
-# Must be a string
-# Default is "/:/home" ("C:\;D:\ ..." on Windows).
-#--disk-folders /:/home
-
-# Bluetooth show disconnected option
-# Sets if disconnected bluetooth devices should be printed
-# Must be either true or false
-# Default is false.
-#--bluetooth-show-disconnected false
-
-# Display compact output option
-# Sets if all displays should be printed in one line
-# Must be either original (print pixel resolution) or scaled (print scaled resolution)
-# Default is none.
-#--display-compact-type none
-
-# Display detect name option
-# Sets if display name should be detected and printed (if supported)
-# Must be either true of false
-# Default is false.
-#--display-detect-name none
-
-# Display precise refresh rate option
-# Sets if decimal refresh rates should not be rounded into integers when printing
-# Must be either true (keep decimals) of false (round into integers)
-# Default is false.
-#--display-precise-refresh-rate false
-
-# Sound show all option
-# Sets if all sound devices should be printed
-# Must be either main, active or all. Default is main
-# Default is main.
-#--sound-type main
-
-# Percentage output type option
-# Applies to all modules that prints percentage values. Currently memory, swap, disk, battery and CPU usage are supported.
-# Only works with default format ( without --module-format option ).
-# 0: prints none; 1: prints percent number only; 2: prints bar only; 3: prints both percent number and bar; 6: prints bar and hide other texts; 9: prints colored number
-#--percent-type 1
-
-# Key options:
-# Sets the displayed key of a module
-# Can be any string. Some of theme take an argument like a format string. See "fastfetch --help format" for help.
-#--os-key OS
-#--host-key Host
-#--chassis-key Chassis
-#--kernel-key Kernel
-#--uptime-key Uptime
-#--processes-key Processes
-#--packages-key Packages
-#--shell-key Shell
-#--display-key Display {1}
-#--brightness-key Brightness ({1})
-#--monitor-key Monitor
-#--de-key DE
-#--wm-key WM
-#--wmtheme-key WM Theme
-#--theme-key Theme
-#--icons-key Icons
-#--font-key Font
-#--cursor-key Cursor
-#--terminal-key Terminal
-#--terminalfont-key Terminal Font
-#--cpu-key CPU
-#--cpuusage-key CPU Usage
-#--gpu-key GPU {1}
-#--memory-key Memory
-#--swap-key Swap
-#--disk-key Disk ({1})
-#--battery-key Battery {1}
-#--poweradapter-key Power Adapter {1}
-#--lm-key LM
-#--locale-key Locale
-#--localip-key Local IP ({1})
-#--netio-key Network IO ({1})
-#--publicip-key Public IP
-#--wifi-key Wifi
-#--weather-key Weather
-#--player-key Media Player
-#--media-key Media
-#--datetime-key Date Time
-#--version-key Version
-#--vulkan-key Vulkan
-#--opengl-key OpenGL
-#--opencl-key OpenCL
-#--users-key Users
-#--bluetooth-key Bluetooth
-#--sound-key Sound
-#--gamepad-key Gamepad
-#--wallpaper-key Wallpaper
-
-# Format options:
-# Sets the format string for module values.
-# For information on format strings, see "fastfetch --help format".
-# To see the parameter they take and their default value, see "fastfetch --help *-format", e.g. "fastfetch --help os-format".
-# An empty format string (As they are currently below) will behave as if it was not set.
-#--title-format
-#--os-format
-#--host-format
-#--chassis-format
-#--kernel-format
-#--uptime-format
-#--processes-format
-#--packages-format
-#--shell-format
-#--display-format
-#--brightness-format
-#--de-format
-#--wm-format
-#--wmtheme-format
-#--theme-format
-#--icons-format
-#--font-format
-#--cursor-format
-#--terminal-format
-#--terminalfont-format
-#--cpu-format
-#--cpuusage-format
-#--gpu-format
-#--memory-format
-#--swap-format
-#--disk-format
-#--battery-format
-#--poweradapter-format
-#--lm-format
-#--locale-format
-#--localip-format
-#--netio-format
-#--publicip-format
-#--weather-format
-#--monitor-format
-#--player-format
-#--media-format
-#--datetime-format
-#--version-format
-#--vulkan-format
-#--opengl-format
-#--opencl-format
-#--users-format
-#--bluetooth-format
-#--sound-format
-#--gamepad-format
-#--wallpaper-format
-
-# Key color options:
-# Overrides the global `--color-keys` for one specified module
-#--title-key-color
-#--os-key-color
-#--host-key-color
-#--chassis-key-color
-#--kernel-key-color
-#--uptime-key-color
-#--processes-key-color
-#--packages-key-color
-#--shell-key-color
-#--display-key-color
-#--brightness-key-color
-#--de-key-color
-#--wm-key-color
-#--wmtheme-key-color
-#--theme-key-color
-#--icons-key-color
-#--font-key-color
-#--cursor-key-color
-#--terminal-key-color
-#--terminalfont-key-color
-#--cpu-key-color
-#--cpuusage-key-color
-#--gpu-key-color
-#--memory-key-color
-#--swap-key-color
-#--disk-key-color
-#--battery-key-color
-#--poweradapter-key-color
-#--lm-key-color
-#--locale-key-color
-#--localip-key-color
-#--netio-key-color
-#--publicip-key-color
-#--weather-key-color
-#--monitor-key-color
-#--player-key-color
-#--media-key-color
-#--datetime-key-color
-#--version-key-color
-#--vulkan-key-color
-#--opengl-key-color
-#--opencl-key-color
-#--users-key-color
-#--bluetooth-key-color
-#--sound-key-color
-#--gamepad-key-color
-#--wallpaper-key-color
-
-# Library options:
-# Sets an user specific path to a library to load.
-# Must be a valid path to a library.
-#--lib-PCI /usr/lib/libpci.so
-#--lib-vulkan /usr/lib/libvulkan.so (libMoltenVK.dylib on macOS)
-#--lib-wayland /usr/lib/libwayland-client.so
-#--lib-xcb-randr /usr/lib/libxcb-randr.so
-#--lib-xcb /usr/lib/libxcb.so
-#--lib-Xrandr /usr/lib/libXrandr.so
-#--lib-X11 /usr/lib/libX11.so
-#--lib-gio /usr/lib/libgio-2.0.so
-#--lib-DConf /usr/lib/libdconf.so
-#--lib-DBus /usr/lib/libdbus-1.so
-#--lib-XFConf /usr/lib/libxfconf-0.so
-#--lib-sqlite3 /usr/lib/libsqlite3.so
-#--lib-rpm /usr/lib/librpm.so
-#--lib-imagemagick /usr/lib/libMagickCore-7.Q16HDRI.so
-#--lib-z /usr/lib/libz.so
-#--lib-chafa /usr/lib/libchafa.so
-#--lib-egl /usr/lib/libEGL.so
-#--lib-glx /usr/lib/libGLX.so
-#--lib-osmesa /usr/lib/libOSMesa.so
-#--lib-opencl /usr/lib/libOpenCL.so
-#--lib-freetype /data/data/com.termux/files/usr/lib
-#--lib-pulse /usr/lib/libpulse.so
-#--lib-ddcutil /usr/lib/libddcutil.so
-#--lib-nm /usr/lib/libnm.so
diff --git a/fastfetch/.config/fastfetch/config.jsonc b/fastfetch/.config/fastfetch/config.jsonc
deleted file mode 100644 (file)
index 93c665c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
-  "logo": {
-    "padding": {
-      "top": 1,
-      "left": 4
-    }
-  },
-  "modules": [
-    "title",
-    "separator",
-    "os",
-    "host",
-    "kernel",
-    "uptime",
-    "packages",
-    "locale",
-    "shell",
-    "de",
-    "wm",
-    "terminal",
-    "separator",
-    "cpu",
-    "gpu",
-    "display",
-    "memory",
-    "swap",
-    "disk",
-    "break",
-    "colors"
-  ]
-}
diff --git a/fish/.config/fish/completions/key-bindings.fish b/fish/.config/fish/completions/key-bindings.fish
deleted file mode 100644 (file)
index 743c7c1..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-#     ____      ____
-#    / __/___  / __/
-#   / /_/_  / / /_
-#  / __/ / /_/ __/
-# /_/   /___/_/ key-bindings.fish
-#
-# - $FZF_TMUX_OPTS
-# - $FZF_CTRL_T_COMMAND
-# - $FZF_CTRL_T_OPTS
-# - $FZF_CTRL_R_OPTS
-# - $FZF_ALT_C_COMMAND
-# - $FZF_ALT_C_OPTS
-
-# Key bindings
-# ------------
-function fzf_key_bindings
-
-  # Store current token in $dir as root for the 'find' command
-  function fzf-file-widget -d "List files and folders"
-    set -l commandline (__fzf_parse_commandline)
-    set -l dir $commandline[1]
-    set -l fzf_query $commandline[2]
-    set -l prefix $commandline[3]
-
-    # "-path \$dir'*/\\.*'" matches hidden files/folders inside $dir but not
-    # $dir itself, even if hidden.
-    test -n "$FZF_CTRL_T_COMMAND"; or set -l FZF_CTRL_T_COMMAND "
-    command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
-    -o -type f -print \
-    -o -type d -print \
-    -o -type l -print 2> /dev/null | sed 's@^\./@@'"
-
-    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
-    begin
-      set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS"
-      eval "$FZF_CTRL_T_COMMAND | "(__fzfcmd)' -m --query "'$fzf_query'"' | while read -l r; set result $result $r; end
-    end
-    if [ -z "$result" ]
-      commandline -f repaint
-      return
-    else
-      # Remove last token from commandline.
-      commandline -t ""
-    end
-    for i in $result
-      commandline -it -- $prefix
-      commandline -it -- (string escape $i)
-      commandline -it -- ' '
-    end
-    commandline -f repaint
-  end
-
-  function fzf-history-widget -d "Show command history"
-    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
-    begin
-      set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT $FZF_DEFAULT_OPTS --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore $FZF_CTRL_R_OPTS +m"
-
-      set -l FISH_MAJOR (echo $version | cut -f1 -d.)
-      set -l FISH_MINOR (echo $version | cut -f2 -d.)
-
-      # history's -z flag is needed for multi-line support.
-      # history's -z flag was added in fish 2.4.0, so don't use it for versions
-      # before 2.4.0.
-      if [ "$FISH_MAJOR" -gt 2 -o \( "$FISH_MAJOR" -eq 2 -a "$FISH_MINOR" -ge 4 \) ];
-        history -z | eval (__fzfcmd) --read0 --print0 -q '(commandline)' | read -lz result
-        and commandline -- $result
-      else
-        history | eval (__fzfcmd) -q '(commandline)' | read -l result
-        and commandline -- $result
-      end
-    end
-    commandline -f repaint
-  end
-
-  function fzf-cd-widget -d "Change directory"
-    set -l commandline (__fzf_parse_commandline)
-    set -l dir $commandline[1]
-    set -l fzf_query $commandline[2]
-    set -l prefix $commandline[3]
-
-    test -n "$FZF_ALT_C_COMMAND"; or set -l FZF_ALT_C_COMMAND "
-    command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
-    -o -type d -print 2> /dev/null | sed 's@^\./@@'"
-    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
-    begin
-      set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS"
-      eval "$FZF_ALT_C_COMMAND | "(__fzfcmd)' +m --query "'$fzf_query'"' | read -l result
-
-      if [ -n "$result" ]
-        cd -- $result
-
-        # Remove last token from commandline.
-        commandline -t ""
-        commandline -it -- $prefix
-      end
-    end
-
-    commandline -f repaint
-  end
-
-  function __fzfcmd
-    test -n "$FZF_TMUX"; or set FZF_TMUX 0
-    test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
-    if [ -n "$FZF_TMUX_OPTS" ]
-      echo "fzf-tmux $FZF_TMUX_OPTS -- "
-    else if [ $FZF_TMUX -eq 1 ]
-      echo "fzf-tmux -d$FZF_TMUX_HEIGHT -- "
-    else
-      echo "fzf"
-    end
-  end
-
-  bind \ct fzf-file-widget
-  bind \cr fzf-history-widget
-  bind \ec fzf-cd-widget
-
-  if bind -M insert > /dev/null 2>&1
-    bind -M insert \ct fzf-file-widget
-    bind -M insert \cr fzf-history-widget
-    bind -M insert \ec fzf-cd-widget
-  end
-
-  function __fzf_parse_commandline -d 'Parse the current command line token and return split of existing filepath, fzf query, and optional -option= prefix'
-    set -l commandline (commandline -t)
-
-    # strip -option= from token if present
-    set -l prefix (string match -r -- '^-[^\s=]+=' $commandline)
-    set commandline (string replace -- "$prefix" '' $commandline)
-
-    # eval is used to do shell expansion on paths
-    eval set commandline $commandline
-
-    if [ -z $commandline ]
-      # Default to current directory with no --query
-      set dir '.'
-      set fzf_query ''
-    else
-      set dir (__fzf_get_dir $commandline)
-
-      if [ "$dir" = "." -a (string sub -l 1 -- $commandline) != '.' ]
-        # if $dir is "." but commandline is not a relative path, this means no file path found
-        set fzf_query $commandline
-      else
-        # Also remove trailing slash after dir, to "split" input properly
-        set fzf_query (string replace -r "^$dir/?" -- '' "$commandline")
-      end
-    end
-
-    echo $dir
-    echo $fzf_query
-    echo $prefix
-  end
-
-  function __fzf_get_dir -d 'Find the longest existing filepath from input string'
-    set dir $argv
-
-    # Strip all trailing slashes. Ignore if $dir is root dir (/)
-    if [ (string length -- $dir) -gt 1 ]
-      set dir (string replace -r '/*$' -- '' $dir)
-    end
-
-    # Iteratively check if dir exists and strip tail end of path
-    while [ ! -d "$dir" ]
-      # If path is absolute, this can keep going until ends up at /
-      # If path is relative, this can keep going until entire input is consumed, dirname returns "."
-      set dir (dirname -- "$dir")
-    end
-
-    echo $dir
-  end
-
-end
diff --git a/fish/.config/fish/config.fish b/fish/.config/fish/config.fish
deleted file mode 100644 (file)
index 0d387d5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-if status is-interactive
-    # Commands to run in interactive sessions can go here
-    #
-    #cat ~/.config/banner.asc
-    fastfetch
-    set -g fish_greeting
-end
diff --git a/fish/.config/fish/fish_variables b/fish/.config/fish/fish_variables
deleted file mode 100644 (file)
index d5b57ec..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file contains fish universal variable definitions.
-# VERSION: 3.0
-SETUVAR --export EDITOR:kcr\x20edit
-SETUVAR --export FZF_DEFAULT_OPTS:--multi\x20--layout=reverse\x20--preview-window=down:60%
-SETUVAR --export KCR_DEFAULT_SESSION:default
-SETUVAR --export VDPAU_DRIVER:radeonsi
-SETUVAR __fish_initialized:3400
-SETUVAR fish_color_autosuggestion:8e908c
-SETUVAR fish_color_cancel:\x2dr
-SETUVAR fish_color_command:8959a8
-SETUVAR fish_color_comment:eab700
-SETUVAR fish_color_cwd:green
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:8959a8
-SETUVAR fish_color_error:c82829
-SETUVAR fish_color_escape:00a6b2
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_host_remote:yellow
-SETUVAR fish_color_keyword:8959a8
-SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:00a6b2
-SETUVAR fish_color_option:4271ae
-SETUVAR fish_color_param:4271ae
-SETUVAR fish_color_quote:718c00
-SETUVAR fish_color_redirection:3e999f
-SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_status:red
-SETUVAR fish_color_user:brgreen
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
-SETUVAR fish_greeting:\x1d
-SETUVAR fish_key_bindings:fish_default_key_bindings
-SETUVAR fish_pager_color_completion:normal
-SETUVAR fish_pager_color_description:B3A06D\x1eyellow
-SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
-SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_user_paths:/home/andy/Applications\x1e/opt/android\x2dsdk/platform\x2dtools\x1e/home/andy/\x2ecargo/bin\x1e/home/andy/\x2elocal/bin
diff --git a/fish/.config/fish/functions/:cat.fish b/fish/.config/fish/functions/:cat.fish
deleted file mode 100644 (file)
index c82ad68..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function :cat --wraps='kcr cat --raw' --description 'alias :cat=kcr cat --raw'
-  kcr cat --raw $argv; 
-end
diff --git a/fish/.config/fish/functions/K.fish b/fish/.config/fish/functions/K.fish
deleted file mode 100644 (file)
index bf4cb13..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function K --wraps=kcr-fzf-shell --description 'alias K=kcr-fzf-shell'
-  kcr-fzf-shell $argv; 
-end
diff --git a/fish/.config/fish/functions/a.fish b/fish/.config/fish/functions/a.fish
deleted file mode 100644 (file)
index 1e2c651..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function a --wraps='kcr attach' --description 'alias a=kcr attach'
-  kcr attach $argv; 
-end
diff --git a/fish/.config/fish/functions/df.fish b/fish/.config/fish/functions/df.fish
deleted file mode 100644 (file)
index 8a46d4a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function df --wraps='/bin/df -h | tail -n +2 |  sort -n' --wraps='/bin/df -ah | tail -n +2 |  sort -n' --wraps='/bin/df -ahk | tail -n +2 |  sort -n' --description 'alias df /bin/df -h | tail -n +2 |  sort -n'
-  /bin/df -h | tail -n +2 |  sort -n $argv; 
-end
diff --git a/fish/.config/fish/functions/emergelog.fish b/fish/.config/fish/functions/emergelog.fish
deleted file mode 100644 (file)
index 8412d62..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function emergelog --wraps='sudo cat /var/log/emerge.log | grep completed' --wraps=sudo\ cat\ /var/log/emerge.log\ \|\ grep\ -i\ \"completed\\\|started\" --wraps=sudo\ cat\ /var/log/emerge.log\ \|\ grep\ -i\ \"started\\\|completed\\\|exiting\" --description alias\ emergelog=sudo\ cat\ /var/log/emerge.log\ \|\ grep\ -i\ \"started\\\|completed\\\|exiting\"
-  sudo cat /var/log/emerge.log | grep -i "started\|completed\|exiting" $argv; 
-end
diff --git a/fish/.config/fish/functions/fish_prompt.fish b/fish/.config/fish/functions/fish_prompt.fish
deleted file mode 100644 (file)
index b7d38e6..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-function fish_prompt
-    # This prompt shows:
-    # - green lines if the last return command is OK, red otherwise
-    # - your user name, in red if root or yellow otherwise
-    # - your hostname, in cyan if ssh or blue otherwise
-    # - the current path (with prompt_pwd)
-    # - date +%X
-    # - the current virtual environment, if any
-    # - the current git status, if any, with fish_git_prompt
-    # - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi"
-    # - current background jobs, if any
-
-    # It goes from:
-    # ┬─[nim@Hattori:~]─[11:39:00]
-    # ╰─>$ echo here
-
-    # To:
-    # ┬─[nim@Hattori:~/w/dashboard]─[11:37:14]─[V:django20]─[G:master↑1|●1✚1…1]─[B:85%, 05:41:42 remaining]
-    # │ 2    15054    0%    arrêtée    sleep 100000
-    # │ 1    15048    0%    arrêtée    sleep 100000
-    # ╰─>$ echo there
-
-    set -l retc red
-    test $status = 0; and set retc green
-
-    set -q __fish_git_prompt_showupstream
-    or set -g __fish_git_prompt_showupstream auto
-
-    function _nim_prompt_wrapper
-        set retc $argv[1]
-        set -l field_name $argv[2]
-        set -l field_value $argv[3]
-
-        set_color normal
-        set_color $retc
-        echo -n '─'
-        set_color -o green
-        echo -n '['
-        set_color normal
-        test -n $field_name
-        and echo -n $field_name:
-        set_color $retc
-        echo -n $field_value
-        set_color -o green
-        echo -n ']'
-    end
-
-    set_color $retc
-    echo -n '┬─'
-    set_color -o green
-    echo -n [
-
-    if functions -q fish_is_root_user; and fish_is_root_user
-        set_color -o red
-    else
-        set_color -o yellow
-    end
-
-    echo -n $USER
-    set_color -o white
-    echo -n @
-
-    if test -z "$SSH_CLIENT"
-        set_color -o blue
-    else
-        set_color -o cyan
-    end
-
-    echo -n (prompt_hostname)
-    set_color -o white
-    echo -n :(prompt_pwd)
-    set_color -o green
-    echo -n ']'
-
-    # Date
-    _nim_prompt_wrapper $retc '' (date +%X)
-
-    # Vi-mode
-    # The default mode prompt would be prefixed, which ruins our alignment.
-    function fish_mode_prompt
-    end
-
-    if test "$fish_key_bindings" = fish_vi_key_bindings
-        or test "$fish_key_bindings" = fish_hybrid_key_bindings
-        set -l mode
-        switch $fish_bind_mode
-            case default
-                set mode (set_color --bold red)N
-            case insert
-                set mode (set_color --bold green)I
-            case replace_one
-                set mode (set_color --bold green)R
-                echo '[R]'
-            case replace
-                set mode (set_color --bold cyan)R
-            case visual
-                set mode (set_color --bold magenta)V
-        end
-        set mode $mode(set_color normal)
-        _nim_prompt_wrapper $retc '' $mode
-    end
-
-
-    # Virtual Environment
-    set -q VIRTUAL_ENV_DISABLE_PROMPT
-    or set -g VIRTUAL_ENV_DISABLE_PROMPT true
-    set -q VIRTUAL_ENV
-    and _nim_prompt_wrapper $retc V (basename "$VIRTUAL_ENV")
-
-    # git
-    set -l prompt_git (fish_git_prompt '%s')
-    test -n "$prompt_git"
-    and _nim_prompt_wrapper $retc G $prompt_git
-
-    # Battery status
-    type -q acpi
-    and test (acpi -a 2> /dev/null | string match -r off)
-    and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-)
-
-    # New line
-    echo
-
-    # Background jobs
-    set_color normal
-
-    for job in (jobs)
-        set_color $retc
-        echo -n '│ '
-        set_color brown
-        echo $job
-    end
-
-    set_color normal
-    set_color $retc
-    echo -n '╰─>'
-    set_color -o red
-    echo -n '$ '
-    set_color normal
-end
diff --git a/fish/.config/fish/functions/free.fish b/fish/.config/fish/functions/free.fish
deleted file mode 100644 (file)
index 1588642..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function free --wraps='/usr/bin/free --giga -h -w' --wraps='/usr/bin/free -h' --description 'alias free=free -wth --si'
- command free -wth --si $argv; 
-end
diff --git a/fish/.config/fish/functions/gcp.fish b/fish/.config/fish/functions/gcp.fish
deleted file mode 100644 (file)
index 907c340..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function gcp --wraps='git cherry-pick' --description 'alias gcp=git cherry-pick'
-  git cherry-pick $argv; 
-end
diff --git a/fish/.config/fish/functions/glo.fish b/fish/.config/fish/functions/glo.fish
deleted file mode 100644 (file)
index 5d60fd5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function glo --wraps='git log --oneline' --description 'alias gcp=git log --oneline'
-  git log --oneline $argv; 
-end
diff --git a/fish/.config/fish/functions/grep.fish b/fish/.config/fish/functions/grep.fish
deleted file mode 100644 (file)
index 65baf8e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function grep --description 'alias grep=grep -i --color=auto'
- command grep -i --color=auto $argv; 
-end
diff --git a/fish/.config/fish/functions/gs.fish b/fish/.config/fish/functions/gs.fish
deleted file mode 100644 (file)
index 0755f7c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function gs --wraps='git status' --description 'alias gs=git status'
-  git status $argv; 
-end
diff --git a/fish/.config/fish/functions/hc.fish b/fish/.config/fish/functions/hc.fish
deleted file mode 100644 (file)
index cfbfd46..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function hc --wraps='hyprctl clients' --description 'alias hc=hyprctl clients'
-  hyprctl clients $argv; 
-end
diff --git a/fish/.config/fish/functions/k.fish b/fish/.config/fish/functions/k.fish
deleted file mode 100644 (file)
index ad41f0d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function k --wraps='kks edit' --wraps='kcr attach' --wraps='kcr edit' --description 'alias k=kcr edit'
-  kcr edit $argv; 
-end
diff --git a/fish/.config/fish/functions/kl.fish b/fish/.config/fish/functions/kl.fish
deleted file mode 100644 (file)
index a9dda47..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function kl --wraps='kcr list' --description 'alias kl=kcr list'
-  kcr list $argv; 
-end
diff --git a/fish/.config/fish/functions/ks.fish b/fish/.config/fish/functions/ks.fish
deleted file mode 100644 (file)
index 63d3f45..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function ks --wraps='kcr shell --session' --description 'alias ks=kcr shell --session'
-  kcr shell --session $argv; 
-end
diff --git a/fish/.config/fish/functions/l1.fish b/fish/.config/fish/functions/l1.fish
deleted file mode 100644 (file)
index 1422345..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function l1 --description 'list files bare'
-   exa --icons --group --time-style=iso --group-directories-first -l $argv;
-end
diff --git a/fish/.config/fish/functions/la.fish b/fish/.config/fish/functions/la.fish
deleted file mode 100644 (file)
index e3d3f06..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function la --description 'list standard incl. hidden'
-   ls -a $argv;
-end
diff --git a/fish/.config/fish/functions/lg.fish b/fish/.config/fish/functions/lg.fish
deleted file mode 100644 (file)
index 705c12e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function lg --description 'list files sorted by size'
-  exa --icons --group --long --sort=size -t=mod --time-style=iso --group-directories-first $argv;
-end
diff --git a/fish/.config/fish/functions/lgo.fish b/fish/.config/fish/functions/lgo.fish
deleted file mode 100644 (file)
index c8bf2aa..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function lgo --wraps='git log --oneline' --description 'alias lgo=git log --oneline'
-  git log --oneline $argv; 
-end
diff --git a/fish/.config/fish/functions/ll.fish b/fish/.config/fish/functions/ll.fish
deleted file mode 100644 (file)
index fe524fd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function ll --description 'list files long'
-   exa --icons --group --time-style=iso --group-directories-first -l $argv;
-end
diff --git a/fish/.config/fish/functions/ls.fish b/fish/.config/fish/functions/ls.fish
deleted file mode 100644 (file)
index 2e4d264..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function ls --description 'list files standard'
-   exa --icons --time-style=iso --group-directories-first $argv;
-end
diff --git a/fish/.config/fish/functions/lsblk.fish b/fish/.config/fish/functions/lsblk.fish
deleted file mode 100644 (file)
index 0b1dbdb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function lsblk --description 'alias lsblk=lsblk -o +MODEL,LABEL'
- command lsblk -o +MODEL,LABEL $argv; 
-end
diff --git a/fish/.config/fish/functions/lt.fish b/fish/.config/fish/functions/lt.fish
deleted file mode 100644 (file)
index ffa4b22..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function lt --description 'list files sorted by mtime'
-  exa --icons --group --long --sort=mod -t=mod --time-style=iso --group-directories-first $argv;
-end
diff --git a/fish/.config/fish/functions/lw.fish b/fish/.config/fish/functions/lw.fish
deleted file mode 100644 (file)
index 173cc73..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function lw --description 'list files wide'
-  exa --icons --group --long --grid --time-style=iso --group-directories-first $argv;
-end
diff --git a/fish/.config/fish/functions/r.fish b/fish/.config/fish/functions/r.fish
deleted file mode 100644 (file)
index 3bd11cd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-function r
-set tempfile (mktemp -t tmp.XXXXXX)
-set command_argument "tab_new;map Q chain shell echo %d > $tempfile; quitall"
-command ranger --cmd="$command_argument" $argv
-if test -s $tempfile
-set ranger_pwd (cat $tempfile)
-if test -n $ranger_pwd -a -d $ranger_pwd
-builtin cd -- $ranger_pwd
-end
-end
-command rm -f -- $tempfile
-end
diff --git a/fish/.config/fish/functions/stow.fish b/fish/.config/fish/functions/stow.fish
deleted file mode 100644 (file)
index e38ae52..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-function stow
-    bash -c "/usr/bin/stow $argv 2> >(grep -v 'BUG in find_stowed_path? Absolute/relative mismatch' 1>&2)"
-end
-
diff --git a/fish/.config/fish/functions/zdiff.fish b/fish/.config/fish/functions/zdiff.fish
deleted file mode 100644 (file)
index 028c850..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function zdiff --description 'alias zdiff=zdiff --color=auto'
- command zdiff --color=auto $argv; 
-end
diff --git a/foot/.config/foot/base16 b/foot/.config/foot/base16
deleted file mode 160000 (submodule)
index eedbcfa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce
diff --git a/foot/.config/foot/foot.ini b/foot/.config/foot/foot.ini
deleted file mode 100644 (file)
index c9199c8..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-# -*- conf -*-
-
-# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
-# term=foot (or xterm-256color if built with -Dterminfo=disabled)
-# login-shell=no
-
-# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
-# title=foot
-# locked-title=no
-
-include=~/.config/foot/base16/colors/base16-default-dark.ini
-
-font=LiterationMono Nerd Font:size=13
-# font-bold=<bold variant of regular font>
-# font-italic=<italic variant of regular font>
-# font-bold-italic=<bold+italic variant of regular font>
-# font-size-adjustment=0.5
-# line-height=<font metrics>
-# letter-spacing=0
-# horizontal-letter-offset=0
-# vertical-letter-offset=0
-# underline-offset=<font metrics>
-# underline-thickness=<font underline thickness>
-# box-drawings-uses-font-glyphs=no
-# dpi-aware=no
-
-initial-window-size-pixels=1256x1344  # Or,
-# initial-window-size-chars=<COLSxROWS>
-# initial-window-mode=windowed
-# pad=0x0                             # optionally append 'center'
-# resize-delay-ms=100
-
-notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
-
-# bold-text-in-bright=no
-# word-delimiters=,│`|:"'()[]{}<>
-# selection-target=primary
-# workers=<number of logical CPUs>
-# utmp-helper=/usr/lib/utempter/utempter  # When utmp backend is ‘libutempter’ (Linux)
-# utmp-helper=/usr/libexec/ulog-helper    # When utmp backend is ‘ulog’ (FreeBSD)
-
-[environment]
-# name=value
-
-[bell]
-# urgent=no
-# notify=no
-# visual=no
-# command=
-# command-focused=no
-
-[scrollback]
-lines=16384
-# multiplier=3.0
-# indicator-position=relative
-# indicator-format=""
-indicator-format=percentage
-
-[url]
-# launch=xdg-open ${url}
-label-letters=adfghjkl
-# osc8-underline=url-mode
-# protocols=http, https, ftp, ftps, file, gemini, gopher
-# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
-
-[cursor]
-# style=block
-# color=<inverse foreground/background>
-# blink=no
-# beam-thickness=1.5
-# underline-thickness=<font underline thickness>
-
-[mouse]
-# hide-when-typing=no
-# alternate-scroll-mode=yes
-
-[touch]
-# long-press-delay=400
-
-[colors]
-alpha=0.90
-
-background=242124
-foreground=f5f5f5
-# flash=7f7f00
-# flash-alpha=0.5
-
-## Normal/regular colors (color palette 0-7)
-regular0=242424    # black
-# regular1=f62b5a  # red
-# regular2=47b413  # green
-regular2=91bc61   # bright green
-regular3=ffb852    # yellow
-# regular4=24acd4  # blue
-regular4=5d81d2
-regular5=776d96 # magenta
-# regular6=13c299  # cyan
-regular6=90e0e0
-regular7=f5f5f5  # white
-
-## Bright colors (color palette 8-15)
-bright0=3d4c59     # bright black
-# bright1=ff4d51   # bright red
-# bright2=35d450   # bright green
-bright2=91bc61   # bright green
-# bright3=e9e836   # bright yellow
-bright3=ffb852   # bright yellow
-# bright4=5dc5f8   # bright blue
-bright4=5d81d2
-# bright5=feabf2   # bright magenta
-bright5=776d96 # magenta
-# bright6=24dfc4   # bright cyan
-bright6=90e0e0
-# bright7=ffffff   # bright white
-
-## dimmed colors (see foot.ini(5) man page)
-# dim0=<not set>
-# ...
-# dim7=<not-set>
-
-## The remaining 256-color palette
-# 16 = <256-color palette #16>
-# ...
-# 255 = <256-color palette #255>
-
-## Misc colors
-# selection-foreground=<inverse foreground/background>
-# selection-background=<inverse foreground/background>
-# jump-labels=<regular0> <regular3>          # black-on-yellow
-# scrollback-indicator=<regular0> <bright4>  # black-on-bright-blue
-# search-box-no-match=<regular0> <regular1>  # black-on-red
-# search-box-match=<regular0> <regular3>     # black-on-yellow
-# urls=<regular3>
-
-[csd]
-# preferred=server
-# size=26
-# font=<primary font>
-# color=<foreground color>
-# hide-when-maximized=no
-# double-click-to-maximize=yes
-# border-width=0
-# border-color=<csd.color>
-# button-width=26
-# button-color=<background color>
-# button-minimize-color=<regular4>
-# button-maximize-color=<regular2>
-# button-close-color=<regular1>
-
-[key-bindings]
-# scrollback-up-page=Shift+Page_Up
-# scrollback-up-half-page=none
-# scrollback-up-line=none
-# scrollback-down-page=Shift+Page_Down
-# scrollback-down-half-page=none
-# scrollback-down-line=none
-# scrollback-home=none
-# scrollback-end=none
-# clipboard-copy=Control+Shift+c XF86Copy
-# clipboard-paste=Control+Shift+v XF86Paste
-# primary-paste=Shift+Insert
-# search-start=Control+Shift+r
-# font-increase=Control+plus Control+equal Control+KP_Add
-# font-decrease=Control+minus Control+KP_Subtract
-# font-reset=Control+0 Control+KP_0
-# spawn-terminal=Control+Shift+n
-# minimize=none
-# maximize=none
-# fullscreen=none
-# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
-# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
-# pipe-selected=[xargs -r firefox] none
-# show-urls-launch=Control+Shift+o
-# show-urls-copy=none
-# show-urls-persistent=none
-# prompt-prev=Control+Shift+z
-# prompt-next=Control+Shift+x
-# unicode-input=Control+Shift+u
-# noop=none
-
-[search-bindings]
-# cancel=Control+g Control+c Escape
-# commit=Return
-# find-prev=Control+r
-# find-next=Control+s
-# cursor-left=Left Control+b
-# cursor-left-word=Control+Left Mod1+b
-# cursor-right=Right Control+f
-# cursor-right-word=Control+Right Mod1+f
-# cursor-home=Home Control+a
-# cursor-end=End Control+e
-# delete-prev=BackSpace
-# delete-prev-word=Mod1+BackSpace Control+BackSpace
-# delete-next=Delete
-# delete-next-word=Mod1+d Control+Delete
-# extend-char=Shift+Right
-# extend-to-word-boundary=Control+w Control+Shift+Right
-# extend-to-next-whitespace=Control+Shift+w
-# extend-line-down=Shift+Down
-# extend-backward-char=Shift+Left
-# extend-backward-to-word-boundary=Control+Shift+Left
-# extend-backward-to-next-whitespace=none
-# extend-line-up=Shift+Up
-# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
-# primary-paste=Shift+Insert
-# unicode-input=none
-# scrollback-up-page=Shift+Page_Up
-# scrollback-up-half-page=none
-# scrollback-up-line=none
-# scrollback-down-page=Shift+Page_Down
-# scrollback-down-half-page=none
-# scrollback-down-line=none
-# scrollback-home=none
-# scrollback-end=none
-
-[url-bindings]
-# cancel=Control+g Control+c Control+d Escape
-# toggle-url-visible=t
-
-[text-bindings]
-# \x03=Mod4+c  # Map Super+c -> Ctrl+c
-
-[mouse-bindings]
-# scrollback-up-mouse=BTN_BACK
-# scrollback-down-mouse=BTN_FORWARD
-# selection-override-modifiers=Shift
-# primary-paste=BTN_MIDDLE
-# select-begin=BTN_LEFT
-# select-begin-block=Control+BTN_LEFT
-# select-extend=BTN_RIGHT
-# select-extend-character-wise=Control+BTN_RIGHT
-# select-word=BTN_LEFT-2
-# select-word-whitespace=Control+BTN_LEFT-2
-# select-quote = BTN_LEFT-3
-# select-row=BTN_LEFT-4
-
-# vim: ft=dosini
-
diff --git a/fuzzel/.config/fuzzel/fuzzel.ini b/fuzzel/.config/fuzzel/fuzzel.ini
deleted file mode 100644 (file)
index 4b36d1f..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-# output=<not set>
-font=monospace:size=12
-# dpi-aware=auto
-# prompt="> "
-icon-theme=breeze-dark
-# icons-enabled=yes
-# fields=filename,name,generic
-# password-character=*
-# filter-desktop=no
-# fuzzy=yes
-# show-actions=no
-terminal=foot -e
-# launch-prefix=<not set>
-
-# anchor=center
-# lines=15
-# width=30
-# tabs=8
-# horizontal-pad=40
-# vertical-pad=8
-# inner-pad=0
-
-# image-size-ratio=0.5
-
-# line-height=<use font metrics>
-line-height=20
-# letter-spacing=0
-
-# layer = top
-# exit-on-keyboard-focus-loss = yes
-
-[colors]
-background=282828dd
-text=d8d8d8ff
-# match=cb4b16ff
-selection=add8e6dd
-selection-text=282828ff
-# selection-match=cb4b16ff
-border=595959ff
-
-[border]
-width=2
-# radius=10
-
-[dmenu]
-# mode=text  # text|index
-# exit-immediately-if-empty=no
-
-[key-bindings]
-# cancel=Escape Control+g
-# execute=Return KP_Enter Control+y
-# execute-or-next=Tab
-# execute-input=Shift+Return Shift+KP_Enter
-# cursor-left=Left Control+b
-# cursor-left-word=Control+Left Mod1+b
-# cursor-right=Right Control+f
-# cursor-right-word=Control+Right Mod1+f
-# cursor-home=Home Control+a
-# cursor-end=End Control+e
-# delete-prev=BackSpace
-# delete-prev-word=Mod1+BackSpace Control+BackSpace
-# delete-next=Delete KP_Delete Control+d
-# delete-next-word=Mod1+d Control+Delete Control+KP_Delete
-# delete-line=Control+k
-# prev=Up Control+p
-# prev-with-wrap=ISO_Left_Tab
-# prev-page=Page_Up KP_Page_Up
-# next=Down Control+n
-# next-with-wrap=none
-# next-page=Page_Down KP_Page_Down
-
-# custom-N: *dmenu mode only*. Like execute, but with a non-zero
-# exit-code; custom-1 exits with code 10, custom-2 with 11, custom-3
-# with 12, and so on.
-
-# custom-1=Mod1+1
-# custom-2=Mod1+2
-# custom-3=Mod1+3
-# custom-4=Mod1+4
-# custom-5=Mod1+5
-# custom-6=Mod1+6
-# custom-7=Mod1+7
-# custom-8=Mod1+8
-# custom-9=Mod1+9
-# custom-10=Mod1+0
-# custom-11=Mod1+exclam
-# custom-12=Mod1+at
-# custom-13=Mod1+numbersign
-# custom-14=Mod1+dollar
-# custom-15=Mod1+percent
-# custom-16=Mod1+dead_circumflex
-# custom-17=Mod1+ampersand
-# custom-18=Mod1+asterix
-# custom-19=Mod1+parentleft
diff --git a/hypr/.config/hypr/hyprland.conf b/hypr/.config/hypr/hyprland.conf
deleted file mode 100644 (file)
index 10e343e..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-# ░█░█░█░█░█▀█░█▀▄░█░░░█▀█░█▀█░█▀▄░░░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀
-# ░█▀█░░█░░█▀▀░█▀▄░█░░░█▀█░█░█░█░█░░░█░░░█░█░█░█░█▀▀░░█░░█░█
-# ░▀░▀░░▀░░▀░░░▀░▀░▀▀▀░▀░▀░▀░▀░▀▀░░░░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀i
-
-autogenerated = 0 # remove this line to remove the warning
-
-# See https://wiki.hyprland.org/Configuring/Monitors/
-#monitor=DP-3,preferred,auto,1.125,vrr,2
-monitor=DP-3,preferred,auto,1,vrr,2
-
-# unscale XWayland
-xwayland {
-       force_zero_scaling = true
-}
-
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-env = VK_ICD_FILENAMES,/usr/share/vulkan/icd.d/radeon_icd.x86_64.json
-env = WLR_RENDERER,vulkan
-env = XDG_CURRENT_DESKTOP, Hyprland
-env = XDG_SESSION_TYPE, wayland
-env = XDG_SESSION_DESKTOP, Hyprland
-
-# Execute your favorite apps at launch
-
-exec-once = ~/.config/hypr/scripts/startup.sh
-exec-once = ~/.config/hypr/scripts/daemons.sh
-
-# Source a file (multi-file configs)
-# source = ~/.config/hypr/myColors.conf
-
-# Some default env vars.
-env = GDK_SCALE=1 # scaling XWayland clients
-env = XCURSOR_SIZE,24
-env = QT_QPA_PLATFORM,wayland
-env = QT_QPA_PLATFORMTHEME,qt6ct
-env = GDK_BACKEND=wayland
-env = QT_AUTO_SCREEN_SCALE_FACTOR,1
-env = MOZ_ENABLE_WAYLAND,1
-env = GTK_USE_PORTAL,1
-
-# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
-input {
-    kb_layout = us
-    kb_variant = de_se_fi
-    kb_model =
-    kb_options =
-    kb_rules =
-
-    follow_mouse = 1
-
-    touchpad {
-        natural_scroll = no
-    }
-
-    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
-}
-
-general {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
-    gaps_in = 10
-    gaps_out = 20
-    border_size = 2
-    col.active_border = rgba(2394bbee) rgba(638c9bee) 45deg
-    col.inactive_border = rgba(595959ee) rgba(333333ee) 45deg
-    col.nogroup_border = rgba(732673ee) rgba(4c2673ee) 45deg
-    col.nogroup_border_active = rgba(993399ee) rgba(663399ee) 45deg
-
-    layout = dwindle
-
-    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
-    allow_tearing = false
-}
-
-dwindle {
-    force_split = 2
-}
-
-decoration {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
-    rounding = 4
-
-    blur {
-        enabled = true
-        size = 3
-        passes = 1
-        vibrancy = 0.1696
-    }
-
-    drop_shadow = yes
-    shadow_range = 8
-    shadow_render_power = 3
-    col.shadow = rgba(1a1a1aee)
-}
-
-animations {
-    enabled = yes
-
-    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
-
-    bezier = myBezier, 0.05, 0.9, 0.1, 1.05
-    bezier = overshot, 0.05, 0.9, 0.1, 1.1
-
-    animation = windows, 1, 7, myBezier
-    animation = windowsOut, 1, 7, default, popin 80%
-    animation = border, 1, 10, default
-    animation = borderangle, 1, 8, default
-    animation = fade, 1, 7, default
-    animation = workspaces, 1, 6, default, slidefade 30%
-}
-
-dwindle {
-    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
-    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
-    preserve_split = yes # you probably want this
-}
-
-master {
-    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
-    new_is_master = true
-}
-
-gestures {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-    workspace_swipe = false
-}
-
-misc {
-    # See https://wiki.hyprland.org/Configuring/Variables/ for more
-    force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers
-}
-
-# Example per-device config
-# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
-device:epic-mouse-v1 {
-    sensitivity = -0.5
-}
-
-group {
-       insert_after_current = false
-       col.border_active = rgba(fe920eee) rgba(fca230ee) 45deg
-       col.border_inactive = rgba(fca230ee) rgba(f7ca88ee) 45deg
-       col.border_locked_active = rgba(2e8b57ee) rgba(2e8a73ee) 45deg
-       col.border_locked_inactive = rgba(226841ee) rgba(226856ee) 45deg
-    groupbar {
-        font_family = LiterationMono Nerd Font
-        font_size = 11
-               gradients = true
-               col.active = 0xeefe920e
-               col.inactive = 0x99fca230
-               col.locked_active = 0x772e8b57
-               col.locked_inactive = 0x55194d40
-    }
-}
-
-# Example windowrule v1
-# windowrule = float, ^(kitty)$
-# Example windowrule v2
-# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
-# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-# more windowrules
-
-# handle steam client
-windowrule = float,^(steam)$
-windowrule = float,title:^(Steam)$
-windowrule = float,title:^(Freundesliste)$
-windowrulev2 = stayfocused, title:^()$, class:^(steam)$
-windowrulev2 = minsize 1 1, title:^()$, class:^(steam)$
-
-# handle other clients
-windowrulev2 = float, size 1560 1000, pin, workspace special:overlay, class:^(org.keepassxc.KeePassXC)$
-windowrule = float, ^(firefox)$
-windowrulev2 = opacity 1.0 override 0.8 override, group, class:^(foot)$
-windowrulev2 = float, opacity 1.0 override 0.8 override, class:^(popup)$
-windowrulev2 = float, noanim, stayfocused, maxsize 1280 800, center, opacity 1.0 override, class:^(kakpopup)$
-windowrule = float, ^(openrgb)$
-windowrule = float, ^(org.kde.*)$
-# windowrule = float, ^(org.kde.okular)$
-# windowrule = float, ^(org.kde.gwenview)$
-# windowrule = float, ^(org.kde.skanlite)$
-
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-$suremod = SUPER ALT CTRL
-$mainmod = SUPER
-
-# binds that don't want to get fat-fingered
-bind = $suremod, Q, killactive,
-bind = $suremod, M, exit,
-bind = $suremod, F, fullscreen,0
-bind = $suremod, Return, exec, konsole
-bind = $suremod, D, denywindowfromgroup, toggle
-bind = $suremod, V, togglefloating,
-
-# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
-bind = $mainmod, Return, exec, foot -L /usr/bin/fish --
-bind = $mainmod Shift, Return, exec, foot -w 1280x800 -a popup -L /usr/bin/fish --
-bind = $mainmod, E, exec, dolphin
-bind = $mainmod, F, fullscreen,1
-bind = $mainmod, V, exec, killall fuzzel || cliphist list | fuzzel -d -w 100 | cliphist decode | wl-copy
-bind = $mainmod, D, exec, killall fuzzel || fuzzel
-bind = $mainmod, R, exec, killall rofi || rofi -show run # rofi installed for keepassxc-browser script
-bind = $mainmod, P, pseudo, # dwindle
-bind = $mainmod, S, togglesplit, # dwindle
-bind = ALT SHIFT, F12, exec, ~/.config/hypr/scripts/gamemode.sh
-bind = $mainmod, G, togglegroup
-bind = $mainmod SHIFT, G, lockactivegroup, toggle
-bind = $mainmod, TAB, focuscurrentorlast
-
-# Move focus with mainMod + arrow keys
-bind = $mainmod, left, movefocus, l
-bind = $mainmod, right, movefocus, r
-bind = $mainmod, up, movefocus, u
-bind = $mainmod, down, movefocus, d
-bind = $mainmod, H, movefocus, l
-bind = $mainmod, L, movefocus, r
-bind = $mainmod, K, movefocus, u
-bind = $mainmod, J, movefocus, d
-
-# Move windows or groups with mainMod + Shift + arrow keys
-bind = $mainmod SHIFT, left, movewindoworgroup, l
-bind = $mainmod SHIFT, right, movewindoworgroup, r
-bind = $mainmod SHIFT, up, movewindoworgroup, u
-bind = $mainmod SHIFT, down, movewindoworgroup, d
-bind = $mainmod SHIFT, H, movewindoworgroup, l
-bind = $mainmod SHIFT, L, movewindoworgroup, r
-bind = $mainmod SHIFT, K, movewindoworgroup, u
-bind = $mainmod SHIFT, J, movewindoworgroup, d
-
-# Move windows into groups
-bind = $mainmod ALT, left, moveintogroup, l
-bind = $mainmod ALT, right, moveintogroup, r
-bind = $mainmod ALT, up, moveintogroup, u
-bind = $mainmod ALT, down, moveintogroup, d
-bind = $mainmod ALT, H, moveintogroup, l
-bind = $mainmod ALT, L, moveintogroup, r
-bind = $mainmod ALT, K, moveintogroup, u
-bind = $mainmod ALT, J, moveintogroup, d
-
-# Move windows out of groups
-bind = $mainmod SHIFT ALT, left, moveoutofgroup, l
-bind = $mainmod SHIFT ALT, right, moveoutofgroup, r
-bind = $mainmod SHIFT ALT, up, moveoutofgroup, u
-bind = $mainmod SHIFT ALT, down, moveoutofgroup, d
-bind = $mainmod SHIFT ALT, H, moveoutofgroup, l
-bind = $mainmod SHIFT ALT, L, moveoutofgroup, r
-bind = $mainmod SHIFT ALT, K, moveoutofgroup, u
-bind = $mainmod SHIFT ALT, J, moveoutofgroup, d
-
-# Switch through group windows
-bind = $mainmod, O, changegroupactive, f
-bind = $mainmod, U, changegroupactive, b
-
-# Switch workspaces with mainMod + [0-9]
-bind = $mainmod, 1, workspace, 1
-bind = $mainmod, 2, workspace, 2
-bind = $mainmod, 3, workspace, 3
-bind = $mainmod, 4, workspace, 4
-bind = $mainmod, 5, workspace, 5
-bind = $mainmod, 6, workspace, 6
-bind = $mainmod, 7, workspace, 7
-bind = $mainmod, 8, workspace, 8
-bind = $mainmod, 9, workspace, 9
-bind = $mainmod, 0, workspace, 10
-
-# Move active window to a workspace with mainMod + SHIFT + [0-9]
-bind = $mainmod SHIFT, 1, movetoworkspace, 1
-bind = $mainmod SHIFT, 2, movetoworkspace, 2
-bind = $mainmod SHIFT, 3, movetoworkspace, 3
-bind = $mainmod SHIFT, 4, movetoworkspace, 4
-bind = $mainmod SHIFT, 5, movetoworkspace, 5
-bind = $mainmod SHIFT, 6, movetoworkspace, 6
-bind = $mainmod SHIFT, 7, movetoworkspace, 7
-bind = $mainmod SHIFT, 8, movetoworkspace, 8
-bind = $mainmod SHIFT, 9, movetoworkspace, 9
-bind = $mainmod SHIFT, 0, movetoworkspace, 10
-
-# Scroll through existing workspaces with mainMod + scroll
-bind = $mainmod, mouse_down, workspace, e+1
-bind = $mainmod, mouse_up, workspace, e-1
-
-# Move/resize windows with mainMod + LMB/RMB and dragging
-bindm = $mainmod, mouse:272, movewindow
-bindm = $mainmod, mouse:273, resizewindow
-
-# media keys
-bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
-bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
-bind = , XF86AudioMute, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0%
-bind = , XF86AudioPlay, exec, playerctl play-pause
-bind = , XF86AudioNext, exec, playerctl next
-bind = , XF86AudioPrev, exec, playerctl previous
-bind = , XF86audiostop, exec, playerctl stop
-
-# printscr
-bind = $mainmod, Print, exec, grim -g "$(slurp)" - | swappy -f -
-
-# 'scratchpad
-bind = $mainmod, I, togglespecialworkspace, overlay
-bind = $mainmod SHIFT, I, movetoworkspace, special:overlay
diff --git a/hypr/.config/hypr/hyprpaper.conf b/hypr/.config/hypr/hyprpaper.conf
deleted file mode 100644 (file)
index dfc9e4c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-preload = /mnt/multimedia/Wallpapers/wp10330139-5120x1440-star-wars-wallpapers.jpg
-wallpaper = DP-3,/mnt/multimedia/Wallpapers/wp10330139-5120x1440-star-wars-wallpapers.jpg
-
-ipc = on
-
diff --git a/hypr/.config/hypr/scripts/daemons.sh b/hypr/.config/hypr/scripts/daemons.sh
deleted file mode 100755 (executable)
index f25aefa..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/env bash
-logger '=============================='
-logger 'userland daemons startup begin'
-
-
-if [[ ! $(pidof mpd) ]]; then
-       mpd && mpd-mpris &
-       logger 'mpd started'
-fi
-
-if [[ ! $(pidof swww-daemon) ]]; then
-    swww init &
-    logger 'swww-daemon started'
-    swww img ~/Bilder/Wallpapers/default.jpg &
-fi
-
-openrgb -p simple.orp &
-kak -d -s default & # kakoune default server
-
-wl-paste --type  text --watch cliphist store &
-wl-paste --type image --watch cliphist store &
-
-sleep 2 && logger 'userland daemons startup begin' && logger '=============================='
diff --git a/hypr/.config/hypr/scripts/gamemode.sh b/hypr/.config/hypr/scripts/gamemode.sh
deleted file mode 100755 (executable)
index f97d4f4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env sh
-HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '2p' | awk '{print $2}')
-if [ $HYPRGAMEMODE = 1 ] ; then
-    hyprctl --batch "\
-        keyword animations:enabled 0;\
-        keyword decoration:drop_shadow 0;\
-        keyword decoration:blur 0;\
-        keyword general:gaps_in 0;\
-        keyword general:gaps_out 0;\
-        keyword general:border_size 1;\
-        keyword decoration:rounding 0"
-    exit
-fi
-hyprctl reload
-
diff --git a/hypr/.config/hypr/scripts/powermenu.sh b/hypr/.config/hypr/scripts/powermenu.sh
deleted file mode 100755 (executable)
index fe73800..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# shamelessly stolen from https://github.com/luispabon/sway-dotfiles
-
-entries="⇠ Logout\n⏾ Suspend\n⭮ Reboot\n⏻ Shutdown"
-
-selected=$(echo -e $entries|wofi --width 250 --height 210 --dmenu --cache-file /dev/null | awk '{print tolower($2)}')
-
-case $selected in
-  logout)
-    hyprctl dispatch exit;;
-  suspend)
-    exec loginctl suspend;;
-  reboot)
-    exec loginctl reboot;;
-  shutdown)
-    exec loginctl poweroff -i;;
-esac
diff --git a/hypr/.config/hypr/scripts/startup.sh b/hypr/.config/hypr/scripts/startup.sh
deleted file mode 100755 (executable)
index da33dd6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env bash
-
-logger '============================'
-logger 'hyperland main startup begin'
-
-CONFIG="$HOME/.config/mako/config"
-
-if [[ ! -d "$XDG_RUNTIME_DIR" ]] ; then
-    # shellcheck disable=SC2155
-    # shellcheck disable=SC2046
-    export XDG_RUNTIME_DIR=$(mktemp -d /tmp/$(id -u)-runtime-dir.XXX)
-    logger 'xdg-runtime dir set'
-fi
-
-if [[ ! "$DBUS_SESSION_BUS_ADDRESS" ]]; then
-    dbus-daemon --session --address=unix:path="$XDG_RUNTIME_DIR"/bus &
-    logger 'dbus session daemon started'
-fi
-
-if [[ ! $(pidof /usr/lib64/libexec/polkit-kde-authentication-agent-1) ]]; then
-    /usr/lib64/libexec/polkit-kde-authentication-agent-1 &
-    logger 'polit-kde started'
-fi
-
-if [[ ! $(pidof mako) ]]; then
-       mako --config "${CONFIG}" &
-       logger 'mako started'
-fi
-
-killall xdg-desktop-portal-hyprland
-killall xdg-desktop-portal-gnome
-killall xdg-desktop-portal-gtk
-killall xdg-desktop-portal-kde
-killall xdg-desktop-portal-wlr
-killall xdg-desktop-portal
-logger 'killed all xdg-desktop'
-sleep 1
-/usr/lib64/libexec/xdg-desktop-portal-kde &
-logger 'xdg-desktop-portal-kde started'
-sleep 1
-/usr/libexec/xdg-desktop-portal-hyprland &
-logger 'xdg-desktop-portal-hyprland started'
-sleep 2
-/usr/libexec/xdg-desktop-portal &
-logger 'xdg-desktop-portal started'
-
-if [[ ! $(pidof pipewire) ]]; then
-    gentoo-pipewire-launcher &
-    logger 'gentoo-pipewire-launcher started'
-else
-    gentoo-pipewire-launcher restart &
-    logger 'gentoo-pipewire-launcher (re-)started'
-fi
-
-if [[ ! $(pidof waybar) ]]; then
-    waybar &
-    logger 'waybar started'
-fi
-
-sleep 2 && logger 'hyperland main startup begin' && logger '============================'
-
diff --git a/hypr/.config/hypr/scripts/xdg-desktop-portal.sh b/hypr/.config/hypr/scripts/xdg-desktop-portal.sh
deleted file mode 100755 (executable)
index b2ab7ed..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-killall xdg-desktop-portal-hyprland
-killall xdg-desktop-portal-gnome
-killall xdg-desktop-portal-gnome
-killall xdg-desktop-portal-kde
-killall xdg-desktop-portal-wlr
-killall xdg-desktop-portal
-logger 'killed all xdg-desktop'
-sleep 1
-/usr/lib64/libexec/xdg-desktop-portal-kde &
-logger 'xdg-desktop-portal-kde started'
-sleep 1
-/usr/libexec/xdg-desktop-portal-hyprland &
-logger 'xdg-desktop-portal-hyprland started'
-sleep 2
-/usr/libexec/xdg-desktop-portal &
-logger 'xdg-desktop-portal started'
diff --git a/kak/.config/kak/colors/base16.kak b/kak/.config/kak/colors/base16.kak
deleted file mode 100644 (file)
index 0ae479e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-##
-## base16.kak by lenormf
-##
-
-evaluate-commands %sh{
-    black_lighterer='rgb:383838'
-    black_lighter='rgb:2D2D2D'
-    black_light='rgb:1C1C1C'
-    cyan_light='rgb:7CB0FF'
-    green_dark='rgb:A1B56C'
-    grey_dark='rgb:585858'
-    grey_medium='rgb:989898'
-    grey_light='rgb:D8D8D8'
-    magenta_dark='rgb:AB4642'
-    magenta_light='rgb:AB4434'
-    orange_dark='rgb:DC9656'
-    orange_light='rgb:F7CA88'
-    purple_dark='rgb:BA8BAF'
-
-    ## code
-    echo "
-        face global value ${orange_dark}+b
-        face global type ${orange_light}
-        face global variable ${magenta_dark}
-        face global module ${green_dark}
-        face global function ${cyan_light}
-        face global string ${green_dark}
-        face global keyword ${purple_dark}+b
-        face global operator ${cyan_light}
-        face global attribute ${orange_dark}
-        face global comment ${grey_medium}
-        face global documentation comment
-        face global meta ${orange_light}
-        face global builtin default+b
-    "
-
-    ## markup
-    echo "
-        face global title blue
-        face global header ${cyan_light}
-        face global mono ${green_dark}
-        face global block ${orange_dark}
-        face global link blue
-        face global bullet ${magenta_light}
-        face global list ${magenta_dark}
-    "
-
-    ## builtin
-    echo "
-        face global Default ${grey_light},${black_light}
-        face global PrimarySelection white,blue+fg
-        face global SecondarySelection black,blue+fg
-        face global PrimaryCursor black,white+fg
-        face global SecondaryCursor black,white+fg
-        face global PrimaryCursorEol black,${cyan_light}+fg
-        face global SecondaryCursorEol black,${cyan_light}+fg
-        face global LineNumbers ${grey_light},${black_lighter}
-        face global LineNumberCursor ${grey_light},rgb:282828+b
-        face global MenuForeground ${grey_light},blue
-        face global MenuBackground blue,${grey_light}
-        face global MenuInfo ${cyan_light}
-        face global Information ${black_light},${cyan_light}
-        face global Error ${grey_light},${magenta_light}
-        face global DiagnosticError ${magenta_light}
-        face global DiagnosticWarning ${cyan_light}
-        face global StatusLine ${grey_light},${black_lighterer}
-        face global StatusLineMode ${orange_dark}
-        face global StatusLineInfo ${cyan_light}
-        face global StatusLineValue ${green_dark}
-        face global StatusCursor ${black_lighterer},${cyan_light}
-        face global Prompt ${black_light},${cyan_light}
-        face global MatchingChar ${cyan_light},${black_light}+b
-        face global BufferPadding ${cyan_light},${black_lighter}
-        face global Whitespace ${grey_dark}+f
-    "
-}
diff --git a/kak/.config/kak/colors/dabruin.kak b/kak/.config/kak/colors/dabruin.kak
deleted file mode 120000 (symlink)
index da4a46b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../plugins/dabruin.kak/dabruin.kak
\ No newline at end of file
diff --git a/kak/.config/kak/kakrc b/kak/.config/kak/kakrc
deleted file mode 100644 (file)
index bf62166..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-# Clipboard (wayland) integration
-# ──────────────────────────────────────────────────────────────────────────────
-hook global NormalKey y %{ nop %sh{
-  printf %s "$kak_main_reg_dquote" | wl-copy > /dev/null 2>&1 &
-}}
-
-# Enable PLUGin manager
-# ──────────────────────────────────────────────────────────────────────────────
-source "%val{config}/plugins/plug.kak/rc/plug.kak"
-plug "andreyorst/plug.kak" noload
-    plug "Ersikan/bookmarks.kak" %{
-        hook global WinCreate .* bookmarks-enable
-    }
-    plug "andreyorst/smarttab.kak" defer smarttab %{
-        # when 'backspace' is pressed, 4 spaces are deleted at once
-       set-option global softtabstop 4
-    } config %{
-       hook global WinSetOption filetype=(rust|markdown|kak|lisp|scheme|py|sh|perl) expandtab
-       hook global WinSetOption filetype=(makefile|gas) noexpandtab
-       hook global WinSetOption filetype=(c|cpp) smarttab
-    }
-    plug "whereswaldon/shellcheck.kak"
-    plug "occivink/kakoune-filetree"
-    plug "occivink/kakoune-sudo-write"
-    plug "occivink/kakoune-find"
-    plug "foot.kak"
-    plug "https://git.sr.ht/~nasmevka/dabruin.kak"
-    plug "andreyorst/powerline.kak" defer powerline_freerunner %{
-        powerline-format global 'mode_info git bufname session client line_column position '
-        powerline-theme freerunner
-        powerline-separator triangle
-    } config %{
-        powerline-start
-    }
-    plug "raiguard/kak-harpoon" %{
-        hook global WinCreate .* harpoon-add-bindings
-    }
-
-
-# Look and Feel
-# ──────────────────────────────────────────────────────────────────────────────
-add-highlighter global/trailing-whitespace regex '\h+$' 0:Error                         # trailing whitespaces in red
-add-highlighter global/todos regex '(//|#|/\*)\h*(TODO|WARNING|FIXME)[:]?[^\n]*' 2:+bu  # highlight comment tags
-add-highlighter global/ show-matching                                                   # show matching brackets
-add-highlighter global/ number-lines -min-digits 3                                      # absolute line nums everywhere
-colorscheme dabruin
-set-option global tabstop 4
-set-option global indentwidth 4
-
-
-# dynamic scrolloff
-# ──────────────────────────────────────────────────────────────────────────────
-hook global WinCreate [^*].* %{
-    hook -once window WinDisplay .* %{
-        hook window WinResize [0-9]*\.[0-9]* %{
-            set-option window scrolloff %sh{
-                printf '%u,%u' "$(($kak_window_height / 6))" "$(($kak_window_width / 8))"
-            }
-        }
-    }
-}
-
-
-# Different Cursor color in insert mode
-# ──────────────────────────────────────────────────────────────────────────────
-# Shades of blue/cyan for normal mode
-set-face global PrimarySelection white,blue+F
-set-face global SecondarySelection black,blue+F
-set-face global PrimaryCursor black,bright-cyan+F
-set-face global SecondaryCursor black,bright-blue+F
-set-face global PrimaryCursorEol black,bright-cyan
-set-face global SecondaryCursorEol black,bright-blue
-
-# Shades of green/yellow for insert mode.
-hook global ModeChange (push|pop):.*:insert %{
-    set-face window PrimarySelection black,yellow+F
-    set-face window SecondarySelection black,yellow+F
-    set-face window PrimaryCursor black,bright-red+F
-    set-face window SecondaryCursor black,bright-yellow+F
-    set-face window PrimaryCursorEol black,bright-red
-    set-face window SecondaryCursorEol black,bright-yellow
-}
-
-# Undo colour changes when we leave insert mode.
-hook global ModeChange (push|pop):insert:.* %{
-    unset-face window PrimarySelection
-    unset-face window SecondarySelection
-    unset-face window PrimaryCursor
-    unset-face window SecondaryCursor
-    unset-face window PrimaryCursorEol
-    unset-face window SecondaryCursorEol
-}
-
-
-# Enable editor config
-# ──────────────────────────────────────────────────────────────────────────────
-hook global WinCreate ^[^*]+$ %{ editorconfig-load }
-
-
-# Extra editor commands
-# ──────────────────────────────────────────────────────────────────────────────
-# tab replacement
-define-command clean-selections -docstring 'Replace tabs with spaces and trim trailing whitespace' %{ try %{
-    execute-keys -draft @s\h+$<ret>d
-} }
-define-command clean-buffer -docstring 'Replace tabs with spaces and trim trailing whitespace' %{ try %{
-    execute-keys -draft \%@s\h+$<ret>d
-} }
-# Bring back <c-a> and <c-x> from Vim to increment/decrement the number under the cursor
-define-command -hidden -params 2 inc %{ try %{
-    evaluate-commands %sh{
-        [ "$1" = 0 ] && count=1 || count="$1"
-        printf '%s%s' 'exec h"_/\d<ret><a-i>na' "$2($count)<esc>|{<space>cat<semicolon>echo<semicolon>}|bc<ret>"
-    }
-} catch %{
-    execute-keys l
-}}
-
-
-# Various mappings
-# ──────────────────────────────────────────────────────────────────────────────
-map global normal '#' :comment-line<ret> -docstring 'comment line'
-map global normal '<a-#>' :comment-block<ret> -docstring 'comment block'
-map global goto m '<esc>m;' -docstring 'matching char'
-map -docstring 'select lines downwards' global normal X T<ret>Lx
-# see #inc
-map global normal <c-a> ': inc %val{count} +<ret>'
-map global normal <c-x> ': inc %val{count} -<ret>'
-map global normal Q q # map q to Q 
-#map global normal q -docstring 'tabs mode' ': enter-user-mode tabs<ret>' # map q to tabs mode
-
-
-# default user mode
-# ──────────────────────────────────────────────────────────────────────────────
-map global user -docstring 'enable autocomplete' a ': set-option -add buffer autocomplete insert<ret>'
-map global user -docstring 'disable autocomplete' A ': set-option -remove buffer autocomplete insert<ret>'
-map global user -docstring 'edit kakrc' e ': e ~/.config/kak/kakrc<ret>'
-map global user -docstring 'clean tabs and trailing whitespace in selections' c ': clean-selections<ret>'
-map global user -docstring 'clean tabs and trailing whitespace in the buffer' C ': clean-buffer<ret>'
-map global user -docstring 'buffer backward' b ': buffer-previous<ret>'
-map global user -docstring 'buffer forward' n ': buffer-next<ret>'
-map global user -docstring 'lint-buffer' L ': buffer *lint-output*<ret>'
-map global user -docstring 'relative line numbers enable' r ': add-highlighter window/nl number-lines -relative -hlcursor<ret>'
-map global user -docstring 'relative line numbers disable' R ': remove-highlighter window/nl<ret>'
-map global user -docstring 'wrap enable' w ': add-highlighter buffer/bw wrap<ret>'
-map global user -docstring 'wrap disable' W ': remove-highlighter buffer/bw<ret>'
-
-
-# terminal config (via foot.kak)
-# ──────────────────────────────────────────────────────────────────────────────
-set-option global foot_normal_cmd 'foot'
-set-option global foot_popup_cmd 'foot'
-set-option global foot_normal_flags ''
-set-option global foot_popup_flags '-a kakpopup'
-set-option global foot_panel_cmd 'foot'
-
-
-# # suspend and resume
-# # # ──────────
-# def suspend-and-resume \
-#     -params 1..2 \
-#     -docstring 'suspend-and-resume <cli command> [<kak command after resume>]: backgrounds current kakoune client and runs specified cli command.  Upon exit of command the optional kak command is executed.' \
-#     %{ evaluate-commands %sh{
-
-#     # Note we are adding '&& fg' which resumes the kakoune client process after the cli command exits
-#     cli_cmd="$1 && fg"
-#     post_resume_cmd="$2"
-
-#     # automation is different platform to platform
-#     platform=$(uname -s)
-#     case $platform in
-#         Darwin)
-#             automate_cmd="sleep 0.01; osascript -e 'tell application \"System Events\" to keystroke \"$cli_cmd\" & return '"
-#             kill_cmd="/bin/kill"
-#             break
-#             ;;
-#         Linux)
-#             automate_cmd="sleep 0.2; xdotool type '$cli_cmd'; xdotool key Return"
-#             kill_cmd="/usr/bin/kill"
-#             break
-#             ;;
-#     esac
-
-#     # Uses platforms automation to schedule the typing of our cli command
-#     nohup sh -c "$automate_cmd"  > /dev/null 2>&1 &
-#     # Send kakoune client to the background
-#     $kill_cmd -SIGTSTP $kak_client_pid
-
-#     # ...At this point the kakoune client is paused until the " && fg " gets run in the $automate_cmd
-
-#     # Upon resume, run the kak command is specified
-#     if [ ! -z "$post_resume_cmd" ]; then
-#         echo "$post_resume_cmd"
-#     fi
-# }}
-
-# def for-each-line \
-#     -docstring "for-each-line <command> <path to file>: run command with the value of each line in the file" \
-#     -params 2 \
-#     %{ evaluate-commands %sh{
-
-#     while read f; do
-#         printf "$1 $f\n"
-#     done < "$2"
-# }}
-
-# def toggle-ranger %{
-#     suspend-and-resume \
-#         "ranger --choosefiles=/tmp/ranger-files-%val{client_pid}" \
-#         "for-each-line edit /tmp/ranger-files-%val{client_pid}"
-# }
-
-# map global user f ': toggle-ranger<ret>' -docstring 'select files in ranger'
-
-
-# run on file open
-# ──────────────────────────────────────────────────────────────────────────────
-hook global BufOpenFile .* %{
-    modeline-parse
-}
-
-# session manager
-# ──────────────────────────────────────────────────────────────────────────────
-evaluate-commands %sh{
-    kcr init kakoune
-}
-
-# kakoune.cr Mappings
-map -docstring 'new client' global normal <c-t> ': new<ret>'
-map -docstring 'terminal (popup)' global normal <c-ret> ': connect terminal-popup<ret>'
-map -docstring 'git (popup)' global normal <c-l> ': connect terminal-popup gitui<ret>'
-#map -docstring 'file explorer' global normal <c-e> ': connect terminal-panel sidetree --select %val{buffile}<ret>'
-map -docstring 'file picker' global normal <c-f> ': connect terminal-popup kcr fzf files<ret>'
-map -docstring 'buffer picker' global normal <c-b> ': connect terminal-popup kcr fzf buffers<ret>'
-map global normal <q> <Q>
-unmap global normal <q>
-map -docstring 'buffer picker' global normal <q> ': connect terminal-popup kcr fzf buffers<ret>'
-map -docstring 'grep picker' global normal <c-g> ': connect terminal-popup kcr fzf grep<ret>'
-#map -docstring 'grep picker (buffer)' global normal <c-r> ': connect terminal-popup kcr fzf grep %val{buflist}<ret>'
-
-
-# Reload kakrc and .kak when saving.
-# ──────────────────────────────────────────────────────────────────────────────
-# Adds -override to definitions (unless they seem to be python defs!)
-# Evals provide module directly
-
-def resource -params 1 %{
-    eval %sh{
-        file=$(dirname "$1")/.reload.kak
-        cat "$1" |
-            sed 's/^def \([^:]*\)$/def -override \1/'   |
-            sed 's/^define-command /def -override /'    |
-            sed 's/^addhl /addhl -override/'            |
-            sed 's/^add-highlighter /addhl -override /' |
-            sed 's/^provide-module \w\+ /eval /'        |
-            cat > "$file"
-        printf %s "
-            source $file
-            nop %sh{
-                rm $file
-            }
-        "
-    }
-    echo Reloaded %arg{1}
-}
-
-rmhooks global reload-kak
-hook -group reload-kak global BufWritePost (.*kakrc|.*\.kak) %{
-     resource %val{hook_param}
-}
diff --git a/kak/.config/kak/plugins/.build/bookmarks.kak/config b/kak/.config/kak/plugins/.build/bookmarks.kak/config
deleted file mode 100644 (file)
index d88dc49..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-try %{ 
-
-        hook global WinCreate .* bookmarks-enable
-     } catch %{
-    echo -debug "Error while evaluating 'bookmarks.kak' configuration: %val{error}"
-
-    set-option -add current plug_conf_errors "Error while evaluating 'bookmarks.kak' configuration:"
-    set-option -add current plug_conf_errors %sh{ printf "\n    " }
-    set-option -add current plug_conf_errors %val{error}
-    set-option -add current plug_conf_errors %sh{ printf "\n\n" }
-
-    hook -once -group plug-conf-err global WinDisplay .* %{
-        info -style modal -title "plug.kak error" "%opt{plug_conf_errors}"
-        on-key %{
-            info -style modal
-            execute-keys -with-maps -with-hooks %val{key}
-        }
-    }
-}
diff --git a/kak/.config/kak/plugins/.build/kak-harpoon/config b/kak/.config/kak/plugins/.build/kak-harpoon/config
deleted file mode 100644 (file)
index 8b5a70e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-try %{ 
-
-        hook global WinCreate .* harpoon-add-bindings
-     } catch %{
-    echo -debug "Error while evaluating 'kak-harpoon' configuration: %val{error}"
-
-    set-option -add current plug_conf_errors "Error while evaluating 'kak-harpoon' configuration:"
-    set-option -add current plug_conf_errors %sh{ printf "\n    " }
-    set-option -add current plug_conf_errors %val{error}
-    set-option -add current plug_conf_errors %sh{ printf "\n\n" }
-
-    hook -once -group plug-conf-err global WinDisplay .* %{
-        info -style modal -title "plug.kak error" "%opt{plug_conf_errors}"
-        on-key %{
-            info -style modal
-            execute-keys -with-maps -with-hooks %val{key}
-        }
-    }
-}
diff --git a/kak/.config/kak/plugins/.build/kakoune-smooth-scroll/config b/kak/.config/kak/plugins/.build/kakoune-smooth-scroll/config
deleted file mode 100644 (file)
index 1f93d39..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-try %{ 
-
-        # configuration here
-        # hook global WinCreate [^*].* %{
-        #     hook -once window WinDisplay .* %{
-        #         smooth-scroll-enable
-        #     }
-            hook -group smooth-scroll window User ScrollBegin %{
-                add-highlighter -override window/nl number-lines
-                }
-                hook -group smooth-scroll window User ScrollEnd %{
-                    add-highlighter -override window/nl number-lines -relative -hlcursor
-                    }
-            }
-     } catch %{
-    echo -debug "Error while evaluating 'kakoune-smooth-scroll' configuration: %val{error}"
-
-    set-option -add current plug_conf_errors "Error while evaluating 'kakoune-smooth-scroll' configuration:"
-    set-option -add current plug_conf_errors %sh{ printf "\n    " }
-    set-option -add current plug_conf_errors %val{error}
-    set-option -add current plug_conf_errors %sh{ printf "\n\n" }
-
-    hook -once -group plug-conf-err global WinDisplay .* %{
-        info -style modal -title "plug.kak error" "%opt{plug_conf_errors}"
-        on-key %{
-            info -style modal
-            execute-keys -with-maps -with-hooks %val{key}
-        }
-    }
-}
diff --git a/kak/.config/kak/plugins/.build/powerline.kak/config b/kak/.config/kak/plugins/.build/powerline.kak/config
deleted file mode 100644 (file)
index 9da9dda..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-try %{ 
-
-        powerline-start
-     } catch %{
-    echo -debug "Error while evaluating 'powerline.kak' configuration: %val{error}"
-
-    set-option -add current plug_conf_errors "Error while evaluating 'powerline.kak' configuration:"
-    set-option -add current plug_conf_errors %sh{ printf "\n    " }
-    set-option -add current plug_conf_errors %val{error}
-    set-option -add current plug_conf_errors %sh{ printf "\n\n" }
-
-    hook -once -group plug-conf-err global WinDisplay .* %{
-        info -style modal -title "plug.kak error" "%opt{plug_conf_errors}"
-        on-key %{
-            info -style modal
-            execute-keys -with-maps -with-hooks %val{key}
-        }
-    }
-}
diff --git a/kak/.config/kak/plugins/.build/smarttab.kak/config b/kak/.config/kak/plugins/.build/smarttab.kak/config
deleted file mode 100644 (file)
index c43b50f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-try %{ 
-
-       hook global WinSetOption filetype=(rust|markdown|kak|lisp|scheme|py|sh|perl) expandtab
-       hook global WinSetOption filetype=(makefile|gas) noexpandtab
-       hook global WinSetOption filetype=(c|cpp) smarttab
-     } catch %{
-    echo -debug "Error while evaluating 'smarttab.kak' configuration: %val{error}"
-
-    set-option -add current plug_conf_errors "Error while evaluating 'smarttab.kak' configuration:"
-    set-option -add current plug_conf_errors %sh{ printf "\n    " }
-    set-option -add current plug_conf_errors %val{error}
-    set-option -add current plug_conf_errors %sh{ printf "\n\n" }
-
-    hook -once -group plug-conf-err global WinDisplay .* %{
-        info -style modal -title "plug.kak error" "%opt{plug_conf_errors}"
-        on-key %{
-            info -style modal
-            execute-keys -with-maps -with-hooks %val{key}
-        }
-    }
-}
diff --git a/kak/.config/kak/plugins/bookmarks.kak b/kak/.config/kak/plugins/bookmarks.kak
deleted file mode 160000 (submodule)
index a8ed9af..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit a8ed9af060d6e5367ab54a6da6769d20d96be5c8
diff --git a/kak/.config/kak/plugins/dabruin.kak b/kak/.config/kak/plugins/dabruin.kak
deleted file mode 160000 (submodule)
index 1bb17f3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 1bb17f3ffcee620a7985a4bdcaa07a053e4e9ded
diff --git a/kak/.config/kak/plugins/foot.kak b/kak/.config/kak/plugins/foot.kak
deleted file mode 160000 (submodule)
index 406cbad..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 406cbaddb7daaeb33a308557b4faf94697bcc91a
diff --git a/kak/.config/kak/plugins/kak-harpoon b/kak/.config/kak/plugins/kak-harpoon
deleted file mode 160000 (submodule)
index 15e0a01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 15e0a01d2c5720c576375e7e6b271a5f84dcad2a
diff --git a/kak/.config/kak/plugins/kakoune-filetree b/kak/.config/kak/plugins/kakoune-filetree
deleted file mode 160000 (submodule)
index be8158c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit be8158ce83e295830a48057c0580fe17a843d661
diff --git a/kak/.config/kak/plugins/kakoune-find b/kak/.config/kak/plugins/kakoune-find
deleted file mode 160000 (submodule)
index 09afcc8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 09afcc8520d4c92928fe69da4c370b9979aa90d3
diff --git a/kak/.config/kak/plugins/kakoune-sudo-write b/kak/.config/kak/plugins/kakoune-sudo-write
deleted file mode 160000 (submodule)
index ec0d6d2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit ec0d6d26ceaadd93d6824630ba587b31e442214d
diff --git a/kak/.config/kak/plugins/plug.kak b/kak/.config/kak/plugins/plug.kak
deleted file mode 160000 (submodule)
index f28b3fb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f28b3fb88fbc77d69b1027780cb9a16b0bd7fc76
diff --git a/kak/.config/kak/plugins/powerline.kak b/kak/.config/kak/plugins/powerline.kak
deleted file mode 160000 (submodule)
index 43e60c4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 43e60c48d7f6da98055ee6a4d02fa949e5ef2805
diff --git a/kak/.config/kak/plugins/prelude.kak b/kak/.config/kak/plugins/prelude.kak
deleted file mode 160000 (submodule)
index 5dbdc02..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5dbdc020c546032885c1fdb463e366cc89fc15ad
diff --git a/kak/.config/kak/plugins/shellcheck.kak b/kak/.config/kak/plugins/shellcheck.kak
deleted file mode 160000 (submodule)
index 4e63397..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4e633978c119bbb71f215828f7b59cea71a2c5a4
diff --git a/kak/.config/kak/plugins/smarttab.kak b/kak/.config/kak/plugins/smarttab.kak
deleted file mode 160000 (submodule)
index 86ac659..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 86ac6599b13617ff938905ba4cdd8225d7eb6a2e
diff --git a/local/bin/16.c b/local/bin/16.c
new file mode 100644 (file)
index 0000000..325f2d0
--- /dev/null
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+static void aput( char* c, char bg_col, char fg_col )
+{  int bg, fg;
+   if( bg_col > 7 ) bg = 100 + bg_col-8;
+   else             bg =  40 + bg_col;
+   if( fg_col > 7 ) fg =  90 + fg_col-8;
+   else             fg =  30 + fg_col;
+   printf( "\033[%i;%im%s\033[0;0m", fg, bg, c );
+}
+
+int main( void )
+{  int bg, fg;
+   
+   for( fg = 0; fg <  8; fg += 1 ) aput("    ", fg, 0); putchar('\n');
+   for( fg = 8; fg < 16; fg += 1 ) aput("    ", fg, 0); putchar('\n');
+   putchar('\n'); 
+   for( bg = 0; bg < 16; bg += 1 )
+   {  for( fg = 0; fg < 16; fg += 1 )
+      {   aput( "10", bg, fg );  }
+      putchar('\n');
+   }
+}
+
diff --git a/local/bin/16c b/local/bin/16c
new file mode 100755 (executable)
index 0000000..76c10fb
Binary files /dev/null and b/local/bin/16c differ
diff --git a/local/bin/256colors2.pl b/local/bin/256colors2.pl
new file mode 100755 (executable)
index 0000000..2a880bd
--- /dev/null
@@ -0,0 +1,129 @@
+#!/usr/bin/perl
+# $XTermId: 256colors2.pl,v 1.10 2009/10/10 14:45:26 tom Exp $
+# -----------------------------------------------------------------------------
+# this file is part of xterm
+#
+# Copyright 1999-2007,2009 by Thomas E. Dickey
+# Copyright 2002 by Steve Wall
+# Copyright 1999 by Todd Larason
+# 
+#                         All Rights Reserved
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# 
+# Except as contained in this notice, the name(s) of the above copyright
+# holders shall not be used in advertising or otherwise to promote the
+# sale, use or other dealings in this Software without prior written
+# authorization.
+# -----------------------------------------------------------------------------
+#
+# use the resources for colors 0-15 - usually more-or-less a
+# reproduction of the standard ANSI colors, but possibly more
+# pleasing shades
+
+use strict;
+
+use Getopt::Std;
+
+our ($opt_h, $opt_q, $opt_r);
+&getopts('hqr') || die("Usage: $0 [-q] [-r]");
+die("Usage: $0 [options]\n
+Options:
+  -h  display this message
+  -q  quieter output by merging all palette initialization
+  -r  display the reverse of the usual palette
+") if ( $opt_h);
+
+our ($red, $green, $blue);
+our ($gray, $level, $color);
+
+sub map_cube($) {
+       my $value = $_[0];
+       $value = (5 - $value) if defined($opt_r);
+       return $value;
+}
+
+sub map_gray($) {
+       my $value = $_[0];
+       $value = (23 - $value) if defined($opt_r);
+       return $value;
+}
+
+printf("\x1b]4") if ($opt_q);
+# colors 16-231 are a 6x6x6 color cube
+for ($red = 0; $red < 6; $red++) {
+    for ($green = 0; $green < 6; $green++) {
+       for ($blue = 0; $blue < 6; $blue++) {
+           printf("\x1b]4") unless ($opt_q);
+           printf(";%d;rgb:%2.2x/%2.2x/%2.2x",
+                  16 + (map_cube($red) * 36) + (map_cube($green) * 6) + map_cube($blue),
+                  ($red ? ($red * 40 + 55) : 0),
+                  ($green ? ($green * 40 + 55) : 0),
+                  ($blue ? ($blue * 40 + 55) : 0));
+           printf("\x1b\\") unless ($opt_q);
+       }
+    }
+}
+
+# colors 232-255 are a grayscale ramp, intentionally leaving out
+# black and white
+for ($gray = 0; $gray < 24; $gray++) {
+    $level = (map_gray($gray) * 10) + 8;
+    printf("\x1b]4") unless ($opt_q);
+    printf(";%d;rgb:%2.2x/%2.2x/%2.2x",
+          232 + $gray, $level, $level, $level);
+    printf("\x1b\\") unless ($opt_q);
+}
+printf("\x1b\\") if ($opt_q);
+
+
+# display the colors
+
+# first the system ones:
+print "System colors:\n";
+for ($color = 0; $color < 8; $color++) {
+    print "\x1b[48;5;${color}m  ";
+}
+print "\x1b[0m\n";
+for ($color = 8; $color < 16; $color++) {
+    print "\x1b[48;5;${color}m  ";
+}
+print "\x1b[0m\n\n";
+
+# now the color cube
+print "Color cube, 6x6x6:\n";
+for ($green = 0; $green < 6; $green++) {
+    for ($red = 0; $red < 6; $red++) {
+       for ($blue = 0; $blue < 6; $blue++) {
+           $color = 16 + ($red * 36) + ($green * 6) + $blue;
+           print "\x1b[48;5;${color}m  ";
+       }
+       print "\x1b[0m ";
+    }
+    print "\n";
+}
+
+
+# now the grayscale ramp
+print "Grayscale ramp:\n";
+for ($color = 232; $color < 256; $color++) {
+    print "\x1b[48;5;${color}m  ";
+}
+print "\x1b[0m\n";
diff --git a/local/bin/_emergeworld b/local/bin/_emergeworld
new file mode 100644 (file)
index 0000000..b924b08
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+case "$1" in
+    "start")
+        date +%s > $HOME/.cache/emergestart && emerge -e --keep-going @world
+        ;;
+    "resume")
+       starttime=$(cat $HOME/.cache/emergestart)
+
+       eix '-I*' --format '<installedversions:DATESORT>' | cut -f1,3 >tmplist
+       echo $starttime >>tmplist
+       sort -n tmplist | sed -e/$starttime/q | sed -e'/[0-9]*\t*/s///' | sort | comm -23 - <(sort omitlist) | comm -23 - <(sort /etc/portage/profile/package.provided) >buildlist
+       rm tmplist
+       emerge -a `cat buildlist` --keep-going
diff --git a/local/bin/best_makeopts.sh b/local/bin/best_makeopts.sh
new file mode 100755 (executable)
index 0000000..865e283
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+cpupower frequency-set -g performance -r
+
+PACKAGE="kde-frameworks/plasma"
+
+DISTDIR="/tmp/" emerge -f ${PACKAGE}
+
+for i in {1..32}
+do
+       echo 1 > /proc/sys/vm/drop_caches
+       time DISTDIR="/tmp" EMERGE_DEFAULT_OPTS="" MAKEOPTS="-j${i}" emerge -q1OB ${PACKAGE}
+       echo -ne "\n\n\n"
+done
+
+cpupower frequency-set -g schedutil -r
+
diff --git a/local/bin/colors b/local/bin/colors
new file mode 100755 (executable)
index 0000000..b6b7132
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/bash
+set -e
+
+
+mainFunction () {
+    echo
+    printColors
+    printGuidelines
+}
+
+
+printColor () {
+    local color="${1}"
+
+    printf "\033[1;4%sm     " "${color}"
+    printf "\033[0m    "
+    printf "\033[1;3%smSampleText  " "${color}"
+    printf "\033[0;3%smSampleText  " "${color}"
+    printf "\033[0m\n"
+}
+
+
+printColors () {
+    local color
+    # 0 black
+    # 1 red
+    # 2 green
+    # 3 yellow
+    # 4 blue
+    # 5 magenta / orange
+    # 6 cyan / purple
+    # 7 white
+
+    for color in 0 7; do
+        printColor "${color}"
+    done
+    echo
+
+    for color in 4 5 6; do
+        printColor "${color}"
+    done
+    echo
+
+    for color in 2 3 1; do
+        printColor "${color}"
+    done
+    echo
+}
+
+
+printGuidelines () {
+    echo "A good palette has:"
+    echo "- All colors easy to read."
+    echo "- Similar eye catchiness within the same group, except for monochromes."
+    echo "- Similar or greater eye catchiness in upper groups, including this text."
+    echo "- Similar color within the same line."
+    echo "- The last group as: green yellow red."
+    echo
+}
+
+
+mainFunction
diff --git a/local/bin/colr b/local/bin/colr
new file mode 100755 (executable)
index 0000000..90c0b05
--- /dev/null
@@ -0,0 +1,132 @@
+#!/bin/bash
+
+case $1 in
+    1)
+        set -e
+
+
+        mainFunction () {
+            echo
+            printColors
+            printGuidelines
+        }
+
+
+        printColor () {
+            local color="${1}"
+
+            printf "\033[1;4%sm     " "${color}"
+            printf "\033[0m    "
+            printf "\033[1;3%smSampleText  " "${color}"
+            printf "\033[0;3%smSampleText  " "${color}"
+            printf "\033[0m\n"
+        }
+
+
+        printColors () {
+            local color
+            # 0 black
+            # 1 red
+            # 2 green
+            # 3 yellow
+            # 4 blue
+            # 5 magenta / orange
+            # 6 cyan / purple
+            # 7 white
+
+            for color in 0 7; do
+                printColor "${color}"
+            done
+            echo
+
+            for color in 4 5 6; do
+                printColor "${color}"
+            done
+            echo
+
+            for color in 2 3 1; do
+                printColor "${color}"
+            done
+            echo
+        }
+
+
+        printGuidelines () {
+            echo "A good palette has:"
+            echo "- All colors easy to read."
+            echo "- Similar eye catchiness within the same group, except for monochromes."
+            echo "- Similar or greater eye catchiness in upper groups, including this text."
+            echo "- Similar color within the same line."
+            echo "- The last group as: green yellow red."
+            echo
+        }
+
+
+        mainFunction;;
+
+    2)
+        echo -e "\033[0mNC (No color)"
+        echo -e "\033[1;37mWHITE\t\033[0;30mBLACK"
+        echo -e "\033[0;34mBLUE\t\033[1;34mLIGHT_BLUE"
+        echo -e "\033[0;32mGREEN\t\033[1;32mLIGHT_GREEN"
+        echo -e "\033[0;36mCYAN\t\033[1;36mLIGHT_CYAN"
+        echo -e "\033[0;31mRED\t\033[1;31mLIGHT_RED"
+        echo -e "\033[0;35mPURPLE\t\033[1;35mLIGHT_PURPLE"
+        echo -e "\033[0;33mYELLOW\t\033[1;33mLIGHT_YELLOW"
+        echo -e "\033[1;30mGRAY\t\033[0;37mLIGHT_GRAY";;
+    3)
+        # Description:
+        #
+        #    Prints a color table of 8bg * 8fg * 2 states (regular/bold)
+        #
+        # Copyright:
+        #
+        #    (C) 2009 Wolfgang Frisch <xororand@unfoog.de>
+        #
+        # License:
+        #
+        #    This program is free software: you can redistribute it and/or modify
+        #    it under the terms of the GNU General Public License as published by
+        #    the Free Software Foundation, either version 3 of the License, or
+        #    (at your option) any later version.
+        #
+        #    This program is distributed in the hope that it will be useful,
+        #    but WITHOUT ANY WARRANTY; without even the implied warranty of
+        #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+        #    GNU General Public License for more details.
+        #
+        #    You should have received a copy of the GNU General Public License
+        #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+        echo
+        echo Table for 16-color terminal escape sequences.
+        echo Replace ESC with \\033 in bash.
+        echo
+        echo "Background | Foreground colors"
+        echo "---------------------------------------------------------------------"
+        for((bg=40;bg<=47;bg++)); do
+            for((bold=0;bold<=1;bold++)) do
+                echo -en "\033[0m"" ESC[${bg}m   | "
+                for((fg=30;fg<=37;fg++)); do
+                    if [ $bold == "0" ]; then
+                        echo -en "\033[${bg}m\033[${fg}m [${fg}m  "
+                    else
+                        echo -en "\033[${bg}m\033[1;${fg}m [1;${fg}m"
+                    fi
+                done
+                echo -e "\033[0m"
+            done
+            echo "--------------------------------------------------------------------- "
+        done
+
+        echo
+        echo;;
+    4)
+        for colour in {1..225}
+            do echo -en "\033[38;5;${colour}m38;5;${colour} \n"
+            done | column -x;;
+    *)
+        colr 1
+        echo "Enter a number [1-4] to specify, which demo to run.";;
+esac
+
diff --git a/local/bin/deadlib b/local/bin/deadlib
new file mode 100755 (executable)
index 0000000..1ccf188
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/bash
+lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u;
+
diff --git a/local/bin/kcr-edit-search b/local/bin/kcr-edit-search
new file mode 100755 (executable)
index 0000000..c510649
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Open files from search results.
+#
+# Usage:
+#
+# kcr edit-search [input: <file>:<line>:<column>:<text>]
+
+# Execute the following Kakoune commands.
+#
+# Input: <file>:<line>:<column>:<text>
+# Output: <file>␤<line>␤<column>
+select_each_line='<a-s>_'
+select_search_fields='s^(.+?):(\d+):(\d+):(.+?)$<ret>'
+save_selections='Z'
+select_file_save_and_restore='1s<ret>"fZz'
+select_line_save_and_restore='2s<ret>"f<a-Z>az'
+select_column_save_and_restore='3s<ret>"f<a-Z>az'
+select_data='"fz'
+prepare_output='y%<a-R>a<ret><esc>'
+delete_end_of_file='ged'
+
+kak -f "${select_each_line}${select_search_fields}${save_selections}${select_file_save_and_restore}${select_line_save_and_restore}${select_column_save_and_restore}${select_data}${prepare_output}${delete_end_of_file}" |
+
+while read file; read line; read column; do
+  kcr edit "$file" "+$line:$column"
+done
diff --git a/local/bin/kcr-fzf b/local/bin/kcr-fzf
new file mode 100755 (executable)
index 0000000..5af5259
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+"kcr-fzf-$@"
diff --git a/local/bin/kcr-fzf-buffers b/local/bin/kcr-fzf-buffers
new file mode 100755 (executable)
index 0000000..71efdfe
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Open buffers.
+#
+# Usage:
+#
+# kcr fzf buffers [patterns]
+
+# – fzf (https://github.com/junegunn/fzf)
+# – bat (https://github.com/sharkdp/bat)
+
+kcr get --raw --value buflist |
+grep -F "$*" |
+fzf --preview 'kcr cat --raw {} | bat --file-name {} --style=numbers --color=always --line-range :500' --header='Select a buffer to open' --prompt='(b)>' |
+
+# Open buffers
+while read name; do
+  kcr send buffer "$name"
+done
diff --git a/local/bin/kcr-fzf-files b/local/bin/kcr-fzf-files
new file mode 100755 (executable)
index 0000000..3253bb8
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Open files.
+#
+# Usage:
+#
+# kcr fzf files [paths]
+
+# – fzf (https://github.com/junegunn/fzf)
+# – fd (https://github.com/sharkdp/fd)
+# – bat (https://github.com/sharkdp/bat)
+
+fd --type file . "$@" |
+fzf --preview 'bat --style=numbers --color=always --line-range :500 {}' --header='Select a file to open' --prompt='(f)>' |
+
+# Open files
+while read file; do
+  kcr edit "$file"
+done
diff --git a/local/bin/kcr-fzf-grep b/local/bin/kcr-fzf-grep
new file mode 100755 (executable)
index 0000000..e3605c8
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Open files by content.
+#
+# Usage:
+#
+# kcr fzf grep [paths]
+
+# – fzf (https://github.com/junegunn/fzf)
+# – ripgrep (https://github.com/BurntSushi/ripgrep)
+
+# Not pretty but robust.
+# https://github.com/junegunn/fzf/issues/2581
+export PATHS_PATH=$(mktemp)
+trap 'rm "$PATHS_PATH"' EXIT
+for path do
+  echo "$path" >> "$PATHS_PATH"
+done
+
+SHELL=sh fzf --phony --delimiter ':' --ansi --bind 'change:reload(while read path; do set -- "$@" "$path"; done < "$PATHS_PATH"; rg --color=always --column --with-filename --fixed-strings -- {q} "$@" || true),enter:execute(kcr edit {1} +{2}:{3})+abort' --preview 'highlight_line={2} line_range_begin=$((line = highlight_line - (FZF_PREVIEW_LINES / 4) && line < 1 ? 1 : line)) line_range_end=$((line_range_begin + FZF_PREVIEW_LINES)) && bat --style=numbers --color=always --line-range "$line_range_begin:$line_range_end" --highlight-line {2} {1} 2> /dev/null' --header='Select a file to open' --prompt='(g)>'
diff --git a/local/bin/kcr-fzf-shell b/local/bin/kcr-fzf-shell
new file mode 100755 (executable)
index 0000000..33faa3a
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# Start an interactive shell.
+#
+# Usage:
+#
+# kcr fzf shell [command] [arguments]
+
+# – fzf (https://github.com/junegunn/fzf)
+
+set_environment() {
+  session=$1 client=${2#null} buffer_name=${3#null} working_directory=$4
+}
+
+# Run fzf with the session list
+rows=$(
+  kcr list --raw |
+  fzf --header='Select a session to switch to' --prompt='(s)>'
+)
+
+IFS='
+'
+for row in $rows; do
+  IFS='        '
+  set_environment $row
+
+  # Start an interactive shell
+  KAKOUNE_SESSION=$session KAKOUNE_CLIENT=$client kcr shell "$@"
+done
diff --git a/local/bin/launch-waybar b/local/bin/launch-waybar
new file mode 100755 (executable)
index 0000000..9eee56c
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/style.css"
+
+trap "killall waybar" EXIT
+
+while true; do
+    waybar &
+    inotifywait -e create,modify $CONFIG_FILES
+    killall waybar
+done
+
diff --git a/local/bin/loadcolors.sh b/local/bin/loadcolors.sh
new file mode 100755 (executable)
index 0000000..5a4a1dd
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+openrgb -p simple
+
diff --git a/local/bin/mkchroot b/local/bin/mkchroot
new file mode 100755 (executable)
index 0000000..6a5f0b2
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+if [ "$UID" != "0" ]
+then
+     echo "You have to be root" >&2
+     exit 1
+fi
+
+CHROOT=$1
+
+if [ ! -f $CHROOT.in ]
+then
+     for mnt in /dev /dev/pts /proc /sys
+     do
+          echo "-- Mounting $mnt on $CHROOT/$mnt"
+          mount -o bind $mnt $CHROOT/$mnt || exit 1
+     done
+
+     if [ -f $CHROOT.shared ]
+     then
+          cat $CHROOT.shared | while read entry
+          do
+               folder=${entry%:*}
+               mnt=${entry#*:}
+
+               echo "-- Mounting $folder on $CHROOT/$mnt"
+               mkdir -p $CHROOT/$mnt || exit 1
+               mount -o bind $folder $CHROOT/$mnt || exit 1
+          done
+     fi
+
+     echo "1" > $CHROOT.in
+else
+     n=`cat $CHROOT.in`
+     let n=$n+1
+     echo "$n" > $CHROOT.in
+fi
+
+echo "-- Entering chroot"
+chroot $CHROOT /usr/bin/env HOME=/root TERM=$TERM /bin/bash --login +h || exit 1;
+
+n=`cat $CHROOT.in`
+let n=$n-1
+
+if [ "$n" = "0" ]
+then
+     for umnt in /sys /proc /dev/pts /dev
+     do
+          echo "-- Umounting $CHROOT/$umnt"
+          umount $CHROOT/$umnt || exit 1
+     done
+
+     if [ -f $CHROOT.shared ]
+     then
+          cat $CHROOT.shared | while read entry
+          do
+               mnt=${entry#*:}
+
+               echo "-- Umounting $CHROOT/$mnt"
+               umount $CHROOT/$mnt || exit 1
+          done
+     fi
+
+     rm $CHROOT.in
+else
+     echo "$n" > $CHROOT.in
+fi
+
diff --git a/local/bin/rndwallpaper b/local/bin/rndwallpaper
new file mode 100755 (executable)
index 0000000..5732edb
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+WALLDIR="$HOME/Bilder/Wallpapers"
+
+# set random wallpaper
+case "$1" in
+    dblquote)
+        find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1 | sed 's/^/"/;s/$/"/'
+        ;;
+    quote)
+        find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1 | sed "s/^/'/;s/$/'/"
+        ;;
+    swww)
+        swww img "$(find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1)"
+        ;;
+    *)
+        find "$WALLDIR" -type f \( -iname \*jpg -o -iname \*jpeg -o -iname \*png -o -iname \*webp \) | sort -R | tail -n1
+        ;;
+esac
+
diff --git a/local/bin/rofi b/local/bin/rofi
new file mode 120000 (symlink)
index 0000000..0253838
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/wofi
\ No newline at end of file
diff --git a/local/bin/songinfo b/local/bin/songinfo
new file mode 100755 (executable)
index 0000000..d6d2047
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+music_dir="/mnt/multimedia/Musik"
+previewdir="$HOME/.config/ncmpcpp/previews"
+filename="$(mpc --format "$music_dir"/%file% current)"
+previewname="$previewdir/$(mpc --format %album% current | base64).png"
+
+[ -e "$previewname" ] || ffmpeg -y -i "$filename" -an -vf scale=128:128 "$previewname" > /dev/null 2>&1
+
+notify-send -r 27072 "Now Playing" "$(mpc --format '%title% \n%artist% - %album%' current)" -i "$previewname"
diff --git a/local/bin/tasks_redirect.sh b/local/bin/tasks_redirect.sh
new file mode 100755 (executable)
index 0000000..904b071
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+echo "mounting the cpuset filesystem"
+if ! [ -d /dev/cpuset ]; then
+  mkdir /dev/cpuset
+  mount -t cpuset cpuset /dev/cpuset
+fi
+
+_prefix=""
+
+if [ -f /dev/cpuset/cpuset.cpus ];then
+  _prefix="cpuset."
+fi
+
+if ! [ -d /dev/cpuset/theUgly ]; then
+  echo "Creating theUgly"
+  mkdir /dev/cpuset/theUgly
+fi
+
+echo "Assigning CCX0's cores to the ugly cpu set"
+/bin/echo 8-15,24-31 > /dev/cpuset/theUgly/${_prefix}cpus
+
+echo "Giving the Ugly memory node 0"
+/bin/echo 0 > /dev/cpuset/theUgly/${_prefix}mems
+
+echo "Making the Ugly cpu exlusive"
+/bin/echo 1 > /dev/cpuset/theUgly/${_prefix}cpu_exclusive
+
+echo "Redirecting Processes"
+while read p; do
+  echo "Redirecting PID $p"
+  /bin/echo $p > /dev/cpuset/theUgly/tasks
+done < /dev/cpuset/tasks
+
+if ! [ -d /dev/cpuset/theGood ]; then
+  echo "Creating theGood"
+  mkdir /dev/cpuset/theGood
+fi
+
+echo "Assigning CCX1's cores to the Good cpu set"
+/bin/echo 0-7,16-23 > /dev/cpuset/theGood/${_prefix}cpus
+
+echo "Giving the Good memory node 0"
+/bin/echo 0 > /dev/cpuset/theGood/${_prefix}mems
+
+echo "Making the Good cpu exlusive"
+/bin/echo 1 > /dev/cpuset/theGood/${_prefix}cpu_exclusive
+
+read -p "Redirect Lutris to theGood ? y/n: "
+if [ "$REPLY" = "y" ];then
+  echo "Redirecting Lutris to theGood"
+  for i in  `pgrep lutris`; do echo $i > /dev/cpuset/theGood/tasks; done
+fi
+
+
+read -p "Redirect Steam to theGood ? y/n: "
+if [ "$REPLY" = "y" ];then
+  echo "Redirecting Lutris to theGood"
+  for i in  `pgrep steam`; do echo $i > /dev/cpuset/theGood/tasks; done
+fi
diff --git a/local/bin/winecleaner b/local/bin/winecleaner
new file mode 100755 (executable)
index 0000000..3a28176
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+function yes_or_no {
+    while true; do
+        read -rp "$* [y/n]: " yn
+        case $yn in
+            [Yy]*) return 0  ;;
+            [Nn]*) echo "Aborted" ; return  1 ;;
+        esac
+    done
+}
+
+PSOUTPUT="$(pgrep -l exe)"
+
+echo "Grepping ps for wine executables..."
+if [ -n "$PSOUTPUT" ]; then
+    echo "The following processes have been found:"
+    echo "$PSOUTPUT"
+    yes_or_no "Would you like to send sigkill to all processes?" && pgrep exe | xargs kill
+    echo "Verifying that all processes have been cleaned..."
+    sleep 7
+    PSOUTPUT="$(pgrep -l exe)"
+    if [ -n "$PSOUTPUT" ]; then
+        echo "Still some processes around. Please remove them manually..."
+        echo "$PSOUTPUT"
+    else
+        echo "All processes have been cleaned!"
+    fi
+else
+    echo "No wine executables found"
+fi
diff --git a/mako/.config/mako/config b/mako/.config/mako/config
deleted file mode 100644 (file)
index 6e722f2..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-## Mako configuration file
-
-# GLOBAL CONFIGURATION OPTIONS
-max-history=100
-sort=-time
-
-# BINDING OPTIONS
-on-button-left=dismiss
-on-button-middle=none
-on-button-right=dismiss-all
-on-touch=dismiss
-on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
-
-# STYLE OPTIONS
-font=LiterationMono Nerd Font 16
-width=500
-height=132
-margin=10
-padding=15
-border-size=2
-border-radius=0
-icons=1
-max-icon-size=128
-icon-location=left
-markup=1
-actions=1
-history=1
-text-alignment=left
-default-timeout=5000
-ignore-timeout=0
-max-visible=5
-layer=overlay
-anchor=bottom-center
-
-
-background-color=#181818cc
-text-color=#d8d8d8
-border-color=#7cafc2
-
-[urgency=low]
-background-color=#181818cc
-text-color=#f7ca88
-border-color=#7cafc2
-
-[urgency=high]
-background-color=#181818cc
-text-color=#ab4642
-border-color=#7cafc2
-
-[category=mpd]
-border-color=#f9e2af
-default-timeout=2000
-group-by=category
diff --git a/mpd/.config/mpd/mpd.conf b/mpd/.config/mpd/mpd.conf
deleted file mode 100644 (file)
index 86cc159..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-user "andy"
-bind_to_address "localhost"
-
-log_file "~/mpd/log"
-pid_file "~/mpd/pid"
-state_file "~/mpd/state"
-sticker_file "~/mpd/sticker.sql"
-
-database {
-       plugin "simple"
-       path "~/mpd/database"
-       cache_directory "~/.cache/mpd"
-}
-
-auto_update    "yes"
-auto_update_depth "2"
-
-filesystem_charset "UTF-8"
-music_directory "/mnt/multimedia/Musik"
-playlist_directory "/mnt/multimedia/Musik/Playlists"
-
-
-input {
-        plugin "curl"
-}
-
-audio_output {
-       type    "pipewire"
-       name    "Pipewire Output"
-}
-
-audio_output {
-       type    "fifo"
-       name    "mpdFIFO"
-       path    "/tmp/mpd.fifo"
-       enabled "yes"
-       format  "44100:16:2"
-}
-
diff --git a/ncmpcpp/.config/ncmpcpp/bindings b/ncmpcpp/.config/ncmpcpp/bindings
deleted file mode 100644 (file)
index 20e26f8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-def_key "j"
-  scroll_down
-def_key "k"
-  scroll_up
-def_key "J"
-  move_sort_order_down
-def_key "K"
-  move_sort_order_up
-def_key "h"
-  previous_column
-def_key "l"
-  next_column
-def_key "ctrl-b"
-  page_up
-def_key "ctrl-u"
-  page_up
-def_key "ctrl-f"
-  page_down
-def_key "ctrl-d"
-  page_down
-def_key "g"
-  move_home
-def_key "G"
-  move_end
-def_key "n"
-  next_found_item
-def_key "N"
-  previous_found_item
-def_key "9"
-  show_lyrics
-def_key "0"
-  show_clock
diff --git a/ncmpcpp/.config/ncmpcpp/config b/ncmpcpp/.config/ncmpcpp/config
deleted file mode 100644 (file)
index d1deba7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-visualizer_output_name = mpdFIFO
-visualizer_fps = 60
-visualizer_in_stereo = yes
-visualizer_spectrum_hz_min = 28
-visualizer_spectrum_hz_max = 18000
-visualizer_spectrum_smooth_look = yes
-visualizer_spectrum_gain = 1.5
-
-volume_change_step = 5
-user_interface = alternative
-#progressbar_look = ⤼⤻
-store_lyrics_in_song_dir = no
-generate_win32_compatible_filenames = yes
-follow_now_playing_lyrics = yes
-display_bitrate = yes
-display_remaining_time = yes
-use_console_editor = yes
-
-execute_on_song_change = $HOME/.local/bin/songinfo
-
diff --git a/ncmpcpp/.config/ncmpcpp/previews/default_cover.png b/ncmpcpp/.config/ncmpcpp/previews/default_cover.png
deleted file mode 100644 (file)
index 0574323..0000000
Binary files a/ncmpcpp/.config/ncmpcpp/previews/default_cover.png and /dev/null differ
diff --git a/ncmpcpp/bindings b/ncmpcpp/bindings
deleted file mode 100644 (file)
index 20e26f8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-def_key "j"
-  scroll_down
-def_key "k"
-  scroll_up
-def_key "J"
-  move_sort_order_down
-def_key "K"
-  move_sort_order_up
-def_key "h"
-  previous_column
-def_key "l"
-  next_column
-def_key "ctrl-b"
-  page_up
-def_key "ctrl-u"
-  page_up
-def_key "ctrl-f"
-  page_down
-def_key "ctrl-d"
-  page_down
-def_key "g"
-  move_home
-def_key "G"
-  move_end
-def_key "n"
-  next_found_item
-def_key "N"
-  previous_found_item
-def_key "9"
-  show_lyrics
-def_key "0"
-  show_clock
diff --git a/ncmpcpp/config b/ncmpcpp/config
deleted file mode 100644 (file)
index d1deba7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-visualizer_output_name = mpdFIFO
-visualizer_fps = 60
-visualizer_in_stereo = yes
-visualizer_spectrum_hz_min = 28
-visualizer_spectrum_hz_max = 18000
-visualizer_spectrum_smooth_look = yes
-visualizer_spectrum_gain = 1.5
-
-volume_change_step = 5
-user_interface = alternative
-#progressbar_look = ⤼⤻
-store_lyrics_in_song_dir = no
-generate_win32_compatible_filenames = yes
-follow_now_playing_lyrics = yes
-display_bitrate = yes
-display_remaining_time = yes
-use_console_editor = yes
-
-execute_on_song_change = $HOME/.local/bin/songinfo
-
diff --git a/ncmpcpp/previews/Tm9sYQo=.png b/ncmpcpp/previews/Tm9sYQo=.png
deleted file mode 100644 (file)
index 9483408..0000000
Binary files a/ncmpcpp/previews/Tm9sYQo=.png and /dev/null differ
diff --git a/ncmpcpp/previews/default_cover.png b/ncmpcpp/previews/default_cover.png
deleted file mode 100644 (file)
index 0574323..0000000
Binary files a/ncmpcpp/previews/default_cover.png and /dev/null differ
diff --git a/qutebrowser/.config/qutebrowser/autoconfig.yml b/qutebrowser/.config/qutebrowser/autoconfig.yml
deleted file mode 100644 (file)
index 66fde83..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# If a config.py file exists, this file is ignored unless it's explicitly loaded
-# via config.load_autoconfig(). For more information, see:
-# https://github.com/qutebrowser/qutebrowser/blob/main/doc/help/configuring.asciidoc#loading-autoconfigyml
-# DO NOT edit this file by hand, qutebrowser will overwrite it.
-# Instead, create a config.py - see :help for details.
-
-config_version: 2
-settings:
-  tabs.width:
-    global: 320
diff --git a/qutebrowser/.config/qutebrowser/config.py b/qutebrowser/.config/qutebrowser/config.py
deleted file mode 100644 (file)
index 1b1e36a..0000000
+++ /dev/null
@@ -1,1260 +0,0 @@
-# Autogenerated config.py
-#
-# NOTE: config.py is intended for advanced users who are comfortable
-# with manually migrating the config file on qutebrowser upgrades. If
-# you prefer, you can also configure qutebrowser using the
-# :set/:bind/:config-* commands without having to write a config.py
-# file.
-#
-# Documentation:
-#   qute://help/configuring.html
-#   qute://help/settings.html
-
-# Change the argument to True to still load settings configured via autoconfig.yml
-config.load_autoconfig(False)
-
-# Require a confirmation before quitting the application.
-# Type: ConfirmQuit
-# Valid values:
-#   - always: Always show a confirmation.
-#   - multiple-tabs: Show a confirmation if multiple tabs are opened.
-#   - downloads: Show a confirmation if downloads are running
-#   - never: Never show a confirmation.
-c.confirm_quit = ['downloads']
-
-# When to show a changelog after qutebrowser was upgraded.
-# Type: String
-# Valid values:
-#   - major: Show changelog for major upgrades (e.g. v2.0.0 -> v3.0.0).
-#   - minor: Show changelog for major and minor upgrades (e.g. v2.0.0 -> v2.1.0).
-#   - patch: Show changelog for major, minor and patch upgrades (e.g. v2.0.0 -> v2.0.1).
-#   - never: Never show changelog after upgrades.
-c.changelog_after_upgrade = 'patch'
-
-# How to open links in an existing instance if a new one is launched.
-# This happens when e.g. opening a link from a terminal. See
-# `new_instance_open_target_window` to customize in which window the
-# link is opened in.
-# Type: String
-# Valid values:
-#   - tab: Open a new tab in the existing window and activate the window.
-#   - tab-bg: Open a new background tab in the existing window and activate the window.
-#   - tab-silent: Open a new tab in the existing window without activating the window.
-#   - tab-bg-silent: Open a new background tab in the existing window without activating the window.
-#   - window: Open in a new window.
-#   - private-window: Open in a new private window.
-c.new_instance_open_target = 'tab-bg'
-
-# Load a restored tab as soon as it takes focus.
-# Type: Bool
-c.session.lazy_restore = True
-
-# Backend to use to display websites. qutebrowser supports two different
-# web rendering engines / backends, QtWebEngine and QtWebKit (not
-# recommended). QtWebEngine is Qt's official successor to QtWebKit, and
-# both the default/recommended backend. It's based on a stripped-down
-# Chromium and regularly updated with security fixes and new features by
-# the Qt project: https://wiki.qt.io/QtWebEngine QtWebKit was
-# qutebrowser's original backend when the project was started. However,
-# support for QtWebKit was discontinued by the Qt project with Qt 5.6 in
-# 2016. The development of QtWebKit was picked up in an official fork:
-# https://github.com/qtwebkit/qtwebkit - however, the project seems to
-# have stalled again. The latest release (5.212.0 Alpha 4) from March
-# 2020 is based on a WebKit version from 2016, with many known security
-# vulnerabilities. Additionally, there is no process isolation and
-# sandboxing. Due to all those issues, while support for QtWebKit is
-# still available in qutebrowser for now, using it is strongly
-# discouraged.
-# Type: String
-# Valid values:
-#   - webengine: Use QtWebEngine (based on Chromium - recommended).
-#   - webkit: Use QtWebKit (based on WebKit, similar to Safari - many known security issues!).
-c.backend = 'webengine'
-
-# Force software rendering for QtWebEngine. This is needed for
-# QtWebEngine to work with Nouveau drivers and can be useful in other
-# scenarios related to graphic issues.
-# Type: String
-# Valid values:
-#   - software-opengl: Tell LibGL to use a software implementation of GL (`LIBGL_ALWAYS_SOFTWARE` / `QT_XCB_FORCE_SOFTWARE_OPENGL`)
-#   - qt-quick: Tell Qt Quick to use a software renderer instead of OpenGL. (`QT_QUICK_BACKEND=software`)
-#   - chromium: Tell Chromium to disable GPU support and use Skia software rendering instead. (`--disable-gpu`)
-#   - none: Don't force software rendering.
-c.qt.force_software_rendering = 'chromium'
-
-# Force a Qt platform to use. This sets the `QT_QPA_PLATFORM`
-# environment variable and is useful to force using the XCB plugin when
-# running QtWebEngine on Wayland.
-# Type: String
-c.qt.force_platform = None
-
-# Force a Qt platformtheme to use. This sets the `QT_QPA_PLATFORMTHEME`
-# environment variable which controls dialogs like the filepicker. By
-# default, Qt determines the platform theme based on the desktop
-# environment.
-# Type: String
-c.qt.force_platformtheme = 'qt6ct'
-
-# Which Chromium process model to use. Alternative process models use
-# less resources, but decrease security and robustness. See the
-# following pages for more details:    -
-# https://www.chromium.org/developers/design-documents/process-models
-# - https://doc.qt.io/qt-6/qtwebengine-features.html#process-models
-# Type: String
-# Valid values:
-#   - process-per-site-instance: Pages from separate sites are put into separate processes and separate visits to the same site are also isolated.
-#   - process-per-site: Pages from separate sites are put into separate processes. Unlike Process per Site Instance, all visits to the same site will share an OS process. The benefit of this model is reduced memory consumption, because more web pages will share processes. The drawbacks include reduced security, robustness, and responsiveness.
-#   - single-process: Run all tabs in a single process. This should be used for debugging purposes only, and it disables `:open --private`.
-c.qt.chromium.process_model = 'process-per-site-instance'
-
-# Turn on Qt HighDPI scaling. This is equivalent to setting
-# QT_ENABLE_HIGHDPI_SCALING=1 (Qt >= 5.14) in the environment. It's off
-# by default as it can cause issues with some bitmap fonts. As an
-# alternative to this, it's possible to set font sizes and the
-# `zoom.default` setting.
-# Type: Bool
-c.qt.highdpi = False
-
-# Always restore open sites when qutebrowser is reopened. Without this
-# option set, `:wq` (`:quit --save`) needs to be used to save open tabs
-# (and restore them), while quitting qutebrowser in any other way will
-# not save/restore the session. By default, this will save to the
-# session which was last loaded. This behavior can be customized via the
-# `session.default_name` setting.
-# Type: Bool
-c.auto_save.session = True
-
-# Automatically start playing `<video>` elements.
-# Type: Bool
-c.content.autoplay = False
-
-# Size (in bytes) of the HTTP network cache. Null to use the default
-# value. With QtWebEngine, the maximum supported value is 2147483647 (~2
-# GB).
-# Type: Int
-c.content.cache.size = 0
-
-# Allow websites to read canvas elements. Note this is needed for some
-# websites to work properly.
-# Type: Bool
-c.content.canvas_reading = True
-
-# Which cookies to accept. With QtWebEngine, this setting also controls
-# other features with tracking capabilities similar to those of cookies;
-# including IndexedDB, DOM storage, filesystem API, service workers, and
-# AppCache. Note that with QtWebKit, only `all` and `never` are
-# supported as per-domain values. Setting `no-3rdparty` or `no-
-# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
-# `all`. If this setting is used with URL patterns, the pattern gets
-# applied to the origin/first party URL of the page making the request,
-# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
-# from URLs, so URL patterns using paths will not match. With
-# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
-# you will typically need to set this setting for `example.com` when the
-# cookie is set on `somesubdomain.example.com` for it to work properly.
-# To debug issues with this setting, start qutebrowser with `--debug
-# --logfilter network --debug-flag log-cookies` which will show all
-# cookies being set.
-# Type: String
-# Valid values:
-#   - all: Accept all cookies.
-#   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
-#   - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
-#   - never: Don't accept cookies at all.
-config.set('content.cookies.accept', 'all', 'chrome-devtools://*')
-
-# Which cookies to accept. With QtWebEngine, this setting also controls
-# other features with tracking capabilities similar to those of cookies;
-# including IndexedDB, DOM storage, filesystem API, service workers, and
-# AppCache. Note that with QtWebKit, only `all` and `never` are
-# supported as per-domain values. Setting `no-3rdparty` or `no-
-# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
-# `all`. If this setting is used with URL patterns, the pattern gets
-# applied to the origin/first party URL of the page making the request,
-# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
-# from URLs, so URL patterns using paths will not match. With
-# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
-# you will typically need to set this setting for `example.com` when the
-# cookie is set on `somesubdomain.example.com` for it to work properly.
-# To debug issues with this setting, start qutebrowser with `--debug
-# --logfilter network --debug-flag log-cookies` which will show all
-# cookies being set.
-# Type: String
-# Valid values:
-#   - all: Accept all cookies.
-#   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
-#   - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
-#   - never: Don't accept cookies at all.
-config.set('content.cookies.accept', 'all', 'devtools://*')
-
-# Which cookies to accept. With QtWebEngine, this setting also controls
-# other features with tracking capabilities similar to those of cookies;
-# including IndexedDB, DOM storage, filesystem API, service workers, and
-# AppCache. Note that with QtWebKit, only `all` and `never` are
-# supported as per-domain values. Setting `no-3rdparty` or `no-
-# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
-# `all`. If this setting is used with URL patterns, the pattern gets
-# applied to the origin/first party URL of the page making the request,
-# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
-# from URLs, so URL patterns using paths will not match. With
-# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
-# you will typically need to set this setting for `example.com` when the
-# cookie is set on `somesubdomain.example.com` for it to work properly.
-# To debug issues with this setting, start qutebrowser with `--debug
-# --logfilter network --debug-flag log-cookies` which will show all
-# cookies being set.
-# Type: String
-# Valid values:
-#   - all: Accept all cookies.
-#   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
-#   - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
-#   - never: Don't accept cookies at all.
-c.content.cookies.accept = 'no-3rdparty'
-
-# Default encoding to use for websites. The encoding must be a string
-# describing an encoding such as _utf-8_, _iso-8859-1_, etc.
-# Type: String
-c.content.default_encoding = '_utf-8_,iso-8859-1'
-
-# Limit fullscreen to the browser window (does not expand to fill the
-# screen).
-# Type: Bool
-c.content.fullscreen.window = True
-
-# Try to pre-fetch DNS entries to speed up browsing.
-# Type: Bool
-c.content.dns_prefetch = False
-
-# Allow websites to request geolocations.
-# Type: BoolAsk
-# Valid values:
-#   - true
-#   - false
-#   - ask
-config.set('content.geolocation', False, 'https://www.clubderdampfer.de')
-
-# Allow websites to request geolocations.
-# Type: BoolAsk
-# Valid values:
-#   - true
-#   - false
-#   - ask
-config.set('content.geolocation', False, 'https://www.r-m.de')
-
-# Value to send in the `Accept-Language` header. Note that the value
-# read from JavaScript is always the global value.
-# Type: String
-config.set('content.headers.accept_language', '', 'https://matchmaker.krunker.io/*')
-
-# Value to send in the `Accept-Language` header. Note that the value
-# read from JavaScript is always the global value.
-# Type: String
-c.content.headers.accept_language = 'en-US,en;q=0.9'
-
-# Value to send in the `DNT` header. When this is set to true,
-# qutebrowser asks websites to not track your identity. If set to null,
-# the DNT header is not sent at all.
-# Type: Bool
-c.content.headers.do_not_track = False
-
-# User agent to send.  The following placeholders are defined:  *
-# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
-# The underlying WebKit version (set to a fixed value   with
-# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
-# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
-# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
-# QtWebEngine. * `{upstream_browser_version}`: The corresponding
-# Safari/Chrome version. * `{qutebrowser_version}`: The currently
-# running qutebrowser version.  The default value is equal to the
-# unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
-# read from JavaScript is always the global value. With QtWebEngine
-# between 5.12 and 5.14 (inclusive), changing the value exposed to
-# JavaScript requires a restart.
-# Type: FormatString
-config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}', 'https://web.whatsapp.com/')
-
-# User agent to send.  The following placeholders are defined:  *
-# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
-# The underlying WebKit version (set to a fixed value   with
-# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
-# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
-# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
-# QtWebEngine. * `{upstream_browser_version}`: The corresponding
-# Safari/Chrome version. * `{qutebrowser_version}`: The currently
-# running qutebrowser version.  The default value is equal to the
-# unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
-# read from JavaScript is always the global value. With QtWebEngine
-# between 5.12 and 5.14 (inclusive), changing the value exposed to
-# JavaScript requires a restart.
-# Type: FormatString
-config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0', 'https://accounts.google.com/*')
-
-# User agent to send.  The following placeholders are defined:  *
-# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
-# The underlying WebKit version (set to a fixed value   with
-# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
-# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
-# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
-# QtWebEngine. * `{upstream_browser_version}`: The corresponding
-# Safari/Chrome version. * `{qutebrowser_version}`: The currently
-# running qutebrowser version.  The default value is equal to the
-# unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
-# read from JavaScript is always the global value. With QtWebEngine
-# between 5.12 and 5.14 (inclusive), changing the value exposed to
-# JavaScript requires a restart.
-# Type: FormatString
-config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112 Safari/537.36', 'https://*.slack.com/*')
-
-# Enable the ad/host blocker
-# Type: Bool
-c.content.blocking.enabled = True
-
-# Block subdomains of blocked hosts. Note: If only a single subdomain is
-# blocked but should be allowed, consider using
-# `content.blocking.whitelist` instead.
-# Type: Bool
-c.content.blocking.hosts.block_subdomains = True
-
-# List of URLs to ABP-style adblocking rulesets.  Only used when Brave's
-# ABP-style adblocker is used (see `content.blocking.method`).  You can
-# find an overview of available lists here:
-# https://adblockplus.org/en/subscriptions - note that the special
-# `subscribe.adblockplus.org` links aren't handled by qutebrowser, you
-# will instead need to find the link to the raw `.txt` file (e.g. by
-# extracting it from the `location` parameter of the subscribe URL and
-# URL-decoding it).
-# Type: List of Url
-c.content.blocking.adblock.lists = ['https://easylist.to/easylist/easylist.txt', 'https://easylist.to/easylist/easyprivacy.txt']
-
-# A list of patterns that should always be loaded, despite being blocked
-# by the ad-/host-blocker. Local domains are always exempt from
-# adblocking. Note this whitelists otherwise blocked requests, not
-# first-party URLs. As an example, if `example.org` loads an ad from
-# `ads.example.org`, the whitelist entry could be
-# `https://ads.example.org/*`. If you want to disable the adblocker on a
-# given page, use the `content.blocking.enabled` setting with a URL
-# pattern instead.
-# Type: List of UrlPattern
-c.content.blocking.whitelist = ['piwik.org']
-
-# Load images automatically in web pages.
-# Type: Bool
-config.set('content.images', True, 'chrome-devtools://*')
-
-# Load images automatically in web pages.
-# Type: Bool
-config.set('content.images', True, 'devtools://*')
-
-# Allow JavaScript to read from or write to the clipboard. With
-# QtWebEngine, writing the clipboard as response to a user interaction
-# is always allowed.
-# Type: String
-# Valid values:
-#   - none: Disable access to clipboard.
-#   - access: Allow reading from and writing to the clipboard.
-#   - access-paste: Allow accessing the clipboard and pasting clipboard content.
-config.set('content.javascript.clipboard', 'access', 'wago.io')
-
-# Allow JavaScript to read from or write to the clipboard. With
-# QtWebEngine, writing the clipboard as response to a user interaction
-# is always allowed.
-# Type: String
-# Valid values:
-#   - none: Disable access to clipboard.
-#   - access: Allow reading from and writing to the clipboard.
-#   - access-paste: Allow accessing the clipboard and pasting clipboard content.
-config.set('content.javascript.clipboard', 'access', 'wowhead.com')
-
-# Enable JavaScript.
-# Type: Bool
-config.set('content.javascript.enabled', True, 'chrome-devtools://*')
-
-# Enable JavaScript.
-# Type: Bool
-config.set('content.javascript.enabled', True, 'devtools://*')
-
-# Enable JavaScript.
-# Type: Bool
-config.set('content.javascript.enabled', True, 'chrome://*/*')
-
-# Enable JavaScript.
-# Type: Bool
-config.set('content.javascript.enabled', True, 'qute://*/*')
-
-# Enable JavaScript.
-# Type: Bool
-c.content.javascript.enabled = True
-
-# Javascript messages to *not* show in the UI, despite a corresponding
-# `content.javascript.log_message.levels` setting. Both keys and values
-# are glob patterns, with the key matching the location of the error,
-# and the value matching the error message. By default, the
-# https://web.dev/csp/[Content security policy] violations triggered by
-# qutebrowser's stylesheet handling are excluded, as those errors are to
-# be expected and can't be easily handled by the underlying code.
-# Type: Dict
-c.content.javascript.log_message.excludes = {'userscript:_qute_stylesheet': ['*Refused to apply inline style because it violates the following Content Security Policy directive: *']}
-
-# Allow locally loaded documents to access remote URLs.
-# Type: Bool
-config.set('content.local_content_can_access_remote_urls', True, 'file:///home/andy/.local/share/qutebrowser/userscripts/*')
-
-# Allow locally loaded documents to access other local URLs.
-# Type: Bool
-config.set('content.local_content_can_access_file_urls', False, 'file:///home/andy/.local/share/qutebrowser/userscripts/*')
-
-# Allow websites to show notifications.
-# Type: BoolAsk
-# Valid values:
-#   - true
-#   - false
-#   - ask
-c.content.notifications.enabled = True
-
-# What notification presenter to use for web notifications. Note that
-# not all implementations support all features of notifications: - The
-# `qt` and `systray` options only support showing one notification at
-# the time   and ignore the `tag` option to replace existing
-# notifications. - The `herbe` option only supports showing one
-# notification at the time and doesn't   show icons. - The `messages`
-# option doesn't show icons and doesn't support the `click` and
-# `close` events.
-# Type: String
-# Valid values:
-#   - auto: Tries `libnotify`, `systray` and `messages`, uses the first one available without showing error messages.
-#   - qt: Use Qt's native notification presenter, based on a system tray icon. Switching from or to this value requires a restart of qutebrowser.
-#   - libnotify: Shows messages via DBus in a libnotify-compatible way. If DBus isn't available, falls back to `systray` or `messages`, but shows an error message.
-#   - systray: Use a notification presenter based on a systray icon. Falls back to `libnotify` or `messages` if not systray is available. This is a reimplementation of the `qt` setting value, but with the possibility to switch to it at runtime.
-#   - messages: Show notifications as qutebrowser messages. Most notification features aren't available.
-#   - herbe: (experimental!) Show notifications using herbe (github.com/dudik/herbe). Most notification features aren't available.
-c.content.notifications.presenter = 'auto'
-
-# Display PDF files via PDF.js in the browser without showing a download
-# prompt. Note that the files can still be downloaded by clicking the
-# download button in the pdf.js viewer. With this set to `false`, the
-# `:prompt-open-download --pdfjs` command (bound to `<Ctrl-p>` by
-# default) can be used in the download prompt.
-# Type: Bool
-c.content.pdfjs = False
-
-# Enable plugins in Web pages.
-# Type: Bool
-c.content.plugins = True
-
-# Allow websites to register protocol handlers via
-# `navigator.registerProtocolHandler`.
-# Type: BoolAsk
-# Valid values:
-#   - true
-#   - false
-#   - ask
-config.set('content.register_protocol_handler', True, 'https://mail.google.com?extsrc=mailto&url=%25s')
-
-# Enable WebGL.
-# Type: Bool
-c.content.webgl = True
-
-# Monitor load requests for cross-site scripting attempts. Suspicious
-# scripts will be blocked and reported in the devtools JavaScript
-# console. Note that bypasses for the XSS auditor are widely known and
-# it can be abused for cross-site info leaks in some scenarios, see:
-# https://www.chromium.org/developers/design-documents/xss-auditor
-# Type: Bool
-c.content.xss_auditing = False
-
-# Width (in pixels) of the scrollbar in the completion window.
-# Type: Int
-c.completion.scrollbar.width = 16
-
-# Number of URLs to show in the web history. 0: no history / -1:
-# unlimited
-# Type: Int
-c.completion.web_history.max_items = 1000
-
-# Directory to save downloads to. If unset, a sensible OS-specific
-# default is used.
-# Type: Directory
-c.downloads.location.directory = None
-
-# Prompt the user for the download location. If set to false,
-# `downloads.location.directory` will be used.
-# Type: Bool
-c.downloads.location.prompt = False
-
-# Remember the last used download directory.
-# Type: Bool
-c.downloads.location.remember = True
-
-# What to display in the download filename input.
-# Type: String
-# Valid values:
-#   - path: Show only the download path.
-#   - filename: Show only download filename.
-#   - both: Show download path and filename.
-c.downloads.location.suggestion = 'both'
-
-# Which categories to show (in which order) in the :open completion.
-# Type: FlagList
-# Valid values:
-#   - searchengines
-#   - quickmarks
-#   - bookmarks
-#   - history
-#   - filesystem
-c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history', 'filesystem']
-
-# Where to show the downloaded files.
-# Type: VerticalPosition
-# Valid values:
-#   - top
-#   - bottom
-c.downloads.position = 'bottom'
-
-# Automatically abort insecure (HTTP) downloads originating from secure
-# (HTTPS) pages. For per-domain settings, the relevant URL is the URL
-# initiating the download, not the URL the download itself is coming
-# from. It's not recommended to set this setting to false globally.
-# Type: Bool
-c.downloads.prevent_mixed_content = True
-
-# Editor (and arguments) to use for the `edit-*` commands. The following
-# placeholders are defined:  * `{file}`: Filename of the file to be
-# edited. * `{line}`: Line in which the caret is found in the text. *
-# `{column}`: Column in which the caret is found in the text. *
-# `{line0}`: Same as `{line}`, but starting from index 0. * `{column0}`:
-# Same as `{column}`, but starting from index 0.
-# Type: ShellCommand
-c.editor.command = ['foot', '-a', 'popup', 'kak', '{file}']
-
-# Handler for selecting file(s) in forms. If `external`, then the
-# commands specified by `fileselect.single_file.command`,
-# `fileselect.multiple_files.command` and `fileselect.folder.command`
-# are used to select one file, multiple files, and folders,
-# respectively.
-# Type: String
-# Valid values:
-#   - default: Use the default file selector.
-#   - external: Use an external command.
-c.fileselect.handler = 'default'
-
-# Minimum number of characters used for hint strings.
-# Type: Int
-c.hints.min_chars = 2
-
-# Scatter hint key chains (like Vimium) or not (like dwb). Ignored for
-# number hints.
-# Type: Bool
-c.hints.scatter = True
-
-# Automatically enter insert mode if an editable element is focused
-# after loading the page.
-# Type: Bool
-c.input.insert_mode.auto_load = True
-
-# Enter insert mode if an editable element is clicked.
-# Type: Bool
-c.input.insert_mode.auto_enter = True
-
-# Leave insert mode when starting a new page load. Patterns may be
-# unreliable on this setting, and they may match the url you are
-# navigating to, or the URL you are navigating from.
-# Type: Bool
-c.input.insert_mode.leave_on_load = True
-
-# Mode to change to when focusing on a tab/URL changes.
-# Type: String
-# Valid values:
-#   - normal
-#   - insert
-#   - passthrough
-c.input.mode_override = 'normal'
-
-# When/how to show the scrollbar.
-# Type: String
-# Valid values:
-#   - always: Always show the scrollbar.
-#   - never: Never show the scrollbar.
-#   - when-searching: Show the scrollbar when searching for text in the webpage. With the QtWebKit backend, this is equal to `never`.
-#   - overlay: Show an overlay scrollbar. On macOS, this is unavailable and equal to `when-searching`; with the QtWebKit backend, this is equal to `never`. Enabling/disabling overlay scrollbars requires a restart.
-c.scrolling.bar = 'overlay'
-
-# Enable smooth scrolling for web pages. Note smooth scrolling does not
-# work with the `:scroll-px` command.
-# Type: Bool
-c.scrolling.smooth = True
-
-# When to show the statusbar.
-# Type: String
-# Valid values:
-#   - always: Always show the statusbar.
-#   - never: Always hide the statusbar.
-#   - in-mode: Show the statusbar when in modes other than normal mode.
-c.statusbar.show = 'always'
-
-# List of widgets displayed in the statusbar.
-# Type: List of StatusbarWidget
-# Valid values:
-#   - url: Current page URL.
-#   - scroll: Percentage of the current page position like `10%`.
-#   - scroll_raw: Raw percentage of the current page position like `10`.
-#   - history: Display an arrow when possible to go back/forward in history.
-#   - search_match: A match count when searching, e.g. `Match [2/10]`.
-#   - tabs: Current active tab, e.g. `2`.
-#   - keypress: Display pressed keys when composing a vi command.
-#   - progress: Progress bar for the current page loading.
-#   - text:foo: Display the static text after the colon, `foo` in the example.
-#   - clock: Display current time. The format can be changed by adding a format string via `clock:...`. For supported format strings, see https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes[the Python datetime documentation].
-c.statusbar.widgets = ['url', 'progress', 'scroll']
-
-# Open new tabs (middleclick/ctrl+click) in the background.
-# Type: Bool
-c.tabs.background = True
-
-# Scaling factor for favicons in the tab bar. The tab size is unchanged,
-# so big favicons also require extra `tabs.padding`.
-# Type: Float
-c.tabs.favicons.scale = 1.0
-
-# When to show favicons in the tab bar. When switching this from never
-# to always/pinned, note that favicons might not be loaded yet, thus
-# tabs might require a reload to display them.
-# Type: String
-# Valid values:
-#   - always: Always show favicons.
-#   - never: Always hide favicons.
-#   - pinned: Show favicons only on pinned tabs.
-c.tabs.favicons.show = 'always'
-
-# Padding (in pixels) around text for tabs.
-# Type: Padding
-c.tabs.padding = {'bottom': 4, 'left': 5, 'right': 5, 'top': 4}
-
-# Position of the tab bar.
-# Type: Position
-# Valid values:
-#   - top
-#   - bottom
-#   - left
-#   - right
-c.tabs.position = 'left'
-
-# Which tab to select when the focused tab is removed.
-# Type: SelectOnRemove
-# Valid values:
-#   - prev: Select the tab which came before the closed one (left in horizontal, above in vertical).
-#   - next: Select the tab which came after the closed one (right in horizontal, below in vertical).
-#   - last-used: Select the previously selected tab.
-c.tabs.select_on_remove = 'last-used'
-
-# Alignment of the text inside of tabs.
-# Type: TextAlignment
-# Valid values:
-#   - left
-#   - right
-#   - center
-c.tabs.title.alignment = 'left'
-
-# Position of ellipsis in truncated title of tabs.
-# Type: ElidePosition
-# Valid values:
-#   - left
-#   - right
-#   - middle
-#   - none
-c.tabs.title.elide = 'right'
-
-# Format to use for the tab title. The following placeholders are
-# defined:  * `{perc}`: Percentage as a string like `[10%]`. *
-# `{perc_raw}`: Raw percentage, e.g. `10`. * `{current_title}`: Title of
-# the current web page. * `{title_sep}`: The string `" - "` if a title
-# is set, empty otherwise. * `{index}`: Index of this tab. *
-# `{aligned_index}`: Index of this tab padded with spaces to have the
-# same   width. * `{relative_index}`: Index of this tab relative to the
-# current tab. * `{id}`: Internal tab ID of this tab. * `{scroll_pos}`:
-# Page scroll position. * `{host}`: Host of the current web page. *
-# `{backend}`: Either `webkit` or `webengine` * `{private}`: Indicates
-# when private mode is enabled. * `{current_url}`: URL of the current
-# web page. * `{protocol}`: Protocol (http/https/...) of the current web
-# page. * `{audio}`: Indicator for audio/mute status.
-# Type: FormatString
-c.tabs.title.format = '{audio}{index}: {current_title}'
-
-# Format to use for the tab title for pinned tabs. The same placeholders
-# like for `tabs.title.format` are defined.
-# Type: FormatString
-c.tabs.title.format_pinned = '{audio}{index}: ** {current_title}'
-
-# Width (in pixels or as percentage of the window) of the tab bar if
-# it's vertical.
-# Type: PercOrInt
-c.tabs.width = 240
-
-# Minimum width (in pixels) of tabs (-1 for the default minimum size
-# behavior). This setting only applies when tabs are horizontal. This
-# setting does not apply to pinned tabs, unless `tabs.pinned.shrink` is
-# False.
-# Type: Int
-c.tabs.min_width = -1
-
-# Width (in pixels) of the progress indicator (0 to disable).
-# Type: Int
-c.tabs.indicator.width = 12
-
-# Padding (in pixels) for tab indicators.
-# Type: Padding
-c.tabs.indicator.padding = {'bottom': 1, 'left': 0, 'right': 6, 'top': 1}
-
-# Shrink pinned tabs down to their contents.
-# Type: Bool
-c.tabs.pinned.shrink = True
-
-# Number of closed tabs (per window) and closed windows to remember for
-# :undo (-1 for no maximum).
-# Type: Int
-c.tabs.undo_stack_size = 50
-
-# Hide the window decoration.  This setting requires a restart on
-# Wayland.
-# Type: Bool
-c.window.hide_decoration = False
-
-# Default zoom level.
-# Type: Perc
-c.zoom.default = '123%'
-
-# Number of zoom increments to divide the mouse wheel movements to.
-# Type: Int
-c.zoom.mouse_divider = 1024
-
-# Text color of the completion widget. May be a single color to use for
-# all columns or a list of three colors, one for each column.
-# Type: List of QtColor, or QtColor
-c.colors.completion.fg = '#eff0f1'
-
-# Background color of the completion widget for odd rows.
-# Type: QssColor
-c.colors.completion.odd.bg = '#3b4045'
-
-# Background color of the completion widget for even rows.
-# Type: QssColor
-c.colors.completion.even.bg = '#2a2e32'
-
-# Foreground color of completion widget category headers.
-# Type: QtColor
-c.colors.completion.category.fg = '#1d99f3'
-
-# Background color of the completion widget category headers.
-# Type: QssColor
-c.colors.completion.category.bg = '#2a2e32'
-
-# Top border color of the completion widget category headers.
-# Type: QssColor
-c.colors.completion.category.border.top = '#2a2e32'
-
-# Bottom border color of the completion widget category headers.
-# Type: QssColor
-c.colors.completion.category.border.bottom = '#2a2e32'
-
-# Foreground color of the selected completion item.
-# Type: QtColor
-c.colors.completion.item.selected.fg = '#fcfcfc'
-
-# Background color of the selected completion item.
-# Type: QssColor
-c.colors.completion.item.selected.bg = '#1d99f3'
-
-# Top border color of the selected completion item.
-# Type: QssColor
-c.colors.completion.item.selected.border.top = '#3b4045'
-
-# Bottom border color of the selected completion item.
-# Type: QssColor
-c.colors.completion.item.selected.border.bottom = '#3b4045'
-
-# Foreground color of the matched text in the selected completion item.
-# Type: QtColor
-c.colors.completion.item.selected.match.fg = '#3b4045'
-
-# Foreground color of the matched text in the completion.
-# Type: QtColor
-c.colors.completion.match.fg = '#fdbc4b'
-
-# Color of the scrollbar handle in the completion view.
-# Type: QssColor
-c.colors.completion.scrollbar.fg = '#9b59b6'
-
-# Color of the scrollbar in the completion view.
-# Type: QssColor
-c.colors.completion.scrollbar.bg = '#2a2e32'
-
-# Background color for the download bar.
-# Type: QssColor
-c.colors.downloads.bar.bg = '#2a2e32'
-
-# Color gradient start for download text.
-# Type: QtColor
-c.colors.downloads.start.fg = '#2a2e32'
-
-# Color gradient start for download backgrounds.
-# Type: QtColor
-c.colors.downloads.start.bg = '#9b59b6'
-
-# Color gradient end for download text.
-# Type: QtColor
-c.colors.downloads.stop.fg = '#2a2e32'
-
-# Color gradient stop for download backgrounds.
-# Type: QtColor
-c.colors.downloads.stop.bg = '#1d99f3'
-
-# Foreground color for downloads with errors.
-# Type: QtColor
-c.colors.downloads.error.fg = '#27ae60'
-
-# Background color for downloads with errors.
-# Type: QtColor
-c.colors.downloads.error.bg = '#2a2e32'
-
-# Font color for hints.
-# Type: QssColor
-c.colors.hints.fg = '#fdbc4b'
-
-# Background color for hints. Note that you can use a `rgba(...)` value
-# for transparency.
-# Type: QssColor
-c.colors.hints.bg = '#4d4d4d'
-
-# Font color for the matched part of hints.
-# Type: QtColor
-c.colors.hints.match.fg = '#9b59b6'
-
-# Text color for the keyhint widget.
-# Type: QssColor
-c.colors.keyhint.fg = '#9b59b6'
-
-# Highlight color for keys to complete the current keychain.
-# Type: QssColor
-c.colors.keyhint.suffix.fg = '#9b59b6'
-
-# Background color of the keyhint widget.
-# Type: QssColor
-c.colors.keyhint.bg = '#2a2e32'
-
-# Foreground color of an error message.
-# Type: QssColor
-c.colors.messages.error.fg = '#2a2e32'
-
-# Background color of an error message.
-# Type: QssColor
-c.colors.messages.error.bg = '#da4453'
-
-# Border color of an error message.
-# Type: QssColor
-c.colors.messages.error.border = '#da4453'
-
-# Foreground color of a warning message.
-# Type: QssColor
-c.colors.messages.warning.fg = '#da4453'
-
-# Background color of a warning message.
-# Type: QssColor
-c.colors.messages.warning.bg = '#fdbc4b'
-
-# Border color of a warning message.
-# Type: QssColor
-c.colors.messages.warning.border = '#fdbc4b'
-
-# Foreground color of an info message.
-# Type: QssColor
-c.colors.messages.info.fg = '#fcfcfc'
-
-# Background color of an info message.
-# Type: QssColor
-c.colors.messages.info.bg = '#27ae60'
-
-# Border color of an info message.
-# Type: QssColor
-c.colors.messages.info.border = '#27ae60'
-
-# Foreground color for prompts.
-# Type: QssColor
-c.colors.prompts.fg = '#9b59b6'
-
-# Border used around UI elements in prompts.
-# Type: String
-c.colors.prompts.border = '#2a2e32'
-
-# Background color for prompts.
-# Type: QssColor
-c.colors.prompts.bg = '#2a2e32'
-
-# Background color for the selected item in filename prompts.
-# Type: QssColor
-c.colors.prompts.selected.bg = '#3b4045'
-
-# Foreground color of the statusbar.
-# Type: QssColor
-c.colors.statusbar.normal.fg = '#fdbc4b'
-
-# Background color of the statusbar.
-# Type: QssColor
-c.colors.statusbar.normal.bg = '#2a2e32'
-
-# Foreground color of the statusbar in insert mode.
-# Type: QssColor
-c.colors.statusbar.insert.fg = '#2a2e32'
-
-# Background color of the statusbar in insert mode.
-# Type: QssColor
-c.colors.statusbar.insert.bg = '#9b59b6'
-
-# Foreground color of the statusbar in passthrough mode.
-# Type: QssColor
-c.colors.statusbar.passthrough.fg = '#2a2e32'
-
-# Background color of the statusbar in passthrough mode.
-# Type: QssColor
-c.colors.statusbar.passthrough.bg = '#1d99f3'
-
-# Foreground color of the statusbar in private browsing mode.
-# Type: QssColor
-c.colors.statusbar.private.fg = '#9b59b6'
-
-# Background color of the statusbar in private browsing mode.
-# Type: QssColor
-c.colors.statusbar.private.bg = '#2a2e32'
-
-# Foreground color of the statusbar in command mode.
-# Type: QssColor
-c.colors.statusbar.command.fg = '#fcfcfc'
-
-# Background color of the statusbar in command mode.
-# Type: QssColor
-c.colors.statusbar.command.bg = '#1d99f3'
-
-# Foreground color of the statusbar in private browsing + command mode.
-# Type: QssColor
-c.colors.statusbar.command.private.fg = '#9b59b6'
-
-# Background color of the statusbar in private browsing + command mode.
-# Type: QssColor
-c.colors.statusbar.command.private.bg = '#2a2e32'
-
-# Foreground color of the statusbar in caret mode.
-# Type: QssColor
-c.colors.statusbar.caret.fg = '#2a2e32'
-
-# Background color of the statusbar in caret mode.
-# Type: QssColor
-c.colors.statusbar.caret.bg = '#1cdc9a'
-
-# Foreground color of the statusbar in caret mode with a selection.
-# Type: QssColor
-c.colors.statusbar.caret.selection.fg = '#2a2e32'
-
-# Background color of the statusbar in caret mode with a selection.
-# Type: QssColor
-c.colors.statusbar.caret.selection.bg = '#9b59b6'
-
-# Background color of the progress bar.
-# Type: QssColor
-c.colors.statusbar.progress.bg = '#fdbc4b'
-
-# Default foreground color of the URL in the statusbar.
-# Type: QssColor
-c.colors.statusbar.url.fg = '#9b59b6'
-
-# Foreground color of the URL in the statusbar on error.
-# Type: QssColor
-c.colors.statusbar.url.error.fg = '#3b4045'
-
-# Foreground color of the URL in the statusbar for hovered links.
-# Type: QssColor
-c.colors.statusbar.url.hover.fg = '#9b59b6'
-
-# Foreground color of the URL in the statusbar on successful load
-# (http).
-# Type: QssColor
-c.colors.statusbar.url.success.http.fg = '#1d99f3'
-
-# Foreground color of the URL in the statusbar on successful load
-# (https).
-# Type: QssColor
-c.colors.statusbar.url.success.https.fg = '#fcfcfc'
-
-# Foreground color of the URL in the statusbar when there's a warning.
-# Type: QssColor
-c.colors.statusbar.url.warn.fg = '#da4453'
-
-# Background color of the tab bar.
-# Type: QssColor
-c.colors.tabs.bar.bg = '#2a2e32'
-
-# Color gradient start for the tab indicator.
-# Type: QtColor
-c.colors.tabs.indicator.start = '#fdbc4b'
-
-# Color gradient end for the tab indicator.
-# Type: QtColor
-c.colors.tabs.indicator.stop = '#27ae60'
-
-# Color for the tab indicator on errors.
-# Type: QtColor
-c.colors.tabs.indicator.error = '#da4453'
-
-# Color gradient interpolation system for the tab indicator.
-# Type: ColorSystem
-# Valid values:
-#   - rgb: Interpolate in the RGB color system.
-#   - hsv: Interpolate in the HSV color system.
-#   - hsl: Interpolate in the HSL color system.
-#   - none: Don't show a gradient.
-c.colors.tabs.indicator.system = 'rgb'
-
-# Foreground color of unselected odd tabs.
-# Type: QtColor
-c.colors.tabs.odd.fg = '#eff0f1'
-
-# Background color of unselected odd tabs.
-# Type: QtColor
-c.colors.tabs.odd.bg = '#3b4045'
-
-# Foreground color of unselected even tabs.
-# Type: QtColor
-c.colors.tabs.even.fg = '#eff0f1'
-
-# Background color of unselected even tabs.
-# Type: QtColor
-c.colors.tabs.even.bg = '#2a2e32'
-
-# Foreground color of selected odd tabs.
-# Type: QtColor
-c.colors.tabs.selected.odd.fg = '#eff0f1'
-
-# Background color of selected odd tabs.
-# Type: QtColor
-c.colors.tabs.selected.odd.bg = '#1d99f3'
-
-# Foreground color of selected even tabs.
-# Type: QtColor
-c.colors.tabs.selected.even.fg = '#eff0f1'
-
-# Background color of selected even tabs.
-# Type: QtColor
-c.colors.tabs.selected.even.bg = '#1d99f3'
-
-# Foreground color of pinned unselected odd tabs.
-# Type: QtColor
-c.colors.tabs.pinned.odd.fg = '#2a2e32'
-
-# Background color of pinned unselected odd tabs.
-# Type: QtColor
-c.colors.tabs.pinned.odd.bg = '#fdbc4b'
-
-# Foreground color of pinned unselected even tabs.
-# Type: QtColor
-c.colors.tabs.pinned.even.fg = '#2a2e32'
-
-# Background color of pinned unselected even tabs.
-# Type: QtColor
-c.colors.tabs.pinned.even.bg = '#fdbc4b'
-
-# Foreground color of pinned selected odd tabs.
-# Type: QtColor
-c.colors.tabs.pinned.selected.odd.fg = '#1d99f3'
-
-# Background color of pinned selected odd tabs.
-# Type: QtColor
-c.colors.tabs.pinned.selected.odd.bg = '#fdbc4b'
-
-# Foreground color of pinned selected even tabs.
-# Type: QtColor
-c.colors.tabs.pinned.selected.even.fg = '#1d99f3'
-
-# Background color of pinned selected even tabs.
-# Type: QtColor
-c.colors.tabs.pinned.selected.even.bg = '#fdbc4b'
-
-# Background color for webpages if unset (or empty to use the theme's
-# color).
-# Type: QtColor
-c.colors.webpage.bg = 'white'
-
-# Render all web contents using a dark theme. Example configurations
-# from Chromium's `chrome://flags`:  - "With simple HSL/CIELAB/RGB-based
-# inversion": Set   `colors.webpage.darkmode.algorithm` accordingly.  -
-# "With selective image inversion": Set
-# `colors.webpage.darkmode.policy.images` to `smart`.  - "With selective
-# inversion of non-image elements": Set
-# `colors.webpage.darkmode.threshold.text` to 150 and
-# `colors.webpage.darkmode.threshold.background` to 205.  - "With
-# selective inversion of everything": Combines the two variants   above.
-# - "With increased text contrast": Set
-# `colors.webpage.darkmode.increase_text_contrast` (QtWebEngine 6.3+)
-# Type: Bool
-c.colors.webpage.darkmode.enabled = False
-
-# Default font families to use. Whenever "default_family" is used in a
-# font setting, it's replaced with the fonts listed here. If set to an
-# empty value, a system-specific monospace default is used.
-# Type: List of Font, or Font
-c.fonts.default_family = '12pt LiterationMono Nerd Font'
-
-# Default font size to use. Whenever "default_size" is used in a font
-# setting, it's replaced with the size listed here. Valid values are
-# either a float value with a "pt" suffix, or an integer value with a
-# "px" suffix.
-# Type: String
-c.fonts.default_size = '12pt'
-
-# Font used in the completion widget.
-# Type: Font
-c.fonts.completion.entry = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used in the completion categories.
-# Type: Font
-c.fonts.completion.category = 'bold 12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for tooltips. If set to null, the Qt default is used.
-# Type: Font
-c.fonts.tooltip = '12pt LiterationMono Nerd Font'
-
-# Font used for the context menu. If set to null, the Qt default is
-# used.
-# Type: Font
-c.fonts.contextmenu = '12pt LiterationMono Nerd Font'
-
-# Font used for the debugging console.
-# Type: Font
-c.fonts.debug_console = 'default_size default_family'
-
-# Font used for the downloadbar.
-# Type: Font
-c.fonts.downloads = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for the hints.
-# Type: Font
-c.fonts.hints = 'bold 12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used in the keyhint widget.
-# Type: Font
-c.fonts.keyhint = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for error messages.
-# Type: Font
-c.fonts.messages.error = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for info messages.
-# Type: Font
-c.fonts.messages.info = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for warning messages.
-# Type: Font
-c.fonts.messages.warning = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for prompts.
-# Type: Font
-c.fonts.prompts = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used in the statusbar.
-# Type: Font
-c.fonts.statusbar = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for selected tabs.
-# Type: Font
-c.fonts.tabs.selected = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font used for unselected tabs.
-# Type: Font
-c.fonts.tabs.unselected = '12pt LiterationMono\\ Nerd\\ Font'
-
-# Font family for standard fonts.
-# Type: FontFamily
-c.fonts.web.family.standard = 'Noto Sans'
-
-# Font family for fixed fonts.
-# Type: FontFamily
-c.fonts.web.family.fixed = 'LiterationMono Nerd Font'
-
-# Font family for serif fonts.
-# Type: FontFamily
-c.fonts.web.family.serif = 'Noto Serif'
-
-# Font family for sans-serif fonts.
-# Type: FontFamily
-c.fonts.web.family.sans_serif = 'Noto Sans'
-
-# Font family for cursive fonts.
-# Type: FontFamily
-c.fonts.web.family.cursive = 'Noto Sans Old Italic'
-
-# Font family for fantasy fonts.
-# Type: FontFamily
-c.fonts.web.family.fantasy = 'FantasqueSansM Nerd Font'
-
-# Default font size (in pixels) for regular text.
-# Type: Int
-c.fonts.web.size.default = 15
-
-# Default font size (in pixels) for fixed-pitch text.
-# Type: Int
-c.fonts.web.size.default_fixed = 15
-
-# Hard minimum font size (in pixels).
-# Type: Int
-c.fonts.web.size.minimum = 6
-
-# Minimum logical font size (in pixels) that is applied when zooming
-# out.
-# Type: Int
-c.fonts.web.size.minimum_logical = 7
-
-# Bindings for normal mode
-config.unbind('+')
-config.bind('j', 'cmd-run-with-count 3 scroll down')
-config.bind('k', 'cmd-run-with-count 3 scroll up')
-config.bind(',M', 'hint links spawn vlc {hint-url}')
-config.bind(',m', 'spawn vlc {url}')
-config.unbind('-')
-config.bind('<Alt+h>', 'home')
-config.bind('<Ctrl++>', 'zoom-in')
-config.bind('<Ctrl+->', 'zoom-out')
-config.bind('<Ctrl+h>', 'back')
-config.bind('<Ctrl+l>', 'forward')
-config.bind('<Shift+PgDown>', 'scroll-page 0 +0.75')
-config.bind('<Shift+PgUp>', 'scroll-page 0 -0.75')
-config.bind('Ctrl-+', 'zoom-in')
-config.bind('Ctrl--', 'zoom-out')
-config.bind('E', 'edit-url')
-config.unbind('d')
-config.bind('dd', 'tab-close')
-config.bind('dlA', 'spawn -u yt-dlp-video {url}')
-config.bind('dlV', 'spawn -u yt-dlp-video {url}')
-config.bind('dla', 'hint links userscript yt-dlp-audio')
-config.bind('dlv', 'hint links userscript yt-dlp-video')
-config.bind('eu', 'edit-url')
-config.unbind('ga')
-config.bind('ge', 'scroll-to-perc 100')
-config.bind('gg', 'scroll-to-perc 0')
-config.bind('gh', 'open duckduckgo.com')
-config.bind('pw', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='normal')
-config.bind('tG', 'home')
-config.bind('tda', 'tab-only')
-config.bind('tg1', 'tab-give 1')
-config.bind('tg2', 'tab-give 2')
-config.bind('tg3', 'tab-give 3')
-config.bind('tgg', 'tab-give 0')
-config.bind('tp', 'tab-pin')
-config.bind('ttb', 'set tabs.position bottom')
-config.bind('ttl', 'set tabs.position left')
-config.bind('ttr', 'set tabs.position right')
-config.bind('ttt', 'set tabs.position top')
-config.bind('tw1', 'set tabs.width  48')
-config.bind('tw2', 'set tabs.width  96')
-config.bind('tw3', 'set tabs.width 160')
-config.bind('tw4', 'set tabs.width 240')
-config.bind('tw5', 'set tabs.width 320')
-config.bind('tw6', 'set tabs.width 480')
-
-# Bindings for insert mode
-config.bind('<Alt+Shift+u>', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='insert')
diff --git a/qutebrowser/.config/qutebrowser/config.qt5-backup.py b/qutebrowser/.config/qutebrowser/config.qt5-backup.py
deleted file mode 100644 (file)
index 1b761bd..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-import subprocess
-config.load_autoconfig()
-
-## testing
-#
-config.bind('<Alt-Shift-u>', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='insert')
-config.bind('pw', 'spawn --userscript qute-keepassxc --key 285D16B66B11BD45BFD57B6CB22C3113D0E83104', mode='normal')
-
-## Generic
-#
-c.auto_save.session = True
-c.session.lazy_restore = True
-c.content.fullscreen.window = True
-c.content.notifications.enabled = True
-c.content.cookies.accept = 'no-3rdparty'
-c.content.blocking.whitelist = ["piwik.org"]
-c.downloads.position = "bottom"
-c.editor.command = ["konsole", "--separate", "-e", "kak", "{file}"]
-c.statusbar.widgets = ["url", "progress", "scroll"]
-c.zoom.default = "123%"
-c.completion.web_history.max_items = 1000
-c.input.insert_mode.auto_load = True
-c.new_instance_open_target = "tab-bg"
-
-## Key bindings
-#
-config.unbind('d')
-config.unbind('ga')
-config.unbind('+')
-config.unbind('-')
-config.bind ('gg', 'scroll-to-perc 0')
-config.bind ('ge', 'scroll-to-perc 100')
-config.bind ('gh', 'open duckduckgo.com')
-config.bind('dd', 'tab-close')
-config.bind('tda', 'tab-only')
-config.bind('tgg', 'tab-give 0')
-config.bind('tg1', 'tab-give 1')
-config.bind('tg2', 'tab-give 2')
-config.bind('tg3', 'tab-give 3')
-config.bind('tp', 'tab-pin')
-config.bind('E', 'edit-url')
-config.bind('eu', 'edit-url')
-config.bind('ttl', 'set tabs.position left')
-config.bind('ttr', 'set tabs.position right')
-config.bind('ttt', 'set tabs.position top')
-config.bind('ttb', 'set tabs.position bottom')
-config.bind('tw1', 'set tabs.width  48')
-config.bind('tw2', 'set tabs.width  96')
-config.bind('tw3', 'set tabs.width 160')
-config.bind('tw4', 'set tabs.width 240')
-config.bind('tw5', 'set tabs.width 320')
-config.bind('tw6', 'set tabs.width 480')
-config.unbind('<Ctrl-h>')
-config.bind('<Ctrl-h>', 'back')
-config.bind('<Ctrl-l>', 'forward')
-config.bind('<Alt-h>', 'home')
-config.bind('tG', 'home')
-config.bind('dlV', 'spawn -u yt-dlp-video {url}')
-config.bind('dlA', 'spawn -u yt-dlp-video {url}')
-config.bind('dlv', 'hint links userscript yt-dlp-video')
-config.bind('dla', 'hint links userscript yt-dlp-audio')
-config.bind(',m', 'spawn vlc {url}')
-config.bind(',M', 'hint links spawn vlc {hint-url}')
-config.bind('<Ctrl-+>', 'zoom-in')
-config.bind('<Ctrl-->', 'zoom-out')
-config.bind('<Shift-PgUp>', 'scroll-page 0 -0.75')
-config.bind('<Shift-PgDown>', 'scroll-page 0 +0.75')
-
-## Font config
-#
-c.fonts.completion.category = 'bold 12pt LiterationMono\ Nerd\ Font'
-c.fonts.completion.entry = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.downloads = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.hints = 'bold 12pt LiterationMono\ Nerd\ Font'
-c.fonts.keyhint = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.messages.error = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.messages.info = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.messages.warning = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.prompts = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.statusbar = '12pt LiterationMono\ Nerd\ Font'
-c.fonts.tabs.selected= '12pt LiterationMono\ Nerd\ Font'
-c.fonts.tabs.unselected= '12pt LiterationMono\ Nerd\ Font'
-
-## Tabs config
-#
-c.tabs.position = "left"
-c.tabs.indicator.width = 12
-c.tabs.favicons.show = "always"
-c.tabs.select_on_remove = 'last-used'
-c.tabs.background = True
-
-## Color config
-#
-base00 = '#2a2e32' #black
-base01 = '#da4453' #red
-base02 = '#27ae60' #green
-base03 = '#fdbc4b' #yellow
-base04 = '#1d99f3' #blue
-base05 = '#9b59b6' #magenta
-base06 = '#1cdc9a' #cyan
-base07 = '#eff0f1' #white
-base08 = '#4d4d4d' #brightblack
-base09 = '#da4453' #brightred
-base0A = '#27ae60' #brightgreen
-base0B = '#fdbc4b' #brightyellow
-base0C = '#1d99f3' #brightblue
-base0D = '#9b59b6' #brightmagenta
-base0E = '#1cdc9a' #brightcyan
-base0F = '#fcfcfc' #brightwhite
-base10 = '#3b4045'  #backgroundalternate1
-
-# Text color of the completion widget. May be a single color to use for
-# all columns or a list of three colors, one for each column.
-c.colors.completion.fg = base07
-
-# Background color of the completion widget for odd rows.
-c.colors.completion.odd.bg = base10
-
-# Background color of the completion widget for even rows.
-c.colors.completion.even.bg = base00
-
-# Foreground color of completion widget category headers.
-c.colors.completion.category.fg = base04
-
-# Background color of the completion widget category headers.
-c.colors.completion.category.bg = base00
-
-# Top border color of the completion widget category headers.
-c.colors.completion.category.border.top = base00
-
-# Bottom border color of the completion widget category headers.
-c.colors.completion.category.border.bottom = base00
-
-# Foreground color of the selected completion item.
-c.colors.completion.item.selected.fg = base0F
-
-# Background color of the selected completion item.
-c.colors.completion.item.selected.bg = base04
-
-# Top border color of the completion widget category headers.
-c.colors.completion.item.selected.border.top = base10
-
-# Bottom border color of the selected completion item.
-c.colors.completion.item.selected.border.bottom = base10
-
-# Foreground color of the matched text in the selected completion item.
-c.colors.completion.item.selected.match.fg = base10
-
-# Foreground color of the matched text in the completion.
-c.colors.completion.match.fg = base0B
-
-# Color of the scrollbar handle in the completion view.
-c.colors.completion.scrollbar.fg = base05
-
-# Color of the scrollbar in the completion view.
-c.colors.completion.scrollbar.bg = base00
-
-# Background color for the download bar.
-c.colors.downloads.bar.bg = base00
-
-# Color gradient start for download text.
-c.colors.downloads.start.fg = base00
-
-# Color gradient start for download backgrounds.
-c.colors.downloads.start.bg = base0D
-
-# Color gradient end for download text.
-c.colors.downloads.stop.fg = base00
-
-# Color gradient stop for download backgrounds.
-c.colors.downloads.stop.bg = base0C
-
-# Background color for downloads with errors.
-c.colors.downloads.error.bg = base00
-
-# Foreground color for downloads with errors.
-c.colors.downloads.error.fg = base02
-
-# Font color for hints.
-c.colors.hints.fg = base03
-
-# Background color for hints. Note that you can use a `rgba(...)` value
-# for transparency.
-c.colors.hints.bg = base08
-
-# Font color for the matched part of hints.
-c.colors.hints.match.fg = base05
-
-# Text color for the keyhint widget.
-c.colors.keyhint.fg = base05
-
-# Highlight color for keys to complete the current keychain.
-c.colors.keyhint.suffix.fg = base05
-
-# Background color of the keyhint widget.
-c.colors.keyhint.bg = base00
-
-# Foreground color of an error message.
-c.colors.messages.error.fg = base00
-
-# Background color of an error message.
-c.colors.messages.error.bg = base01
-
-# Border color of an error message.
-c.colors.messages.error.border = base01
-
-# Foreground color of a warning message.
-c.colors.messages.warning.fg = base09
-
-# Background color of a warning message.
-c.colors.messages.warning.bg = base03
-
-# Border color of a warning message.
-c.colors.messages.warning.border = base03
-
-# Foreground color of an info message.
-c.colors.messages.info.fg = base0F
-
-# Background color of an info message.
-c.colors.messages.info.bg = base02
-
-# Border color of an info message.
-c.colors.messages.info.border = base02
-
-# Foreground color for prompts.
-c.colors.prompts.fg = base05
-
-# Border used around UI elements in prompts.
-c.colors.prompts.border = base00
-
-# Background color for prompts.
-c.colors.prompts.bg = base00
-
-# Background color for the selected item in filename prompts.
-c.colors.prompts.selected.bg = base10
-
-# Foreground color of the statusbar.
-c.colors.statusbar.normal.fg = base0B
-
-# Background color of the statusbar.
-c.colors.statusbar.normal.bg = base00
-
-# Foreground color of the statusbar in insert mode.
-c.colors.statusbar.insert.fg = base00
-
-# Background color of the statusbar in insert mode.
-c.colors.statusbar.insert.bg = base0D
-
-# Foreground color of the statusbar in passthrough mode.
-c.colors.statusbar.passthrough.fg = base00
-
-# Background color of the statusbar in passthrough mode.
-c.colors.statusbar.passthrough.bg = base0C
-
-# Foreground color of the statusbar in private browsing mode.
-c.colors.statusbar.private.fg = base05
-
-# Background color of the statusbar in private browsing mode.
-c.colors.statusbar.private.bg = base00
-
-# Foreground color of the statusbar in command mode.
-c.colors.statusbar.command.fg = base0F
-
-# Background color of the statusbar in command mode.
-c.colors.statusbar.command.bg = base04
-
-# Foreground color of the statusbar in private browsing + command mode.
-c.colors.statusbar.command.private.fg = base05
-
-# Background color of the statusbar in private browsing + command mode.
-c.colors.statusbar.command.private.bg = base00
-
-# Foreground color of the statusbar in caret mode.
-c.colors.statusbar.caret.fg = base00
-
-# Background color of the statusbar in caret mode.
-c.colors.statusbar.caret.bg = base0E
-
-# Foreground color of the statusbar in caret mode with a selection.
-c.colors.statusbar.caret.selection.fg = base00
-
-# Background color of the statusbar in caret mode with a selection.
-c.colors.statusbar.caret.selection.bg = base0D
-
-# Background color of the progress bar.
-c.colors.statusbar.progress.bg = base0B
-
-# Default foreground color of the URL in the statusbar.
-c.colors.statusbar.url.fg = base05
-
-# Foreground color of the URL in the statusbar on error.
-c.colors.statusbar.url.error.fg = base10
-
-# Foreground color of the URL in the statusbar for hovered links.
-c.colors.statusbar.url.hover.fg = base05
-
-# Foreground color of the URL in the statusbar on successful load
-# (http).
-c.colors.statusbar.url.success.http.fg = base0C
-
-# Foreground color of the URL in the statusbar on successful load
-# (https).
-c.colors.statusbar.url.success.https.fg = base0F
-
-# Foreground color of the URL in the statusbar when there's a warning.
-c.colors.statusbar.url.warn.fg = base01
-
-# Background color of the tab bar.
-c.colors.tabs.bar.bg = base00
-
-# Color gradient start for the tab indicator.
-c.colors.tabs.indicator.start = base03
-
-# Color gradient end for the tab indicator.
-c.colors.tabs.indicator.stop = base02
-
-# Color for the tab indicator on errors.
-c.colors.tabs.indicator.error = base01
-
-# Foreground color of unselected odd tabs.
-c.colors.tabs.odd.fg = base07
-
-# Background color of unselected odd tabs.
-c.colors.tabs.odd.bg = base10
-
-# Foreground color of unselected even tabs.
-c.colors.tabs.even.fg = base07
-
-# Background color of unselected even tabs.
-c.colors.tabs.even.bg = base00
-
-# Background color of pinned unselected even tabs.
-c.colors.tabs.pinned.even.bg = base03
-
-# Foreground color of pinned unselected even tabs.
-c.colors.tabs.pinned.even.fg = base00
-
-# Background color of pinned unselected odd tabs.
-c.colors.tabs.pinned.odd.bg = base03
-
-# Foreground color of pinned unselected odd tabs.
-c.colors.tabs.pinned.odd.fg = base00
-
-# Background color of pinned selected even tabs.
-c.colors.tabs.pinned.selected.even.bg = base03
-
-# Foreground color of pinned selected even tabs.
-c.colors.tabs.pinned.selected.even.fg = base04
-
-# Background color of pinned selected odd tabs.
-c.colors.tabs.pinned.selected.odd.bg = base03
-
-# Foreground color of pinned selected odd tabs.
-c.colors.tabs.pinned.selected.odd.fg = base04
-
-# Foreground color of selected odd tabs.
-c.colors.tabs.selected.odd.fg = base07
-
-# Background color of selected odd tabs.
-c.colors.tabs.selected.odd.bg = base04
-
-# Foreground color of selected even tabs.
-c.colors.tabs.selected.even.fg = base07
-
-# Background color of selected even tabs.
-c.colors.tabs.selected.even.bg = base04
-
-# Background color for webpages if unset (or empty to use the theme's
-# color).
-# c.colors.webpage.bg = base00
diff --git a/qutebrowser/.config/qutebrowser/userscripts/qr b/qutebrowser/.config/qutebrowser/userscripts/qr
deleted file mode 100755 (executable)
index 8421524..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-pngfile=$(mktemp --suffix=.png)
-trap 'rm -f "$pngfile"' EXIT
-
-qrencode -t PNG -o "$pngfile" -s 10 "$QUTE_URL"
-echo ":open -t file:///$pngfile" >> "$QUTE_FIFO"
-sleep 1  # give qutebrowser time to open the file before it gets removed
diff --git a/qutebrowser/.config/qutebrowser/userscripts/qute-keepassxc b/qutebrowser/.config/qutebrowser/userscripts/qute-keepassxc
deleted file mode 100755 (executable)
index d5970cf..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright (c) 2018-2021 Markus Blöchl <ususdei@gmail.com>
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-"""
-# Introduction
-
-This is a [qutebrowser][2] [userscript][5] to fill website credentials from a [KeepassXC][1] password database.
-
-
-# Installation
-
-First, you need to enable [KeepassXC-Browser][6] extensions in your KeepassXC config.
-
-
-Second, you must make sure to have a working private-public-key-pair in your [GPG keyring][3].
-
-
-Third, install the python module `pynacl`.
-
-
-Finally, adapt your qutebrowser config.
-You can e.g. add the following lines to your `~/.config/qutebrowser/config.py`
-Remember to replace `ABC1234` with your actual GPG key.
-
-```python
-config.bind('<Alt-Shift-u>', 'spawn --userscript qute-keepassxc --key ABC1234', mode='insert')
-config.bind('pw', 'spawn --userscript qute-keepassxc --key ABC1234', mode='normal')
-```
-
-To manage multiple accounts you also need [rofi](https://github.com/davatorium/rofi) installed.
-
-
-# Usage
-
-If you are on a webpage with a login form, simply activate one of the configured key-bindings.
-
-The first time you run this script, KeepassXC will ask you for authentication like with any other browser extension.
-Just provide a name of your choice and accept the request if nothing looks fishy.
-
-
-# How it works
-
-This script will talk to KeepassXC using the native [KeepassXC-Browser protocol][4].
-
-
-This script needs to store the key used to associate with your KeepassXC instance somewhere.
-Unlike most browser extensions which only use plain local storage, this one attempts to do so in a safe way
-by storing the key in encrypted form using GPG.
-Therefore you need to have a public-key-pair readily set up.
-
-GPG might then ask for your private-key password whenever you query the database for login credentials.
-
-
-# TOTP
-
-This script recently received experimental TOTP support.
-To use it, you need to have working TOTP authentication within KeepassXC.
-Then call `qute-keepassxc` with the `--totp` flags.
-
-For example, I have the following line in my `config.py`:
-
-```python
-config.bind('pt', 'spawn --userscript qute-keepassxc --key ABC1234 --totp', mode='normal')
-```
-
-For now this script will simply insert the TOTP-token into the currently selected
-input field, since I have not yet found a reliable way to identify the correct field
-within all existing login forms.
-Thus you need to manually select the TOTP input field, press escape to leave input
-mode and then enter `pt` to fill in the token (or configure another key-binding for
-insert mode if you prefer that).
-
-
-[1]: https://keepassxc.org/
-[2]: https://qutebrowser.org/
-[3]: https://gnupg.org/
-[4]: https://github.com/keepassxreboot/keepassxc-browser/blob/develop/keepassxc-protocol.md
-[5]: https://github.com/qutebrowser/qutebrowser/blob/main/doc/userscripts.asciidoc
-[6]: https://keepassxc.org/docs/KeePassXC_GettingStarted.html#_setup_browser_integration
-"""
-
-import sys
-import os
-import socket
-import json
-import base64
-import subprocess
-import argparse
-
-import nacl.utils
-import nacl.public
-
-
-def parse_args():
-    parser = argparse.ArgumentParser(description="Full passwords from KeepassXC")
-    parser.add_argument('url', nargs='?', default=os.environ.get('QUTE_URL'))
-    parser.add_argument('--totp', action='store_true',
-                        help="Fill in current TOTP field instead of username/password")
-    parser.add_argument('--socket', '-s', default='/run/user/{}/org.keepassxc.KeePassXC.BrowserServer'.format(os.getuid()),
-                        help='Path to KeepassXC browser socket')
-    parser.add_argument('--key', '-k', default='alice@example.com',
-                        help='GPG key to encrypt KeepassXC auth key with')
-    parser.add_argument('--insecure', action='store_true',
-                        help="Do not encrypt auth key")
-    return parser.parse_args()
-
-
-class KeepassError(Exception):
-    def __init__(self, code, desc):
-        self.code = code
-        self.description = desc
-
-    def __str__(self):
-        return f"KeepassXC Error [{self.code}]: {self.description}"
-
-
-class KeepassXC:
-    """ Wrapper around the KeepassXC socket API """
-    def __init__(self, id=None, *, key, socket_path):
-        self.sock        = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        self.id          = id
-        self.socket_path = socket_path
-        self.client_key  = nacl.public.PrivateKey.generate()
-        self.id_key      = nacl.public.PrivateKey.from_seed(key)
-        self.cryptobox   = None
-
-    def connect(self):
-        if not os.path.exists(self.socket_path):
-            raise KeepassError(-1, "KeepassXC Browser socket does not exists")
-        self.client_id = base64.b64encode(nacl.utils.random(nacl.public.Box.NONCE_SIZE)).decode('utf-8')
-        self.sock.connect(self.socket_path)
-
-        self.send_raw_msg(dict(
-            action    = 'change-public-keys',
-            publicKey = base64.b64encode(self.client_key.public_key.encode()).decode('utf-8'),
-            nonce     = base64.b64encode(nacl.utils.random(nacl.public.Box.NONCE_SIZE)).decode('utf-8'),
-            clientID  = self.client_id
-        ))
-
-        resp = self.recv_raw_msg()
-        assert resp['action'] == 'change-public-keys'
-        assert resp['success'] == 'true'
-        assert resp['nonce']
-        self.cryptobox = nacl.public.Box(
-            self.client_key,
-            nacl.public.PublicKey(base64.b64decode(resp['publicKey']))
-        )
-
-    def get_databasehash(self):
-        self.send_msg(dict(action='get-databasehash'))
-        return self.recv_msg()['hash']
-
-    def lock_database(self):
-        self.send_msg(dict(action='lock-database'))
-        try:
-            self.recv_msg()
-        except KeepassError as e:
-            if e.code == 1:
-                return True
-            raise
-        return False
-
-
-    def test_associate(self):
-        if not self.id:
-            return False
-        self.send_msg(dict(
-            action = 'test-associate',
-            id     = self.id,
-            key    = base64.b64encode(self.id_key.public_key.encode()).decode('utf-8')
-        ), triggerUnlock = 'true')
-        return self.recv_msg()['success'] == 'true'
-
-    def associate(self):
-        self.send_msg(dict(
-            action = 'associate',
-            key    = base64.b64encode(self.client_key.public_key.encode()).decode('utf-8'),
-            idKey  = base64.b64encode(self.id_key.public_key.encode()).decode('utf-8')
-        ))
-        resp = self.recv_msg()
-        self.id = resp['id']
-
-    def get_logins(self, url):
-        self.send_msg(dict(
-            action = 'get-logins',
-            url    = url,
-            keys   = [{ 'id': self.id, 'key': base64.b64encode(self.id_key.public_key.encode()).decode('utf-8') }]
-        ))
-        return self.recv_msg()['entries']
-
-    def get_totp(self, uuid):
-        self.send_msg(dict(
-            action = 'get-totp',
-            uuid = uuid
-        ))
-        response = self.recv_msg()
-        if response['success'] != 'true' or not response['totp']:
-            return None
-        return response['totp']
-
-    def send_raw_msg(self, msg):
-        self.sock.send( json.dumps(msg).encode('utf-8') )
-
-    def recv_raw_msg(self):
-        return json.loads( self.sock.recv(4096).decode('utf-8') )
-
-    def send_msg(self, msg, **extra):
-        nonce = nacl.utils.random(nacl.public.Box.NONCE_SIZE)
-        self.send_raw_msg(dict(
-            action   = msg['action'],
-            message  = base64.b64encode(self.cryptobox.encrypt(json.dumps(msg).encode('utf-8'), nonce).ciphertext).decode('utf-8'),
-            nonce    = base64.b64encode(nonce).decode('utf-8'),
-            clientID = self.client_id,
-            **extra
-        ))
-
-    def recv_msg(self):
-        resp = self.recv_raw_msg()
-        if 'error' in resp:
-            raise KeepassError(resp['errorCode'], resp['error'])
-        assert resp['action']
-        return json.loads(self.cryptobox.decrypt(base64.b64decode(resp['message']), base64.b64decode(resp['nonce'])).decode('utf-8'))
-
-
-
-class SecretKeyStore:
-    def __init__(self, gpgkey, insecure):
-        self.gpgkey = gpgkey
-        self.insecure = insecure
-        if self.insecure:
-            self.path = os.path.join(os.environ['QUTE_DATA_DIR'], 'keepassxc.key')
-        else:
-            self.path = os.path.join(os.environ['QUTE_DATA_DIR'], 'keepassxc.key.gpg')
-
-    def load(self):
-        "Load existing association key from file"
-        if self.insecure:
-            jsondata = open(self.path, 'r').read()
-        else:
-            jsondata = subprocess.check_output(['gpg', '--decrypt', self.path]).decode('utf-8')
-        data = json.loads(jsondata)
-        self.id = data['id']
-        self.key = base64.b64decode(data['key'])
-
-    def create(self):
-        "Create new association key"
-        self.key = nacl.utils.random(32)
-        self.id = None
-
-    def store(self, id):
-        "Store newly created association key in file"
-        self.id = id
-        jsondata = json.dumps({'id':self.id, 'key':base64.b64encode(self.key).decode('utf-8')})
-        if self.insecure:
-            open(self.path, "w").write(jsondata)
-        else:
-            subprocess.run(['gpg', '--encrypt', '-o', self.path, '-r', self.gpgkey], input=jsondata.encode('utf-8'), check=True)
-
-
-def qute(cmd):
-    with open(os.environ['QUTE_FIFO'], 'w') as fifo:
-        fifo.write(cmd)
-        fifo.write('\n')
-        fifo.flush()
-
-def error(msg):
-    print(msg, file=sys.stderr)
-    qute('message-error "{}"'.format(msg))
-
-
-def connect_to_keepassxc(args):
-    if not args.insecure and not args.key:
-        error("Missing GPG key to use for auth key encryption")
-        return
-    keystore = SecretKeyStore(args.key, args.insecure)
-    if os.path.isfile(keystore.path):
-        keystore.load()
-        kp = KeepassXC(keystore.id, key=keystore.key, socket_path=args.socket)
-        kp.connect()
-        if not kp.test_associate():
-            error('No KeepassXC association')
-            return None
-    else:
-        keystore.create()
-        kp = KeepassXC(key=keystore.key, socket_path=args.socket)
-        kp.connect()
-        kp.associate()
-        if not kp.test_associate():
-            error('No KeepassXC association')
-            return None
-        keystore.store(kp.id)
-    return kp
-
-
-def select_account(creds):
-    try:
-        if len(creds) == 1:
-            return creds[0]
-        idx = subprocess.check_output(
-                ['rofi', '-dmenu', '-format', 'i', '-matching', 'fuzzy',
-                '-p', 'Search',
-                '-mesg', '<b>qute-keepassxc</b>: select an account, please!'],
-                input=b"\n".join(c['login'].encode('utf-8') for c in creds)
-        )
-        idx = int(idx)
-        if idx < 0:
-            return None
-        return creds[idx]
-    except subprocess.CalledProcessError:
-        return None
-    except FileNotFoundError:
-        error("rofi not found. Please install rofi to select from multiple credentials")
-        return creds[0]
-    except Exception as e:
-        error(f"Error while picking account: {e}")
-        return None
-
-
-def make_js_code(username, password):
-    return ' '.join("""
-        function isVisible(elem) {
-            var style = elem.ownerDocument.defaultView.getComputedStyle(elem, null);
-
-            if (style.getPropertyValue("visibility") !== "visible" ||
-                style.getPropertyValue("display") === "none" ||
-                style.getPropertyValue("opacity") === "0") {
-                return false;
-            }
-
-            return elem.offsetWidth > 0 && elem.offsetHeight > 0;
-        };
-
-        function hasPasswordField(form) {
-            var inputs = form.getElementsByTagName("input");
-            for (var j = 0; j < inputs.length; j++) {
-                var input = inputs[j];
-                if (input.type === "password") {
-                    return true;
-                }
-            }
-            return false;
-        };
-
-        function loadData2Form (form) {
-            var inputs = form.getElementsByTagName("input");
-            for (var j = 0; j < inputs.length; j++) {
-                var input = inputs[j];
-                if (isVisible(input) && (input.type === "text" || input.type === "email")) {
-                    input.focus();
-                    input.value = %s;
-                    input.dispatchEvent(new Event('input', { 'bubbles': true }));
-                    input.dispatchEvent(new Event('change', { 'bubbles': true }));
-                    input.blur();
-                }
-                if (input.type === "password") {
-                    input.focus();
-                    input.value = %s;
-                    input.dispatchEvent(new Event('input', { 'bubbles': true }));
-                    input.dispatchEvent(new Event('change', { 'bubbles': true }));
-                    input.blur();
-                }
-            }
-        };
-
-        function fillFirstForm() {
-            var forms = document.getElementsByTagName("form");
-            for (i = 0; i < forms.length; i++) {
-                if (hasPasswordField(forms[i])) {
-                    loadData2Form(forms[i]);
-                    return;
-                }
-            }
-            alert("No Credentials Form found");
-        };
-
-        fillFirstForm()
-    """.splitlines()) % (json.dumps(username), json.dumps(password))
-
-
-def make_js_totp_code(totp):
-    return ' '.join("""
-        (function () {
-            var input = document.activeElement;
-            if (!input || input.tagName !== "INPUT") {
-                alert("No TOTP input field selected");
-                return;
-            }
-            input.value = %s;
-            input.dispatchEvent(new Event('input', { 'bubbles': true }));
-            input.dispatchEvent(new Event('change', { 'bubbles': true }));
-        })();
-    """.splitlines()) % (json.dumps(totp),)
-
-
-def main():
-    if 'QUTE_FIFO' not in os.environ:
-        print(f"No QUTE_FIFO found - {sys.argv[0]} must be run as a qutebrowser userscript")
-        sys.exit(-1)
-
-    try:
-        args = parse_args()
-        assert args.url, "Missing URL"
-        kp = connect_to_keepassxc(args)
-        if not kp:
-            error('Could not connect to KeepassXC')
-            return
-        creds = kp.get_logins(args.url)
-        if not creds:
-            error('No credentials found')
-            return
-        cred = select_account(creds)
-        if not cred:
-            error('No credentials selected')
-            return
-        if args.totp:
-            uuid = cred['uuid']
-            totp = kp.get_totp(uuid)
-            if not totp:
-                error('No TOTP key found')
-                return
-            qute('jseval -q ' + make_js_totp_code(totp))
-        else:
-            name, pw = cred['login'], cred['password']
-            if name and pw:
-                qute('jseval -q ' + make_js_code(name, pw))
-    except Exception as e:
-        error(str(e))
-
-
-if __name__ == '__main__':
-    main()
-
diff --git a/qutebrowser/.config/qutebrowser/userscripts/view_in_mpv b/qutebrowser/.config/qutebrowser/userscripts/view_in_mpv
deleted file mode 100755 (executable)
index 4f371c6..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/env bash
-#
-# Behavior:
-#   Userscript for qutebrowser which views the current web page in mpv using
-#   sensible mpv-flags. While viewing the page in MPV, all <video>, <embed>,
-#   and <object> tags in the original page are temporarily removed. Clicking on
-#   such a removed video restores the respective video.
-#
-#   In order to use this script, just start it using `spawn --userscript` from
-#   qutebrowser. I recommend using an alias, e.g. put this in the
-#   [alias]-section of qutebrowser.conf:
-#
-#     mpv = spawn --userscript /path/to/view_in_mpv
-#
-# Background:
-#   Most of my machines are too slow to play youtube videos using html5, but
-#   they work fine in mpv (and mpv has further advantages like video scaling,
-#   etc). Of course, I don't want the video to be played (or even to be
-#   downloaded) twice — in MPV and in qwebkit. So I often close the tab after
-#   opening it in mpv. However, I actually want to keep the rest of the page
-#   (comments and video suggestions), i.e. only the videos should disappear
-#   when mpv is started. And that's precisely what the present script does.
-#
-# Thorsten Wißmann, 2015 (thorsten` on Libera Chat)
-# Any feedback is welcome!
-
-set -e
-
-if [ -z "$QUTE_FIFO" ] ; then
-    cat 1>&2 <<EOF
-Error: $0 can not be run as a standalone script.
-
-It is a qutebrowser userscript. In order to use it, call it using
-'spawn --userscript' as described in qute://help/userscripts.html
-EOF
-    exit 1
-fi
-
-msg() {
-    local cmd="$1"
-    shift
-    local msg="$*"
-    if [ -z "$QUTE_FIFO" ] ; then
-        echo "$cmd: $msg" >&2
-    else
-        echo "message-$cmd '${msg//\'/\\\'}'" >> "$QUTE_FIFO"
-    fi
-}
-
-MPV_COMMAND=${MPV_COMMAND:-mpv}
-# Warning: spaces in single flags are not supported
-MPV_FLAGS=${MPV_FLAGS:- --force-window --quiet --keep-open=yes --ytdl}
-IFS=" " read -r -a video_command <<< "$MPV_COMMAND $MPV_FLAGS"
-
-js() {
-cat <<EOF
-
-    function descendantOfTagName(child, ancestorTagName) {
-        // tells whether child has some (proper) ancestor
-        // with the tag name ancestorTagName
-        while (child.parentNode != null) {
-            child = child.parentNode;
-            if (typeof child.tagName === 'undefined') break;
-            if (child.tagName.toUpperCase() == ancestorTagName.toUpperCase()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    var App = {};
-
-    var all_videos = [];
-    all_videos.push.apply(all_videos, document.getElementsByTagName("video"));
-    all_videos.push.apply(all_videos, document.getElementsByTagName("object"));
-    all_videos.push.apply(all_videos, document.getElementsByTagName("embed"));
-    App.backup_videos = Array();
-    App.all_replacements = Array();
-    for (i = 0; i < all_videos.length; i++) {
-        var video = all_videos[i];
-        if (descendantOfTagName(video, "object")) {
-            // skip tags that are contained in an object, because we hide
-            // the object anyway.
-            continue;
-        }
-        var replacement = document.createElement("div");
-        replacement.innerHTML = "
-            <p style=\\"margin-bottom: 0.5em\\">
-            Opening page with:
-            <span style=\\"font-family: monospace;\\">${video_command[*]}</span>
-            </p>
-            <p>
-            In order to restore this particular video
-            <a style=\\"font-weight: bold;
-                        color: white;
-                        background: transparent;
-                        cursor: pointer;
-                     \\"
-               onClick=\\"restore_video(this, " + i + ");\\"
-              >click here</a>.
-            </p>
-        ";
-        replacement.style.position = "relative";
-        replacement.style.zIndex = "100003000000";
-        replacement.style.fontSize = "1rem";
-        replacement.style.textAlign = "center";
-        replacement.style.verticalAlign = "middle";
-        replacement.style.height = "100%";
-        replacement.style.background = "#101010";
-        replacement.style.color = "white";
-        replacement.style.border = "4px dashed #545454";
-        replacement.style.padding = "2em";
-        replacement.style.margin = "auto";
-        App.all_replacements[i] = replacement;
-        App.backup_videos[i] = video;
-        video.parentNode.replaceChild(replacement, video);
-    }
-
-    function restore_video(obj, index) {
-        obj = App.all_replacements[index];
-        video = App.backup_videos[index];
-        obj.parentNode.replaceChild(video, obj);
-    }
-
-    /** force repainting the video, thanks to:
-     * http://web.archive.org/web/20151029064649/https://martinwolf.org/2014/06/10/force-repaint-of-an-element-with-javascript/
-     */
-    var siteHeader = document.getElementById('header');
-    siteHeader.style.display='none';
-    siteHeader.offsetHeight; // no need to store this anywhere, the reference is enough
-    siteHeader.style.display='block';
-
-EOF
-}
-
-printjs() {
-    js | sed 's,//.*$,,' | tr '\n' ' '
-}
-echo "jseval -q -w main $(printjs)" >> "$QUTE_FIFO"
-
-msg info "Opening $QUTE_URL with mpv"
-"${video_command[@]}" "$@" "$QUTE_URL"
diff --git a/ranger/.config/ranger/rc.conf b/ranger/.config/ranger/rc.conf
deleted file mode 100644 (file)
index d7bcd9f..0000000
+++ /dev/null
@@ -1,765 +0,0 @@
-# ===================================================================
-# This file contains the default startup commands for ranger.
-# To change them, it is recommended to create either /etc/ranger/rc.conf
-# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
-# commands there.
-#
-# If you copy this whole file there, you may want to set the environment
-# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
-#
-# The purpose of this file is mainly to define keybindings and settings.
-# For running more complex python code, please create a plugin in "plugins/" or
-# a command in "commands.py".
-#
-# Each line is a command that will be run before the user interface
-# is initialized.  As a result, you can not use commands which rely
-# on the UI such as :delete or :mark.
-# ===================================================================
-
-# ===================================================================
-# == Options
-# ===================================================================
-
-# Which viewmode should be used?  Possible values are:
-#     miller: Use miller columns which show multiple levels of the hierarchy
-#     multipane: Midnight-commander like multipane view showing all tabs next
-#                to each other
-set viewmode miller
-#set viewmode multipane
-
-# How many columns are there, and what are their relative widths?
-set column_ratios 1,3,4
-
-# Which files should be hidden? (regular expression)
-set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
-
-# Show hidden files? You can toggle this by typing 'zh'
-set show_hidden false
-
-# Ask for a confirmation when running the "delete" command?
-# Valid values are "always", "never", "multiple" (default)
-# With "multiple", ranger will ask only if you delete multiple files at once.
-set confirm_on_delete multiple
-
-# Use non-default path for file preview script?
-# ranger ships with scope.sh, a script that calls external programs (see
-# README.md for dependencies) to preview images, archives, etc.
-set preview_script ~/.config/ranger/scope.sh
-
-# Use the external preview script or display simple plain text or image previews?
-set use_preview_script true
-
-# Automatically count files in the directory, even before entering them?
-set automatically_count_files true
-
-# Open all images in this directory when running certain image viewers
-# like feh or sxiv?  You can still open selected files by marking them.
-set open_all_images true
-
-# Be aware of version control systems and display information.
-set vcs_aware false
-
-# State of the four backends git, hg, bzr, svn. The possible states are
-# disabled, local (only show local info), enabled (show local and remote
-# information).
-set vcs_backend_git enabled
-set vcs_backend_hg disabled
-set vcs_backend_bzr disabled
-set vcs_backend_svn disabled
-
-# Truncate the long commit messages to this length when shown in the statusbar.
-set vcs_msg_length 50
-
-# Use one of the supported image preview protocols
-set preview_images true
-
-# Set the preview image method. Supported methods:
-#
-# * w3m (default):
-#   Preview images in full color with the external command "w3mimgpreview"?
-#   This requires the console web browser "w3m" and a supported terminal.
-#   It has been successfully tested with "xterm" and "urxvt" without tmux.
-#
-# * iterm2:
-#   Preview images in full color using iTerm2 image previews
-#   (http://iterm2.com/images.html). This requires using iTerm2 compiled
-#   with image preview support.
-#
-#   This feature relies on the dimensions of the terminal's font.  By default, a
-#   width of 8 and height of 11 are used.  To use other values, set the options
-#   iterm2_font_width and iterm2_font_height to the desired values.
-#
-# * terminology:
-#   Previews images in full color in the terminology terminal emulator.
-#   Supports a wide variety of formats, even vector graphics like svg.
-#
-# * urxvt:
-#   Preview images in full color using urxvt image backgrounds. This
-#   requires using urxvt compiled with pixbuf support.
-#
-# * urxvt-full:
-#   The same as urxvt but utilizing not only the preview pane but the
-#   whole terminal window.
-#
-# * kitty:
-#   Preview images in full color using kitty image protocol.
-#   Requires python PIL or pillow library.
-#   If ranger does not share the local filesystem with kitty
-#   the transfer method is changed to encode the whole image;
-#   while slower, this allows remote previews,
-#   for example during an ssh session.
-#   Tmux is unsupported.
-#
-# * ueberzug:
-#   Preview images in full color with the external command "ueberzug".
-#   Images are shown by using a child window.
-#   Only for users who run X11 in GNU/Linux.
-set preview_images_method ueberzug
-
-# Delay in seconds before displaying an image with the w3m method.
-# Increase it in case of experiencing display corruption.
-set w3m_delay 0.02
-
-# Manually adjust the w3mimg offset when using a terminal which needs this
-set w3m_offset 0
-
-# Default iTerm2 font size (see: preview_images_method: iterm2)
-set iterm2_font_width 9
-set iterm2_font_height 12
-
-# Use a unicode "..." character to mark cut-off filenames?
-set unicode_ellipsis true
-
-# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
-# Requires the python-bidi pip package
-set bidi_support false
-
-# Show dotfiles in the bookmark preview box?
-set show_hidden_bookmarks true
-
-# Which colorscheme to use?  These colorschemes are available by default:
-# default, jungle, snow, solarized
-set colorscheme jungle
-
-# Preview files on the rightmost column?
-# And collapse (shrink) the last column if there is nothing to preview?
-set preview_files true
-set preview_directories true
-set collapse_preview true
-
-# Wrap long lines in plain text previews?
-set wrap_plaintext_previews false
-
-# Save the console history on exit?
-set save_console_history true
-
-# Draw the status bar on top of the browser window (default: bottom)
-set status_bar_on_top false
-
-# Draw a progress bar in the status bar which displays the average state of all
-# currently running tasks which support progress bars?
-set draw_progress_bar_in_status_bar true
-
-# Draw borders around columns? (separators, outline, both, or none)
-# Separators are vertical lines between columns.
-# Outline draws a box around all the columns.
-# Both combines the two.
-set draw_borders none
-
-# Display the directory name in tabs?
-set dirname_in_tabs false
-
-# Enable the mouse support?
-set mouse_enabled true
-
-# Display the file size in the main column or status bar?
-set display_size_in_main_column true
-set display_size_in_status_bar true
-
-# Display the free disk space in the status bar?
-set display_free_space_in_status_bar true
-
-# Display files tags in all columns or only in main column?
-set display_tags_in_all_columns true
-
-# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
-set update_title false
-
-# Set the tmux/screen window-name to "ranger"?
-set update_tmux_title true
-
-# Shorten the title if it gets long?  The number defines how many
-# directories are displayed at once, 0 turns off this feature.
-set shorten_title 3
-
-# Show hostname in titlebar?
-set hostname_in_titlebar true
-
-# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
-set tilde_in_titlebar false
-
-# How many directory-changes or console-commands should be kept in history?
-set max_history_size 20
-set max_console_history_size 50
-
-# Try to keep so much space between the top/bottom border when scrolling:
-set scroll_offset 8
-
-# Flush the input after each key hit?  (Noticeable when ranger lags)
-set flushinput true
-
-# Padding on the right when there's no preview?
-# This allows you to click into the space to run the file.
-set padding_right true
-
-# Save bookmarks (used with mX and `X) instantly?
-# This helps to synchronize bookmarks between multiple ranger
-# instances but leads to *slight* performance loss.
-# When false, bookmarks are saved when ranger is exited.
-set autosave_bookmarks true
-
-# Save the "`" bookmark to disk.  This can be used to switch to the last
-# directory by typing "``".
-
-# You can display the "real" cumulative size of directories by using the
-# command :get_cumulative_size or typing "dc".  The size is expensive to
-# calculate and will not be updated automatically.  You can choose
-# to update it automatically though by turning on this option:
-set autoupdate_cumulative_size false
-
-# Turning this on makes sense for screen readers:
-set show_cursor false
-
-# One of: size, natural, basename, atime, ctime, mtime, type, random
-set sort natural
-
-# Additional sorting options
-set sort_reverse false
-set sort_case_insensitive true
-set sort_directories_first true
-set sort_unicode false
-
-# Enable this if key combinations with the Alt Key don't work for you.
-# (Especially on xterm)
-set xterm_alt_key false
-
-# Whether to include bookmarks in cd command
-set cd_bookmarks true
-
-# Changes case sensitivity for the cd command tab completion
-set cd_tab_case sensitive
-
-# Use fuzzy tab completion with the "cd" command. For example,
-# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
-set cd_tab_fuzzy false
-
-# Avoid previewing files larger than this size, in bytes.  Use a value of 0 to
-# disable this feature.
-set preview_max_size 5000000
-
-# The key hint lists up to this size have their sublists expanded.
-# Otherwise the submaps are replaced with "...".
-set hint_collapse_threshold 10
-
-# Add the highlighted file to the path in the titlebar
-set show_selection_in_titlebar true
-
-# The delay that ranger idly waits for user input, in milliseconds, with a
-# resolution of 100ms.  Lower delay reduces lag between directory updates but
-# increases CPU load.
-set idle_delay 2000
-
-# When the metadata manager module looks for metadata, should it only look for
-# a ".metadata.json" file in the current directory, or do a deep search and
-# check all directories above the current one as well?
-set metadata_deep_search false
-
-# Clear all existing filters when leaving a directory
-set clear_filters_on_dir_change false
-
-# Disable displaying line numbers in main column.
-# Possible values: false, absolute, relative.
-set line_numbers false
-
-# When line_numbers=relative show the absolute line number in the
-# current line.
-set relative_current_zero false
-
-# Start line numbers from 1 instead of 0
-set one_indexed true
-
-# Save tabs on exit
-set save_tabs_on_exit true
-
-# Enable scroll wrapping - moving down while on the last item will wrap around to
-# the top and vice versa.
-set wrap_scroll false
-
-# Set the global_inode_type_filter to nothing.  Possible options: d, f and l for
-# directories, files and symlinks respectively.
-set global_inode_type_filter
-
-# This setting allows to freeze the list of files to save I/O bandwidth.  It
-# should be 'false' during start-up, but you can toggle it by pressing F.
-set freeze_files false
-
-# Print file sizes in bytes instead of the default human-readable format.
-set size_in_bytes false
-
-# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
-# give a warning when you nest ranger in a subshell started by ranger.
-# Special value "error" makes the warning more visible.
-set nested_ranger_warning true
-
-# ===================================================================
-# == Local Options
-# ===================================================================
-# You can set local options that only affect a single directory.
-
-# Examples:
-# setlocal path=~/downloads sort mtime
-setlocal path=~/Downloads sort mtime
-
-# ===================================================================
-# == Command Aliases in the Console
-# ===================================================================
-
-alias e     edit
-alias q     quit
-alias q!    quit!
-alias qa    quitall
-alias qa!   quitall!
-alias qall  quitall
-alias qall! quitall!
-alias setl  setlocal
-
-alias filter     scout -prts
-alias find       scout -aets
-alias mark       scout -mr
-alias unmark     scout -Mr
-alias search     scout -rs
-alias search_inc scout -rts
-alias travel     scout -aefklst
-
-# ===================================================================
-# == Define keys for the browser
-# ===================================================================
-
-# Basic
-map     Q quitall
-map     q quit
-copymap q ZZ ZQ
-
-map R     reload_cwd
-map F     set freeze_files!
-map <C-r> reset
-map <C-l> redraw_window
-map <C-c> abort
-map <esc> change_mode normal
-map ~ set viewmode!
-
-map i display_file
-map <A-j> scroll_preview 1
-map <A-k> scroll_preview -1
-map ? help
-map W display_log
-map w taskview_open
-map S shell $SHELL
-
-map :  console
-map ;  console
-map !  console shell%space
-map @  console -p6 shell  %%s
-map #  console shell -p%space
-map s  console shell%space
-map r  chain draw_possible_programs; console open_with%space
-map f  console find%space
-map cd console cd%space
-
-map <C-p> chain console; eval fm.ui.console.history_move(-1)
-
-# Change the line mode
-map Mf linemode filename
-map Mi linemode fileinfo
-map Mm linemode mtime
-map Mh linemode humanreadablemtime
-map Mp linemode permissions
-map Ms linemode sizemtime
-map MH linemode sizehumanreadablemtime
-map Mt linemode metatitle
-
-# Tagging / Marking
-map t       tag_toggle
-map ut      tag_remove
-map "<any>  tag_toggle tag=%any
-map <Space> mark_files toggle=True
-map v       mark_files all=True toggle=True
-map uv      mark_files all=True val=False
-map V       toggle_visual_mode
-map uV      toggle_visual_mode reverse=True
-
-# For the nostalgics: Midnight Commander bindings
-map <F1> help
-map <F2> rename_append
-map <F3> display_file
-map <F4> edit
-map <F5> copy
-map <F6> cut
-map <F7> console mkdir%space
-map <F8> console delete
-#map <F8> console trash
-map <F10> exit
-
-# In case you work on a keyboard with dvorak layout
-map <UP>       move up=1
-map <DOWN>     move down=1
-map <LEFT>     move left=1
-map <RIGHT>    move right=1
-map <HOME>     move to=0
-map <END>      move to=-1
-map <PAGEDOWN> move down=1   pages=True
-map <PAGEUP>   move up=1     pages=True
-map <CR>       move right=1
-#map <DELETE>   console delete
-map <INSERT>   console touch%space
-
-# VIM-like
-copymap <UP>       k
-copymap <DOWN>     j
-copymap <LEFT>     h
-copymap <RIGHT>    l
-copymap <HOME>     gg
-copymap <END>      G
-copymap <END>      ge
-copymap <PAGEDOWN> <C-F>
-copymap <PAGEUP>   <C-B>
-
-map J  move down=0.5  pages=True
-map K  move up=0.5    pages=True
-copymap J <C-D>
-copymap K <C-U>
-
-# Jumping around
-map H     history_go -1
-map L     history_go 1
-map ]     move_parent 1
-map [     move_parent -1
-map }     traverse
-map {     traverse_backwards
-map )     jump_non
-
-map ga cd /mnt/fastgames/Battle.net/World of Warcraft/_retail_/Interface/AddOns
-map gh cd ~
-map gH cd ~/.config
-map gE cd /etc
-map gu cd /usr
-map gd cd ~/Downloads
-map gD cd /dev
-#map gL cd -r %f
-map go cd /opt
-map gv cd /var
-map gM cd /media
-map gi eval fm.cd('/run/media/' + os.getenv('USER'))
-map gm cd /mnt
-map gs cd /srv
-map gp cd /tmp
-#map gr cd /
-#map gR eval fm.cd(ranger.RANGERDIR)
-map g/ cd /
-#map g? cd /usr/share/doc/ranger
-
-# External Programs
-map E  edit
-map du shell -p du --max-depth=1 -h --apparent-size
-map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
-map yp yank path
-map yd yank dir
-map yn yank name
-map y. yank name_without_extension
-
-# Filesystem Operations
-map =  chmod
-
-map cw console rename%space
-map a  rename_append
-map A  eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
-map I  eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
-
-map pp paste
-map po paste overwrite=True
-map pP paste append=True
-map pO paste overwrite=True append=True
-map pl paste_symlink relative=False
-map pL paste_symlink relative=True
-map phl paste_hardlink
-map pht paste_hardlinked_subtree
-map pd console paste dest=
-map p`<any> paste dest=%any_path
-map p'<any> paste dest=%any_path
-
-map dr shell fileToRestore=$(cat ~/.config/ranger/trash_history | grep "^trashed" | tail -n 1 | cut -c10- | awk -F "from_dir " '{print $1}' | rev | cut -c3- | rev) && mv -i ~/.Trash/$fileToRestore $fileToRestore && echo "untrashed $(pwd)/$fileToRestore" >> ~/.config/ranger/trash_history && unset fileToRestore
-map dh shell less ~/.config/ranger/trash_history
-map dD console delete
-#map dT console trash
-map dT shell mv -i %s ~/.local/share/Trash/files/ && echo "trashed %s from_dir $(pwd)" >> ~/.config/ranger/trash_history 
-
-map dd cut
-map ud uncut
-map da cut mode=add
-map dr cut mode=remove
-map dt cut mode=toggle
-
-map yy copy
-map uy uncut
-map ya copy mode=add
-map yr copy mode=remove
-map yt copy mode=toggle
-
-# Temporary workarounds
-map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
-map dG  eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
-map dj  eval fm.cut(dirarg=dict(down=1), narg=quantifier)
-map dk  eval fm.cut(dirarg=dict(up=1), narg=quantifier)
-map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
-map yG  eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
-map yj  eval fm.copy(dirarg=dict(down=1), narg=quantifier)
-map yk  eval fm.copy(dirarg=dict(up=1), narg=quantifier)
-
-# Searching
-map /  console search%space
-map n  search_next
-map N  search_next forward=False
-map ct search_next order=tag
-map cs search_next order=size
-map ci search_next order=mimetype
-map cc search_next order=ctime
-map cm search_next order=mtime
-map ca search_next order=atime
-
-# Tabs
-map <C-n>     eval fm.tab_new('%d')
-map <C-w>     tab_close
-map <TAB>     tab_move 1
-map <S-TAB>   tab_move -1
-map <A-Right> tab_move 1
-map <A-Left>  tab_move -1
-map gt        tab_move 1
-map gT        tab_move -1
-map gn        tab_new
-map gc        tab_close
-map uq        tab_restore
-map <a-1>     tab_open 1
-map <a-2>     tab_open 2
-map <a-3>     tab_open 3
-map <a-4>     tab_open 4
-map <a-5>     tab_open 5
-map <a-6>     tab_open 6
-map <a-7>     tab_open 7
-map <a-8>     tab_open 8
-map <a-9>     tab_open 9
-map <a-r>     tab_shift 1
-map <a-l>     tab_shift -1
-
-# Sorting
-map or set sort_reverse!
-map oz set sort=random
-map os chain set sort=size;      set sort_reverse=False
-map ob chain set sort=basename;  set sort_reverse=False
-map on chain set sort=natural;   set sort_reverse=False
-map om chain set sort=mtime;     set sort_reverse=False
-map oc chain set sort=ctime;     set sort_reverse=False
-map oa chain set sort=atime;     set sort_reverse=False
-map ot chain set sort=type;      set sort_reverse=False
-map oe chain set sort=extension; set sort_reverse=False
-
-map oS chain set sort=size;      set sort_reverse=True
-map oB chain set sort=basename;  set sort_reverse=True
-map oN chain set sort=natural;   set sort_reverse=True
-map oM chain set sort=mtime;     set sort_reverse=True
-map oC chain set sort=ctime;     set sort_reverse=True
-map oA chain set sort=atime;     set sort_reverse=True
-map oT chain set sort=type;      set sort_reverse=True
-map oE chain set sort=extension; set sort_reverse=True
-
-map dc get_cumulative_size
-
-# Settings
-map zc    set collapse_preview!
-map zd    set sort_directories_first!
-map zh    set show_hidden!
-map <C-h> set show_hidden!
-copymap <C-h> <backspace>
-copymap <backspace> <backspace2>
-map zI    set flushinput!
-map zi    set preview_images!
-map zm    set mouse_enabled!
-map zp    set preview_files!
-map zP    set preview_directories!
-map zs    set sort_case_insensitive!
-map zu    set autoupdate_cumulative_size!
-map zv    set use_preview_script!
-map zf    console filter%space
-copymap zf zz
-
-# Filter stack
-map .d filter_stack add type d
-map .f filter_stack add type f
-map .l filter_stack add type l
-map .m console filter_stack add mime%space
-map .n console filter_stack add name%space
-map .# console filter_stack add hash%space
-map ." filter_stack add duplicate
-map .' filter_stack add unique
-map .| filter_stack add or
-map .& filter_stack add and
-map .! filter_stack add not
-map .r filter_stack rotate
-map .c filter_stack clear
-map .* filter_stack decompose
-map .p filter_stack pop
-map .. filter_stack show
-
-# Bookmarks
-map `<any>  enter_bookmark %any
-map '<any>  enter_bookmark %any
-map m<any>  set_bookmark %any
-map um<any> unset_bookmark %any
-
-map m<bg>   draw_bookmarks
-copymap m<bg>  um<bg> `<bg> '<bg>
-
-# Generate all the chmod bindings with some python help:
-eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +{0}  shell -f chmod u+{0} %s".format(arg))
-
-eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -{0}  shell -f chmod u-{0} %s".format(arg))
-
-# ===================================================================
-# == Define keys for the console
-# ===================================================================
-# Note: Unmapped keys are passed directly to the console.
-
-# Basic
-cmap <tab>   eval fm.ui.console.tab()
-cmap <s-tab> eval fm.ui.console.tab(-1)
-cmap <ESC>   eval fm.ui.console.close()
-cmap <CR>    eval fm.ui.console.execute()
-cmap <C-l>   redraw_window
-
-copycmap <ESC> <C-c>
-copycmap <CR>  <C-j>
-
-# Move around
-cmap <up>    eval fm.ui.console.history_move(-1)
-cmap <down>  eval fm.ui.console.history_move(1)
-cmap <left>  eval fm.ui.console.move(left=1)
-cmap <right> eval fm.ui.console.move(right=1)
-cmap <home>  eval fm.ui.console.move(right=0, absolute=True)
-cmap <end>   eval fm.ui.console.move(right=-1, absolute=True)
-cmap <a-b> eval fm.ui.console.move_word(left=1)
-cmap <a-f> eval fm.ui.console.move_word(right=1)
-
-copycmap <a-b> <a-left>
-copycmap <a-f> <a-right>
-
-# Line Editing
-cmap <backspace>  eval fm.ui.console.delete(-1)
-cmap <delete>     eval fm.ui.console.delete(0)
-cmap <C-w>        eval fm.ui.console.delete_word()
-cmap <A-d>        eval fm.ui.console.delete_word(backward=False)
-cmap <C-k>        eval fm.ui.console.delete_rest(1)
-cmap <C-u>        eval fm.ui.console.delete_rest(-1)
-cmap <C-y>        eval fm.ui.console.paste()
-
-# And of course the emacs way
-copycmap <ESC>       <C-g>
-copycmap <up>        <C-p>
-copycmap <down>      <C-n>
-copycmap <left>      <C-b>
-copycmap <right>     <C-f>
-copycmap <home>      <C-a>
-copycmap <end>       <C-e>
-copycmap <delete>    <C-d>
-copycmap <backspace> <C-h>
-
-# Note: There are multiple ways to express backspaces.  <backspace> (code 263)
-# and <backspace2> (code 127).  To be sure, use both.
-copycmap <backspace> <backspace2>
-
-# This special expression allows typing in numerals:
-cmap <allow_quantifiers> false
-
-# ===================================================================
-# == Pager Keybindings
-# ===================================================================
-
-# Movement
-pmap  <down>      pager_move  down=1
-pmap  <up>        pager_move  up=1
-pmap  <left>      pager_move  left=4
-pmap  <right>     pager_move  right=4
-pmap  <home>      pager_move  to=0
-pmap  <end>       pager_move  to=-1
-pmap  <pagedown>  pager_move  down=1.0  pages=True
-pmap  <pageup>    pager_move  up=1.0    pages=True
-pmap  <C-d>       pager_move  down=0.5  pages=True
-pmap  <C-u>       pager_move  up=0.5    pages=True
-
-copypmap <UP>       k  <C-p>
-copypmap <DOWN>     j  <C-n> <CR>
-copypmap <LEFT>     h
-copypmap <RIGHT>    l
-copypmap <HOME>     g
-copypmap <END>      G
-copypmap <C-d>      d
-copypmap <C-u>      u
-copypmap <PAGEDOWN> n  f  <C-F>  <Space>
-copypmap <PAGEUP>   p  b  <C-B>
-
-# Basic
-pmap     <C-l> redraw_window
-pmap     <ESC> pager_close
-copypmap <ESC> q Q i <F3>
-pmap E      edit_file
-
-# ===================================================================
-# == Taskview Keybindings
-# ===================================================================
-
-# Movement
-tmap <up>        taskview_move up=1
-tmap <down>      taskview_move down=1
-tmap <home>      taskview_move to=0
-tmap <end>       taskview_move to=-1
-tmap <pagedown>  taskview_move down=1.0  pages=True
-tmap <pageup>    taskview_move up=1.0    pages=True
-tmap <C-d>       taskview_move down=0.5  pages=True
-tmap <C-u>       taskview_move up=0.5    pages=True
-
-copytmap <UP>       k  <C-p>
-copytmap <DOWN>     j  <C-n> <CR>
-copytmap <HOME>     g
-copytmap <END>      G
-copytmap <C-u>      u
-copytmap <PAGEDOWN> n  f  <C-F>  <Space>
-copytmap <PAGEUP>   p  b  <C-B>
-
-# Changing priority and deleting tasks
-tmap J          eval -q fm.ui.taskview.task_move(-1)
-tmap K          eval -q fm.ui.taskview.task_move(0)
-tmap dd         eval -q fm.ui.taskview.task_remove()
-tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
-tmap <pageup>   eval -q fm.ui.taskview.task_move(0)
-tmap <delete>   eval -q fm.ui.taskview.task_remove()
-
-# Basic
-tmap <C-l> redraw_window
-tmap <ESC> taskview_close
-copytmap <ESC> q Q w <C-c>
diff --git a/ranger/.config/ranger/scope.sh b/ranger/.config/ranger/scope.sh
deleted file mode 100755 (executable)
index 0a61b37..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-#!/usr/bin/env bash
-
-set -o noclobber -o noglob -o nounset -o pipefail
-IFS=$'\n'
-
-## If the option `use_preview_script` is set to `true`,
-## then this script will be called and its output will be displayed in ranger.
-## ANSI color codes are supported.
-## STDIN is disabled, so interactive scripts won't work properly
-
-## This script is considered a configuration file and must be updated manually.
-## It will be left untouched if you upgrade ranger.
-
-## Because of some automated testing we do on the script #'s for comments need
-## to be doubled up. Code that is commented out, because it's an alternative for
-## example, gets only one #.
-
-## Meanings of exit codes:
-## code | meaning    | action of ranger
-## -----+------------+-------------------------------------------
-## 0    | success    | Display stdout as preview
-## 1    | no preview | Display no preview at all
-## 2    | plain text | Display the plain content of the file
-## 3    | fix width  | Don't reload when width changes
-## 4    | fix height | Don't reload when height changes
-## 5    | fix both   | Don't ever reload
-## 6    | image      | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
-## 7    | image      | Display the file directly as an image
-
-## Script arguments
-FILE_PATH="${1}"         # Full path of the highlighted file
-PV_WIDTH="${2}"          # Width of the preview pane (number of fitting characters)
-## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
-PV_HEIGHT="${3}"         # Height of the preview pane (number of fitting characters)
-IMAGE_CACHE_PATH="${4}"  # Full path that should be used to cache image preview
-PV_IMAGE_ENABLED="${5}"  # 'True' if image previews are enabled, 'False' otherwise.
-
-FILE_EXTENSION="${FILE_PATH##*.}"
-FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
-
-## Settings
-HIGHLIGHT_SIZE_MAX=262143  # 256KiB
-HIGHLIGHT_TABWIDTH="${HIGHLIGHT_TABWIDTH:-8}"
-HIGHLIGHT_STYLE="${HIGHLIGHT_STYLE:-pablo}"
-HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
-PYGMENTIZE_STYLE="${PYGMENTIZE_STYLE:-autumn}"
-BAT_STYLE="${BAT_STYLE:-plain}"
-OPENSCAD_IMGSIZE="${RNGR_OPENSCAD_IMGSIZE:-1000,1000}"
-OPENSCAD_COLORSCHEME="${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}"
-SQLITE_TABLE_LIMIT=20  # Display only the top <limit> tables in database, set to 0 for no exhaustive preview (only the sqlite_master table is displayed).
-SQLITE_ROW_LIMIT=5     # Display only the first and the last (<limit> - 1) records in each table, set to 0 for no limits.
-
-handle_extension() {
-    case "${FILE_EXTENSION_LOWER}" in
-        ## Archive
-        a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
-        rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
-            atool --list -- "${FILE_PATH}" && exit 5
-            bsdtar --list --file "${FILE_PATH}" && exit 5
-            exit 1;;
-        rar)
-            ## Avoid password prompt by providing empty password
-            unrar lt -p- -- "${FILE_PATH}" && exit 5
-            exit 1;;
-        7z)
-            ## Avoid password prompt by providing empty password
-            7z l -p -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## PDF
-        pdf)
-            ## Preview as text conversion
-            pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
-              fmt -w "${PV_WIDTH}" && exit 5
-            mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
-              fmt -w "${PV_WIDTH}" && exit 5
-            exiftool "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## BitTorrent
-        torrent)
-            transmission-show -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## OpenDocument
-        odt|sxw)
-            ## Preview as text conversion
-            odt2txt "${FILE_PATH}" && exit 5
-            ## Preview as markdown conversion
-            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
-            exit 1;;
-        ods|odp)
-            ## Preview as text conversion (unsupported by pandoc for markdown)
-            odt2txt "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## XLSX
-        xlsx)
-            ## Preview as csv conversion
-            ## Uses: https://github.com/dilshod/xlsx2csv
-            xlsx2csv -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## HTML
-        htm|html|xhtml)
-            ## Preview as text conversion
-            w3m -dump "${FILE_PATH}" && exit 5
-            lynx -dump -- "${FILE_PATH}" && exit 5
-            elinks -dump "${FILE_PATH}" && exit 5
-            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
-            ;;
-
-        ## JSON
-        json)
-            jq --color-output . "${FILE_PATH}" && exit 5
-            python -m json.tool -- "${FILE_PATH}" && exit 5
-            ;;
-
-        ## Jupyter Notebooks
-        ipynb)
-            jupyter nbconvert --to markdown "${FILE_PATH}" --stdout | env COLORTERM=8bit bat --color=always --style=plain --language=markdown && exit 5
-            jupyter nbconvert --to markdown "${FILE_PATH}" --stdout && exit 5
-            jq --color-output . "${FILE_PATH}" && exit 5
-            python -m json.tool -- "${FILE_PATH}" && exit 5
-            ;;
-
-        ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
-        ## by file(1).
-        dff|dsf|wv|wvc)
-            mediainfo "${FILE_PATH}" && exit 5
-            exiftool "${FILE_PATH}" && exit 5
-            ;; # Continue with next handler on failure
-    esac
-}
-
-handle_image() {
-    ## Size of the preview if there are multiple options or it has to be
-    ## rendered from vector graphics. If the conversion program allows
-    ## specifying only one dimension while keeping the aspect ratio, the width
-    ## will be used.
-    local DEFAULT_SIZE="1920x1080"
-
-    local mimetype="${1}"
-    case "${mimetype}" in
-        ## SVG
-        image/svg+xml|image/svg)
-            rsvg-convert --keep-aspect-ratio --width "${DEFAULT_SIZE%x*}" "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}.png" \
-                && mv "${IMAGE_CACHE_PATH}.png" "${IMAGE_CACHE_PATH}" \
-                && exit 6
-            exit 1;;
-
-        ## DjVu
-        image/vnd.djvu)
-            ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
-                  - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
-                  && exit 6 || exit 1;;
-
-        ## Image
-        image/*)
-            local orientation
-            orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
-            ## If orientation data is present and the image actually
-            ## needs rotating ("1" means no rotation)...
-            if [[ -n "$orientation" && "$orientation" != 1 ]]; then
-                ## ...auto-rotate the image according to the EXIF data.
-                convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
-            fi
-
-            ## `w3mimgdisplay` will be called for all images (unless overridden
-            ## as above), but might fail for unsupported types.
-            exit 7;;
-
-        ## Video
-        # video/*)
-        #     # Get embedded thumbnail
-        #     ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy "${IMAGE_CACHE_PATH}" && exit 6
-        #     # Get frame 10% into video
-        #     ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
-        #     exit 1;;
-
-        ## Audio
-        # audio/*)
-        #     # Get embedded thumbnail
-        #     ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy \
-        #       "${IMAGE_CACHE_PATH}" && exit 6;;
-
-        ## PDF
-        # application/pdf)
-        #     pdftoppm -f 1 -l 1 \
-        #              -scale-to-x "${DEFAULT_SIZE%x*}" \
-        #              -scale-to-y -1 \
-        #              -singlefile \
-        #              -jpeg -tiffcompression jpeg \
-        #              -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
-        #         && exit 6 || exit 1;;
-
-
-        ## ePub, MOBI, FB2 (using Calibre)
-        # application/epub+zip|application/x-mobipocket-ebook|\
-        # application/x-fictionbook+xml)
-        #     # ePub (using https://github.com/marianosimone/epub-thumbnailer)
-        #     epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
-        #         "${DEFAULT_SIZE%x*}" && exit 6
-        #     ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
-        #         >/dev/null && exit 6
-        #     exit 1;;
-
-        ## Font
-        application/font*|application/*opentype)
-            preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
-            if fontimage -o "${preview_png}" \
-                         --pixelsize "120" \
-                         --fontname \
-                         --pixelsize "80" \
-                         --text "  ABCDEFGHIJKLMNOPQRSTUVWXYZ  " \
-                         --text "  abcdefghijklmnopqrstuvwxyz  " \
-                         --text "  0123456789.:,;(*!?') ff fl fi ffi ffl  " \
-                         --text "  The quick brown fox jumps over the lazy dog.  " \
-                         "${FILE_PATH}";
-            then
-                convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
-                    && rm "${preview_png}" \
-                    && exit 6
-            else
-                exit 1
-            fi
-            ;;
-
-        ## Preview archives using the first image inside.
-        ## (Very useful for comic book collections for example.)
-        # application/zip|application/x-rar|application/x-7z-compressed|\
-        #     application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
-        #     local fn=""; local fe=""
-        #     local zip=""; local rar=""; local tar=""; local bsd=""
-        #     case "${mimetype}" in
-        #         application/zip) zip=1 ;;
-        #         application/x-rar) rar=1 ;;
-        #         application/x-7z-compressed) ;;
-        #         *) tar=1 ;;
-        #     esac
-        #     { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
-        #     { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
-        #     { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
-        #     { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
-        #
-        #     fn=$(echo "$fn" | python -c "from __future__ import print_function; \
-        #             import sys; import mimetypes as m; \
-        #             [ print(l, end='') for l in sys.stdin if \
-        #               (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
-        #         sort -V | head -n 1)
-        #     [ "$fn" = "" ] && return
-        #     [ "$bsd" ] && fn=$(printf '%b' "$fn")
-        #
-        #     [ "$tar" ] && tar --extract --to-stdout \
-        #         --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
-        #     fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
-        #     [ "$bsd" ] && bsdtar --extract --to-stdout \
-        #         --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
-        #     [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
-        #     [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
-        #         "${IMAGE_CACHE_PATH}" && exit 6
-        #     [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
-        #         "${IMAGE_CACHE_PATH}" && exit 6
-        #     [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
-        #     ;;
-    esac
-
-    # openscad_image() {
-    #     TMPPNG="$(mktemp -t XXXXXX.png)"
-    #     openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
-    #         --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
-    #         -o "${TMPPNG}" "${1}"
-    #     mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
-    # }
-
-    case "${FILE_EXTENSION_LOWER}" in
-       ## 3D models
-       ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
-       ## is hardcoded as jpeg. So we make a tempfile.png and just
-       ## move/rename it to jpg. This works because image libraries are
-       ## smart enough to handle it.
-       # csg|scad)
-       #     openscad_image "${FILE_PATH}" && exit 6
-       #     ;;
-       # 3mf|amf|dxf|off|stl)
-       #     openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
-       #     ;;
-       drawio)
-           draw.io -x "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" \
-               --width "${DEFAULT_SIZE%x*}" && exit 6
-           exit 1;;
-    esac
-}
-
-handle_mime() {
-    local mimetype="${1}"
-    case "${mimetype}" in
-        ## RTF and DOC
-        text/rtf|*msword)
-            ## Preview as text conversion
-            ## note: catdoc does not always work for .doc files
-            ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
-            catdoc -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## DOCX, ePub, FB2 (using markdown)
-        ## You might want to remove "|epub" and/or "|fb2" below if you have
-        ## uncommented other methods to preview those formats
-        *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
-            ## Preview as markdown conversion
-            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## E-mails
-        message/rfc822)
-            ## Parsing performed by mu: https://github.com/djcb/mu
-            mu view -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## XLS
-        *ms-excel)
-            ## Preview as csv conversion
-            ## xls2csv comes with catdoc:
-            ##   http://www.wagner.pp.ru/~vitus/software/catdoc/
-            xls2csv -- "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## SQLite
-        *sqlite3)
-            ## Preview as text conversion
-            sqlite_tables="$( sqlite3 "file:${FILE_PATH}?mode=ro" '.tables' )" \
-                || exit 1
-            [ -z "${sqlite_tables}" ] &&
-                { echo "Empty SQLite database." && exit 5; }
-            sqlite_show_query() {
-                sqlite-utils query "${FILE_PATH}" "${1}" --table --fmt fancy_grid \
-                || sqlite3 "file:${FILE_PATH}?mode=ro" "${1}" -header -column
-            }
-            ## Display basic table information
-            sqlite_rowcount_query="$(
-                sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
-                    'SELECT group_concat(
-                        "SELECT """ || name || """ AS tblname,
-                                          count(*) AS rowcount
-                         FROM " || name,
-                        " UNION ALL "
-                    )
-                    FROM sqlite_master
-                    WHERE type="table" AND name NOT LIKE "sqlite_%";'
-            )"
-            sqlite_show_query \
-                "SELECT tblname AS 'table', rowcount AS 'count',
-                (
-                    SELECT '(' || group_concat(name, ', ') || ')'
-                    FROM pragma_table_info(tblname)
-                ) AS 'columns',
-                (
-                    SELECT '(' || group_concat(
-                        upper(type) || (
-                            CASE WHEN pk > 0 THEN ' PRIMARY KEY' ELSE '' END
-                        ),
-                        ', '
-                    ) || ')'
-                    FROM pragma_table_info(tblname)
-                ) AS 'types'
-                FROM (${sqlite_rowcount_query});"
-            if [ "${SQLITE_TABLE_LIMIT}" -gt 0 ] &&
-               [ "${SQLITE_ROW_LIMIT}" -ge 0 ]; then
-                ## Do exhaustive preview
-                echo && printf '>%.0s' $( seq "${PV_WIDTH}" ) && echo
-                sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
-                    "SELECT name FROM sqlite_master
-                    WHERE type='table' AND name NOT LIKE 'sqlite_%'
-                    LIMIT ${SQLITE_TABLE_LIMIT};" |
-                    while read -r sqlite_table; do
-                        sqlite_rowcount="$(
-                            sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
-                                "SELECT count(*) FROM ${sqlite_table}"
-                        )"
-                        echo
-                        if [ "${SQLITE_ROW_LIMIT}" -gt 0 ] &&
-                           [ "${SQLITE_ROW_LIMIT}" \
-                             -lt "${sqlite_rowcount}" ]; then
-                            echo "${sqlite_table} [${SQLITE_ROW_LIMIT} of ${sqlite_rowcount}]:"
-                            sqlite_ellipsis_query="$(
-                                sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
-                                    "SELECT 'SELECT ' || group_concat(
-                                        '''...''', ', '
-                                    )
-                                    FROM pragma_table_info(
-                                        '${sqlite_table}'
-                                    );"
-                            )"
-                            sqlite_show_query \
-                                "SELECT * FROM (
-                                    SELECT * FROM ${sqlite_table} LIMIT 1
-                                )
-                                UNION ALL ${sqlite_ellipsis_query} UNION ALL
-                                SELECT * FROM (
-                                    SELECT * FROM ${sqlite_table}
-                                    LIMIT (${SQLITE_ROW_LIMIT} - 1)
-                                    OFFSET (
-                                        ${sqlite_rowcount}
-                                        - (${SQLITE_ROW_LIMIT} - 1)
-                                    )
-                                );"
-                        else
-                            echo "${sqlite_table} [${sqlite_rowcount}]:"
-                            sqlite_show_query "SELECT * FROM ${sqlite_table};"
-                        fi
-                    done
-            fi
-            exit 5;;
-
-        ## Text
-        text/* | */xml)
-            ## Syntax highlight
-            if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
-                exit 2
-            fi
-            if [[ "$( tput colors )" -ge 256 ]]; then
-                local pygmentize_format='terminal256'
-                local highlight_format='xterm256'
-            else
-                local pygmentize_format='terminal'
-                local highlight_format='ansi'
-            fi
-            env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
-                --out-format="${highlight_format}" \
-                --force -- "${FILE_PATH}" && exit 5
-            env COLORTERM=8bit bat --color=always --style="${BAT_STYLE}" \
-                -- "${FILE_PATH}" && exit 5
-            pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
-                -- "${FILE_PATH}" && exit 5
-            exit 2;;
-
-        ## DjVu
-        image/vnd.djvu)
-            ## Preview as text conversion (requires djvulibre)
-            djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
-            exiftool "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## Image
-        image/*)
-            ## Preview as text conversion
-            # img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
-            exiftool "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## Video and audio
-        video/* | audio/*)
-            mediainfo "${FILE_PATH}" && exit 5
-            exiftool "${FILE_PATH}" && exit 5
-            exit 1;;
-
-        ## ELF files (executables and shared objects)
-        application/x-executable | application/x-pie-executable | application/x-sharedlib)
-            readelf -WCa "${FILE_PATH}" && exit 5
-            exit 1;;
-    esac
-}
-
-handle_fallback() {
-    echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
-}
-
-
-MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
-if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
-    handle_image "${MIMETYPE}"
-fi
-handle_extension
-handle_mime "${MIMETYPE}"
-handle_fallback
-
-exit 1
diff --git a/rofi/.config/rofi/config.rasi b/rofi/.config/rofi/config.rasi
deleted file mode 100644 (file)
index bfd6d0f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-configuration {
-  modes: [ combi ];
-  combi-modes: [ window, drun, run ];
-}
-
-@theme "rounded-yellow-dark"
-/* Insert theme modifications after this */
-
diff --git a/rofi/.config/rofi/rounded-common.rasi b/rofi/.config/rofi/rounded-common.rasi
deleted file mode 100644 (file)
index e53f5f9..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * ROUNDED THEME FOR ROFI 
- * User                 : LR-Tech               
- * Theme Repo           : https://github.com/lr-tech/rofi-themes-collection
- *******************************************************************************/
-
-* {
-    font:   "Roboto 12";
-
-    background-color:   transparent;
-    text-color:         @fg0;
-
-    margin:     0px;
-    padding:    0px;
-    spacing:    0px;
-}
-
-window {
-    location:       center;
-    width:          480;
-    border-radius:  24px;
-    
-    background-color:   @bg0;
-}
-
-mainbox {
-    padding:    12px;
-}
-
-inputbar {
-    background-color:   @bg1;
-    border-color:       @bg3;
-
-    border:         2px;
-    border-radius:  16px;
-
-    padding:    8px 16px;
-    spacing:    8px;
-    children:   [ prompt, entry ];
-}
-
-prompt {
-    text-color: @fg2;
-}
-
-entry {
-    placeholder:        "Search";
-    placeholder-color:  @fg3;
-}
-
-message {
-    margin:             12px 0 0;
-    border-radius:      16px;
-    border-color:       @bg2;
-    background-color:   @bg2;
-}
-
-textbox {
-    padding:    8px 24px;
-}
-
-listview {
-    background-color:   transparent;
-
-    margin:     12px 0 0;
-    lines:      8;
-    columns:    1;
-
-    fixed-height: false;
-}
-
-element {
-    padding:        8px 16px;
-    spacing:        8px;
-    border-radius:  16px;
-}
-
-element normal active {
-    text-color: @bg3;
-}
-
-element selected normal, element selected active {
-    background-color:   @bg3;
-       text-color:         @bg1;
-}
-
-element-icon {
-    size:           1em;
-    vertical-align: 0.5;
-}
-
-element-text {
-    text-color: inherit;
-}
diff --git a/rofi/.config/rofi/rounded-yellow-dark.rasi b/rofi/.config/rofi/rounded-yellow-dark.rasi
deleted file mode 100644 (file)
index e82b823..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-/*******************************************************************************
- * ROUNDED THEME FOR ROFI 
- * User                 : LR-Tech               
- * Theme Repo           : https://github.com/lr-tech/rofi-themes-collection
- *******************************************************************************/
-
-* {
-    bg0:    #212121F2;
-    bg1:    #2A2A2A;
-    bg2:    #3D3D3D80;
-    bg3:    #FBC02DF2;
-    fg0:    #E6E6E6;
-    fg1:    #FFFFFF;
-    fg2:    #969696;
-    fg3:    #3D3D3D;
-}
-
-@import "rounded-common.rasi"
diff --git a/swappy/.config/swappy/config b/swappy/.config/swappy/config
deleted file mode 100644 (file)
index 0ddbebe..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[Default]
-save_dir=$HOME/Bilder
-save_filename_format=scrot-%Y%m%d-%H%M%S.png
-show_panel=false
-line_size=5
-text_size=20
-text_font=sans-serif
-paint_mode=brush
-early_exit=false
-fill_shape=false
diff --git a/waybar/.config/waybar/config b/waybar/.config/waybar/config
deleted file mode 100644 (file)
index f99955b..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-{
-    "layer": "top", // Waybar at top layer
-    "position": "bottom", // Waybar position (top|bottom|left|right)
-    "height": 26, // Waybar height (to be removed for auto height)
-    // "width": 1280, // Waybar width
-    "spacing": 6, // Gaps between modules (4px)
-    // Choose the order of the modules
-    "modules-left": ["hyprland/workspaces", "mpd"],
-    "modules-center": ["hyprland/window"],
-       "margin": "0",
-    "modules-right": ["keyboard-state", "cpu", "memory", "temperature#temp2", "temperature", "pulseaudio", "clock", "tray", "idle_inhibitor", "custom/wallpaper", "custom/powermenu"],
-
-    // Modules configuration
-
-    "hyprland/workspaces": {
-        "format": "{icon}",
-        "format-window-separator": " ",
-        //"window-rewrite-default": "",
-        //"window-rewrite": {
-        //    "firefox": "",
-        //    "kitty":   "",
-        //    "dolphin": "󱢴",
-        //    "elisa":   "",
-        //    "steam":   "󰓓",
-        //    },
-        "format-icons": {
-            "1": "1",
-            "2": "2",
-            "3": "3",
-            "4": "4",
-            "5": "5",
-            "6": "6",
-            "7": "7",
-            "8": "8",
-            "9": "9",
-            "0": "0",
-            // "urgent": "",
-            // "active": "",
-            // "default": "",
-        },
-        "persistent-workspaces": {
-            "1": [],
-            "2": [],
-            "3": [],
-            "4": [],
-            "5": [],
-            "6": [],
-            "7": [],
-            "8": [],
-            "9": [],
-            "0": [],
-        },
-        "on-click": "activate",
-        "on-click-middle-release": "close",
-        "on-scroll-up": "hyprctl dispatch workspace e+1",
-        "on-scroll-down": "hyprctl dispatch workspace e-1",
-        "sort-by-number": true
-    },
-
-    "hyprland/window": {
-        "format": "{title}",
-    },
-
-
-    "keyboard-state": {
-        "numlock": true,
-        "capslock": true,
-        "format": "{icon} {name}",
-        "format-icons": {
-            "locked": " ",
-            "unlocked": " "
-        },
-    },
-
-
-    "mpd": {
-        "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
-        "format-disconnected": "Disconnected ",
-        "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon} ",
-        "unknown-tag": "N/A",
-        "interval": 2,
-        "consume-icons": {
-            "on": " "
-        },
-        "random-icons": {
-            //"off": "<span color=\"#f53c3c\"></span> ",
-            "off": "",
-            "on": " "
-        },
-        "repeat-icons": {
-            "on": " "
-        },
-        "single-icons": {
-            "on": "1 "
-        },
-        "state-icons": {
-            "paused": "",
-            "playing": ""
-        },
-        "tooltip-format": "MPD (connected)",
-        "tooltip-format-disconnected": "MPD (disconnected)"
-    },
-
-
-    "tray": {
-        // "icon-size": 21,
-        "spacing": 10
-    },
-
-
-    "cpu": {
-        "format": " {usage:2}%",
-               "on-click": "/usr/bin/foot -a popup htop",
-               "interval": 2,
-    },
-
-
-    "memory": {
-        "format": " {percentage:2}%",
-               "on-click": "/usr/bin/foot -a popup htop",
-               "interval": 2,
-    },
-
-
-    "temperature": {
-        // "thermal-zone": 2,
-        "hwmon-path": "/sys/class/hwmon/hwmon4/temp7_input",
-        "critical-threshold": 60,
-        // "format-critical": "{temperatureC}°C {icon}",
-        "format": "{icon} {temperatureC}°C WaterGPU",
-        "format-icons": ["", "", ""]
-    },
-
-    "temperature#temp2": {
-        // "thermal-zone": 2,
-        "hwmon-path": "/sys/class/hwmon/hwmon4/temp6_input",
-        "critical-threshold": 60,
-        // "format-critical": "{temperatureC}°C {icon}",
-        "format": "{icon} {temperatureC}°C WaterCPU",
-        "format-icons": ["", "", ""]
-    },
-
-
-    "network": {
-        // "interface": "wlp2*", // (Optional) To force the use of this interface
-        "format-wifi": "{essid} ({signalStrength}%) ",
-        "format-ethernet": "{ipaddr}/{cidr} ",
-        "tooltip-format": "{ifname} via {gwaddr} ",
-        "format-linked": "{ifname} (No IP) ",
-        "format-disconnected": "Disconnected ⚠",
-        "format-alt": "{ifname}: {ipaddr}/{cidr}"
-    },
-
-
-    "pulseaudio": {
-        // "scroll-step": 1, // %, can be a float
-        "format": "{icon} {volume}% {format_source}",
-        "format-bluetooth": "{icon} {volume}% {format_source}",
-        "format-bluetooth-muted": " {icon} {format_source}",
-        "format-muted": "  {format_source}",
-        "format-source": " {volume}%",
-        "format-source-muted": "",
-        "format-icons": {
-            "headphone": "",
-            "hands-free": "",
-            "headset": "",
-            "phone": "",
-            "portable": "",
-            "car": "",
-            "default": ["", "", ""]
-        },
-        "on-click": "pavucontrol"
-    },
-
-
-    "clock": {
-        // "timezone": "America/New_York",
-        "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
-        "format-alt": "{:%Y-%m-%d}"
-    },
-
-
-    "idle_inhibitor": {
-        "format": "{icon}",
-        "format-icons": {
-            "activated": "",
-            "deactivated": ""
-        }
-    },
-
-
-     "custom/wallpaper": {
-        "format": "  ",
-        "on-click": "$HOME/.local/bin/rndwallpaper swww",
-       "tooltip": false,
-       "interval": "once",
-     },
-
-
-     "custom/powermenu": {
-        "format": " ⏻ ",
-        "on-click-middle": "$HOME/.config/hypr/scripts/powermenu.sh",
-       "tooltip": false,
-       "interval": "once",
-     },
-}
-# kak: filetype=json:ts=2:iw=2
diff --git a/waybar/.config/waybar/oldstyle.css b/waybar/.config/waybar/oldstyle.css
deleted file mode 100644 (file)
index fa32580..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-/* window#waybar {*/
-   /*background: transparent;*/
-/*   background-color: rgba(43, 48, 59, 1);*/
-   /*    border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
-/*   border-top: 1px solid rgba(100, 114, 125, 0.8);*/
-/*   color: #ffffff;*/
-/*   transition-property: background-color;*/
-/*   transition-duration: .5s;*/
-/* }*/
-/* */
-/* window#waybar.hidden {*/
-/*   opacity: 0.2;*/
-/* }*/
-/* */
-/* #waybar.empty #window {*/
-/*   background-color: transparent;*/
-/* }*/
-/* */
-/* #workspaces {*/
-/* }*/
-/* */
-/* #window {*/
-/*   margin: 2px;*/
-/*   padding-left: 8px;*/
-/*   padding-right: 8px;*/
-/*   background-color: rgba(23,28,39,0.3);*/
-/* }*/
-/* */
-/* */
-/* #workspaces button {*/
-/*   padding: 0 8px;*/
-/*   background-color: rgba(23,28,39,0.3);*/
-/*   color:#ffffff;*/
-/*   border-top: 1px solid rgba(100, 114, 125, 0.8);*/
-/*   font-weight: bold;*/
-/*   border: none;*/
-/*   border-radius: 0;*/
-/* }*/
-/* */
-/* #workspaces button:hover {*/
-/*   background: inherit;*/
-/*   border-top: 2px solid tomato;*/
-/*  box-shadow: inset 0 -28px #c9545d;*/
-/* }*/
-/* */
-/* #workspaces button.active {*/
-/*     font-weight: bold;*/
-/*     border-top: 2px solid lightblue;*/
-/* }*/
-/* */
-/* #workspaces button.focused {*/
-   /*    box-shadow: inset 0 -2px #c9545d; */
-/*   background-color: rgba(23,28,39,0.5);*/
-/*   color:#c9545d;*/
-/*   border-top: 2px solid #c9545d;*/
-/* }*/
-/* */
-/* #workspaces button.urgent {*/
-   /*background-color: #eb4d4b;*/
-/*   border-top: 2px solid #eb4d4b;*/
-/* }*/
-/* */
-/* #mode {*/
-/*   background-color: #64727D;*/
-/*   border-bottom: 3px solid #ffffff;*/
-/* }*/
-/* */
-/* #clock,*/
-/* #battery,*/
-/* #cpu,*/
-/* #memory,*/
-/* #disk,*/
-/* #temperature,*/
-/* #backlight,*/
-/* #network,*/
-/* #pulseaudio,*/
-/* #wireplumber,*/
-/* #custom-media,*/
-/* #tray,*/
-/* #mode,*/
-/* #idle_inhibitor,*/
-/* #scratchpad,*/
-/* #mpris {*/
-/*   margin: 2px;*/
-/*   padding-left: 4px;*/
-/*   padding-right: 4px;*/
-/*   background-color: rgba(23,28,39,0.3);*/
-/*   color: #ffffff;*/
-/* }*/
-/* */
-/* If workspaces is the leftmost module, omit left margin */
-/* .modules-left > widget:first-child > #workspaces {*/
-/*   margin-left: 0;*/
-/* }*/
-/* */
-/* If workspaces is the rightmost module, omit right margin */
-/* .modules-right > widget:last-child > #workspaces {*/
-/*   margin-right: 0;*/
-/* }*/
-/* */
-/* #clock {*/
-/*   font-size: 18px;*/
-/*   font-weight: normal;*/
-/* }*/
-/* */
-/* #battery icon {*/
-/*   color: red;*/
-/* }*/
-/* */
-/* #battery.charging, #battery.plugged {*/
-/*   color: #ffffff;*/
-/*   background-color: #26A65B;*/
-/* }*/
-/* */
-/* @keyframes blink {*/
-/*   to {*/
-/*     background-color: #ffffff;*/
-/*     color: #000000;*/
-/*   }*/
-/* }*/
-/* */
-/* #battery.warning:not(.charging) {*/
-/*   background-color: #f53c3c;*/
-/*   color: #ffffff;*/
-/*   animation-name: blink;*/
-/*   animation-duration: 0.5s;*/
-/*   animation-timing-function: linear;*/
-/*   animation-iteration-count: infinite;*/
-/*   animation-direction: alternate;*/
-/* }*/
-/* */
-/* #battery.critical:not(.charging) {*/
-/*   background-color: #f53c3c;*/
-/*   color: #ffffff;*/
-/*   animation-name: blink;*/
-/*   animation-duration: 0.5s;*/
-/*   animation-timing-function: linear;*/
-/*   animation-iteration-count: infinite;*/
-/*   animation-direction: alternate;*/
-/* }*/
-/* */
-/* label:focus {*/
-/*   background-color: #000000;*/
-/* }*/
-/* */
-/* #network.disconnected {*/
-/*   background-color: #f53c3c;*/
-/* }*/
-/* */
-/* #temperature.critical {*/
-/*   background-color: #eb4d4b;*/
-/* }*/
-/* */
-/* #idle_inhibitor.activated {*/
-/*   background-color: #ecf0f1;*/
-/*   color: #2d3436;*/
-/* }*/
-/* */
-/* #tray > .passive {*/
-/*   -gtk-icon-effect: dim;*/
-/* }*/
-/* */
-/* #tray > .needs-attention {*/
-/*   -gtk-icon-effect: highlight;*/
-/*   background-color: #eb4d4b;*/
-/* }*/
-/* */
-/* */
-/* */
-/* window#waybar.solo {*/
-/* background-color: #FFFFFF;*/
-/* }*/
-/* */
-/* window#waybar.kitty {*/
-/* background-color: #3F3F3F;*/
-/* }*/
-/* */
-/* window#waybar.chromium {*/
-/* background-color: #000000;*/
-/* border: none;*/
-/* }*/
-/*  */
-/* */
-
diff --git a/waybar/.config/waybar/style.css b/waybar/.config/waybar/style.css
deleted file mode 100644 (file)
index 7e8eb99..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-* {
-  font-family: "LiterationMono Nerd Font";
-  font-size: 17px;
-  min-height: 0px;
-}
-
-
-window#waybar {
-    background-color: rgba(43, 48, 59, 1.0);
-    border-bottom: 2px solid rgba(100, 114, 125, 1);
-    color: #ffffff;
-    transition-property: background-color;
-    transition-duration: .5s;
-}
-window#waybar.hidden {
-    opacity: 0.2;
-}
-window#waybar.empty {
-    background-color: transparent;
-    background-image: linear-gradient(0deg, rgba(22,24,30,1.0), rgba(0,0,0,0))
-}
-window#waybar.foot {
-    background-color: rgba(24,24,24,1.0);
-}
-
-
-#workspaces button {
-       padding: 0 10px;
-       background: inherit;
-       color:#ffffff;
-       border-bottom: 2px solid rgba(100, 114, 125, 0.0);
-       font-weight: bold;
-       border: none;
-       border-radius: 0;
-}
-#workspaces button:hover {
-       background: inherit;
-       border-bottom: 2px solid tomato;
-       box-shadow: inset 0 -28px #c9545d;
-}
-#workspaces button.active {
-       font-weight: bold;
-       border-bottom: 2px solid lightblue;
-}
-#workspaces button.focused {
-       border-bottom: 2px solid #c9545d;
-}
-#workspaces button.urgent {
-       border-bottom: 2px solid #eb4d4b;
-}
-
-
-#cpu,
-#memory,
-#temperature {
-    padding: 0 15px;
-    color: #ffffff;
-}
-
-
-#temperature#temp2 {
-    padding: 0 15px;
-    color: #ffffff;
-}
-
-
-#mpris {
-  margin: 2px;
-  padding: 10px;
-  background-color: rgba(23,28,39,0.3);
-  color: #ffffff;
-}
-
-
-#mpd {
-    padding: 0 20px;
-    color: #ffffff;
-}
-
-
-#clock {
-    padding: 0 3px;
-    margin: 0 2px;
-}
-
-
-#idle_inhibitor {
-    padding: 0 15px;
-    color: #ffffff;
-}