aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bashrc8
-rw-r--r--.config/awesome/rc.lua171
-rw-r--r--.config/awesome/theme.lua4
-rw-r--r--.config/environment.d/00-path.conf7
-rw-r--r--.config/firefox/chrome/userChrome.css5
-rw-r--r--.config/firefox/user.js36
-rw-r--r--.config/fuzzel/fuzzel.ini20
-rw-r--r--.config/gammastep/config.ini8
-rw-r--r--.config/git/authorized_keys0
-rw-r--r--.config/git/config67
-rw-r--r--.config/git/ignore8
-rw-r--r--.config/hypr/hyprland.conf143
-rw-r--r--.config/kdeglobals150
-rw-r--r--.config/kscreenlockerrc15
-rw-r--r--.config/ntfy/client.yml1
-rw-r--r--.config/plasma-org.kde.plasma.desktop-appletsrc386
-rw-r--r--.config/plasmanotifyrc5
-rw-r--r--.config/plasmashellrc14
-rw-r--r--.config/qutebrowser/autoconfig.yml2
-rw-r--r--.config/shell/env2
-rw-r--r--.config/shell/functions.d/venv48
-rw-r--r--.config/shell/sources7
m---------.config/shell/vendor/bash/feature-auto-completion0
m---------.config/shell/vendor/zsh/feature-syntax-highlighting0
-rw-r--r--.config/swayidle/config6
-rw-r--r--.config/swaylock/config2
-rw-r--r--.config/sxhkd/sxhkdrc2
-rw-r--r--.config/systemd/user/dapp-.service.d/00-ExecSearchPath.conf4
-rw-r--r--.config/systemd/user/dapp-.service.d/00-WorkingDirectory.conf2
-rw-r--r--.config/systemd/user/dapp-bg-.service.d/00-Restart.conf2
-rw-r--r--.config/systemd/user/dapp-bg-chwp.service12
-rw-r--r--.config/systemd/user/dapp-bg-chwp.service.d/00-Restart.conf2
-rw-r--r--.config/systemd/user/dapp-bg-chwp.timer10
-rw-r--r--.config/systemd/user/dapp-bg-dunst.service11
-rw-r--r--.config/systemd/user/dapp-bg-ntfy@.service12
-rw-r--r--.config/systemd/user/dapp-bg-redshift.service11
-rw-r--r--.config/systemd/user/dapp-bg-sxhkd.service11
-rw-r--r--.config/systemd/user/dapp-bg-xcompmgr.service11
-rw-r--r--.config/systemd/user/dapp-fg-.service.d/00-Restart.conf2
-rw-r--r--.config/systemd/user/dapp-fg-chromium.service11
-rw-r--r--.config/systemd/user/dapp-fg-firefox.service11
-rw-r--r--.config/systemd/user/dapp-fg-gajim.service11
-rw-r--r--.config/systemd/user/dapp-fg-irc.service11
-rw-r--r--.config/systemd/user/dapp-fg-keepassxc.service11
-rw-r--r--.config/systemd/user/dapp-fg-networkmanager.service11
-rw-r--r--.config/systemd/user/dapp-fg-nextcloud.service11
-rw-r--r--.config/systemd/user/plasma-awesome_x11.service11
-rw-r--r--.config/systemd/user/plasma-herbstluftwm_x11.service11
l---------.config/systemd/user/plasma-kwin_x11.service1
l---------.config/systemd/user/plasma-workspace.target.wants/plasma-awesome_x11.service1
-rw-r--r--.config/systemd/user/wsys-.service.d/00-Target.conf6
-rw-r--r--.config/systemd/user/wsys-xorg.service20
-rw-r--r--.config/systemd/user/wsys-xorg.socket5
-rw-r--r--.config/systemd/user/wsys-xorg.target3
-rw-r--r--.config/systemd/user/wsys.target2
-rw-r--r--.config/systemd/user/xss-lock.service12
-rw-r--r--.config/systemsettingsrc21
-rw-r--r--.config/waybar/config-hyprland.json24
-rw-r--r--.config/waybar/config.json94
-rw-r--r--.config/waybar/style.css140
-rw-r--r--.gitmodules63
-rwxr-xr-x.local/bin/bl28
-rwxr-xr-x.local/bin/count (renamed from .local/bin/notify-send)38
-rwxr-xr-x.local/bin/dmenu22
-rwxr-xr-x.local/bin/hyprland-switch-tag161
-rwxr-xr-x.local/bin/import-pape19
-rwxr-xr-x.local/bin/ipass48
l---------.local/bin/irc1
-rwxr-xr-x.local/bin/krokify30
-rwxr-xr-x.local/bin/kubectl-rageclean-pod17
-rwxr-xr-x.local/bin/kubectl-secret76
-rwxr-xr-x.local/bin/media-import53
-rwxr-xr-x.local/bin/updot63
-rwxr-xr-x.local/bin/vol2
-rwxr-xr-x.local/bin/x9
l---------.local/bin/xdg-open1
-rw-r--r--.local/etc/wrapper.d/firefox.sh6
-rw-r--r--.local/etc/wrapper.d/irc.sh10
-rw-r--r--.local/etc/x/autostart9
-rw-r--r--.local/etc/x/xinit.d/awesome.rc6
-rw-r--r--.local/etc/x/xinitrc39
-rw-r--r--.local/share/applications/firefox.desktop5
-rw-r--r--.ssh/authorized_keys20
-rw-r--r--.ssh/config5
-rw-r--r--.ssh/config.d/tyilnet48
-rw-r--r--.ssh/config.d/xxllnc3
-rw-r--r--.ssh/id.d/root@bast-ed25519.pub1
-rw-r--r--.ssh/id.d/root@gaeru-ed25519.pub2
-rw-r--r--.ssh/id.d/root@mieshu-ed25519.pub1
-rw-r--r--.ssh/id.d/root@nouki-ed25519.pub1
-rw-r--r--.ssh/id.d/root@oolah-ed25519.pub1
-rw-r--r--.ssh/id.d/root@plarabe-ed25519.pub1
-rw-r--r--.ssh/id.d/tyil@bast-ed25519.pub5
-rw-r--r--.ssh/id.d/tyil@gaeru-ed25519.pub1
-rw-r--r--.ssh/id.d/tyil@mieshu-ed25519.pub1
-rw-r--r--.ssh/id.d/tyil@nouki-ed25519.pub1
-rw-r--r--.ssh/id.d/tyil@oolah-ed25519.pub1
-rw-r--r--.ssh/id.d/tyil@plarabe-ed25519.pub1
m---------.vim/bundle/feature-camelcasemotion0
m---------.vim/bundle/feature-rainbow-parenthesis0
m---------.vim/bundle/syntax-blade0
m---------.vim/bundle/syntax-go0
m---------.vim/bundle/syntax-hcl0
m---------.vim/bundle/syntax-helm0
m---------.vim/bundle/syntax-ledger0
m---------.vim/bundle/syntax-markdown0
m---------.vim/bundle/syntax-mustache0
m---------.vim/bundle/syntax-raku0
m---------.vim/bundle/syntax-terraform0
m---------.vim/bundle/syntax-todo0
m---------.vim/bundle/syntax-toml0
m---------.vim/bundle/theme-codedark0
m---------.vim/bundle/theme-colorsbox0
m---------.vim/bundle/theme-jellybeans0
m---------.vim/bundle/theme-molokai0
-rw-r--r--.vim/ftplugin/php.vim3
-rw-r--r--.vim/ftplugin/yaml.vim49
-rw-r--r--.vim/plugin/k8s-edit-secret.vim60
-rw-r--r--.weechat/trigger.conf37
m---------.weechat/vendor/protocol-slack0
-rw-r--r--.weechat/weechat.conf546
-rw-r--r--.zshrc11
-rw-r--r--README.md1
123 files changed, 1983 insertions, 1158 deletions
diff --git a/.bashrc b/.bashrc
index f526efa..511ae17 100644
--- a/.bashrc
+++ b/.bashrc
@@ -72,6 +72,12 @@ __precmd()
PS1+="\001$SHELLC_F_LIGHTGRAY\002:\001$SHELLC_RESET_COLOR_F\002"
PS1+="\001$SHELLC_F_BLUE\002\w\001$SHELLC_RESET_COLOR_F\002"
+ # Add venv indicator
+ if [[ -n "$PYTHON_VENV_DIR" ]]
+ then
+ PS1+="\001$SHELLC_F_CYAN\002#$(awk -F/ '{ print $(NF-1) }' <<< "$PYTHON_VENV_DIR")\001$SHELLC_RESET_COLOR_F\002"
+ fi
+
# Add git status
if git rev-parse --is-inside-work-tree &> /dev/null
then
@@ -103,6 +109,8 @@ __precmd()
if [[ $previous_exit -ne 0 ]]
then
PS1+="\001$SHELLC_F_RED\002"
+ else
+ PS1+="\001$SHELLC_F_LIGHTGRAY\002"
fi
PS1+="$(printf "%03i" "$previous_exit")\001$SHELLC_RESET_COLOR_F\002"
diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua
index ea3eb70..045ed80 100644
--- a/.config/awesome/rc.lua
+++ b/.config/awesome/rc.lua
@@ -15,6 +15,9 @@ require("awful.hotkeys_popup.keys")
-- Custom libraries
local charitable = require("charitable")
+local widget_battery = require("awesome-wm-widgets.batteryarc-widget.batteryarc")
+local widget_brightness = require("awesome-wm-widgets.brightness-widget.brightness")
+local widget_volume = require("awesome-wm-widgets.pactl-widget.volume")
-- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to
@@ -43,23 +46,6 @@ do
end
-- }}}
--- {{{ Background services
-function run_once(cmd)
- findme = cmd
- firstspace = cmd:find(" ")
-
- if firstspace then
- findme = cmd:sub(0, firstspace - 1)
- end
-
- awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
-end
-
-run_once("xcompmgr")
-run_once("chwp")
-run_once("redshift -l 51.50:4.59 -t 6500:2500")
--- }}}
-
-- {{{ Variable definitions
beautiful.init(awful.util.getdir("config") .. "/theme.lua")
@@ -140,48 +126,90 @@ awful.screen.connect_for_each_screen(function(s)
end
end
- -- Create an imagebox widget which will contain an icon indicating which layout we're using.
- -- We need one layoutbox per screen.
- s.mylayoutbox = awful.widget.layoutbox(s)
- s.mylayoutbox:buttons(gears.table.join(
- awful.button({ }, 1, function () awful.layout.inc( 1) end),
- awful.button({ }, 3, function () awful.layout.inc(-1) end),
- awful.button({ }, 4, function () awful.layout.inc( 1) end),
- awful.button({ }, 5, function () awful.layout.inc(-1) end)))
-
- -- Create a taglist widget
- s.mytaglist = awful.widget.taglist {
+ s.widgets = {}
+ s.bars = {}
+
+ -- Create an imagebox widget which will contain an icon indicating which layout we're using.
+ -- We need one layoutbox per screen.
+ s.widgets.layout = awful.widget.layoutbox(s)
+ s.widgets.layout:buttons(gears.table.join(
+ awful.button({ }, 1, function () awful.layout.inc( 1) end),
+ awful.button({ }, 3, function () awful.layout.inc(-1) end),
+ awful.button({ }, 4, function () awful.layout.inc( 1) end),
+ awful.button({ }, 5, function () awful.layout.inc(-1) end))
+ )
+
+ -- Create widgets
+ s.widgets.battery = widget_battery({
+ show_current_level = false,
+ warning_msg_position = top_right,
+ })
+ s.widgets.brightness = widget_brightness({
+ program = "brightnessctl",
+ tooltip = true,
+ })
+ s.widgets.clock = wibox.widget {
+ widget = wibox.widget.textclock,
+ format = "%F %H:%M",
+ }
+ s.widgets.systray = wibox.widget.systray()
+ s.widgets.tags = awful.widget.taglist {
screen = s,
filter = awful.widget.taglist.filter.all,
buttons = taglist_buttons,
source = function(screen, args) return tags end,
}
-
- -- Create a tasklist widget
- s.mytasklist = awful.widget.tasklist {
+ s.widgets.tasklist = awful.widget.tasklist {
screen = s,
filter = awful.widget.tasklist.filter.currenttags,
buttons = tasklist_buttons,
}
+ s.widgets.volume = widget_volume({
+ tooltip = true,
+ widget_type = "arc",
+ })
- -- Create the wibox
- s.mytaskbar = awful.wibar({
+ -- Create the taskbar
+ s.bars.bottom = awful.wibar({
position = "bottom",
screen = s,
bg = beautiful.bg_normal .. "cc",
})
-- Add widgets to the wibox
- s.mytaskbar:setup {
+ s.bars.bottom:setup {
layout = wibox.layout.align.horizontal,
- spacing = 16,
+ s.widgets.tags,
+ s.widgets.tasklist,
+ s.widgets.layout,
+ }
+
+ -- Create the statbar
+ s.bars.top = awful.wibar({
+ position = "top",
+ screen = s,
+ bg = beautiful.bg_normal .. "cc",
+ })
+
+ s.bars.top:setup {
+ layout = wibox.layout.align.horizontal,
+ expand = "none",
+ {
+ layout = wibox.layout.fixed.horizontal,
+ s.widgets.layout,
+ },
+ {
+ layout = wibox.layout.fixed.horizontal,
+ s.widgets.clock,
+ },
{
layout = wibox.layout.fixed.horizontal,
- spacing = 16,
- s.mylayoutbox,
- s.mytaglist,
+ spacing = 4,
+ s.widgets.systray,
+ s.widgets.brightness,
+ s.widgets.volume,
+ s.widgets.battery,
},
- s.mytasklist,
}
end)
-- }}}
@@ -205,6 +233,18 @@ globalkeys = gears.table.join(
awful.key({ modkey, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}),
+ awful.key({ modkey, }, "Down",
+ function ()
+ awful.client.focus.byidx( 1)
+ end,
+ {description = "focus next by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "Up",
+ function ()
+ awful.client.focus.byidx(-1)
+ end,
+ {description = "focus previous by index", group = "client"}
+ ),
awful.key({ modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
@@ -222,6 +262,13 @@ globalkeys = gears.table.join(
-- Layout manipulation
+ awful.key({ modkey, "Shift" }, "Down", function () awful.client.swap.byidx( 1) end,
+ {description = "swap with next client by index", group = "client"}),
+ awful.key({ modkey, "Shift" }, "Up", function () awful.client.swap.byidx( -1) end,
+ {description = "swap with previous client by index", group = "client"}),
+ awful.key({ modkey, "Control" }, "Right", function () awful.screen.focus_bydirection("right") end,
+ {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "Left", function () awful.screen.focus_bydirection("left") end,
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
{description = "swap with next client by index", group = "client"}),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
@@ -247,7 +294,7 @@ globalkeys = gears.table.join(
{description = "reload awesome", group = "awesome"}
),
awful.key(
- { modkey, "Shift" }, "q", awesome.quit,
+ { modkey, "Shift" }, "x", awesome.quit,
{description = "quit awesome", group = "awesome"}
),
@@ -417,7 +464,6 @@ awful.rules.rules = {
buttons = clientbuttons,
screen = awful.screen.preferred,
placement = awful.placement.no_overlap+awful.placement.no_offscreen,
- opacity = 0.8,
},
},
@@ -462,6 +508,7 @@ awful.rules.rules = {
{ -- Remove borders from windows where it doesn't fit (housestyles ought to be banned, tho)
rule_any = {
class = {
+ "albert",
"nextcloud",
}
},
@@ -470,11 +517,23 @@ awful.rules.rules = {
},
},
+ { -- Tag rules for social
+ rule_any = {
+ class = {
+ "irc",
+ },
+ },
+ properties = {
+ tag = "social",
+ },
+ },
+
{ -- Tag rules for www
rule_any = {
class = {
"chromium",
"firefox",
+ "firefox-esr",
"qutebrowser",
},
},
@@ -486,6 +545,7 @@ awful.rules.rules = {
{ -- Tag rules for email
rule_any = {
class = {
+ "evolution",
"thunderbird",
"kmail",
},
@@ -503,6 +563,7 @@ awful.rules.rules = {
"tsmapplication.exe",
"lutris",
"pathofexile.exe",
+ "mumble"
},
},
properties = {
@@ -569,10 +630,6 @@ awful.rules.rules = {
{ rule_any = {type = { "normal", "dialog" }
}, properties = { titlebars_enabled = false }
},
-
- -- Set Firefox to always map on the tag named "2" on screen 1.
- -- { rule = { class = "Firefox" },
- -- properties = { screen = 1, tag = "2" } },
}
-- }}}
@@ -650,21 +707,23 @@ end)
client.connect_signal("focus", function(c)
c.border_color = beautiful.border_focus
- c.opacity = 1
- -- Mouse follows focus
- if mouse.object_under_pointer() ~= c then
- local geometry = c:geometry()
-
- mouse.coords({
- x = geometry.x + geometry.width/2,
- y = geometry.y + geometry.height/2,
- }, true)
- end
+-- -- Mouse follows focus
+-- if mouse.object_under_pointer() ~= c then
+-- local geometry = c:geometry()
+--
+-- mouse.coords({
+-- x = geometry.x + geometry.width/2,
+-- y = geometry.y + geometry.height/2,
+-- }, true)
+-- end
end)
client.connect_signal("unfocus", function(c)
c.border_color = beautiful.border_normal
- c.opacity = 0.8
end)
-- }}}
+
+awful.util.spawn("systemctl --user import-environment DISPLAY")
+awful.util.spawn("systemctl --user import-environment XAUTHORITY")
+awful.util.spawn("systemctl --user start awesome-session.target")
diff --git a/.config/awesome/theme.lua b/.config/awesome/theme.lua
index 61bec2c..25c9167 100644
--- a/.config/awesome/theme.lua
+++ b/.config/awesome/theme.lua
@@ -28,11 +28,11 @@ theme.border_normal = "#4b5165"
theme.border_focus = "#5294e2"
theme.border_marked = "#91231c"
-theme.taglist_spacing = dpi(4)
+theme.taglist_spacing = 0
theme.taglist_bg_occupied = "#4b5165"
theme.tasklist_bg_normal = "#4b5165"
-theme.tasklist_spacing = dpi(4)
+theme.tasklist_spacing = 0
theme.useless_gap = dpi(4)
theme.maximized_honor_padding = true
diff --git a/.config/environment.d/00-path.conf b/.config/environment.d/00-path.conf
new file mode 100644
index 0000000..dd56eec
--- /dev/null
+++ b/.config/environment.d/00-path.conf
@@ -0,0 +1,7 @@
+# Local paths
+PATH=/home/tyil/.local/bin:/home/tyil/.config/shell/wrappers.d
+
+# Default paths
+PATH=$PATH:/usr/local/sbin:/user/local/bin
+PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
+PATH=$PATH:/opt/bin
diff --git a/.config/firefox/chrome/userChrome.css b/.config/firefox/chrome/userChrome.css
index e2ab027..d9da526 100644
--- a/.config/firefox/chrome/userChrome.css
+++ b/.config/firefox/chrome/userChrome.css
@@ -16,3 +16,8 @@
tab-item.unread .label-content {
font-style: italic;
}
+
+/* Hide the title/tab bar */
+#TabsToolbar {
+ display: none;
+}
diff --git a/.config/firefox/user.js b/.config/firefox/user.js
index 08d62a7..c39b87c 100644
--- a/.config/firefox/user.js
+++ b/.config/firefox/user.js
@@ -1,15 +1,7 @@
// Settings changed after going through properties
-user_pref("app.shield.optoutstudies.enabled", false);
user_pref("browser.ctrlTab.recentlyUsedOrder", false);
user_pref("browser.download.dir", "/home/tyil/downloads/firefox");
user_pref("browser.download.folderList", 2);
-user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
-user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
-user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
-user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
-user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
-user_pref("browser.newtabpage.activity-stream.showSearch", false);
-user_pref("browser.newtabpage.enabled", false);
user_pref("browser.search.hiddenOneOffs", "Google,Bing,Amazon.com,eBay,Twitter");
user_pref("browser.search.suggest.enabled", false);
user_pref("browser.startup.homepage", "https://searx.tyil.nl");
@@ -19,15 +11,29 @@ user_pref("general.smoothScroll", false);
user_pref("media.autoplay.default", 5); // Disable autoplay for both sound and video
user_pref("privacy.donottrackheader.enabled", true);
-// Unload browser tabs when low on memory
-user_pref("browser.tabs.unloadOnLowMemory", true);
-
-// Make Firefox load userChrome.css again...
-user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
-
-// Disable whatever trash Firefox devs are pushing these days
+// Disable anti-features
+user_pref("app.shield.optoutstudies.enabled", false);
+user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
+user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
+user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
+user_pref("browser.newtabpage.activity-stream.showSearch", false);
+user_pref("browser.newtabpage.enabled", false);
user_pref("extensions.pocket.enabled", false);
user_pref("media.videocontrols.picture-in-picture.enabled", false);
user_pref("media.videocontrols.picture-in-picture.video-toggle.enabled", false);
+user_pref("network.captive-portal-service.enabled", false);
user_pref("network.trr.mode", 5); // DoH
user_pref("pdfjs.disabled", true);
+
+// Unload browser tabs when low on memory
+user_pref("browser.tabs.unloadOnLowMemory", true);
+
+// Make fullscreen stick to window size
+user_pref("full-screen-api.ignore-widgets", true);
+
+// Undo horrible UI decisions made by the incompetent
+user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); // Enable userChrome.css
+user_pref("widget.non-native-theme.scrollbar.size.override", 16); // Set the scrollbar width
+user_pref("widget.gtk.overlay-scrollbars.enabled", false); // Use normal scrollbars
diff --git a/.config/fuzzel/fuzzel.ini b/.config/fuzzel/fuzzel.ini
new file mode 100644
index 0000000..1c374a7
--- /dev/null
+++ b/.config/fuzzel/fuzzel.ini
@@ -0,0 +1,20 @@
+[main]
+font = monospace:size=10
+lines = 15
+width = 80
+horizontal-pad = 8
+vertical-pad = 8
+
+[colors]
+background = 252a35ff
+selection = 5294e2ff
+text = eeeeeeff
+selection-text = eeeeeeff
+
+[border]
+radius = 4
+
+[key-bindings]
+execute-or-next = none
+delete-prev-word = Control+BackSpace Control+w
+next = Down Control+n Tab
diff --git a/.config/gammastep/config.ini b/.config/gammastep/config.ini
new file mode 100644
index 0000000..2933117
--- /dev/null
+++ b/.config/gammastep/config.ini
@@ -0,0 +1,8 @@
+[general]
+temp-day=6500
+temp-night=3000
+location-provider=manual
+
+[manual]
+lat=51.8100
+lon=4.6736
diff --git a/.config/git/authorized_keys b/.config/git/authorized_keys
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/git/authorized_keys
diff --git a/.config/git/config b/.config/git/config
index 6456797..212776b 100644
--- a/.config/git/config
+++ b/.config/git/config
@@ -1,29 +1,30 @@
[alias]
- a = add
- b = branch
- bc = branch-cleanup
- c = commit
- ca = commit --amend --reset-author
- co = checkout
- cob = checkout -b
- ct = tag -s
- d = diff
- fo = fetch origin
- l = log --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(6)%ad %C(3)%h%Creset %s %C(7)by %C(2)%ae%C(7):%C(5)%G?'
- lg = log --graph --abbrev-commit --decorate --date=relative --all
+ a = add
+ b = branch
+ bc = branch-cleanup
+ c = commit
+ ca = commit --amend --reset-author
+ co = checkout
+ cob = checkout -b
+ ct = tag -s
+ d = diff
+ fo = fetch origin
+ l = log --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(6)%ad %C(3)%h%Creset %s %C(7)by %C(2)%ae%C(7):%C(5)%G?'
+ lg = log --graph --abbrev-commit --decorate --date=relative --all
mirror-add = ! git remote set-url --add --push origin
- p = push
- pa = push-all
- prev = ! git show "HEAD:$1"
- r = rebase --rebase-merges -i
- ra = commit --amend --no-edit -a
- rc = rebase --continue
- s = status -s
- t = tag --sort=-v:refname
- tr = for-each-ref --sort=taggerdate --format '%(tag)' refs/tags
-
-#[commit]
-# gpgsign = true
+ p = push
+ pa = push-all
+ prev = ! git show "HEAD:$1"
+ r = rebase --rebase-merges -i
+ ra = commit --amend --no-edit -a
+ rc = rebase --continue
+ s = status -s
+ squash-all = "!f(){ git reset $(git commit-tree HEAD^{tree} \"$@\");};f"
+ t = tag --sort=-v:refname
+ tr = for-each-ref --sort=taggerdate --format '%(tag)' refs/tags
+
+[commit]
+ gpgsign = true
[core]
pager = less -R
@@ -39,6 +40,12 @@
[difftool]
prompt = false
+[gpg]
+ format = ssh
+
+[gpg "ssh"]
+ allowedSignersFile = ~/.config/git/authorized_keys
+
[init]
defaultBranch = master
@@ -53,9 +60,13 @@
default = current
followTags = true
-[user]
- email = p.spek@tyil.nl
- name = Patrick Spek
- signingkey = 1660F6A2DFA75347322A4DC07A6AC285E2D98827
[safe]
directory = *
+
+[tag]
+ gpgsign = true
+
+[user]
+ email = p.spek@tyil.nl
+ name = Patrick Spek
+ signingKey = ~/.config/git/signingkey # Symlink to the SSH key to be used
diff --git a/.config/git/ignore b/.config/git/ignore
index b84abd4..b283dac 100644
--- a/.config/git/ignore
+++ b/.config/git/ignore
@@ -1,8 +1,12 @@
#
-# Misc
+# Language specific cruft
#
-# Perl 6 precompilation files
+# Python
+.venv
+__pycache__
+
+# Raku
.precomp
#
diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..f0ae6ff
--- /dev/null
+++ b/.config/hypr/hyprland.conf
@@ -0,0 +1,143 @@
+monitor=,preferred,auto,1
+
+exec-once=waybar -c ~/.config/waybar/config-hyprland.json
+exec-once=waybar -c ~/.config/waybar/config.json
+
+exec-once=dunst
+exec-once=ntfy sub --from-config
+exec-once=swaybg -i "$(find ~/pictures/wallpapers/1920x1080 | shuf -n 1)"
+exec-once=swayidle
+exec-once=gammastep
+# TODO: polkit agent
+# TODO: PipeWire
+
+exec-once=keepassxc
+exec-once=nextcloud
+exec-once=nm-applet
+
+workspace=1,name:work
+workspace=2,name:social
+workspace=3,name:web
+workspace=4,name:email
+workspace=5,name:media
+workspace=6,name:games
+workspace=7,name:vms
+workspace=8,name:scratch
+
+input {
+ kb_file=
+ kb_layout=
+ kb_variant=
+ kb_model=
+ kb_options=
+ kb_rules=
+
+ follow_mouse=1
+
+ touchpad {
+ natural_scroll=no
+ tap-to-click=no
+ }
+
+ sensitivity=0 # -1.0 - 1.0, 0 means no modification.
+}
+
+general {
+ main_mod=SUPER
+ layout=master
+
+ gaps_in=4
+ gaps_out=8
+ border_size=2
+ col.active_border=0xff3381da
+ col.inactive_border=0xff333333
+
+ apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse)
+
+ damage_tracking=full # leave it on full unless you hate your GPU and want to make it suffer
+}
+
+decoration {
+ rounding=0
+ blur=1
+ blur_size=3 # minimum 1
+ blur_passes=1 # minimum 1
+ blur_new_optimizations=1
+}
+
+animations {
+ enabled=0
+ animation=windows,1,7,default
+ animation=border,1,10,default
+ animation=fade,1,10,default
+ animation=workspaces,1,6,default
+}
+
+dwindle {
+ pseudotile=0 # enable pseudotiling on dwindle
+}
+
+master {
+ new_is_master=true
+ new_on_top=true
+}
+
+gestures {
+ workspace_swipe=no
+}
+
+# Keybinds
+bind=SUPER,RETURN,exec,alacritty
+bind=SUPER,X,killactive,
+bind=SUPER_SHIFT,X,exit,
+bind=SUPER,E,exec,fuzzel
+bind=SUPER_SHIFT,S,exec,loginctl lock-session
+
+bindl=,XF86AudioMute,exec,~/.local/bin/vol toggle
+bindel=,XF86AudioRaiseVolume,exec,~/.local/bin/vol inc 5
+bindel=,XF86AudioLowerVolume,exec,~/.local/bin/vol dec 5
+binde=,XF86MonBrightnessUp,exec,~/.local/bin/bl inc 5
+binde=,XF86MonBrightnessDown,exec,~/.local/bin/bl dec 5
+#bind=,Print,exec,
+#bind=,XF86AudioMicMute,exec,
+
+bind=SUPER,J,layoutmsg,cyclenext
+bind=SUPER,K,layoutmsg,cycleprev
+bind=SUPER,H,splitratio,-0.05
+bind=SUPER,L,splitratio,+0.05
+bind=SUPER_SHIFT,RETURN,layoutmsg,swapwithmaster
+bind=SUPER_SHIFT,J,layoutmsg,swapnext
+bind=SUPER_SHIFT,K,layoutmsg,swapprev
+bind=SUPER_SHIFT,H,layoutmsg,addmaster
+bind=SUPER_SHIFT,L,layoutmsg,removemaster
+bind=SUPER,SPACE,layoutmsg,orientationnext
+bind=SUPER_SHIFT,SPACE,layoutmsg,orientationprev
+bind=SUPER,M,fullscreen,1
+bind=SUPER,F,fullscreen,0
+
+bind=SUPER,2,exec,~/.local/bin/hyprland-switch-tag 1
+bind=SUPER,3,exec,~/.local/bin/hyprland-switch-tag 2
+bind=SUPER,4,exec,~/.local/bin/hyprland-switch-tag 3
+bind=SUPER,5,exec,~/.local/bin/hyprland-switch-tag 4
+bind=SUPER,6,exec,~/.local/bin/hyprland-switch-tag 5
+bind=SUPER,7,exec,~/.local/bin/hyprland-switch-tag 6
+bind=SUPER,8,exec,~/.local/bin/hyprland-switch-tag 7
+bind=SUPER,9,exec,~/.local/bin/hyprland-switch-tag 8
+bind=SUPER,0,exec,~/.local/bin/hyprland-switch-tag 9
+
+bind=SUPER_SHIFT,2,movetoworkspacesilent,1
+bind=SUPER_SHIFT,3,movetoworkspacesilent,2
+bind=SUPER_SHIFT,4,movetoworkspacesilent,3
+bind=SUPER_SHIFT,5,movetoworkspacesilent,4
+bind=SUPER_SHIFT,6,movetoworkspacesilent,5
+bind=SUPER_SHIFT,7,movetoworkspacesilent,6
+bind=SUPER_SHIFT,8,movetoworkspacesilent,7
+bind=SUPER_SHIFT,9,movetoworkspacesilent,8
+bind=SUPER_SHIFT,0,movetoworkspacesilent,9
+
+bind=SUPER,mouse_down,workspace,e+1
+bind=SUPER,mouse_up,workspace,e-1
+
+# Rules
+windowrulev2=workspace 3,class:(firefox)
+windowrulev2=workspace 4,class:(thunderbird)
diff --git a/.config/kdeglobals b/.config/kdeglobals
deleted file mode 100644
index 7442720..0000000
--- a/.config/kdeglobals
+++ /dev/null
@@ -1,150 +0,0 @@
-[$Version]
-update_info=filepicker.upd:filepicker-remove-old-previews-entry,fonts_global.upd:Fonts_Global,fonts_global_toolbar.upd:Fonts_Global_Toolbar,icons_remove_effects.upd:IconsRemoveEffects,kwin.upd:animation-speed,style_widgetstyle_default_breeze.upd:StyleWidgetStyleDefaultBreeze
-
-[ColorEffects:Disabled]
-ChangeSelectionColor=
-Color=56,56,56
-ColorAmount=0
-ColorEffect=0
-ContrastAmount=0.65000000000000002
-ContrastEffect=1
-Enable=
-IntensityAmount=0.10000000000000001
-IntensityEffect=2
-
-[ColorEffects:Inactive]
-ChangeSelectionColor=true
-Color=112,111,110
-ColorAmount=0.025000000000000001
-ColorEffect=2
-ContrastAmount=0.10000000000000001
-ContrastEffect=2
-Enable=false
-IntensityAmount=0
-IntensityEffect=0
-
-[Colors:Button]
-BackgroundAlternate=64,69,82
-BackgroundNormal=65,72,87
-DecorationFocus=82,148,226
-DecorationHover=82,148,226
-ForegroundActive=61,174,233
-ForegroundInactive=137,141,153
-ForegroundLink=29,153,243
-ForegroundNegative=218,68,83
-ForegroundNeutral=246,116,0
-ForegroundNormal=211,218,227
-ForegroundPositive=39,174,96
-ForegroundVisited=155,89,182
-
-[Colors:Complementary]
-ForegroundLink=29,153,243
-ForegroundVisited=155,89,182
-
-[Colors:Selection]
-BackgroundAlternate=29,153,243
-BackgroundNormal=82,148,226
-DecorationFocus=82,148,226
-DecorationHover=82,148,226
-ForegroundActive=252,252,252
-ForegroundInactive=147,186,227
-ForegroundLink=20,109,172
-ForegroundNegative=160,48,50
-ForegroundNeutral=182,85,0
-ForegroundNormal=211,218,227
-ForegroundPositive=27,123,67
-ForegroundVisited=155,89,182
-
-[Colors:Tooltip]
-BackgroundAlternate=47,52,63
-BackgroundNormal=53,57,69
-DecorationFocus=82,148,226
-DecorationHover=82,148,226
-ForegroundActive=61,174,233
-ForegroundInactive=137,141,153
-ForegroundLink=29,153,243
-ForegroundNegative=218,68,83
-ForegroundNeutral=246,116,0
-ForegroundNormal=211,218,227
-ForegroundPositive=39,174,96
-ForegroundVisited=155,89,182
-
-[Colors:View]
-BackgroundAlternate=64,69,82
-BackgroundNormal=64,69,82
-DecorationFocus=82,148,226
-DecorationHover=82,148,226
-ForegroundActive=61,174,233
-ForegroundInactive=137,141,153
-ForegroundLink=29,153,243
-ForegroundNegative=218,68,83
-ForegroundNeutral=246,116,0
-ForegroundNormal=211,218,227
-ForegroundPositive=39,174,96
-ForegroundVisited=155,89,182
-
-[Colors:Window]
-BackgroundAlternate=47,52,63
-BackgroundNormal=47,52,63
-DecorationFocus=82,148,226
-DecorationHover=82,148,226
-ForegroundActive=61,174,233
-ForegroundInactive=137,141,153
-ForegroundLink=29,153,243
-ForegroundNegative=218,68,83
-ForegroundNeutral=246,116,0
-ForegroundNormal=211,218,227
-ForegroundPositive=39,174,96
-ForegroundVisited=155,89,182
-
-[DirSelect Dialog]
-DirSelectDialog Size=844,598
-History Items[$e]=file:$HOME/pictures/wallpapers/1920x1080,file:$HOME/pictures/wallpapers/1920x1080,file:$HOME/pictures/wallpapers/1920x1080
-
-[General]
-BrowserApplication=chromium.desktop
-ColorSchemeHash=fe6711d5312a664b695e8bc1d1d4b53f52ba20f0
-TerminalApplication=alacritty
-TerminalService=Alacritty.desktop
-XftHintStyle=hintslight
-XftSubPixel=none
-fixed=Liberation Mono,10,-1,5,50,0,0,0,0,0
-font=Open Sans,10,-1,5,50,0,0,0,0,0
-smallestReadableFont=Open Sans,8,-1,5,50,0,0,0,0,0
-
-[KDE]
-AnimationDurationFactor=0
-LookAndFeelPackage=com.github.varlesh.arc-dark
-SingleClick=false
-
-[KFileDialog Settings]
-Allow Expansion=false
-Automatically select filename extension=true
-Breadcrumb Navigation=false
-Decoration position=2
-LocationCombo Completionmode=5
-PathCombo Completionmode=5
-Show Bookmarks=false
-Show Full Path=false
-Show Inline Previews=true
-Show Preview=false
-Show Speedbar=true
-Show hidden files=false
-Sort by=Name
-Sort directories first=true
-Sort hidden files last=false
-Sort reversed=false
-Speedbar Width=138
-View Style=DetailTree
-
-[Shortcuts]
-Quit=Meta+X; Ctrl+Q
-
-[WM]
-activeBackground=47,52,63
-activeBlend=47,52,63
-activeFont=Noto Sans,10,-1,5,75,0,0,0,0,0,Bold
-activeForeground=211,218,227
-inactiveBackground=47,52,63
-inactiveBlend=47,52,63
-inactiveForeground=102,106,115
diff --git a/.config/kscreenlockerrc b/.config/kscreenlockerrc
deleted file mode 100644
index 3700620..0000000
--- a/.config/kscreenlockerrc
+++ /dev/null
@@ -1,15 +0,0 @@
-[$Version]
-update_info=kscreenlocker.upd:0.1-autolock
-
-[Daemon]
-Timeout=2
-
-[Greeter]
-WallpaperPlugin=org.kde.color
-
-[Greeter][Wallpaper][org.kde.color][General]
-Color=0,0,0
-
-[Greeter][Wallpaper][org.kde.slideshow][General]
-SlideInterval=7200
-SlidePaths=/home/tyil/pictures/wallpapers/1920x1080/
diff --git a/.config/ntfy/client.yml b/.config/ntfy/client.yml
new file mode 100644
index 0000000..f85515e
--- /dev/null
+++ b/.config/ntfy/client.yml
@@ -0,0 +1 @@
+default-host: https://ntfy.tyil.nl
diff --git a/.config/plasma-org.kde.plasma.desktop-appletsrc b/.config/plasma-org.kde.plasma.desktop-appletsrc
deleted file mode 100644
index 950a0d8..0000000
--- a/.config/plasma-org.kde.plasma.desktop-appletsrc
+++ /dev/null
@@ -1,386 +0,0 @@
-[ActionPlugins][0]
-RightButton;NoModifier=org.kde.contextmenu
-wheel:Vertical;NoModifier=org.kde.switchdesktop
-
-[ActionPlugins][1]
-RightButton;NoModifier=org.kde.contextmenu
-
-[Containments][2]
-activityId=
-formfactor=2
-immutability=1
-lastScreen=0
-location=3
-plugin=org.kde.panel
-wallpaperplugin=org.kde.image
-
-[Containments][2][Applets][18]
-immutability=1
-plugin=org.kde.plasma.digitalclock
-
-[Containments][2][Applets][18][Configuration]
-PreloadWeight=90
-popupHeight=450
-popupWidth=396
-
-[Containments][2][Applets][18][Configuration][Appearance]
-dateDisplayFormat=BesideTime
-dateFormat=isoDate
-displayTimezoneFormat=UTCOffset
-showWeekNumbers=true
-use24hFormat=2
-
-[Containments][2][Applets][18][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][24]
-immutability=1
-plugin=org.kde.plasma.panelspacer
-
-[Containments][2][Applets][25]
-immutability=1
-plugin=org.kde.plasma.panelspacer
-
-[Containments][2][Applets][3]
-immutability=1
-plugin=org.kde.plasma.kickoff
-
-[Containments][2][Applets][3][Configuration]
-PreloadWeight=100
-popupHeight=512
-popupWidth=653
-
-[Containments][2][Applets][3][Configuration][General]
-favoritesPortedToKAstats=true
-
-[Containments][2][Applets][3][Configuration][Shortcuts]
-global=Alt+F1
-
-[Containments][2][Applets][3][Shortcuts]
-global=Alt+F1
-
-[Containments][2][Applets][34]
-immutability=1
-plugin=org.kde.plasma.weather
-
-[Containments][2][Applets][34][Configuration]
-PreloadWeight=85
-source=wettercom|weather|Dordrecht, Provincie Zuid-Holland, NL|NL0ZH0034;Dordrecht
-updateInterval=30
-
-[Containments][2][Applets][34][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][38]
-immutability=1
-plugin=org.kde.plasma.systemmonitor
-
-[Containments][2][Applets][38][Configuration][Appearance]
-chartFace=org.kde.ksysguard.textonly
-title=Hard Disk Activity
-
-[Containments][2][Applets][38][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][38][Configuration][SensorColors]
-disk/all/read=226,160,82
-disk/all/write=0,170,0
-
-[Containments][2][Applets][38][Configuration][SensorLabels]
-disk/all/write=W
-
-[Containments][2][Applets][38][Configuration][Sensors]
-highPrioritySensorIds=["disk/all/write"]
-
-[Containments][2][Applets][39]
-immutability=1
-plugin=org.kde.plasma.systemmonitor
-
-[Containments][2][Applets][39][Configuration][Appearance]
-chartFace=org.kde.ksysguard.textonly
-title=Hard Disk Activity
-
-[Containments][2][Applets][39][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][39][Configuration][SensorColors]
-disk/all/read=0,170,0
-disk/all/write=82,148,226
-
-[Containments][2][Applets][39][Configuration][SensorLabels]
-disk/all/read=R
-
-[Containments][2][Applets][39][Configuration][Sensors]
-highPrioritySensorIds=["disk/all/read"]
-
-[Containments][2][Applets][40]
-immutability=1
-plugin=org.kde.plasma.systemmonitor
-
-[Containments][2][Applets][40][Configuration][Appearance]
-chartFace=org.kde.ksysguard.textonly
-title=Network speed
-
-[Containments][2][Applets][40][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][40][Configuration][SensorColors]
-network/all/download=82,148,226
-network/all/upload=255,170,0
-
-[Containments][2][Applets][40][Configuration][SensorLabels]
-network/all/upload=TX
-
-[Containments][2][Applets][40][Configuration][Sensors]
-highPrioritySensorIds=["network/all/upload"]
-
-[Containments][2][Applets][41]
-immutability=1
-plugin=org.kde.plasma.systemmonitor
-
-[Containments][2][Applets][41][Configuration][Appearance]
-chartFace=org.kde.ksysguard.textonly
-title=Network speed
-
-[Containments][2][Applets][41][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][41][Configuration][SensorColors]
-network/all/download=255,170,0
-network/all/upload=226,160,82
-
-[Containments][2][Applets][41][Configuration][SensorLabels]
-network/all/download=RX
-
-[Containments][2][Applets][41][Configuration][Sensors]
-highPrioritySensorIds=["network/all/download"]
-
-[Containments][2][Applets][42]
-immutability=1
-plugin=org.kde.plasma.systemmonitor
-
-[Containments][2][Applets][42][Configuration][Appearance]
-chartFace=org.kde.ksysguard.textonly
-title=Total CPU Use
-
-[Containments][2][Applets][42][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][42][Configuration][SensorColors]
-cpu/all/usage=82,148,226
-
-[Containments][2][Applets][42][Configuration][SensorLabels]
-cpu/all/usage=CPU\s
-
-[Containments][2][Applets][42][Configuration][Sensors]
-highPrioritySensorIds=["cpu/all/usage"]
-lowPrioritySensorIds=["cpu/all/cpuCount","cpu/all/coreCount"]
-totalSensors=["cpu/all/usage"]
-
-[Containments][2][Applets][43]
-immutability=1
-plugin=org.kde.plasma.systemmonitor
-
-[Containments][2][Applets][43][Configuration][Appearance]
-chartFace=org.kde.ksysguard.textonly
-title=Memory Usage
-
-[Containments][2][Applets][43][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][2][Applets][43][Configuration][SensorColors]
-memory/physical/used=82,148,226
-
-[Containments][2][Applets][43][Configuration][SensorLabels]
-memory/physical/used=RAM
-
-[Containments][2][Applets][43][Configuration][Sensors]
-highPrioritySensorIds=["memory/physical/used"]
-lowPrioritySensorIds=["memory/physical/total"]
-totalSensors=["memory/physical/usedPercent"]
-
-[Containments][2][Applets][6]
-immutability=1
-plugin=org.kde.plasma.marginsseparator
-
-[Containments][2][Applets][7]
-immutability=1
-plugin=org.kde.plasma.systemtray
-
-[Containments][2][Applets][7][Configuration]
-PreloadWeight=100
-SystrayContainmentId=8
-
-[Containments][2][ConfigDialog]
-DialogHeight=74
-DialogWidth=1920
-
-[Containments][2][General]
-AppletOrder=3;42;43;39;38;41;40;24;18;34;25;6;7
-
-[Containments][33]
-ItemGeometries-1920x1080=
-ItemGeometriesHorizontal=
-ItemGeometriesVertical=
-activityId=fc2a40a5-dc1a-4653-b26b-b869b4191298
-formfactor=0
-immutability=1
-lastScreen=0
-location=0
-plugin=org.kde.desktopcontainment
-wallpaperplugin=org.kde.slideshow
-
-[Containments][33][ConfigDialog]
-DialogHeight=1013
-DialogWidth=1906
-
-[Containments][33][General]
-ToolBoxButtonState=topcenter
-ToolBoxButtonX=562
-ToolBoxButtonY=30
-
-[Containments][33][Wallpaper][org.kde.slideshow][General]
-Image=/home/tyil/pictures/wallpapers/1920x1080/anime/BlackRockShooter/jqyGYnB.jpg
-SlideInterval=7200
-SlidePaths=/home/tyil/pictures/wallpapers/1920x1080/
-
-[Containments][8]
-activityId=
-formfactor=2
-immutability=1
-lastScreen=0
-location=3
-plugin=org.kde.plasma.private.systemtray
-popupHeight=432
-popupWidth=432
-wallpaperplugin=org.kde.image
-
-[Containments][8][Applets][10]
-immutability=1
-plugin=org.kde.plasma.clipboard
-
-[Containments][8][Applets][10][Configuration]
-PreloadWeight=55
-
-[Containments][8][Applets][11]
-immutability=1
-plugin=org.kde.plasma.devicenotifier
-
-[Containments][8][Applets][12]
-immutability=1
-plugin=org.kde.plasma.manage-inputmethod
-
-[Containments][8][Applets][13]
-immutability=1
-plugin=org.kde.plasma.notifications
-
-[Containments][8][Applets][13][Configuration]
-PreloadWeight=65
-
-[Containments][8][Applets][14]
-immutability=1
-plugin=org.kde.kdeconnect
-
-[Containments][8][Applets][14][Configuration]
-PreloadWeight=60
-
-[Containments][8][Applets][15]
-immutability=1
-plugin=org.kde.kscreen
-
-[Containments][8][Applets][16]
-immutability=1
-plugin=org.kde.plasma.volume
-
-[Containments][8][Applets][16][Configuration]
-PreloadWeight=65
-
-[Containments][8][Applets][16][Configuration][General]
-migrated=true
-
-[Containments][8][Applets][17]
-immutability=1
-plugin=org.kde.plasma.vault
-
-[Containments][8][Applets][20]
-immutability=1
-plugin=org.kde.plasma.networkmanagement
-
-[Containments][8][Applets][20][Configuration]
-PreloadWeight=65
-
-[Containments][8][Applets][21]
-immutability=1
-plugin=org.kde.plasma.bluetooth
-
-[Containments][8][Applets][22]
-immutability=1
-plugin=org.kde.plasma.battery
-
-[Containments][8][Applets][22][Configuration]
-PreloadWeight=55
-
-[Containments][8][Applets][22][Configuration][General]
-showPercentage=true
-
-[Containments][8][Applets][27]
-immutability=1
-plugin=org.kde.plasma.pass
-
-[Containments][8][Applets][27][Configuration]
-PreloadWeight=100
-
-[Containments][8][Applets][27][Configuration][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][8][Applets][27][Shortcuts]
-global=Meta+P
-
-[Containments][8][Applets][28]
-immutability=1
-plugin=org.kde.plasma.printmanager
-
-[Containments][8][Applets][29]
-immutability=1
-plugin=org.kde.plasma.nightcolorcontrol
-
-[Containments][8][Applets][30]
-immutability=1
-plugin=org.kde.plasma.keyboardindicator
-
-[Containments][8][Applets][33]
-immutability=1
-plugin=org.kde.plasma.mediacontroller
-
-[Containments][8][Applets][33][Configuration]
-PreloadWeight=5
-
-[Containments][8][Applets][35]
-immutability=1
-plugin=org.kde.kalendar.contact
-
-[Containments][8][Applets][9]
-immutability=1
-plugin=org.kde.plasma.keyboardlayout
-
-[Containments][8][ConfigDialog]
-DialogHeight=540
-DialogWidth=720
-
-[Containments][8][General]
-extraItems=org.kde.plasma.keyboardlayout,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.kscreen,org.kde.plasma.networkmanagement,org.kde.plasma.pass,org.kde.plasma.printmanager,org.kde.plasma.nightcolorcontrol,org.kde.plasma.keyboardindicator,org.kde.plasma.volume,org.kde.kdeconnect,org.kde.kalendar.contact
-hiddenItems=org.kde.kalendar.contact
-knownItems=org.kde.plasma.keyboardlayout,org.kde.plasma.battery,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.notifications,org.kde.kscreen,org.kde.plasma.networkmanagement,org.kde.plasma.pass,org.kde.plasma.printmanager,org.kde.plasma.nightcolorcontrol,org.kde.plasma.keyboardindicator,org.kde.plasma.volume,org.kde.kdeconnect,org.kde.kalendar.contact
-shownItems=org.kde.plasma.battery,org.kde.plasma.volume,org.kde.plasma.networkmanagement
-
-[ScreenMapping]
-itemsOnDisabledScreens=
diff --git a/.config/plasmanotifyrc b/.config/plasmanotifyrc
deleted file mode 100644
index c40bb6a..0000000
--- a/.config/plasmanotifyrc
+++ /dev/null
@@ -1,5 +0,0 @@
-[Applications][com.nextcloud.desktopclient.nextcloud]
-Seen=true
-
-[Applications][thunderbird]
-Seen=true
diff --git a/.config/plasmashellrc b/.config/plasmashellrc
deleted file mode 100644
index 5d07d31..0000000
--- a/.config/plasmashellrc
+++ /dev/null
@@ -1,14 +0,0 @@
-[General]
-Number of Actions=0
-
-[PlasmaTransientsConfig]
-PreloadWeight=0
-
-[PlasmaViews][Panel 2][Defaults]
-thickness=21
-
-[PlasmaViews][Panel 2][Horizontal1920]
-thickness=21
-
-[Updates]
-performed=/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/keyboardlayout_remove_shortcut.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/containmentactions_middlebutton.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/digitalclock_migrate_font_settings.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/klipper_clear_config.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/no_middle_click_paste_on_panels.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/systemloadviewer_systemmonitor.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/digitalclock_rename_timezonedisplay_key.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/move_desktop_layout_config.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/unlock_widgets.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/keyboardlayout_migrateiconsetting.js,/run/current-system/sw/share/plasma/shells/org.kde.plasma.desktop/contents/updates/maintain_existing_desktop_icon_sizes.js
diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml
index 473c5fa..237dd53 100644
--- a/.config/qutebrowser/autoconfig.yml
+++ b/.config/qutebrowser/autoconfig.yml
@@ -26,6 +26,7 @@ settings:
'*://animebytes.tv/*': true
'*://bitspyder.net/*': true
'*://broadcasthe.net/*': true
+ '*://diensten.regiobank.nl/*': true
'*://gazellegames.net/*': true
'*://iptorrents.com/*': true
'*://jpopsuki.eu/*': true
@@ -60,6 +61,7 @@ settings:
content.notifications.enabled:
https://fedi.tyil.nl: false
https://gazellegames.net: false
+ https://tv.tyil.nl: true
content.webgl:
global: false
downloads.location.directory:
diff --git a/.config/shell/env b/.config/shell/env
index b69ce13..fe1e814 100644
--- a/.config/shell/env
+++ b/.config/shell/env
@@ -7,7 +7,7 @@ export LANG="en_US.UTF-8"
export LESSCHARSET="utf-8"
# Set favourite applications
-export BROWSER="qutebrowser"
+export BROWSER="firefox"
export EDITOR="vim"
export ALTERNATE_EDITOR="ed"
diff --git a/.config/shell/functions.d/venv b/.config/shell/functions.d/venv
new file mode 100644
index 0000000..c23a02d
--- /dev/null
+++ b/.config/shell/functions.d/venv
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+venv() {
+ if ! command -V "venv_$1" | grep -q " function "
+ then
+ cat <<EOF
+Usage:
+ venv on
+ venv off
+
+Manage the python venv for a given project or directory.
+
+Commands:
+ on Enable the venv for \$PWD
+ off Deactivate the current venv
+EOF
+
+ return 1
+ fi
+
+ "venv_$1"
+}
+
+venv_on() {
+ export PYTHON_VENV_DIR="$PWD/.venv"
+ export VIRTUAL_ENV_DISABLE_PROMPT=1
+
+ if [ ! -d "$PYTHON_VENV_DIR" ]
+ then
+ printf "Initializing venv directory at %s\n" "$PYTHON_VENV_DIR"
+ python3 -m venv "$PYTHON_VENV_DIR"
+ fi
+
+ . "$PYTHON_VENV_DIR/bin/activate"
+}
+
+venv_off() {
+ if [ -z "$PYTHON_VENV_DIR" ]
+ then
+ printf "No venv active?\n"
+ return 1
+ fi
+
+ deactivate
+
+ unset PYTHON_VENV_DIR
+ unset VIRTUAL_ENV_DISABLE_PROMPT
+}
diff --git a/.config/shell/sources b/.config/shell/sources
index 0709911..62a7f7b 100644
--- a/.config/shell/sources
+++ b/.config/shell/sources
@@ -27,6 +27,13 @@ then
PATH="$PATH:/usr/local/share/perl6/vendor/bin"
fi
+# Python packages
+if command -v python >/dev/null 2>&1
+then
+ PATH="$PATH:$(python -c 'import site; print(":".join(map(lambda x: x + "/usr/bin", site.getsitepackages())))')"
+ PATH="$PATH:$(python -c 'import site; print(":".join(map(lambda x: x + "/usr/sbin", site.getsitepackages())))')"
+fi
+
# Load color definitions if they exist
if [ -f "$HOME/.config/shell/colors/$SHORTSHELL" ]
then
diff --git a/.config/shell/vendor/bash/feature-auto-completion b/.config/shell/vendor/bash/feature-auto-completion
new file mode 160000
+Subproject a18a07b34b37377bb523afa78899259f21d575a
diff --git a/.config/shell/vendor/zsh/feature-syntax-highlighting b/.config/shell/vendor/zsh/feature-syntax-highlighting
new file mode 160000
+Subproject e0165eaa730dd0fa321a6a6de74f092fe87630b
diff --git a/.config/swayidle/config b/.config/swayidle/config
new file mode 100644
index 0000000..faee35b
--- /dev/null
+++ b/.config/swayidle/config
@@ -0,0 +1,6 @@
+timeout 30 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on'
+timeout 45 'loginctl lock-session'
+
+before-sleep 'loginctl lock-session'
+
+lock 'swaylock -f -c 000000'
diff --git a/.config/swaylock/config b/.config/swaylock/config
new file mode 100644
index 0000000..6004b6e
--- /dev/null
+++ b/.config/swaylock/config
@@ -0,0 +1,2 @@
+daemonize
+show-failed-attempts
diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc
index 0c5035c..d00104b 100644
--- a/.config/sxhkd/sxhkdrc
+++ b/.config/sxhkd/sxhkdrc
@@ -1,6 +1,6 @@
# spawn applications
super + Return
- term
+ ~/.local/bin/term
super + alt + Return
term -c
diff --git a/.config/systemd/user/dapp-.service.d/00-ExecSearchPath.conf b/.config/systemd/user/dapp-.service.d/00-ExecSearchPath.conf
new file mode 100644
index 0000000..3fdf3af
--- /dev/null
+++ b/.config/systemd/user/dapp-.service.d/00-ExecSearchPath.conf
@@ -0,0 +1,4 @@
+[Service]
+ExecSearchPath=%h/.local/bin
+ExecSearchPath=/usr/local/bin
+ExecSearchPath=/usr/bin
diff --git a/.config/systemd/user/dapp-.service.d/00-WorkingDirectory.conf b/.config/systemd/user/dapp-.service.d/00-WorkingDirectory.conf
new file mode 100644
index 0000000..d99a24c
--- /dev/null
+++ b/.config/systemd/user/dapp-.service.d/00-WorkingDirectory.conf
@@ -0,0 +1,2 @@
+[Service]
+WorkingDirectory=%h
diff --git a/.config/systemd/user/dapp-bg-.service.d/00-Restart.conf b/.config/systemd/user/dapp-bg-.service.d/00-Restart.conf
new file mode 100644
index 0000000..8a764e3
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-.service.d/00-Restart.conf
@@ -0,0 +1,2 @@
+[Service]
+Restart=always
diff --git a/.config/systemd/user/dapp-bg-chwp.service b/.config/systemd/user/dapp-bg-chwp.service
new file mode 100644
index 0000000..0aed15a
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-chwp.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Change the wallpaper used in Xorg
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=oneshot
+ExecStart=chwp
+Restart=on-failure
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-bg-chwp.service.d/00-Restart.conf b/.config/systemd/user/dapp-bg-chwp.service.d/00-Restart.conf
new file mode 100644
index 0000000..eedb19c
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-chwp.service.d/00-Restart.conf
@@ -0,0 +1,2 @@
+[Service]
+Restart=on-failure
diff --git a/.config/systemd/user/dapp-bg-chwp.timer b/.config/systemd/user/dapp-bg-chwp.timer
new file mode 100644
index 0000000..947b3e0
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-chwp.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Change the wallpaper on a regular schedule
+Requires=dapp-bg-chwp.service
+
+[Timer]
+Unit=dapp-bg-chwp.service
+OnUnitInactiveSec=1h
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-bg-dunst.service b/.config/systemd/user/dapp-bg-dunst.service
new file mode 100644
index 0000000..d74d5b2
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-dunst.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run dunst
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=/usr/bin/dunst
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-bg-ntfy@.service b/.config/systemd/user/dapp-bg-ntfy@.service
new file mode 100644
index 0000000..bbf914c
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-ntfy@.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Run ntfy
+After=network.target
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=ntfy subscribe "%i" 'notify-send "$t" "$m"'
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-bg-redshift.service b/.config/systemd/user/dapp-bg-redshift.service
new file mode 100644
index 0000000..fe996e9
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-redshift.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run redshift
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=redshift -l 51.50:4.59 -t 6500:3500
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-bg-sxhkd.service b/.config/systemd/user/dapp-bg-sxhkd.service
new file mode 100644
index 0000000..f345544
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-sxhkd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run the Simple X HotKey Daemon
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=/usr/bin/sxhkd
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-bg-xcompmgr.service b/.config/systemd/user/dapp-bg-xcompmgr.service
new file mode 100644
index 0000000..153ca81
--- /dev/null
+++ b/.config/systemd/user/dapp-bg-xcompmgr.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run the X Compositing Manager
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=xcompmgr
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-.service.d/00-Restart.conf b/.config/systemd/user/dapp-fg-.service.d/00-Restart.conf
new file mode 100644
index 0000000..eedb19c
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-.service.d/00-Restart.conf
@@ -0,0 +1,2 @@
+[Service]
+Restart=on-failure
diff --git a/.config/systemd/user/dapp-fg-chromium.service b/.config/systemd/user/dapp-fg-chromium.service
new file mode 100644
index 0000000..48a8283
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-chromium.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Manage an x11 application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=chromium
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-firefox.service b/.config/systemd/user/dapp-fg-firefox.service
new file mode 100644
index 0000000..0d434cc
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-firefox.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Manage an x11 application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=firefox
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-gajim.service b/.config/systemd/user/dapp-fg-gajim.service
new file mode 100644
index 0000000..0ed24f0
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-gajim.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Manage an x11 application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=gajim
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-irc.service b/.config/systemd/user/dapp-fg-irc.service
new file mode 100644
index 0000000..91cba0e
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-irc.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Manage an x11 application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=irc
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-keepassxc.service b/.config/systemd/user/dapp-fg-keepassxc.service
new file mode 100644
index 0000000..f93cfac
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-keepassxc.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Manage an x11 application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=keepassxc
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-networkmanager.service b/.config/systemd/user/dapp-fg-networkmanager.service
new file mode 100644
index 0000000..63b74b0
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-networkmanager.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Manage an x11 application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=nm-applet
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/dapp-fg-nextcloud.service b/.config/systemd/user/dapp-fg-nextcloud.service
new file mode 100644
index 0000000..7f175fd
--- /dev/null
+++ b/.config/systemd/user/dapp-fg-nextcloud.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run the Nextcloud desktop application
+After=graphical-session.target
+Requires=graphical-session.target
+
+[Service]
+Type=exec
+ExecStart=nextcloud
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.config/systemd/user/plasma-awesome_x11.service b/.config/systemd/user/plasma-awesome_x11.service
deleted file mode 100644
index add09db..0000000
--- a/.config/systemd/user/plasma-awesome_x11.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Install]
-WantedBy=plasma-workspace.target
-
-[Unit]
-Description=AwesomeWM for use as WM for KDE
-Before=plasma-workspace.target
-
-[Service]
-ExecStart=%h/.local/bin/awesome
-Slice=session.slice
-Restart=on-failure
diff --git a/.config/systemd/user/plasma-herbstluftwm_x11.service b/.config/systemd/user/plasma-herbstluftwm_x11.service
deleted file mode 100644
index d18f09e..0000000
--- a/.config/systemd/user/plasma-herbstluftwm_x11.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Install]
-WantedBy=plasma-workspace.target
-
-[Unit]
-Description = KDE Plasma with HerbstluftWM
-Before = plasma-workspace.target
-
-[Service]
-ExecStart = %h/.local/bin/herbstluftwm
-Slice = session.slice
-Restart = on-failure
diff --git a/.config/systemd/user/plasma-kwin_x11.service b/.config/systemd/user/plasma-kwin_x11.service
deleted file mode 120000
index dc1dc0c..0000000
--- a/.config/systemd/user/plasma-kwin_x11.service
+++ /dev/null
@@ -1 +0,0 @@
-/dev/null \ No newline at end of file
diff --git a/.config/systemd/user/plasma-workspace.target.wants/plasma-awesome_x11.service b/.config/systemd/user/plasma-workspace.target.wants/plasma-awesome_x11.service
deleted file mode 120000
index 376c5dd..0000000
--- a/.config/systemd/user/plasma-workspace.target.wants/plasma-awesome_x11.service
+++ /dev/null
@@ -1 +0,0 @@
-/home/tyil/.config/systemd/user/plasma-awesome_x11.service \ No newline at end of file
diff --git a/.config/systemd/user/wsys-.service.d/00-Target.conf b/.config/systemd/user/wsys-.service.d/00-Target.conf
new file mode 100644
index 0000000..d80f469
--- /dev/null
+++ b/.config/systemd/user/wsys-.service.d/00-Target.conf
@@ -0,0 +1,6 @@
+[Service]
+ExecStartPost=systemctl --user --no-block start wsys-xorg.target
+ExecStartPost=systemctl --user --no-block start wsys.target
+
+ExecStopPost=systemctl --user stop wsys.target
+ExecStopPost=systemctl --user stop wsys-xorg.target
diff --git a/.config/systemd/user/wsys-xorg.service b/.config/systemd/user/wsys-xorg.service
new file mode 100644
index 0000000..8c7a43a
--- /dev/null
+++ b/.config/systemd/user/wsys-xorg.service
@@ -0,0 +1,20 @@
+# Ensure you are allowed to run X.org as a regular non-console user!
+
+# /etc/X11/Xwrapper.conf
+# allowed_users=anybody
+# needs_root_rights=yes
+
+[Unit]
+Description=Xorg server at display :0
+
+Requires=wsys-xorg.socket
+After=wsys-xorg.socket
+Before=wsys.target
+
+[Service]
+Type=simple
+SuccessExitStatus=0 1
+
+ExecStart=/usr/bin/Xorg :0 -nolisten tcp -noreset -verbose 2 "vt1"
+ExecStartPost=systemctl --user import-environment DISPLAY
+ExecStartPost=systemctl --user import-environment XAUTHORITY
diff --git a/.config/systemd/user/wsys-xorg.socket b/.config/systemd/user/wsys-xorg.socket
new file mode 100644
index 0000000..f471dab
--- /dev/null
+++ b/.config/systemd/user/wsys-xorg.socket
@@ -0,0 +1,5 @@
+[Unit]
+Description=Socket for xorg at display :1
+
+[Socket]
+ListenStream=/tmp/.X11-unix/X1
diff --git a/.config/systemd/user/wsys-xorg.target b/.config/systemd/user/wsys-xorg.target
new file mode 100644
index 0000000..248722e
--- /dev/null
+++ b/.config/systemd/user/wsys-xorg.target
@@ -0,0 +1,3 @@
+[Unit]
+Before = wsys.target
+Description = Window System managed by X.org
diff --git a/.config/systemd/user/wsys.target b/.config/systemd/user/wsys.target
new file mode 100644
index 0000000..60a9c9f
--- /dev/null
+++ b/.config/systemd/user/wsys.target
@@ -0,0 +1,2 @@
+[Unit]
+Description = Window System
diff --git a/.config/systemd/user/xss-lock.service b/.config/systemd/user/xss-lock.service
new file mode 100644
index 0000000..7b059d6
--- /dev/null
+++ b/.config/systemd/user/xss-lock.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Start xss-lock
+PartOf=graphical-session.target
+
+[Service]
+Type=exec
+Environment=DISPLAY=:0
+ExecStart=/usr/bin/xss-lock -- i3lock -c '#000000' -n
+Restart=on-failure
+
+[Install]
+WantedBy=desktop-x11.target
diff --git a/.config/systemsettingsrc b/.config/systemsettingsrc
deleted file mode 100644
index cbb7ae9..0000000
--- a/.config/systemsettingsrc
+++ /dev/null
@@ -1,21 +0,0 @@
-[KFileDialog Settings]
-Recent Files[$e]=redshift.sh,file:$HOME/kde.kksrc,file:$HOME/.local/etc/autostart/redshift.sh
-Recent URLs[$e]=file:$HOME/.local/etc/,file:$HOME/,file:$HOME/.local/etc/autostart/
-detailViewIconSize=16
-
-[MainWindow]
-MenuBar=Disabled
-State=AAAA/wAAAAD9AAAAAAAAA/wAAAP6AAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgAAAAAA/////wAAAAAAAAAA
-ToolBarsMovable=Disabled
-eDP=eDP
-eDP Height 1920x1080 eDP=1018
-eDP Width 1920x1080 eDP=1020
-eDP XPosition 1920x1080 eDP=10
-eDP YPosition 1920x1080 eDP=31
-
-[Open-with settings]
-CompletionMode=1
-History=qute,ala,thun,next
-
-[systemsettings_sidebar_mode]
-HighlightNonDefaultSettings=true
diff --git a/.config/waybar/config-hyprland.json b/.config/waybar/config-hyprland.json
new file mode 100644
index 0000000..a82cd37
--- /dev/null
+++ b/.config/waybar/config-hyprland.json
@@ -0,0 +1,24 @@
+{
+ "name": "waybar-bot",
+ "layer": "top",
+ "position": "bottom",
+ "height": 20,
+ "spacing": 4,
+ "modules-left": [
+ "hyprland/workspaces"
+ ],
+ "modules-center": [
+ ],
+ "modules-right": [
+ ],
+ "hyprland/workspaces": {
+ "persistent-workspaces": {
+ "*": 9
+ },
+ "sort": "number"
+ },
+ "hyprland/window": {
+ "max-length": 200,
+ "seperate-outputs": true
+ }
+}
diff --git a/.config/waybar/config.json b/.config/waybar/config.json
new file mode 100644
index 0000000..880565f
--- /dev/null
+++ b/.config/waybar/config.json
@@ -0,0 +1,94 @@
+{
+ "name": "waybar-top",
+ "layer": "top",
+ "position": "top",
+ "height": 20,
+ "spacing": 2,
+ "modules-left": [
+ "cpu",
+ "memory",
+ "network"
+ ],
+ "modules-center": [
+ "clock"
+ ],
+ "modules-right": [
+ "pulseaudio",
+ "temperature",
+ "backlight",
+ "battery",
+ "idle_inhibitor",
+ "tray"
+ ],
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "๏ฎ",
+ "deactivated": "๏ฐ"
+ }
+ },
+ "tray": {
+ "spacing": 4
+ },
+ "clock": {
+ "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "CPU: {load}",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "RAM: {used}Gi/{total}Gi"
+ },
+ "temperature": {
+ "critical-threshold": 80,
+ "format": "{temperatureC}ยฐC ๐Ÿซ "
+ },
+ "backlight": {
+ "format": "{percent}% ๐Ÿ’ก",
+ "on-scroll-up": "bl inc 1",
+ "on-scroll-down": "bl dec 1"
+ },
+ "battery": {
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% ๐Ÿ”‹",
+ "format-charging": "{capacity}% โšก",
+ "format-plugged": "{capacity}% ๐Ÿ”Œ",
+ "format-alt": "{time} {icon}"
+ },
+ "network": {
+ "interface": "wlp*",
+ "interval": 1,
+ "format": "RX: {bandwidthDownBits} / TX: {bandwidthUpBits}",
+ "format-wifi": "RX: {bandwidthDownBits} / TX: {bandwidthUpBits}"
+ },
+ "pulseaudio": {
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon}๏Š” {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",
+ "on-scroll-up": "vol inc 1",
+ "on-scroll-down": "vol dec 1",
+ "on-click-right": "vol toggle"
+ }
+}
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..e322c10
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,140 @@
+* {
+ font-family: Monospace;
+ font-size: 12px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window.waybar-top {
+ border-bottom: 1px solid rgba(100, 114, 125, 0.5);
+}
+
+window.waybar-bot {
+ border-top: 1px solid rgba(100, 114, 125, 0.5);
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #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,
+#mpd {
+ padding: 0 4px;
+ color: #ffffff;
+ background-color: rgba(53, 58, 69, 0.5);
+}
+
+#clock {
+ background-color: inherit;
+}
+
+#window,
+#workspaces {
+ margin: 0 4px;
+}
+
+/* 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;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#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;
+}
+
+#wireplumber {
+ color: #000000;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+#idle_inhibitor.activated {
+ background-color: #ecf0f1;
+ color: #2d3436;
+}
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..9e22cac
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,63 @@
+[submodule ".config/shell/vendor/bash/feature-auto-completion"]
+ path = .config/shell/vendor/bash/feature-auto-completion
+ url = https://github.com/scop/bash-completion.git
+[submodule ".vim/bundle/feature-camelcasemotion"]
+ path = .vim/bundle/feature-camelcasemotion
+ url = https://github.com/tyil/camelcasemotion.git
+[submodule ".vim/bundle/feature-rainbow-parenthesis"]
+ path = .vim/bundle/feature-rainbow-parenthesis
+ url = https://github.com/luochen1990/rainbow
+[submodule ".vim/bundle/syntax-go"]
+ path = .vim/bundle/syntax-go
+ url = https://github.com/fatih/vim-go
+[submodule ".vim/bundle/syntax-hcl"]
+ path = .vim/bundle/syntax-hcl
+ url = https://github.com/jvirtanen/vim-hcl.git
+[submodule ".vim/bundle/syntax-helm"]
+ path = .vim/bundle/syntax-helm
+ url = https://github.com/towolf/vim-helm
+[submodule ".vim/bundle/syntax-ledger"]
+ path = .vim/bundle/syntax-ledger
+ url = https://github.com/ledger/vim-ledger
+[submodule ".vim/bundle/syntax-markdown"]
+ path = .vim/bundle/syntax-markdown
+ url = https://github.com/plasticboy/vim-markdown
+[submodule ".vim/bundle/syntax-mustache"]
+ path = .vim/bundle/syntax-mustache
+ url = https://github.com/mustache/vim-mustache-handlebars
+[submodule ".vim/bundle/syntax-raku"]
+ path = .vim/bundle/syntax-raku
+ url = https://github.com/raku/vim-raku.git
+[submodule ".vim/bundle/syntax-terraform"]
+ path = .vim/bundle/syntax-terraform
+ url = https://github.com/hashivim/vim-terraform
+[submodule ".vim/bundle/syntax-todo"]
+ path = .vim/bundle/syntax-todo
+ url = https://github.com/freitass/todo.txt-vim.git
+[submodule ".vim/bundle/syntax-toml"]
+ path = .vim/bundle/syntax-toml
+ url = https://github.com/cespare/vim-toml.git
+[submodule ".vim/bundle/theme-codedark"]
+ path = .vim/bundle/theme-codedark
+ url = https://github.com/tomasiser/vim-code-dark
+[submodule ".vim/bundle/theme-colorsbox"]
+ path = .vim/bundle/theme-colorsbox
+ url = https://github.com/mkarmona/colorsbox.git
+[submodule ".vim/bundle/theme-jellybeans"]
+ path = .vim/bundle/theme-jellybeans
+ url = https://github.com/nanotech/jellybeans.vim.git
+[submodule ".vim/bundle/theme-molokai"]
+ path = .vim/bundle/theme-molokai
+ url = https://github.com/tomasr/molokai.git
+[submodule ".weechat/vendor/protocol-slack"]
+ path = .weechat/vendor/protocol-slack
+ url = https://github.com/wee-slack/wee-slack
+[submodule ".config/shell/vendor/zsh/feature-syntax-highlighting"]
+ path = .config/shell/vendor/zsh/feature-syntax-highlighting
+ url = https://github.com/zsh-users/zsh-syntax-highlighting.git
+[submodule ".vim/bundle/syntax-blade"]
+ path = .vim/bundle/syntax-blade
+ url = https://github.com/jwalton512/vim-blade
+[submodule ".config/awesome/awesome-wm-widgets"]
+ path = .config/awesome/awesome-wm-widgets
+ url = https://github.com/streetturtle/awesome-wm-widgets.git
diff --git a/.local/bin/bl b/.local/bin/bl
index da1980e..ee71504 100755
--- a/.local/bin/bl
+++ b/.local/bin/bl
@@ -29,13 +29,25 @@ main()
case "$1" in
inc)
- xbacklight -inc ${2:-5}
+ brightnessctl set +${2:-5}%
notify="Brightness increased to $(brightness_level)%"
;;
dec)
- xbacklight -dec ${2:-5}
+ if [ $(brightness_level) -lt $(( ${2:-5} + 1 )) ]
+ then
+ brightnessctl set 1
+ else
+ brightnessctl set ${2:-5}%-
+ fi
+
notify="Brightness lowered to $(brightness_level)%"
;;
+ set)
+ [ -z "$2" ] && usage && exit 1
+
+ brightnessctl set $2%
+ notify="Brightness set to $(brightness_level)%"
+ ;;
esac
notify-send -n 57492 -s -t 2 -i "$(brightness_icon)" "Backlight" "$notify"
@@ -43,7 +55,7 @@ main()
brightness_level()
{
- xbacklight -get
+ awk "BEGIN { printf(\"%d\", ($(brightnessctl get) / $(brightnessctl max)) * 100) }"
}
brightness_icon()
@@ -61,8 +73,16 @@ usage()
cat <<EOF
Usage:
${0##*/} -h
+ ${0##*/} inc [level]
+ ${0##*/} dec [level]
+ ${0##*/} set <level>
+
+Alter the backlight intensity.
-Nondescript
+Subcommands:
+ inc Increase the volume by level, defaults to 5.
+ dec Decrease the volume by level, defaults to 5.
+ set Set the volume to level.
Options:
-h Show this help text and exit.
diff --git a/.local/bin/notify-send b/.local/bin/count
index 8dc67a0..cc02a71 100755
--- a/.local/bin/notify-send
+++ b/.local/bin/count
@@ -13,15 +13,10 @@
main()
{
# Handle opts
- while getopts ":a:hi:n:st:" opt
+ while getopts ":h" opt
do
case "$opt" in
- a) app=$OPTARG ;;
h) usage && exit 0 ;;
- i) icon=$OPTARG ;;
- n) id=$OPTARG ;;
- s) silent=1 ;;
- t) timeout=$OPTARG ;;
*)
printf "Invalid option passed: %s\n" "$OPTARG" >&2
;;
@@ -30,34 +25,7 @@ main()
shift $(( OPTIND - 1 ))
- [ $# -lt 1 ] && usage && exit 1
-
- if [ -z "$id" ]
- then
- id=$(awk -v min=10 -v max=10000 'BEGIN { srand(); print int(min+rand() * (max-min+1)) }')
- fi
-
- gdbus call \
- --session \
- --dest org.freedesktop.Notifications \
- --object-path /org/freedesktop/Notifications \
- --method org.freedesktop.Notifications.Notify \
- "$app" \
- "$id" \
- "$icon" \
- "$1" \
- "$2" \
- "[]" \
- "{}" \
- "$((${timeout:-10} * 1000))" \
- > /dev/null
-
- if [[ -z "$silent" ]]
- then
- printf "%d\n" "$id"
- fi
-
- exit 0
+ cat - | sort | uniq -c | sort -h
}
usage()
@@ -66,7 +34,7 @@ usage()
Usage:
${0##*/} -h
-Nondescript
+Count occurrences of unique lines.
Options:
-h Show this help text and exit.
diff --git a/.local/bin/dmenu b/.local/bin/dmenu
index 78cdf52..6c1494b 100755
--- a/.local/bin/dmenu
+++ b/.local/bin/dmenu
@@ -1,8 +1,20 @@
#!/usr/bin/env sh
-if ! command -v rofi > /dev/null
-then
- exec /usr/bin/dmenu "$@"
-fi
+main() {
+ if [ -n "$WAYLAND_DISPLAY" ]
+ then
+ exec fuzzel --dmenu "$@"
+ fi
-exec rofi -dmenu "$@"
+ if [ -n "$DISPLAY" ]
+ then
+ if command -v rofi > /dev/null
+ then
+ exec rofi -dmenu "$@"
+ fi
+
+ exec /usr/bin/dmenu "$@"
+ fi
+}
+
+main "$@"
diff --git a/.local/bin/hyprland-switch-tag b/.local/bin/hyprland-switch-tag
new file mode 100755
index 0000000..06840c9
--- /dev/null
+++ b/.local/bin/hyprland-switch-tag
@@ -0,0 +1,161 @@
+#!/usr/bin/env bash
+
+# Pascal Jaeger <pascal.jaeger@leimstift.de>
+
+# utils
+green="\033[0;32m"
+red="\033[0;31m"
+blue="\033[0;34m"
+nocolor="\033[0m"
+
+#util functions
+check() {
+ command -v "$1" 1>/dev/null
+}
+
+ok() {
+ echo -e "[$green ๎ฎฑ $nocolor] $*"
+}
+
+err() {
+ echo -e "[$red ๏— $nocolor] $*"
+}
+optional() {
+ echo -e "[$blue ๏— $nocolor] $*"
+}
+
+notify() {
+ # shellcheck disable=SC2015
+ check notify-send && {
+ notify-send "$@"
+ } || {
+ echo "$@"
+ }
+}
+
+checkUtils() {
+ # shellcheck disable=SC2015
+ check grep && ok "grep" || err "grep"
+ # shellcheck disable=SC2015
+ check grep && ok "cut" || err "cut"
+ # shellcheck disable=SC2015
+ check notify-send && ok "notify-send (Optional)" || optional "notify-send (Optional)"
+ exit
+}
+
+basicChecks() {
+ check hyprctl || {
+ notify "Seriously mate!!" "Start Hyprland before this script"
+ exit 1
+ }
+ pgrep -x Hyprland &>/dev/null || {
+ notify "Make Sure Hyprland Session is running."
+ exit 1
+ }
+}
+
+help() {
+ cat <<EOF
+ This is a bash script to move arbitrary workspace to arbritrary monitor and to swap workspaces between
+ monitors if the desired workspace is already active on a monitor for Hyprland using hyprctl.
+
+ flags:
+ -h: Displays This help menu
+ -c: Checks for all dependencies
+
+ Usage: try_swap_workspace [WORKSPACE]
+ bind = ALT,1,exec, /path/to/try_swap_workspace/binary 1
+ (where the last 1 is the workspace that should be shown on the currently active monitor)
+
+EOF
+}
+
+getArgs() {
+ while [ "$#" -gt 0 ]; do
+ case "$1" in
+ -h | --help)
+ help
+ exit 0
+ ;;
+ -c)
+ checkUtils
+ ;;
+ (*[!0-9]*)
+ # contains non-numbers
+ help
+ echo ""
+ echo "Wrong argument given"
+ exit 1
+ ;;
+ *)
+ # only nubers left, so good
+ switch_or_swap "$1"
+ ;;
+ esac
+ shift
+ done
+}
+
+
+#variables
+mon_wrkspcs=()
+
+get_active_mon() {
+ echo $(($(hyprctl monitors | grep 'focused' | grep -n 'yes' | cut -c1)-1))
+}
+
+get_workspaces_array() {
+ local workspaces
+ workspaces=$(hyprctl monitors | grep 'active workspace' | cut -f3 -d' ')
+ SAVEIFS=$IFS
+ IFS=$'\n'
+ mon_wrkspcs=($workspaces)
+ IFS=$SAVEIFS
+}
+
+# first argument: workspace to switch to
+# second argument: monitor to switch workspace on
+switch_workspace() {
+ local target_wrkspc=$1
+ local target_mon=$2
+ hyprctl dispatch moveworkspacetomonitor "$target_wrkspc" "$target_mon"
+ hyprctl dispatch workspace "$target_wrkspc"
+}
+# first argument: monitor the workspace should go to
+# second argument: monitor the workspace is currently displayed on
+swap_workspace() {
+ local target_mon=$1
+ local source_mon=$2
+ hyprctl dispatch swapactiveworkspaces "$target_mon" "$source_mon"
+}
+
+# first argument: workspace to switch to active monitor
+switch_or_swap() {
+ target_mon=$(get_active_mon)
+ target_wrkspc=$1
+ get_workspaces_array
+ # check if the workspace is currently displayed on another monitor
+ local currently_active_on_mon=-1
+ for (( i=0; i<${#mon_wrkspcs[@]}; i++ ))
+ do
+ if [[ "$target_wrkspc" == "${mon_wrkspcs[$i]}" ]]; then
+ currently_active_on_mon=$i
+ fi
+ done
+ if [[ $currently_active_on_mon -lt 0 ]]; then
+ # workspace is not active on any monitor, do a normal switch
+ ok "switching workspace $target_wrkspc to monitor $target_mon"
+ switch_workspace "$target_wrkspc" "$target_mon"
+ else
+ # workspace is already active on other monitor, swap workspaces between monitor
+ ok "swapping workspaces between $target_mon to monitor $currently_active_on_mon"
+ swap_workspace "$target_mon" "$currently_active_on_mon"
+ fi
+}
+
+main() {
+ basicChecks
+ getArgs "$@"
+}
+
+main "$@"
diff --git a/.local/bin/import-pape b/.local/bin/import-pape
new file mode 100755
index 0000000..b72c169
--- /dev/null
+++ b/.local/bin/import-pape
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+readonly PAPEDIR="$HOME/pictures/wallpapers"
+
+main() {
+ for s in "$@"
+ do
+ local format="$(identify -format "%m" "$s" | awk '{ print(tolower($0)) }')"
+ local resolution="$(identify -format "%wx%h" "$s")"
+ local hash="$(sha1sum "$s" | awk '{ print $1 }')"
+ local destination="$PAPEDIR/$resolution/$hash.$format"
+
+ mkdir -pv -- "$PAPEDIR/$resolution"
+ printf "Importing %s to %s\n" "$s" "$destination"
+ mv -- "$s" "$destination"
+ done
+}
+
+main "$@"
diff --git a/.local/bin/ipass b/.local/bin/ipass
index b19137a..4f555e4 100755
--- a/.local/bin/ipass
+++ b/.local/bin/ipass
@@ -1,19 +1,51 @@
#! /usr/bin/env sh
-main()
-{
+main() {
cd -- "$HOME/.password-store" || exit 1
- file="$(find ./* -type f | sed 's-^\./--' | sed 's-\.gpg$--' | dmenu)"
- dmenu_exit=$?
+ if [ -n "$WAYLAND_DISPLAY" ]
+ then
+ file="$(pass_list | fuzzel -d)"
+ pass_get "$file" | wl-copy
+
+ notify "Copied $file to clipboard!"
+ exit 0
+ fi
- if [ "$dmenu_exit" -ne 0 ]
+ if [ -n "$DISPLAY" ]
then
- exit 2
+ file="$(pass_list | dmenu)"
+ pass_get "$file" | xdotool type --file -
+ dmenu_exit=$?
+
+ if [ "$dmenu_exit" -ne 0 ]
+ then
+ notify "Error typing $file"
+ exit 2
+ fi
+
+ notify "Typing $file"
+
+ exit 0
fi
- pass show "$file" | head -n 1 | perl -pe 'chomp' | xdotool type --file -
- notify-send -i "dialog-password" "ipass" "$file"
+ notify "No graphical environment detected"
+}
+
+pass_list() {
+ find ./* -type f \
+ | sed 's-^\./--' \
+ | sed 's-\.gpg$--'
+}
+
+pass_get() {
+ pass show "$1" \
+ | head -n 1 \
+ | perl -pe 'chomp'
+}
+
+notify() {
+ notify-send -i "dialog-password" "ipass" "$*"
}
main "$@"
diff --git a/.local/bin/irc b/.local/bin/irc
new file mode 120000
index 0000000..3da827c
--- /dev/null
+++ b/.local/bin/irc
@@ -0,0 +1 @@
+../share/wrapper.sh \ No newline at end of file
diff --git a/.local/bin/krokify b/.local/bin/krokify
new file mode 100755
index 0000000..a01c1f6
--- /dev/null
+++ b/.local/bin/krokify
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+
+import argparse
+import base64
+import sys
+import zlib
+
+def main():
+ arg_parser = argparse.ArgumentParser(
+ prog='krokify',
+ description='Turn a given file into a kroki link',
+ )
+ arg_parser.add_argument("file", default="-", help="Path to the file to krokify, or - to read from stdin")
+ arg_parser.add_argument("-f", "--format", default="svg", help="Which output format to use")
+ arg_parser.add_argument("-s", "--service", required=True, help="Which back-end service to use")
+ arg_parser.add_argument("-u", "--base-url", default="https://kroki.tyil.nl", help="The base URL of the Kroki server")
+
+ args = arg_parser.parse_args()
+
+ if args.file == "-":
+ stream = sys.stdin
+ else:
+ stream = open(args.file, "r")
+
+ url = base64.urlsafe_b64encode(zlib.compress(stream.read().encode('utf-8'), 9)).decode('ascii')
+
+ print(f"{args.base_url}/{args.service}/{args.format}/{url}")
+
+if __name__ == "__main__":
+ main()
diff --git a/.local/bin/kubectl-rageclean-pod b/.local/bin/kubectl-rageclean-pod
new file mode 100755
index 0000000..bbd3ba7
--- /dev/null
+++ b/.local/bin/kubectl-rageclean-pod
@@ -0,0 +1,17 @@
+#!/usr/bin/env sh
+
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero 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 Affero General Public License for more
+# details.
+
+main() {
+ kubectl delete pod --force --grace-period=0 "$@"
+}
+
+main "$@"
diff --git a/.local/bin/kubectl-secret b/.local/bin/kubectl-secret
new file mode 100755
index 0000000..ab2e924
--- /dev/null
+++ b/.local/bin/kubectl-secret
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero 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 Affero General Public License for more
+# details.
+
+import argparse
+import base64
+import sys
+
+import ruamel.yaml
+import ruamel.yaml.scalarstring
+
+def main():
+ argparser = argparse.ArgumentParser(description="Encode or decode Kubernetes Secrets.")
+ argparser.add_argument("mode", help="Mode of operation, either encode or decode.", choices=["encode", "decode"])
+ argparser.add_argument("path", help="Path to the file to operate on. If set to -, STDIN will be used instead.", default="-", nargs="?")
+
+ args = argparser.parse_args()
+ yaml = ruamel.yaml.YAML()
+
+ # Deduce whether to read from STDIN or open a file handle to a given path
+ if args.path == "-":
+ buffer = sys.stdin
+ else:
+ buffer = open(args.path)
+
+ # Load the manifest
+ manifest = yaml.load(buffer.read())
+
+ # Handle any known potential issues
+ if not "kind" in manifest:
+ print("No kind in manifest", file=sys.stderr)
+ return 3
+
+ if manifest["kind"] != "Secret":
+ print("Not a secret", file=sys.stderr)
+ return 4
+
+ if not "data" in manifest:
+ manifest["data"] = {}
+
+ # Call appropriate function with the manifest
+ manifest = globals()["secret_" + args.mode](manifest)
+
+ # Write the processed manifest back as yaml
+ yaml.dump(manifest, sys.stdout)
+
+ return 0
+
+def secret_decode(manifest):
+ for key in manifest["data"].keys():
+ # Decode the data
+ manifest["data"][key] = base64.b64decode(manifest["data"][key]).decode("utf-8")
+
+ # Turn this element into a block quoted string if there are newlines
+ if "\n" in manifest["data"][key]:
+ manifest["data"][key] = ruamel.yaml.scalarstring.LiteralScalarString(manifest["data"][key])
+
+ return manifest
+
+def secret_encode(manifest):
+ for key in manifest["data"].keys():
+ # Encode the data
+ manifest["data"][key] = base64.b64encode(str(manifest["data"][key]).encode("utf-8")).decode("utf-8")
+
+ return manifest
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/.local/bin/media-import b/.local/bin/media-import
new file mode 100755
index 0000000..a1a99b2
--- /dev/null
+++ b/.local/bin/media-import
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+main() {
+ # Show help
+ if (( $# < 2 ))
+ then
+ echo "You need help"
+ return 2
+ fi
+
+ # Set the paths
+ local basedir="${MEDIA_BASEDIR:-/var/media}"
+ local mediadir="$basedir/$1" ; shift
+
+ # Ask for confirmation through a keypress
+ printf "Going to import %d URIs to %s...\n" "$#" "$mediadir"
+ read -s -n1
+
+ # Loop over all given args
+ for uri in "$@"
+ do
+ case "$uri" in
+ http://*) import_http "$mediadir" "$uri" ;;
+ https://*) import_http "$mediadir" "$uri" ;;
+ *) import_local "$mediadir" "$uri" ;;
+ esac
+ done
+}
+
+import_http() {
+ local dest="$1" ; shift
+ local uri="$1" ; shift
+ local temp="$(mktemp)"
+
+ wget -c -O "$temp" "$uri"
+
+ local output="$(import_local "$dest" "$temp" | awk '{ print $NF }')"
+
+ printf "%s -> %s\n" "$uri" "$output"
+}
+
+import_local() {
+ local dest="$1" ; shift
+ local uri="$1" ; shift
+ local hash="$(sha1sum "$uri" | awk '{ print $1 }')"
+ local ext="$(identify "$uri" | awk '{ print tolower($2) }')"
+ local out="$dest/$hash.$ext"
+
+ mv -- "$uri" "$out"
+ printf "%s -> %s\n" "$uri" "$out"
+}
+
+main "$@"
diff --git a/.local/bin/updot b/.local/bin/updot
new file mode 100755
index 0000000..f0179ad
--- /dev/null
+++ b/.local/bin/updot
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero 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 Affero General Public License for more
+# details.
+
+main()
+{
+ DOTFILES_REMOTE="origin"
+ DOTFILES_BRANCH="master"
+
+ # Handle opts
+ while getopts ":h" opt
+ do
+ case "$opt" in
+ b) DOTFILES_BRANCH="$OPTARG" ;;
+ h) usage && exit 0 ;;
+ u) DOTFILES_REMOTE="$OPTARG" ;;
+ *)
+ printf "Invalid option passed: %s\n" "$OPTARG" >&2
+ ;;
+ esac
+ done
+
+ shift $(( OPTIND - 1 ))
+
+ # Stash any pending changes
+ git -C "$HOME" stash
+
+ # Update the main repository
+ git -C "$HOME" fetch "$DOTFILES_REMOTE" "$DOTFILES_BRANCH"
+ git -C "$HOME" reset --hard "$DOTFILES_REMOTE/$DOTFILES_BRANCH"
+
+ # Pull updates for all submodules
+ git -C "$HOME" submodule update --init --recursive --remote
+
+ # Apply the stash
+ git -C "$HOME" stash apply
+}
+
+usage()
+{
+ cat <<EOF
+Usage:
+ ${0##*/} -h
+ ${0##*/} [-b <branch>] [-u <remote>]
+
+Utility application for dotfile maintenance.
+
+Options:
+ -b The name of the branch to use, defaults to "master"
+ -h Show this help text and exit.
+ -u The name of the remote to use, defaults to "origin"
+EOF
+}
+
+main "$@"
diff --git a/.local/bin/vol b/.local/bin/vol
index 8993689..84c913e 100755
--- a/.local/bin/vol
+++ b/.local/bin/vol
@@ -40,6 +40,8 @@ main()
notify="Decreased '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX) to $(volume_level)%"
;;
set)
+ [ -z "$2" ] && usage && exit 1
+
pactl set-sink-volume @DEFAULT_SINK@ $2% > /dev/null
notify="Set '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX) to $(volume_level)%"
;;
diff --git a/.local/bin/x b/.local/bin/x
index d00fda0..a47b1bc 100755
--- a/.local/bin/x
+++ b/.local/bin/x
@@ -12,7 +12,10 @@ then
exit 1
fi
- cp -v -- "$HOME/.local/etc/x/xinit.d/$1.rc" "$HOME/.xinitrc"
+ cat \
+ "$HOME/.local/etc/x/xinitrc" \
+ "$HOME/.local/etc/x/xinit.d/$1.rc" \
+ > "$HOME/.xinitrc"
fi
# Make sure the xinitrc exists, just in case
@@ -23,4 +26,6 @@ then
fi
# start the X session
-exec startx
+startx
+systemctl --user stop desktop-x11.target
+systemctl --user stop desktop.target
diff --git a/.local/bin/xdg-open b/.local/bin/xdg-open
deleted file mode 120000
index ce4a72b..0000000
--- a/.local/bin/xdg-open
+++ /dev/null
@@ -1 +0,0 @@
-open \ No newline at end of file
diff --git a/.local/etc/wrapper.d/firefox.sh b/.local/etc/wrapper.d/firefox.sh
index a47d1a4..af0905d 100644
--- a/.local/etc/wrapper.d/firefox.sh
+++ b/.local/etc/wrapper.d/firefox.sh
@@ -3,10 +3,12 @@
WRAPPER_BINS="
/usr/bin/librewolf
/usr/bin/librewolf-bin
+ /usr/bin/firefox
+ /usr/bin/firefox-esr
+ /usr/bin/firefox-bin
+ /run/current-system/sw/bin/firefox
"
WRAPPER_OPTS="
--profile $HOME/.config/firefox
"
-
-FIREJAIL_PROFILE="$HOME/.local/etc/firejail/firefox.profile"
diff --git a/.local/etc/wrapper.d/irc.sh b/.local/etc/wrapper.d/irc.sh
new file mode 100644
index 0000000..965abfa
--- /dev/null
+++ b/.local/etc/wrapper.d/irc.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+WRAPPER_BINS="
+ /usr/bin/alacritty
+"
+
+WRAPPER_OPTS="
+ --class irc
+ --command mosh oolah .local/bin/ta irc
+"
diff --git a/.local/etc/x/autostart b/.local/etc/x/autostart
new file mode 100644
index 0000000..f2f32ba
--- /dev/null
+++ b/.local/etc/x/autostart
@@ -0,0 +1,9 @@
+redshift -l 51.50:4.59 -t 6500:3500
+dunst
+sxhkd
+chwp
+xcompmgr
+xss-lock -- i3lock -c '#000000' -n
+ntfy subscribe --from-config
+nm-applet
+albert
diff --git a/.local/etc/x/xinit.d/awesome.rc b/.local/etc/x/xinit.d/awesome.rc
index bd004e8..a5f5e37 100644
--- a/.local/etc/x/xinit.d/awesome.rc
+++ b/.local/etc/x/xinit.d/awesome.rc
@@ -1,7 +1 @@
-sxhkd &
-chwp &
-xcompmgr &
-
-nm-applet &
-
exec dbus-launch --exit-with-session awesome
diff --git a/.local/etc/x/xinitrc b/.local/etc/x/xinitrc
index 3b10135..3d0f0d9 100644
--- a/.local/etc/x/xinitrc
+++ b/.local/etc/x/xinitrc
@@ -1,18 +1,4 @@
-# start dbus if necessary
-[ -f "/etc/X11/xinit/xinitrc.d/80-dbus" ] && source /etc/X11/xinit/xinitrc.d/80-dbus
-
-# start polkit auth agent
-eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg)
-export GNOME_KEYRING_PID
-export GNOME_KEYRING_SOCKET
-export SSH_AUTH_SOCK
-
-# Export additional environment vars
-export WINIT_X11_SCALE_FACTOR=1
-
-# extend the fontpath
-xset +fp ~/.fonts/Terminus/BDF
-#xset +fp /usr/share/fonts/local
+#!/bin/sh
# set the default mousepointer
xsetroot -cursor_name left_ptr
@@ -32,30 +18,11 @@ fi
# xkbmap options
setxkbmap \
-layout us \
- \
-option compose:menu \
-option caps:escape
# add altgr
xmodmap -e "keycode 108 = ISO_Level3_Shift"
-# Enable sound through PulseAudio
-pulseaudio --start
-
-# set a wallpaper
-chwp &
-
-# Turn off any screen blanking features
-xset s off
-xset -dpms
-
-# start background processes
-redshift -l 51.50:4.59 &
-dunst &
-sxhkd &
-
-# Set up a screenlock
-#xss-lock -- physlock -d &
-
-# Start x11vnc
-x11vnc -display "$DISPLAY" &
+# Export variables for a better X11 experience
+export WINIT_X11_SCALE_FACTOR=1
diff --git a/.local/share/applications/firefox.desktop b/.local/share/applications/firefox.desktop
new file mode 100644
index 0000000..0285394
--- /dev/null
+++ b/.local/share/applications/firefox.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Exec=$HOME/.local/bin/firefox
+Name=Firefox
diff --git a/.ssh/authorized_keys b/.ssh/authorized_keys
index bdf3cc6..9198118 100644
--- a/.ssh/authorized_keys
+++ b/.ssh/authorized_keys
@@ -3,17 +3,27 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEeckhvozWNKJssM+PY44fBXkzVeoqg9H8NHreWLUvGY
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID7lMmT3CJEPk1BnpW0UHie6g0LUJ/i45Sp5l4DGocwg root@denahnu.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID2tje8i3DtCmLrc+qJ7d02qQQ0lO7wtwWXO4XthWGra root@edephas.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcFE9oQT3s+vLsv4WNKTn3K0ZhntStXdCHfdBPj/62V root@faiwoo.tyil.net
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICj0hW49y+AGuMN2D672I5K6ZVLPVZLCsd+2MIat54nP root@gaeru.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILmqoy/OXsmmNpxEN/xISbHwDFt2u8f3HmGIvS2CASHm root@gaeru.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOdRI1JSQnDYqoCkCrNz/T9mLSCNb5vRSnNjb/3CGtDK root@hurzak.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC331lDhnHuQl4vkTUU5riqJ72ShdZN6zWdt1E3UJ/CJ root@krohxe.tyil.net
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC2UxgdieMtF0a9QXFRb5QVYOwxG9oN1Q85///Y6VCZj root@tyil.email
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJLcXzcOPEYQWEARFgPpZCq2NZhTBWTsIezd4Mrkt0PY root@mieshu.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIh9xYBxb5n2N20Dj03lsij32UkPJ27EMQ/6VdKhjWVJ root@nouki.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII6oh68n5HXeK45YaNnQC0mHufB/bUgsEyE500OW40B1 root@oolah.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBnTRndwR171+hR+3yMpvmbRZoM8QFUE2zdOQZaqd24E root@plarabe.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7T/5E/oA5ZO1VcIfaQGTvHcKn1dCh5APRLZH4CTNXf root@qohrei.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMtUkeSiwk+1UnMfy8Z53cQkKTlBBFZXUuDiXfPcalHj tyil@anoia.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQp0puZEEADKgUF1XYtLPzcYLTGNdDj0WCTf37adaZ2 tyil@caeghi.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE4sustL8Mw5lQpyuUnmhJgeypvlHy6UFaEKmFCGcltL tyil@denahnu.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHiNIpe2QCOk22YYU/mY7QA2rq0E07wetzj5R1wtWxeC tyil@edephas.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCiQJhuTvL0vZoOAu1L0sU81VV2qH1l4U73bL9RYfrW tyil@faiwoo.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ94ffGPvEb/Hi2B2XSaYjKpMiV93fzGLe0QUlXRJb1L tyil@gaeru.tyil.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINRprF4gE0pGiMNSxR8Z0fFsBikoifsm7HpdbHkBsmDg tyil@hurzak.tyil.net
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE+Ki28DBM3A8QUpxbAlZx2x111+rhn8JPcec67y9xi/ tyil@ivdea.tyil.net
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDQDyWbo8Ma60t5wwKK2bdxo03gj2GxxCyn2/V2nNr5Z tyil@tyil.email
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIVPGs2LkDvdkMzwR1Crk8OblMQD2snClUuIcYgUYcu4 tyil@ludifah.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFqLhjoIYRZmkD9sv1l1c03x6EpkadjfrGJ+4gqgkmp5 tyil@mieshu.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNztf75LVF+UvoIDyduHfynZupdC+9g7RaIs6cGgmCa tyil@nouki.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJkjrJ6agLK5Bdg2Y5B+88XDbP5UsQyvdUbd3LrOVmjI tyil@oolah.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7XKD3KxXTe5GlM4w4xdap3VAPvYCi4EowD88ymInFR tyil@plarabe.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPyOy5m6FnzyUBHplh8Eukz6rqvMW/mUh1cqUQrO3L/R tyil@qohrei.tyil.net
-AAAAB3NzaC1yc2EAAAADAQABAAABAQDLRsHpUMeMrXr1s++ZJ7AQ5bLzBAHOQXkTd34Bin72aRD/iLVrEnxrE7Bk5UzWhvcedHHltpc8sdy0m8UFozprFeogD+1EpfdelycmfEBgzJE+p0+W/qsSMGy9AMgar7cNo8G4/eJr63XjyAdXG7eztmoz5Whgv0qlh2lW2dJ2orrlPF0bUA8tAx0ZAtJqvVEJZlXIlYqHCbYLHrif7w52UWV7UlkOosCl4FDsTO7BGkpRj6A/tGhu7gtTX1P9NQav2KFPvFko+S6jlEwCE1StwbiRop90grdv6OZ5UJe6KE2MEntwoW01y7BnB+lvgMTQyqKLKS1ffEbXIQPhbjBL yubikey (7 835 697)
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC2UxgdieMtF0a9QXFRb5QVYOwxG9oN1Q85///Y6VCZj root@tyil.email
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDQDyWbo8Ma60t5wwKK2bdxo03gj2GxxCyn2/V2nNr5Z tyil@tyil.email
diff --git a/.ssh/config b/.ssh/config
index 436ed4c..c0a670d 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -5,17 +5,18 @@ Host *
IdentityFile ~/.ssh/id.d/%u@%L-ed25519
Host home.tyil.nl
- Hostname 10.57.100.7
+ Hostname 10.57.0.1
ForwardAgent yes
Host git.tyil.nl
- Hostname 10.57.100.7
+ Hostname 10.57.3.1
User git
Host rsync.net
User zh1193
Hostname zh1193.rsync.net
+# Test cluster
# Libvirt VMs
Host 192.168.122.*
User root
diff --git a/.ssh/config.d/tyilnet b/.ssh/config.d/tyilnet
index 603c3c1..4bad39d 100644
--- a/.ssh/config.d/tyilnet
+++ b/.ssh/config.d/tyilnet
@@ -1,39 +1,39 @@
Host anoia
- Hostname 10.57.100.3
-
-Host bast
- Hostname 10.57.100.4
+ Hostname fd68:1057:1992:3381::0:3317:4
Host caeghi
- Hostname 10.57.20.2
+ Hostname fd68:1057:1992:3381::1:1:1
ForwardAgent yes
-Host denahnu
- Hostname 10.57.20.4
-
Host edephas
- Hostname 10.57.100.7
-
-Host email
- Hostname 10.57.20.3
+ Hostname fd68:1057:1992:3381::0:3317:1
Host faiwoo
- Hostname 10.57.20.5
+ Hostname fd68:1057:1992:3381::1:1:2
Host gaeru
- Hostname 10.57.20.6
+ Hostname fd68:1057:1992:3381::1:2:1
+
+Host jaomox
+ Hostname fd68:1057:1992:3381::3:3:1
-Host hurzak
- Hostname 10.57.20.7
+Host ludifah
+ Hostname fd68:1057:1992:3381::0:3317:2
-Host ivdea
- Hostname 10.57.100.8
+Host mieshu
+ Hostname fd68:1057:1992:3381::3:3317:1
-Host jaomox
- Hostname 10.57.21.1
+Host nouki
+ Hostname fd68:1057:1992:3381::2:3317:1
-Host krohxe
- Hostname 10.57.20.8
+Host oolah
+ Hostname fd68:1057:1992:3381::1:3317:1
-Host ludifah
- Hostname 10.57.100.9
+Host plarabe
+ Hostname fd68:1057:1992:3381::0:3317:3
+
+Host qohrei
+ Hostname fd68:1057:1992:3381::1:1:3
+
+Host ricui
+ Hostname fd68:1057:1992:3381::1:1:4
diff --git a/.ssh/config.d/xxllnc b/.ssh/config.d/xxllnc
index 12739e9..47643e6 100644
--- a/.ssh/config.d/xxllnc
+++ b/.ssh/config.d/xxllnc
@@ -3,9 +3,8 @@ Host *.zsys.nl
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
-Host git.xxllnc.nl
+Host git.xxllnc.nl gitlab.com
Hostname gitlab.com
User git
- IdentityFile ~/.ssh/id.d/xxllnc@%L-ed25519
# vim: set ft=sshconfig :
diff --git a/.ssh/id.d/root@bast-ed25519.pub b/.ssh/id.d/root@bast-ed25519.pub
deleted file mode 100644
index e1d7ab3..0000000
--- a/.ssh/id.d/root@bast-ed25519.pub
+++ /dev/null
@@ -1 +0,0 @@
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICk/6jLojpp5Jaum8C1trxqtZuLd/GJH8sh0SB/Z/y9J root@bast
diff --git a/.ssh/id.d/root@gaeru-ed25519.pub b/.ssh/id.d/root@gaeru-ed25519.pub
index 3056a3d..fe3c6a7 100644
--- a/.ssh/id.d/root@gaeru-ed25519.pub
+++ b/.ssh/id.d/root@gaeru-ed25519.pub
@@ -1 +1 @@
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICj0hW49y+AGuMN2D672I5K6ZVLPVZLCsd+2MIat54nP root@gaeru.tyil.net
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILmqoy/OXsmmNpxEN/xISbHwDFt2u8f3HmGIvS2CASHm root@gaeru.tyil.net
diff --git a/.ssh/id.d/root@mieshu-ed25519.pub b/.ssh/id.d/root@mieshu-ed25519.pub
new file mode 100644
index 0000000..0faf439
--- /dev/null
+++ b/.ssh/id.d/root@mieshu-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJLcXzcOPEYQWEARFgPpZCq2NZhTBWTsIezd4Mrkt0PY root@mieshu.tyil.net
diff --git a/.ssh/id.d/root@nouki-ed25519.pub b/.ssh/id.d/root@nouki-ed25519.pub
new file mode 100644
index 0000000..a19b34e
--- /dev/null
+++ b/.ssh/id.d/root@nouki-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIh9xYBxb5n2N20Dj03lsij32UkPJ27EMQ/6VdKhjWVJ root@nouki.tyil.net
diff --git a/.ssh/id.d/root@oolah-ed25519.pub b/.ssh/id.d/root@oolah-ed25519.pub
new file mode 100644
index 0000000..d4c3c0d
--- /dev/null
+++ b/.ssh/id.d/root@oolah-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII6oh68n5HXeK45YaNnQC0mHufB/bUgsEyE500OW40B1 root@oolah.tyil.net
diff --git a/.ssh/id.d/root@plarabe-ed25519.pub b/.ssh/id.d/root@plarabe-ed25519.pub
new file mode 100644
index 0000000..01cdb82
--- /dev/null
+++ b/.ssh/id.d/root@plarabe-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMC9ggRv1prBjbIeqh+Q2VgX6tcxk/4UiQh4sZWJT9YI root@plarabe
diff --git a/.ssh/id.d/tyil@bast-ed25519.pub b/.ssh/id.d/tyil@bast-ed25519.pub
deleted file mode 100644
index 00e492d..0000000
--- a/.ssh/id.d/tyil@bast-ed25519.pub
+++ /dev/null
@@ -1,5 +0,0 @@
-<<<<<<< HEAD
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAXhPa+EGS4NySl0YqG38xGEab6uqdimseqq4tlLWyV4 tyil@bast.tyil.net
-=======
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILE1+6HjG3XvLQDHLwnFzq78SEsPTNa8Wu6+inmTMqu7 tyil@bast
->>>>>>> d8b0063 (Update pubkey for tyil@bast)
diff --git a/.ssh/id.d/tyil@gaeru-ed25519.pub b/.ssh/id.d/tyil@gaeru-ed25519.pub
new file mode 100644
index 0000000..d5632d9
--- /dev/null
+++ b/.ssh/id.d/tyil@gaeru-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ94ffGPvEb/Hi2B2XSaYjKpMiV93fzGLe0QUlXRJb1L tyil@gaeru.tyil.net
diff --git a/.ssh/id.d/tyil@mieshu-ed25519.pub b/.ssh/id.d/tyil@mieshu-ed25519.pub
new file mode 100644
index 0000000..a70b37c
--- /dev/null
+++ b/.ssh/id.d/tyil@mieshu-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFqLhjoIYRZmkD9sv1l1c03x6EpkadjfrGJ+4gqgkmp5 tyil@mieshu.tyil.net
diff --git a/.ssh/id.d/tyil@nouki-ed25519.pub b/.ssh/id.d/tyil@nouki-ed25519.pub
new file mode 100644
index 0000000..52f292a
--- /dev/null
+++ b/.ssh/id.d/tyil@nouki-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNztf75LVF+UvoIDyduHfynZupdC+9g7RaIs6cGgmCa tyil@nouki.tyil.net
diff --git a/.ssh/id.d/tyil@oolah-ed25519.pub b/.ssh/id.d/tyil@oolah-ed25519.pub
new file mode 100644
index 0000000..dabadac
--- /dev/null
+++ b/.ssh/id.d/tyil@oolah-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJkjrJ6agLK5Bdg2Y5B+88XDbP5UsQyvdUbd3LrOVmjI tyil@oolah.tyil.net
diff --git a/.ssh/id.d/tyil@plarabe-ed25519.pub b/.ssh/id.d/tyil@plarabe-ed25519.pub
new file mode 100644
index 0000000..25a5449
--- /dev/null
+++ b/.ssh/id.d/tyil@plarabe-ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7XKD3KxXTe5GlM4w4xdap3VAPvYCi4EowD88ymInFR tyil@plarabe
diff --git a/.vim/bundle/feature-camelcasemotion b/.vim/bundle/feature-camelcasemotion
new file mode 160000
+Subproject dbf66cf6d66f6716b72c6f683624ad694c0b8d4
diff --git a/.vim/bundle/feature-rainbow-parenthesis b/.vim/bundle/feature-rainbow-parenthesis
new file mode 160000
+Subproject 61f719aebe0dc5c3048330c50db72cfee1afdd3
diff --git a/.vim/bundle/syntax-blade b/.vim/bundle/syntax-blade
new file mode 160000
+Subproject 9534101808cc320eef003129a40cab04b026a20
diff --git a/.vim/bundle/syntax-go b/.vim/bundle/syntax-go
new file mode 160000
+Subproject feef9b31507f8e942bcd21f9e1f22d587c83c72
diff --git a/.vim/bundle/syntax-hcl b/.vim/bundle/syntax-hcl
new file mode 160000
+Subproject 1e1116c17a5774851360ea8077f349e36fc733c
diff --git a/.vim/bundle/syntax-helm b/.vim/bundle/syntax-helm
new file mode 160000
+Subproject 86cc6766db60b8cc5731068d0c2111dee1f2b32
diff --git a/.vim/bundle/syntax-ledger b/.vim/bundle/syntax-ledger
new file mode 160000
+Subproject 281346a221434574dd7f8767a352b2bf0b218b7
diff --git a/.vim/bundle/syntax-markdown b/.vim/bundle/syntax-markdown
new file mode 160000
+Subproject a657e697376909c41475a686eeef7fc7a4972d9
diff --git a/.vim/bundle/syntax-mustache b/.vim/bundle/syntax-mustache
new file mode 160000
+Subproject 0153fe03a919add2d6cf2d41b2d5b6e1188bc0e
diff --git a/.vim/bundle/syntax-raku b/.vim/bundle/syntax-raku
new file mode 160000
+Subproject 84a65c415f966c3cd5536fdbc6d70ee8f0d7350
diff --git a/.vim/bundle/syntax-terraform b/.vim/bundle/syntax-terraform
new file mode 160000
+Subproject 21f756b933cd11ac5990a6046fdc7c4e2a6c0ae
diff --git a/.vim/bundle/syntax-todo b/.vim/bundle/syntax-todo
new file mode 160000
+Subproject 3bb5f9cf0d6c7ee91b476a97054c336104d2b6f
diff --git a/.vim/bundle/syntax-toml b/.vim/bundle/syntax-toml
new file mode 160000
+Subproject d36caa6b1cf508a4df1c691f915572fc0214325
diff --git a/.vim/bundle/theme-codedark b/.vim/bundle/theme-codedark
new file mode 160000
+Subproject 05d7843412c4fb7d1bdafefd04462ac4db841f0
diff --git a/.vim/bundle/theme-colorsbox b/.vim/bundle/theme-colorsbox
new file mode 160000
+Subproject 77de081eab27872f94c4eab120e23e4ca5481b7
diff --git a/.vim/bundle/theme-jellybeans b/.vim/bundle/theme-jellybeans
new file mode 160000
+Subproject ef83bf4dc8b3eacffc97bf5c96ab2581b415c9f
diff --git a/.vim/bundle/theme-molokai b/.vim/bundle/theme-molokai
new file mode 160000
+Subproject c67bdfcdb31415aa0ade7f8c003261700a88547
diff --git a/.vim/ftplugin/php.vim b/.vim/ftplugin/php.vim
new file mode 100644
index 0000000..b8df966
--- /dev/null
+++ b/.vim/ftplugin/php.vim
@@ -0,0 +1,3 @@
+set shiftwidth=4
+set tabstop=4
+set expandtab
diff --git a/.vim/ftplugin/yaml.vim b/.vim/ftplugin/yaml.vim
index 0c0c07f..ae4ce66 100644
--- a/.vim/ftplugin/yaml.vim
+++ b/.vim/ftplugin/yaml.vim
@@ -1,3 +1,52 @@
set shiftwidth=2
set tabstop=2
set expandtab
+
+function! GetAncestors(line)
+ if(indent(a:line) == 0 && a:line == 1)
+ return ''
+ endif
+
+ if(indent(a:line) == 0 && a:line > 1)
+ if(getline(a:line) !~ '^\s*$') " not an empty line
+ return ''
+ else
+ " sometimes there are newlines within a multiline key
+ return GetAncestors(a:line-1) " return ancestors of previous line
+ endif
+ endif
+
+ let lowerIndent = indent(a:line)-1
+ " check if line is part of a list
+ let isList = ''
+ if(getline(a:line) =~# '^\s*-')
+ let isList = '[]'
+ " find the first key above this in the file that has is not a list member
+ let lastKeyLine = search('^\s\{0,'.indent(a:line).'}[^-]\S\+:', 'bnW')
+ else
+ " find the first key above this in the file that has a lower indent or a
+ " containing list member
+ let lastKeyLine = search('^\s\{0,'.lowerIndent.'}\(\S\+\|-\s\S\+\):', 'bnW')
+ let lastKeyLineContent = getline(lastKeyLine)
+ " check if the containing key is not a member of the same object
+ if(lastKeyLineContent =~# ':\s.\+$' && lastKeyLineContent =~# '^\s*-')
+ let lastKeyLine = search('^\s\{0,'.lowerIndent.'}\(\S\+\|-\s\S\+\):\s*$', 'zbnW')
+ let isList = '[]'
+ endif
+ endif
+
+ let key = matchstr(getline(lastKeyLine), '\s*[\-]\?\s*\zs.\+\ze:').isList
+
+ if(indent(lastKeyLine) > 0)
+ return GetAncestors(lastKeyLine).' . '.key
+ endif
+
+ return key
+endfunction
+
+augroup YamlRevealer
+ au!
+ if(&filetype =~# 'yaml')
+ autocmd CursorMoved <buffer> redraw | echo GetAncestors(line('.'))
+ endif
+aug END
diff --git a/.vim/plugin/k8s-edit-secret.vim b/.vim/plugin/k8s-edit-secret.vim
new file mode 100644
index 0000000..1a3e063
--- /dev/null
+++ b/.vim/plugin/k8s-edit-secret.vim
@@ -0,0 +1,60 @@
+" This program is free software: you can redistribute it and/or modify it under
+" the terms of the GNU Affero 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 Affero General Public License for more
+" details.
+
+" Ensure this plugin is only loaded once
+if (exists("g:k8s_edit_secret") || &cp || exists("#K8sEditSecret"))
+ finish
+endif
+
+let g:k8s_edit_secret = "1"
+
+" Define the file pattern
+let g:k8s_edit_secret_file_pattern = get(g:, "k8s_edit_secret_file_pattern", "/tmp/kubectl-edit-*.yaml")
+
+" Define the decode function
+function K8sEditSecretDecode (...)
+ " Check if the file is really a secret
+ silent exe "!grep -q \"^kind: Secret$\" \"%:p\""
+
+ " Not a secret, just read the file as usual
+ if (v:shell_error)
+ return
+ endif
+
+ " Pipe buffer through kubectl secret decode
+ let view = winsaveview()
+ silent exe "%!kubectl secret decode"
+ call winrestview(view)
+endfunction
+
+" Define the encode function
+function K8sEditSecretEncode (...)
+ " Check if the file is really a secret
+ silent exe "!grep -q \"^kind: Secret$\" \"%:p\""
+
+ " Not a secret, just read the file as usual
+ if (v:shell_error)
+ return
+ endif
+
+ " Pipe buffer through kubectl secret encode
+ let view = winsaveview()
+ silent exe "%!kubectl secret encode"
+ call winrestview(view)
+endfunction
+
+" Define the autocmd
+augroup K8sEditSecret
+ autocmd!
+
+ " Register autocmd on read/write
+ exe "autocmd BufWritePre " . g:k8s_edit_secret_file_pattern . " call K8sEditSecretEncode()"
+ exe "autocmd BufReadPost,BufWritePost " . g:k8s_edit_secret_file_pattern . " call K8sEditSecretDecode()"
+augroup END
diff --git a/.weechat/trigger.conf b/.weechat/trigger.conf
index 847f8c2..b7daf6b 100644
--- a/.weechat/trigger.conf
+++ b/.weechat/trigger.conf
@@ -6,7 +6,7 @@
#
# Use commands like /set or /fset to change settings in WeeChat.
#
-# For more info, see: https://weechat.org/doc/quickstart/
+# For more info, see: https://weechat.org/doc/weechat/quickstart/
#
[look]
@@ -19,10 +19,9 @@ flag_conditions = yellow
flag_post_action = lightblue
flag_regex = lightcyan
flag_return_code = lightmagenta
+identifier = cyan
regex = white
replace = cyan
-trigger = green
-trigger_disabled = red
[trigger]
beep.arguments = ""
@@ -89,6 +88,38 @@ msg_auth.hook = modifier
msg_auth.post_action = none
msg_auth.regex = "==^(.*(id|identify|set +password|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
msg_auth.return_code = ok
+notify_highlight.arguments = ""
+notify_highlight.command = "/exec -norc -nosw -bg ntfy pub -p 3 -T "speech_balloon" -t "${buffer.full_name}" -m "${tg_message}" chat"
+notify_highlight.conditions = "${tg_highlight} && ${buffer.notify} > 0 && ${tg_prefix_nocolor} !~ ^[[:space:]]+$"
+notify_highlight.enabled = on
+notify_highlight.hook = print
+notify_highlight.post_action = none
+notify_highlight.regex = "/.*/${weechat.look.nick_prefix}${tg_prefix_nocolor}${weechat.look.nick_suffix} ${tg_message_nocolor}/"
+notify_highlight.return_code = ok
+notify_privmsg.arguments = ""
+notify_privmsg.command = "/exec -norc -nosw -bg ntfy pub -p 3 -T "speech_balloon" -t "${buffer.full_name}" -m "${tg_message}" chat"
+notify_privmsg.conditions = "${tg_tag_notify} == private && ${buffer.notify} > 0"
+notify_privmsg.enabled = on
+notify_privmsg.hook = print
+notify_privmsg.post_action = none
+notify_privmsg.regex = "/.*/${tg_message_nocolor}/"
+notify_privmsg.return_code = ok
+notify_xxllnc_help-platform-xcp.arguments = ""
+notify_xxllnc_help-platform-xcp.command = "/exec -norc -nosw -bg ntfy pub -p 5 -T "right_anger_bubble" -t "${buffer.full_name}" -m "${tg_message}" chat"
+notify_xxllnc_help-platform-xcp.conditions = "${buffer.full_name} == python.slack.exxellencehq.#help-platform-xcp"
+notify_xxllnc_help-platform-xcp.enabled = on
+notify_xxllnc_help-platform-xcp.hook = print
+notify_xxllnc_help-platform-xcp.post_action = none
+notify_xxllnc_help-platform-xcp.regex = "/.*/${tg_prefix_nocolor}: ${tg_message_nocolor}/"
+notify_xxllnc_help-platform-xcp.return_code = ok
+notify_xxllnc_team-xcp.arguments = ""
+notify_xxllnc_team-xcp.command = "/exec -norc -nosw -bg ntfy pub -p 5 -T "right_anger_bubble" -t "${buffer.full_name}" -m "${tg_message}" chat"
+notify_xxllnc_team-xcp.conditions = "${buffer.full_name} == python.slack.exxellencehq.&team-xcp && ${tg_prefix_nocolor} != patrick.spek"
+notify_xxllnc_team-xcp.enabled = on
+notify_xxllnc_team-xcp.hook = print
+notify_xxllnc_team-xcp.post_action = none
+notify_xxllnc_team-xcp.regex = "/.*/${tg_prefix_nocolor}: ${tg_message_nocolor}/"
+notify_xxllnc_team-xcp.return_code = ok
relaybot_libera_scriptkitties_gizmo.arguments = "weechat_print"
relaybot_libera_scriptkitties_gizmo.command = ""
relaybot_libera_scriptkitties_gizmo.conditions = "${tg_tag_host} == bot@darkorb.robotham.dev"
diff --git a/.weechat/vendor/protocol-slack b/.weechat/vendor/protocol-slack
new file mode 160000
+Subproject 0b5069e600b6fbe72affed97f0b36ef923ba407
diff --git a/.weechat/weechat.conf b/.weechat/weechat.conf
index 0433274..ae4e869 100644
--- a/.weechat/weechat.conf
+++ b/.weechat/weechat.conf
@@ -6,9 +6,11 @@
#
# Use commands like /set or /fset to change settings in WeeChat.
#
-# For more info, see: https://weechat.org/doc/quickstart/
+# For more info, see: https://weechat.org/doc/weechat/quickstart/
#
+config_version = 2
+
[debug]
[startup]
@@ -36,6 +38,7 @@ buffer_search_regex = off
buffer_search_where = message
buffer_time_format = "${color:8}%H%M"
buffer_time_same = ""
+chat_space_right = off
color_basic_force_bold = off
color_inactive_buffer = off
color_inactive_message = on
@@ -56,8 +59,9 @@ day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
eat_newline_glitch = off
emphasized_attributes = ""
highlight = ""
+highlight_disable_regex = ""
highlight_regex = ""
-highlight_tags = "slack_channel+nick_pingdom,slack_channel+nick_platform,slack_channel+nick_grafana"
+highlight_tags = ""
hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0"
hotlist_buffer_separator = " "
hotlist_count_max = 1
@@ -74,6 +78,7 @@ hotlist_suffix = ""
hotlist_unique_numbers = on
hotlist_update_on_buffer_switch = on
input_cursor_scroll = 20
+input_multiline_lead_linebreak = on
input_share = none
input_share_overwrite = off
input_undo_max = 32
@@ -95,7 +100,6 @@ nick_color_hash_salt = ""
nick_color_stop_chars = "_|["
nick_prefix = ""
nick_suffix = ":"
-paste_auto_add_newline = on
paste_bracketed = off
paste_bracketed_timer_delay = 10
paste_max_lines = 1
@@ -177,6 +181,8 @@ chat_prefix_suffix = 8
chat_read_marker = 9
chat_read_marker_bg = default
chat_server = 3
+chat_status_disabled = red
+chat_status_enabled = green
chat_tags = 9
chat_text_found = 11
chat_text_found_bg = 13
@@ -204,7 +210,8 @@ status_filter = 2
status_more = 11
status_mouse = 2
status_name = white
-status_name_ssl = 2
+status_name_insecure = lightmagenta
+status_name_tls = white
status_nicklist_count = default
status_number = default
status_time = default
@@ -437,8 +444,8 @@ irc.bitlbee.#secretaries = message
irc.bitlbee.#supportcenter = message
irc.bitlbee.#theladies = message
irc.bitlbee.patrick = message
-irc.darenet.#computertech = highlight
irc.darenet.#DareNET = highlight
+irc.darenet.#computertech = highlight
irc.darenet.#dnet.lua = highlight
irc.darenet.#dronebl = highlight
irc.darenet.#help = message
@@ -480,7 +487,7 @@ irc.oftc.#debian-mentors = highlight
irc.rizon.#/g/technology = highlight
irc.rizon.#computertech = highlight
irc.rizon.#nerds = highlight
-irc.rizon.#scriptkitties = message
+irc.rizon.#scriptkitties = none
irc.rizon.#xmas = highlight
irc.technet.#computertech = highlight
irc.technet.#nitemare = highlight
@@ -491,11 +498,11 @@ irc.twitch.#guardsmanbob = highlight
irc.twitch.#mrllamasc = highlight
irc.twitch.#sovietwomble = highlight
irc.twitch.#wintergaming = highlight
-python.matrix.matrix_org.!ddzRCzutkWCgzgivqI:matrix.org = none
python.matrix.matrix_org.!NaLbfexyNIBQDbzGwB:bonifacelabs.ca = highlight
python.matrix.matrix_org.!YfFXwehASBiYzWXVUj:matrix.org = none
-python.matrix.matrix_org.!yIUYRaVMuLMdcfxSBy:libera.chat = highlight
python.matrix.matrix_org.!ZNbQEkfWfdwLeUksKM:matrix.org = message
+python.matrix.matrix_org.!ddzRCzutkWCgzgivqI:matrix.org = none
+python.matrix.matrix_org.!yIUYRaVMuLMdcfxSBy:libera.chat = highlight
python.slack-debug = none
python.slack.exxellencehq.#devops-ci = highlight
python.slack.exxellencehq.#devops-info = highlight
@@ -504,34 +511,58 @@ python.slack.exxellencehq.#zs-devops-alerts-lab = highlight
python.slack.exxellencehq.#zs-devops-ci-lab = highlight
[filter]
-irc_smart = on;*;irc_smart_filter;*
animebytes.OlolEeLFai = on;irc.animebytes.*;nick_OlolEeLFai;*
animebytes.riria = on;irc.animebytes.*;nick_riria;*
animebytes.riria_ = on;irc.animebytes.*;nick_riria_;*
animebytes.vice = on;irc.animebytes.*;nick_vice;*
animebytes.vonf = on;irc.animebytes.*;nick_vonf;*
+bitlbee.disroot.marmulak = on;irc.bitlbee.#disroot;nick_marmulak;*
+darenet.brandon = on;irc.darenet.*;nick_brandon;*
+darenet.drnrelay.status = on;irc.darenet.#dronebl;nick_drnrelay;^\*\*\*
darenet.puddin = on;irc.darenet.*;nick_puddin;*
+irc.irc-nerds = on;irc.irc-nerds.*;nick_mouses;*
+irc_smart = on;*;irc_smart_filter;*
+libera.ampersam = on;irc.libera.*;nick_ampersam;*
+libera.curvechacha25519 = on;irc.libera.*;nick_curvechacha25519;*
+libera.diffiehellman = on;irc.libera.*;nick_diffiehellman;*
+libera.mnrmnaugh = on;irc.libera.*;nick_mnrmnaugh;*
+libera.monopoly = on;irc.libera.*;nick_monopoly;*
+libera.pinecone = on;irc.libera.*;nick_pinecone;*
+oftc.harmen = on;irc.oftc.*;nick_harmen;*
+perl.mst = on;irc.perl.*;nick_mst;*
rizon.99dog = on;irc.rizon.*;nick_`99dog;*
rizon.RestedAlteran = on;irc.rizon.*;nick_restedalteran;*
+rizon.ahsoka = on;irc.rizon.*;nick_ahsoka;*
rizon.anshin = on;irc.rizon.*;nick_anshin;*
rizon.autisomosis = on;irc.rizon.*;nick_autismosis;*
+rizon.brandon = on;irc.rizon.*;nick_brandon;*
rizon.candygumdrop = on;irc.rizon.*;nick_candygumdrop;*
+rizon.crow = on;irc.rizon.*;nick_crow;*
rizon.densaakalte = on;irc.rizon.*;nick_densaakalte;*
rizon.eleeko = on;irc.rizon.*;nick_eleeko;*
rizon.ellenor = on;irc.rizon.*;nick_ellenor;*
rizon.flap.discord = on;irc.rizon.*;nick_discord-relay;^<flap>
+rizon.foxy = on;irc.rizon.*;nick_foxy;*
rizon.fs = on;irc.rizon.*;nick_fs;*
+rizon.gb.welcome = on;irc.rizon.#ComputerTech;*;Welcome to #computertech
rizon.happybox = on;irc.rizon.*;nick_happybox;*
rizon.jubajuba = on;irc.rizon.*;nick_jubajuba;*
+rizon.karma = on;irc.rizon.*;nick_karma;*
+rizon.karma.trigger = on;irc.rizon.#ComputerTech;*;\!jizz
rizon.kenster = on;irc.rizon.*;nick_kenster;*
rizon.lighto = on;irc.rizon.*;nick_lighto;*
rizon.mabynogy = on;irc.rizon.*;nick_mabynogy;*
rizon.maznaz = on;irc.rizon.*;nick_maznaz;*
rizon.meekcell = on;irc.rizon.*;nick_meekcell;*
rizon.mikoolo = on;irc.rizon.*;nick_mikoolo;*
+rizon.mr_cat = on;irc.rizon.*;nick_mr_cat;*
rizon.mrfifths = on;irc.rizon.*;nick_mrfifths;*
+rizon.naemuti = on;irc.rizon.*;nick_naemuti;*
+rizon.naemutti = on;irc.rizon.*;nick_naemutti;*
+rizon.phonekait = on;irc.rizon.*;nick_phonekait;*
rizon.s7sost = on;irc.rizon.*;nick_s7sost;*
rizon.short_circuit = on;irc.rizon.*;nick_short_circuit;*
+rizon.sorcerer = on;irc.rizon.*;nick_sorcerer;*
rizon.stoned_immaculate = on;irc.rizon.*;nick_stoned_immaculate;*
rizon.trentski = on;irc.rizon.*;nick_trentski;*
rizon.trivia = on;irc.rizon.*;nick_trivia;*
@@ -544,79 +575,57 @@ twitch.guardsmanbob.!# = on;irc.twitch.#guardsmanbob;*;^\![0-3]
twitch.guardsmanbob.!pick = on;irc.twitch.#guardsmanbob;*;\!pick.*
twitch.guardsmanbob.!rate = on;irc.twitch.#guardsmanbob;*;\!rate.*
twitch.guardsmanbob.!wins = on;irc.twitch.#guardsmanbob;*;\!wins.*
-darenet.brandon = on;irc.darenet.*;nick_brandon;*
-perl.mst = on;irc.perl.*;nick_mst;*
-bitlbee.disroot.marmulak = on;irc.bitlbee.#disroot;nick_marmulak;*
-rizon.brandon = on;irc.rizon.*;nick_brandon;*
-rizon.karma = on;irc.rizon.*;nick_karma;*
-rizon.gb.welcome = on;irc.rizon.#ComputerTech;*;Welcome to #computertech
-rizon.karma.trigger = on;irc.rizon.#ComputerTech;*;\!jizz
-rizon.sorcerer = on;irc.rizon.*;nick_sorcerer;*
-rizon.crow = on;irc.rizon.*;nick_crow;*
-rizon.naemutti = on;irc.rizon.*;nick_naemutti;*
-rizon.foxy = on;irc.rizon.*;nick_foxy;*
-rizon.naemuti = on;irc.rizon.*;nick_naemuti;*
-darenet.drnrelay.status = on;irc.darenet.#dronebl;nick_drnrelay;^\*\*\*
-rizon.phonekait = on;irc.rizon.*;nick_phonekait;*
-libera.monopoly = on;irc.libera.*;nick_monopoly;*
-libera.diffiehellman = on;irc.libera.*;nick_diffiehellman;*
-libera.pinecone = on;irc.libera.*;nick_pinecone;*
-libera.ampersam = on;irc.libera.*;nick_ampersam;*
-oftc.harmen = on;irc.oftc.*;nick_harmen;*
-libera.mnrmnaugh = on;irc.libera.*;nick_mnrmnaugh;*
-libera.curvechacha25519 = on;irc.libera.*;nick_curvechacha25519;*
-rizon.mr_cat = on;irc.rizon.*;nick_mr_cat;*
-irc.irc-nerds = on;irc.irc-nerds.*;nick_mouses;*
-rizon.ahsoka = on;irc.rizon.*;nick_ahsoka;*
[key]
-ctrl-? = "/input delete_previous_char"
-ctrl-A = "/input move_beginning_of_line"
-ctrl-B = "/input move_previous_char"
-ctrl-C_ = "/input insert \x1F"
-ctrl-Cb = "/input insert \x02"
-ctrl-Cc = "/input insert \x03"
-ctrl-Ci = "/input insert \x1D"
-ctrl-Co = "/input insert \x0F"
-ctrl-Cr = "/input insert \x12"
-ctrl-Cu = "/input insert \x15"
-ctrl-Cv = "/input insert \x16"
-ctrl-D = "/input delete_next_char"
-ctrl-E = "/input move_end_of_line"
-ctrl-F = "/input move_next_char"
-ctrl-H = "/input delete_previous_char"
-ctrl-I = "/input complete_next"
-ctrl-J = "/buffer +1"
-ctrl-K = "/buffer -1"
-ctrl-L = "/window refresh"
-ctrl-M = "/input return"
-ctrl-N = "/buffer +1"
-ctrl-P = "/buffer -1"
-ctrl-R = "/input search_text"
-ctrl-Sctrl-U = "/input set_unread"
-ctrl-T = "/input transpose_chars"
-ctrl-U = "/input delete_beginning_of_line"
-ctrl-W = "/input delete_previous_word"
-ctrl-X = "/input switch_active_buffer"
-ctrl-Y = "/input clipboard_paste"
-meta-meta-OP = "/bar scroll buflist * b"
-meta-meta-OQ = "/bar scroll buflist * e"
-meta-meta2-11~ = "/bar scroll buflist * b"
-meta-meta2-12~ = "/bar scroll buflist * e"
-meta-meta2-1~ = "/window scroll_top"
-meta-meta2-23~ = "/bar scroll nicklist * b"
-meta-meta2-24~ = "/bar scroll nicklist * e"
-meta-meta2-4~ = "/window scroll_bottom"
-meta-meta2-5~ = "/window scroll_up"
-meta-meta2-6~ = "/window scroll_down"
-meta-meta2-7~ = "/window scroll_top"
-meta-meta2-8~ = "/window scroll_bottom"
-meta-meta2-A = "/buffer -1"
-meta-meta2-B = "/buffer +1"
-meta-meta2-C = "/buffer +1"
-meta-meta2-D = "/buffer -1"
+backspace = "/input delete_previous_char"
+ctrl-_ = "/input undo"
+ctrl-a = "/input move_beginning_of_line"
+ctrl-b = "/input move_previous_char"
+ctrl-c,_ = "/input insert \x1F"
+ctrl-c,b = "/input insert \x02"
+ctrl-c,c = "/input insert \x03"
+ctrl-c,i = "/input insert \x1D"
+ctrl-c,o = "/input insert \x0F"
+ctrl-c,r = "/input insert \x12"
+ctrl-c,u = "/input insert \x15"
+ctrl-c,v = "/input insert \x16"
+ctrl-d = "/input delete_next_char"
+ctrl-down = "/input history_global_next"
+ctrl-e = "/input move_end_of_line"
+ctrl-f = "/input move_next_char"
+ctrl-f1 = "/bar scroll buflist * -100%"
+ctrl-f2 = "/bar scroll buflist * +100%"
+ctrl-k = "/buffer -1"
+ctrl-l = "/window refresh"
+ctrl-left = "/input move_previous_word"
+ctrl-n = "/buffer +1"
+ctrl-p = "/buffer -1"
+ctrl-r = "/input search_text"
+ctrl-right = "/input move_next_word"
+ctrl-s,ctrl-u = "/allbuf /buffer set unread"
+ctrl-t = "/input transpose_chars"
+ctrl-u = "/input delete_beginning_of_line"
+ctrl-up = "/input history_global_previous"
+ctrl-w = "/input delete_previous_word"
+ctrl-x = "/buffer switch"
+ctrl-y = "/input clipboard_paste"
+delete = "/input delete_next_char"
+down = "/input history_next"
+end = "/input move_end_of_line"
+f1 = "/bar scroll buflist * -100%"
+f10 = "/bar scroll title * +30%"
+f11 = "/bar scroll nicklist * -100%"
+f12 = "/bar scroll nicklist * +100%"
+f2 = "/bar scroll buflist * +100%"
+f5 = "/buffer -1"
+f6 = "/buffer +1"
+f7 = "/window -1"
+f8 = "/window +1"
+f9 = "/bar scroll title * -30%"
+home = "/input move_beginning_of_line"
+left = "/input move_previous_char"
meta-- = "/filter toggle @"
-meta-/ = "/input jump_last_buffer_displayed"
+meta-/ = "/buffer jump last_displayed"
meta-0 = "/buffer *10"
meta-1 = "/buffer *1"
meta-2 = "/buffer *2"
@@ -627,249 +636,197 @@ meta-6 = "/buffer *6"
meta-7 = "/buffer *7"
meta-8 = "/buffer *8"
meta-9 = "/buffer *9"
-meta-< = "/input jump_previously_visited_buffer"
+meta-< = "/buffer jump prev_visited"
meta-= = "/filter toggle"
-meta-> = "/input jump_next_visited_buffer"
+meta-> = "/buffer jump next_visited"
meta-B = "/buflist toggle"
-meta-OA = "/input history_global_previous"
-meta-OB = "/input history_global_next"
-meta-OC = "/input move_next_word"
-meta-OD = "/input move_previous_word"
-meta-OF = "/input move_end_of_line"
-meta-OH = "/input move_beginning_of_line"
-meta-OP = "/bar scroll buflist * -100%"
-meta-OQ = "/bar scroll buflist * +100%"
-meta-Oa = "/input history_global_previous"
-meta-Ob = "/input history_global_next"
-meta-Oc = "/input move_next_word"
-meta-Od = "/input move_previous_word"
-meta2-11^ = "/bar scroll buflist * -100%"
-meta2-11~ = "/bar scroll buflist * -100%"
-meta2-12^ = "/bar scroll buflist * +100%"
-meta2-12~ = "/bar scroll buflist * +100%"
-meta2-15~ = "/buffer -1"
-meta2-17~ = "/buffer +1"
-meta2-18~ = "/window -1"
-meta2-19~ = "/window +1"
-meta2-1;3A = "/buffer -1"
-meta2-1;3B = "/buffer +1"
-meta2-1;3C = "/buffer +1"
-meta2-1;3D = "/buffer -1"
-meta2-1;3F = "/window scroll_bottom"
-meta2-1;3H = "/window scroll_top"
-meta2-1;3P = "/bar scroll buflist * b"
-meta2-1;3Q = "/bar scroll buflist * e"
-meta2-1;5A = "/input history_global_previous"
-meta2-1;5B = "/input history_global_next"
-meta2-1;5C = "/input move_next_word"
-meta2-1;5D = "/input move_previous_word"
-meta2-1;5P = "/bar scroll buflist * -100%"
-meta2-1;5Q = "/bar scroll buflist * +100%"
-meta2-1~ = "/input move_beginning_of_line"
-meta2-200~ = "/input paste_start"
-meta2-201~ = "/input paste_stop"
-meta2-20~ = "/bar scroll title * -30%"
-meta2-21~ = "/bar scroll title * +30%"
-meta2-23;3~ = "/bar scroll nicklist * b"
-meta2-23~ = "/bar scroll nicklist * -100%"
-meta2-24;3~ = "/bar scroll nicklist * e"
-meta2-24~ = "/bar scroll nicklist * +100%"
-meta2-3~ = "/input delete_next_char"
-meta2-4~ = "/input move_end_of_line"
-meta2-5;3~ = "/window scroll_up"
-meta2-5~ = "/window page_up"
-meta2-6;3~ = "/window scroll_down"
-meta2-6~ = "/window page_down"
-meta2-7~ = "/input move_beginning_of_line"
-meta2-8~ = "/input move_end_of_line"
-meta2-A = "/input history_previous"
-meta2-B = "/input history_next"
-meta2-C = "/input move_next_char"
-meta2-D = "/input move_previous_char"
-meta2-F = "/input move_end_of_line"
-meta2-G = "/window page_down"
-meta2-H = "/input move_beginning_of_line"
-meta2-I = "/window page_up"
-meta2-Z = "/input complete_previous"
-meta2-[E = "/buffer -1"
meta-_ = "/input redo"
-meta-a = "/input jump_smart"
+meta-a = "/buffer jump smart"
meta-b = "/input move_previous_word"
meta-d = "/input delete_next_word"
+meta-down = "/buffer +1"
meta-e = "/buffer *13"
+meta-end = "/window scroll_bottom"
meta-f = "/input move_next_word"
-meta-h = "/input hotlist_clear"
+meta-f1 = "/bar scroll buflist * b"
+meta-f11 = "/bar scroll nicklist * b"
+meta-f12 = "/bar scroll nicklist * e"
+meta-f2 = "/bar scroll buflist * e"
+meta-h = "/hotlist clear"
+meta-home = "/window scroll_top"
meta-i = "/buffer *18"
-meta-jmeta-f = "/buffer -"
-meta-jmeta-l = "/input jump_last_buffer"
-meta-jmeta-r = "/server raw"
-meta-jmeta-s = "/server jump"
-meta-j01 = "/buffer 1"
-meta-j02 = "/buffer 2"
-meta-j03 = "/buffer 3"
-meta-j04 = "/buffer 4"
-meta-j05 = "/buffer 5"
-meta-j06 = "/buffer 6"
-meta-j07 = "/buffer 7"
-meta-j08 = "/buffer 8"
-meta-j09 = "/buffer 9"
-meta-j10 = "/buffer 10"
-meta-j11 = "/buffer 11"
-meta-j12 = "/buffer 12"
-meta-j13 = "/buffer 13"
-meta-j14 = "/buffer 14"
-meta-j15 = "/buffer 15"
-meta-j16 = "/buffer 16"
-meta-j17 = "/buffer 17"
-meta-j18 = "/buffer 18"
-meta-j19 = "/buffer 19"
-meta-j20 = "/buffer 20"
-meta-j21 = "/buffer 21"
-meta-j22 = "/buffer 22"
-meta-j23 = "/buffer 23"
-meta-j24 = "/buffer 24"
-meta-j25 = "/buffer 25"
-meta-j26 = "/buffer 26"
-meta-j27 = "/buffer 27"
-meta-j28 = "/buffer 28"
-meta-j29 = "/buffer 29"
-meta-j30 = "/buffer 30"
-meta-j31 = "/buffer 31"
-meta-j32 = "/buffer 32"
-meta-j33 = "/buffer 33"
-meta-j34 = "/buffer 34"
-meta-j35 = "/buffer 35"
-meta-j36 = "/buffer 36"
-meta-j37 = "/buffer 37"
-meta-j38 = "/buffer 38"
-meta-j39 = "/buffer 39"
-meta-j40 = "/buffer 40"
-meta-j41 = "/buffer 41"
-meta-j42 = "/buffer 42"
-meta-j43 = "/buffer 43"
-meta-j44 = "/buffer 44"
-meta-j45 = "/buffer 45"
-meta-j46 = "/buffer 46"
-meta-j47 = "/buffer 47"
-meta-j48 = "/buffer 48"
-meta-j49 = "/buffer 49"
-meta-j50 = "/buffer 50"
-meta-j51 = "/buffer 51"
-meta-j52 = "/buffer 52"
-meta-j53 = "/buffer 53"
-meta-j54 = "/buffer 54"
-meta-j55 = "/buffer 55"
-meta-j56 = "/buffer 56"
-meta-j57 = "/buffer 57"
-meta-j58 = "/buffer 58"
-meta-j59 = "/buffer 59"
-meta-j60 = "/buffer 60"
-meta-j61 = "/buffer 61"
-meta-j62 = "/buffer 62"
-meta-j63 = "/buffer 63"
-meta-j64 = "/buffer 64"
-meta-j65 = "/buffer 65"
-meta-j66 = "/buffer 66"
-meta-j67 = "/buffer 67"
-meta-j68 = "/buffer 68"
-meta-j69 = "/buffer 69"
-meta-j70 = "/buffer 70"
-meta-j71 = "/buffer 71"
-meta-j72 = "/buffer 72"
-meta-j73 = "/buffer 73"
-meta-j74 = "/buffer 74"
-meta-j75 = "/buffer 75"
-meta-j76 = "/buffer 76"
-meta-j77 = "/buffer 77"
-meta-j78 = "/buffer 78"
-meta-j79 = "/buffer 79"
-meta-j80 = "/buffer 80"
-meta-j81 = "/buffer 81"
-meta-j82 = "/buffer 82"
-meta-j83 = "/buffer 83"
-meta-j84 = "/buffer 84"
-meta-j85 = "/buffer 85"
-meta-j86 = "/buffer 86"
-meta-j87 = "/buffer 87"
-meta-j88 = "/buffer 88"
-meta-j89 = "/buffer 89"
-meta-j90 = "/buffer 90"
-meta-j91 = "/buffer 91"
-meta-j92 = "/buffer 92"
-meta-j93 = "/buffer 93"
-meta-j94 = "/buffer 94"
-meta-j95 = "/buffer 95"
-meta-j96 = "/buffer 96"
-meta-j97 = "/buffer 97"
-meta-j98 = "/buffer 98"
-meta-j99 = "/buffer 99"
+meta-j,0,1 = "/buffer 1"
+meta-j,0,2 = "/buffer 2"
+meta-j,0,3 = "/buffer 3"
+meta-j,0,4 = "/buffer 4"
+meta-j,0,5 = "/buffer 5"
+meta-j,0,6 = "/buffer 6"
+meta-j,0,7 = "/buffer 7"
+meta-j,0,8 = "/buffer 8"
+meta-j,0,9 = "/buffer 9"
+meta-j,1,0 = "/buffer 10"
+meta-j,1,1 = "/buffer 11"
+meta-j,1,2 = "/buffer 12"
+meta-j,1,3 = "/buffer 13"
+meta-j,1,4 = "/buffer 14"
+meta-j,1,5 = "/buffer 15"
+meta-j,1,6 = "/buffer 16"
+meta-j,1,7 = "/buffer 17"
+meta-j,1,8 = "/buffer 18"
+meta-j,1,9 = "/buffer 19"
+meta-j,2,0 = "/buffer 20"
+meta-j,2,1 = "/buffer 21"
+meta-j,2,2 = "/buffer 22"
+meta-j,2,3 = "/buffer 23"
+meta-j,2,4 = "/buffer 24"
+meta-j,2,5 = "/buffer 25"
+meta-j,2,6 = "/buffer 26"
+meta-j,2,7 = "/buffer 27"
+meta-j,2,8 = "/buffer 28"
+meta-j,2,9 = "/buffer 29"
+meta-j,3,0 = "/buffer 30"
+meta-j,3,1 = "/buffer 31"
+meta-j,3,2 = "/buffer 32"
+meta-j,3,3 = "/buffer 33"
+meta-j,3,4 = "/buffer 34"
+meta-j,3,5 = "/buffer 35"
+meta-j,3,6 = "/buffer 36"
+meta-j,3,7 = "/buffer 37"
+meta-j,3,8 = "/buffer 38"
+meta-j,3,9 = "/buffer 39"
+meta-j,4,0 = "/buffer 40"
+meta-j,4,1 = "/buffer 41"
+meta-j,4,2 = "/buffer 42"
+meta-j,4,3 = "/buffer 43"
+meta-j,4,4 = "/buffer 44"
+meta-j,4,5 = "/buffer 45"
+meta-j,4,6 = "/buffer 46"
+meta-j,4,7 = "/buffer 47"
+meta-j,4,8 = "/buffer 48"
+meta-j,4,9 = "/buffer 49"
+meta-j,5,0 = "/buffer 50"
+meta-j,5,1 = "/buffer 51"
+meta-j,5,2 = "/buffer 52"
+meta-j,5,3 = "/buffer 53"
+meta-j,5,4 = "/buffer 54"
+meta-j,5,5 = "/buffer 55"
+meta-j,5,6 = "/buffer 56"
+meta-j,5,7 = "/buffer 57"
+meta-j,5,8 = "/buffer 58"
+meta-j,5,9 = "/buffer 59"
+meta-j,6,0 = "/buffer 60"
+meta-j,6,1 = "/buffer 61"
+meta-j,6,2 = "/buffer 62"
+meta-j,6,3 = "/buffer 63"
+meta-j,6,4 = "/buffer 64"
+meta-j,6,5 = "/buffer 65"
+meta-j,6,6 = "/buffer 66"
+meta-j,6,7 = "/buffer 67"
+meta-j,6,8 = "/buffer 68"
+meta-j,6,9 = "/buffer 69"
+meta-j,7,0 = "/buffer 70"
+meta-j,7,1 = "/buffer 71"
+meta-j,7,2 = "/buffer 72"
+meta-j,7,3 = "/buffer 73"
+meta-j,7,4 = "/buffer 74"
+meta-j,7,5 = "/buffer 75"
+meta-j,7,6 = "/buffer 76"
+meta-j,7,7 = "/buffer 77"
+meta-j,7,8 = "/buffer 78"
+meta-j,7,9 = "/buffer 79"
+meta-j,8,0 = "/buffer 80"
+meta-j,8,1 = "/buffer 81"
+meta-j,8,2 = "/buffer 82"
+meta-j,8,3 = "/buffer 83"
+meta-j,8,4 = "/buffer 84"
+meta-j,8,5 = "/buffer 85"
+meta-j,8,6 = "/buffer 86"
+meta-j,8,7 = "/buffer 87"
+meta-j,8,8 = "/buffer 88"
+meta-j,8,9 = "/buffer 89"
+meta-j,9,0 = "/buffer 90"
+meta-j,9,1 = "/buffer 91"
+meta-j,9,2 = "/buffer 92"
+meta-j,9,3 = "/buffer 93"
+meta-j,9,4 = "/buffer 94"
+meta-j,9,5 = "/buffer 95"
+meta-j,9,6 = "/buffer 96"
+meta-j,9,7 = "/buffer 97"
+meta-j,9,8 = "/buffer 98"
+meta-j,9,9 = "/buffer 99"
+meta-j,meta-f = "/buffer -"
+meta-j,meta-l = "/buffer +"
+meta-j,meta-r = "/server raw"
+meta-j,meta-s = "/server jump"
meta-k = "/input grab_key_command"
meta-l = "/window bare"
+meta-left = "/buffer -1"
meta-n = "/window scroll_next_highlight"
meta-o = "/buffer *19"
meta-p = "/window scroll_previous_highlight"
+meta-pgdn = "/window scroll_down"
+meta-pgup = "/window scroll_up"
meta-q = "/buffer *11"
meta-r = "/input delete_line"
+meta-right = "/buffer +1"
meta-s = "/mute aspell toggle"
meta-t = "/buffer *15"
meta-u = "/window scroll_unread"
+meta-up = "/buffer -1"
meta-w = "/buffer *12"
-meta-wmeta-meta2-A = "/window up"
-meta-wmeta-meta2-B = "/window down"
-meta-wmeta-meta2-C = "/window right"
-meta-wmeta-meta2-D = "/window left"
-meta-wmeta2-1;3A = "/window up"
-meta-wmeta2-1;3B = "/window down"
-meta-wmeta2-1;3C = "/window right"
-meta-wmeta2-1;3D = "/window left"
-meta-wmeta-b = "/window balance"
-meta-wmeta-s = "/window swap"
-meta-x = "/input zoom_merged_buffer"
+meta-w,meta-b = "/window balance"
+meta-w,meta-down = "/window down"
+meta-w,meta-left = "/window left"
+meta-w,meta-right = "/window right"
+meta-w,meta-s = "/window swap"
+meta-w,meta-up = "/window up"
+meta-x = "/buffer zoom"
meta-y = "/buffer *16"
meta-z = "/window zoom"
-ctrl-_ = "/input undo"
+pgdn = "/window page_down"
+pgup = "/window page_up"
+return = "/input return"
+right = "/input move_next_char"
+shift-tab = "/input complete_previous"
+tab = "/input complete_next"
+up = "/input history_previous"
[key_search]
-ctrl-I = "/input search_switch_where"
-ctrl-J = "/input search_stop"
-ctrl-M = "/input search_stop"
-ctrl-Q = "/input search_stop"
-ctrl-R = "/input search_switch_case"
-meta2-A = "/input search_previous"
-meta2-B = "/input search_next"
+ctrl-q = "/input search_stop"
+ctrl-r = "/input search_switch_case"
+down = "/input search_next"
meta-c = "/input search_switch_case"
+return = "/input search_stop"
+tab = "/input search_switch_where"
+up = "/input search_previous"
[key_cursor]
-ctrl-J = "/cursor stop"
-ctrl-M = "/cursor stop"
-meta-meta2-A = "/cursor move area_up"
-meta-meta2-B = "/cursor move area_down"
-meta-meta2-C = "/cursor move area_right"
-meta-meta2-D = "/cursor move area_left"
-meta2-1;3A = "/cursor move area_up"
-meta2-1;3B = "/cursor move area_down"
-meta2-1;3C = "/cursor move area_right"
-meta2-1;3D = "/cursor move area_left"
-meta2-A = "/cursor move up"
-meta2-B = "/cursor move down"
-meta2-C = "/cursor move right"
-meta2-D = "/cursor move left"
@chat(python.*):D = "hsignal:slack_cursor_delete"
@chat(python.*):L = "hsignal:slack_cursor_linkarchive"
@chat(python.*):M = "hsignal:slack_cursor_message"
@chat(python.*):R = "hsignal:slack_cursor_reply"
@chat(python.*):T = "hsignal:slack_cursor_thread"
@chat(python.matrix.*):r = "hsignal:matrix_cursor_reply"
+@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
+@chat:m = "hsignal:chat_quote_message;/cursor stop"
+@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
-@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
-@chat:m = "hsignal:chat_quote_message;/cursor stop"
-@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
+down = "/cursor move down"
+left = "/cursor move left"
+meta-down = "/cursor move area_down"
+meta-left = "/cursor move area_left"
+meta-right = "/cursor move area_right"
+meta-up = "/cursor move area_up"
+return = "/cursor stop"
+right = "/cursor move right"
+up = "/cursor move up"
[key_mouse]
+@*:button3 = "/cursor go ${_x},${_y}"
@bar(buffers):ctrl-wheeldown = "hsignal:buffers_mouse"
@bar(buffers):ctrl-wheelup = "hsignal:buffers_mouse"
@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse"
@@ -879,6 +836,8 @@ meta2-D = "/cursor move left"
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
+@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
+@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
@chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}"
@chat(fset.fset):button2* = "hsignal:fset_mouse"
@chat(fset.fset):wheeldown = "/fset -down 5"
@@ -888,6 +847,15 @@ meta2-D = "/cursor move left"
@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"
@chat(script.scripts):wheeldown = "/script down 5"
@chat(script.scripts):wheelup = "/script up 5"
+@chat:button1 = "/window ${_window_number}"
+@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
+@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
+@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
+@chat:button1-gesture-right-long = "/window ${_window_number};/buffer +"
+@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
+@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
+@chat:wheeldown = "/window scroll_down -window ${_window_number}"
+@chat:wheelup = "/window scroll_up -window ${_window_number}"
@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
@@ -901,15 +869,3 @@ meta2-D = "/cursor move left"
@item(buflist2):button2* = "hsignal:buflist_mouse"
@item(buflist3):button1* = "hsignal:buflist_mouse"
@item(buflist3):button2* = "hsignal:buflist_mouse"
-@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
-@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
-@chat:button1 = "/window ${_window_number}"
-@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
-@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
-@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
-@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
-@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
-@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
-@chat:wheeldown = "/window scroll_down -window ${_window_number}"
-@chat:wheelup = "/window scroll_up -window ${_window_number}"
-@*:button3 = "/cursor go ${_x},${_y}"
diff --git a/.zshrc b/.zshrc
index 63a89a1..347f3c0 100644
--- a/.zshrc
+++ b/.zshrc
@@ -126,6 +126,14 @@ function precmd() # {{{
sshd|*/sshd|mosh*) HOSTNAME_COLOR="%F{6}" ;;
esac
# }}}
+
+ # Color last directory name in case of python venv
+ PROMPT_PATH='%F{4}%~%k'
+
+ if [[ -n "$PYTHON_VENV_DIR" ]]
+ then
+ PROMPT_PATH+='%F{6}#'"$(awk -F/ '{ print $(NF-1) }' <<< "$PYTHON_VENV_DIR")"
+ fi
}
# }}}
@@ -162,7 +170,8 @@ PROMPT='%(!.%F{1}.%F{2})%n%F{8}'
PROMPT=$PROMPT'@'
PROMPT=$PROMPT'${HOSTNAME_COLOR}%M%F{8}'
PROMPT=$PROMPT':'
-PROMPT=$PROMPT'%F{4}%~%k${PGIT}'
+PROMPT=$PROMPT'${PROMPT_PATH}'
+PROMPT=$PROMPT'%k${PGIT}'
PROMPT=$PROMPT' '
PROMPT=$PROMPT'%(?.%F{7}.%F{1})${EXITCODE}%k'
PROMPT=$PROMPT' ${vi_mode}ยป%b %f${CURSOR_STYLE}'
diff --git a/README.md b/README.md
index 8d91243..17c8f43 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,7 @@ Other dependencies may exist.
- Icons: [ACYLS](https://github.com/worron/ACYLS)
- Colors:
+ - Text: `#eeeeee`
- Dark: `#252a35`
- Light: `#4b5165`
- Focus: `#5294e2`