aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/awesome/rc.lua270
-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_keys15
-rw-r--r--.config/git/config70
-rw-r--r--.config/git/config-xxllnc2
-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/poezio/plugins/irc.cfg2
-rw-r--r--.config/poezio/poezio.cfg557
-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
62 files changed, 1506 insertions, 799 deletions
diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua
index ea3eb70..0c15a0c 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,
- spacing = 16,
- s.mylayoutbox,
- s.mytaglist,
+ s.widgets.layout,
+ },
+ {
+ layout = wibox.layout.fixed.horizontal,
+ s.widgets.clock,
+ },
+ {
+ layout = wibox.layout.fixed.horizontal,
+ spacing = 4,
+ s.widgets.systray,
+ s.widgets.brightness,
+ s.widgets.volume,
+ s.widgets.battery,
},
- s.mytasklist,
}
end)
-- }}}
@@ -196,86 +224,46 @@ root.buttons(gears.table.join(
-- {{{ Key bindings
globalkeys = gears.table.join(
- awful.key({ modkey, }, "s", hotkeys_popup.show_help,
- {description="show help", group="awesome"}),
- awful.key({ modkey, }, "Left", awful.tag.viewprev,
- {description = "view previous", group = "tag"}),
- awful.key({ modkey, }, "Right", awful.tag.viewnext,
- {description = "view next", group = "tag"}),
- awful.key({ modkey, }, "Escape", awful.tag.history.restore,
- {description = "go back", group = "tag"}),
-
- awful.key({ modkey, }, "j",
- function ()
- awful.client.focus.byidx( 1)
- end,
- {description = "focus next by index", group = "client"}
- ),
- awful.key({ modkey, }, "k",
- function ()
- awful.client.focus.byidx(-1)
- end,
- {description = "focus previous by index", group = "client"}
- ),
- awful.key({ modkey, }, "w", function () mymainmenu:show() end,
- {description = "show main menu", group = "awesome"}),
-
-
- -- Layout manipulation
- 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,
- {description = "swap with previous client by index", group = "client"}),
- awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_bydirection("right") end,
- {description = "focus the next screen", group = "screen"}),
- awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_bydirection("left") end,
- {description = "focus the previous screen", group = "screen"}),
- awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
- {description = "jump to urgent client", group = "client"}),
- awful.key({ modkey, }, "Tab",
- function ()
- awful.client.focus.history.previous()
- if client.focus then
- client.focus:raise()
- end
- end,
- {description = "go back", group = "client"}),
-
- -- Standard program
- awful.key(
- { modkey, "Shift" }, "r", awesome.restart,
- {description = "reload awesome", group = "awesome"}
- ),
- awful.key(
- { modkey, "Shift" }, "q", awesome.quit,
- {description = "quit awesome", group = "awesome"}
- ),
-
- awful.key(
- { modkey, }, "p", function () awful.spawn("ipass") end,
- { description = "Select password", group = "awesome" }
- ),
- awful.key(
- { modkey, }, "o", function () awful.spawn("ipass-otp") end,
- { description = "Select password", group = "awesome" }
- ),
-
- awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
- {description = "increase master width factor", group = "layout"}),
- awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
- {description = "decrease master width factor", group = "layout"}),
- awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
- {description = "increase the number of master clients", group = "layout"}),
- awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
- {description = "decrease the number of master clients", group = "layout"}),
- awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
- {description = "increase the number of columns", group = "layout"}),
- awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
- {description = "decrease the number of columns", group = "layout"}),
- awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end,
- {description = "select next", group = "layout"}),
- awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
- {description = "select previous", group = "layout"}),
+ -- Awesome Controls
+ awful.key({ modkey, }, "s", hotkeys_popup.show_help, {description="show help", group="awesome"}),
+ awful.key({ modkey, }, "w", function () mymainmenu:show() end, {description = "show main menu", group = "awesome"}),
+ awful.key({ modkey, "Shift" }, "r", awesome.restart, {description = "reload awesome", group = "awesome"}),
+ awful.key({ modkey, "Shift" }, "x", awesome.quit, {description = "quit awesome", group = "awesome"}),
+
+ -- Focus
+ 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, }, "Tab", function () awful.client.focus.history.previous() if client.focus then client.focus:raise() end end, {description = "go back", group = "client"}),
+ awful.key({ modkey, }, "j", function () awful.client.focus.byidx(1) end, {description = "focus next by index", group = "client"}),
+ awful.key({ modkey, }, "k", function () awful.client.focus.byidx(-1) end, {description = "focus previous by index", group = "client"}),
+ awful.key({ modkey, }, "u", awful.client.urgent.jumpto, {description = "jump to urgent client", group = "client"}),
+ awful.key({ modkey, "Control" }, "Left", function () awful.screen.focus_bydirection("left") end),
+ awful.key({ modkey, "Control" }, "Right", function () awful.screen.focus_bydirection("right") end, {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_bydirection("right") end, {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_bydirection("left") end, {description = "focus the previous screen", group = "screen"}),
+ 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"}),
+
+ -- Tags
+ awful.key({ modkey, }, "Escape", awful.tag.history.restore, {description = "go back", group = "tag"}),
+ awful.key({ modkey, }, "Left", awful.tag.viewprev, {description = "view previous", group = "tag"}),
+ awful.key({ modkey, }, "Right", awful.tag.viewnext, {description = "view next", group = "tag"}),
+
+ -- Layouts
+ awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end, {description = "decrease master width factor", group = "layout"}),
+ awful.key({ modkey, }, "l", function () awful.tag.incmwfact(0.05) end, {description = "increase master width factor", group = "layout"}),
+ awful.key({ modkey, }, "space", function () awful.layout.inc(1) end, {description = "select next", group = "layout"}),
+ awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol(1, nil, true) end, {description = "increase the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end, {description = "decrease the number of columns", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1, nil, true) end, {description = "increase the number of master clients", group = "layout"}),
+ 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, {description = "swap with previous client by index", group = "client"}),
+ awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end, {description = "decrease the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end, {description = "select previous", group = "layout"}),
+
+ -- Programs
+ awful.key({ modkey, }, "o", function () awful.spawn("ipass-otp") end, { description = "Select OTP", group = "awesome" }),
+ awful.key({ modkey, }, "p", function () awful.spawn("ipass") end, { description = "Select password", group = "awesome" }),
awful.key({ modkey, "Control" }, "n",
function ()
@@ -417,7 +405,6 @@ awful.rules.rules = {
buttons = clientbuttons,
screen = awful.screen.preferred,
placement = awful.placement.no_overlap+awful.placement.no_offscreen,
- opacity = 0.8,
},
},
@@ -462,6 +449,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 +458,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 +486,7 @@ awful.rules.rules = {
{ -- Tag rules for email
rule_any = {
class = {
+ "evolution",
"thunderbird",
"kmail",
},
@@ -503,6 +504,7 @@ awful.rules.rules = {
"tsmapplication.exe",
"lutris",
"pathofexile.exe",
+ "mumble"
},
},
properties = {
@@ -569,10 +571,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 +648,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..51b7d92
--- /dev/null
+++ b/.config/git/authorized_keys
@@ -0,0 +1,15 @@
+# Personal keys
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMtUkeSiwk+1UnMfy8Z53cQkKTlBBFZXUuDiXfPcalHj tyil@anoia.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQp0puZEEADKgUF1XYtLPzcYLTGNdDj0WCTf37adaZ2 tyil@caeghi.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHiNIpe2QCOk22YYU/mY7QA2rq0E07wetzj5R1wtWxeC tyil@edephas.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCiQJhuTvL0vZoOAu1L0sU81VV2qH1l4U73bL9RYfrW tyil@faiwoo.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ94ffGPvEb/Hi2B2XSaYjKpMiV93fzGLe0QUlXRJb1L tyil@gaeru.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINRprF4gE0pGiMNSxR8Z0fFsBikoifsm7HpdbHkBsmDg tyil@hurzak.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIVPGs2LkDvdkMzwR1Crk8OblMQD2snClUuIcYgUYcu4 tyil@ludifah.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFqLhjoIYRZmkD9sv1l1c03x6EpkadjfrGJ+4gqgkmp5 tyil@mieshu.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNztf75LVF+UvoIDyduHfynZupdC+9g7RaIs6cGgmCa tyil@nouki.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJkjrJ6agLK5Bdg2Y5B+88XDbP5UsQyvdUbd3LrOVmjI tyil@oolah.tyil.net
+p.spek@tyil.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7XKD3KxXTe5GlM4w4xdap3VAPvYCi4EowD88ymInFR tyil@plarabe.tyil.net
+
+# xxllnc
+patrick.spek@xxllnc.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7XKD3KxXTe5GlM4w4xdap3VAPvYCi4EowD88ymInFR
diff --git a/.config/git/config b/.config/git/config
index 6456797..434c4ba 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,16 @@
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
+
+[includeIf "gitdir:**/projects/xxllnc/**/.git"]
+ path = ~/.config/git/config-xxllnc
diff --git a/.config/git/config-xxllnc b/.config/git/config-xxllnc
new file mode 100644
index 0000000..e6ae439
--- /dev/null
+++ b/.config/git/config-xxllnc
@@ -0,0 +1,2 @@
+[user]
+ email = patrick.spek@xxllnc.nl
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/poezio/plugins/irc.cfg b/.config/poezio/plugins/irc.cfg
new file mode 100644
index 0000000..cd578d8
--- /dev/null
+++ b/.config/poezio/plugins/irc.cfg
@@ -0,0 +1,2 @@
+[irc]
+gateway = "biboumi.chat.tyil.nl"
diff --git a/.config/poezio/poezio.cfg b/.config/poezio/poezio.cfg
new file mode 100644
index 0000000..3e494e3
--- /dev/null
+++ b/.config/poezio/poezio.cfg
@@ -0,0 +1,557 @@
+# This is the default config for the XMPP client Poezio.
+# Comments should be on their own line and NOT at the end
+# of a meaningful line.
+# Most options are commented in order to not override the
+# default value which may have been changed since the time
+# the file was copied on setup.
+
+[Poezio]
+
+# Jabber identifier. Specify it only if you want to connect using an existing
+# account on a server. This is optional and useful only for some features,
+# like room administration, nickname registration.
+# The 'server' option will be ignored if you specify a JID (Jabber identifier)
+# It should be in the form nickname@server.tld or nickname@server.tld/resource
+jid = tyil@chat.tyil.nl/oolah
+
+# A password is needed only if you specified a jid. It will be ignored otherwise
+# If you leave this empty, the password will be asked at each startup
+password =
+
+# A command that will be executed if "password" is not set, e.g. a session password
+# manager like secret-tool on gnome, or anything you want
+eval_password =
+
+# This identifies this client over time with the server, to let it optimise
+# offline storage and various other features.
+device_id = pYCr
+
+# Path to a PEM certificate file to use for certificate authentication
+# through SASL External. If set, keyfile MUST be provided as well in
+# order to login.
+certfile =
+
+# Path to a PEM private key file to use for certificate authentication
+# through SASL External. If set, certfile MUST be provided as well in
+# order to login.
+keyfile =
+
+# the nick you will use when joining a room with no associated nick
+# If this is empty, the $USER environment variable will be used
+default_nick = tyil
+
+# the rooms you will join automatically on startup, with associated nickname or not
+# format : room@server.tld/nickname:room2@server.tld/nickname2
+# default_nick will be used if "/nickname" is not specified
+rooms =
+
+# a list of words (separated by a colon (:)) that will be
+# highlighted if said by someone on a room
+highlight_on =
+
+# Colon-separated list of plugins to load on startup
+plugins_autoload = irc
+
+# The server used for anonymous connection.
+# Make sure the server you're using accepts anonymous authentication
+#server = anon.jeproteste.info
+
+# TLS Certificate fingerprint
+# Do not touch this if you don’t know what you are doing
+certificate = 8A:17:AA:81:58:44:B3:29:15:F7:61:BF:0E:A1:D1:75:16:29:61:93:76:A3:46:82:FB:98:11:E8:27:00:84:0E
+
+# List of ciphers allowed when connecting to the server,
+# this list prioritizes forward secrecy and forbids anything
+# weaker than 128 bits.
+# You should probably leave it as it is
+#ciphers = HIGH+kEDH:HIGH+kEECDH:HIGH:!PSK:!SRP:!3DES:!aNULL
+
+# Skip the TLS certificate fingerprint verification
+# Should be false in most cases, as you want to check that the server keeps
+# the same certificate.
+#ignore_certificate = false
+
+# Force TLS on by default
+#force_encryption = true
+
+# The interval to send a whitespace keepalive to the server
+# 300 should be fine, except for specific services, in that case, change the
+# value to the services default.
+#whitespace_interval = 300
+
+# Path to the certificate authenticating the Authority.
+# A server may have several certificates, but if it uses a CA, it will often
+# keep the same for obvious reasons, so this is a good option if your server
+# does this, rather than skipping all verifications.
+# This is not affected by ignore_certificate
+# Poezio attempts to guess this value automatically. Set to override this
+# behaviour, to the empty string for example, or to another path.
+#ca_cert_path =
+
+# Auto-reconnects you when you get disconnected from the server
+auto_reconnect = true
+
+# The time between the ping sent to the server to check if the connection is alive
+#connection_check_interval = 300
+
+# The timeout value of those pings
+#connection_timeout_delay = 30
+
+# Send the initial presence
+# true, unless you want to be invisible from your contact list
+# warning: this disables any presence sending other than chatrooms or directed
+# presences via /presence
+#send_initial_presence = true
+
+# The status (show) poezio will send when connecting.
+# can be: xa,dnd,away,available,chat.
+# An empty or invalid value will mean available.
+#status =
+
+# The status message you will have upon connection
+status_message =
+
+# Save the last used status in this file (in the status and status_message
+# options)
+#save_status = true
+
+# A custom host that will be used instead of the DNS records for the server
+# (anonymous or the jid’s) defined above.
+# You should not need this in a "normal" use case.
+#custom_host =
+
+# A custom port to use instead of the 5222.
+# This option can be combined with custom_host.
+# You should not need this in a "normal" use case.
+#custom_port =
+
+# the method that poezio will use to store your bookmarks online
+# possible values are: privatexml, pep
+# You should not have to modify this, but if you have to, please do.
+use_bookmarks_method =
+
+# use this option to force the use of local bookmarks
+# possible values are: anything/false
+#use_remote_bookmarks = true
+
+# Whether you want all bookmarks, even those without
+# autojoin, to be open on startup
+#open_all_bookmarks = false
+
+# Will create a bookmark on manual /join, using your preferred
+# storage method. Use /leave to remove the bookmark.
+#synchronise_open_rooms = true
+
+# What will be put after the name, when using autocompletion at the
+# beginning of the input. A space will always be added after that
+after_completion = :
+
+# Whether or not to add a space after a completion in the middle of the
+# input (not at the start of it)
+#add_space_after_completion = true
+
+# The maximum length of the nickname that will be displayed in the
+# conversation window.
+#max_nick_length = 25
+
+# Show the timestamp of each messages, or not
+#show_timestamps = true
+
+# Allow a message to "correct" another message in the display if
+# the sender wants it.
+#group_corrections = true
+
+# Words that you want to complete on recent words completion,
+# separated by a colon (:).
+# e.g. words = "anticonstitutionnellement:I protest:I like bananas:"
+#words =
+
+# XHTML-IM is an XMPP extension letting users send messages
+# containing XHTML and CSS formating. We can use this to make
+# colored text for example.
+#enable_xhtml_im = true
+
+# If XHTML-IM is enabled, you may want to reject style parsing, to keep
+# only semantic elements formatting.
+#enable_css_parsing = true
+
+# Stream Management (XEP-0198) is an extension designed to improve
+# the reliability of XMPP in unreliable network conditions (such
+# as mobile networks). It can however increase bandwidth usage.
+#enable_smacks = false
+
+# Set a number for this setting.
+# The join OR status-change notices will be
+# displayed according to this number.
+# -1: the notices will ALWAYS be displayed
+# 0: the notices will NEVER be displayed
+# n: On any other number, the notices will only be displayed
+# if the user involved has talked since the last n seconds
+# The quit messages will be hidden only if hide_exit_join is 0
+# if the value is incorrect, -1 is assumed
+# Default settings are :
+# - all quit and join notices will be displayed
+# - status changes won't be displayed unless
+# the user talked in the last 2 minutes
+
+#hide_exit_join = -1
+
+#hide_status_change = 120
+
+
+# Some informational messages (error, a contact getting connected, etc)
+# are sometimes added to the information buffer. These settings can make
+# it grow temporarly so you can read these information when they appear.
+
+# A list of message types that should make the information buffer grow
+# Possible values; error, roster, warning, info, help
+#information_buffer_popup_on = error roster warning help info
+
+# A list of message types separated by colons (":") that should be filtered out from the
+# information buffer.
+# Possible values; error, roster, warning, info, help
+#information_buffer_type_filter =
+
+# The time the message will be visible. If the message takes more than
+# one line, the popup will stay visible two second per additional lines
+#popup_time = 4
+
+# Whether to hide the list of user in the MultiUserChat tabs or not. Useful
+# for example if you want to copy/paste the content of the buffer, or if you
+# want to gain space
+#hide_user_list = false
+
+# A list of words (or sentences) separated by colons (":"). All the
+# informational messages (described above) containing at least one of those
+# values will not be shown.
+#filter_info_messages =
+
+# Set to 'true' if you want to automatically rejoin the
+# rooms when you're kicked or banned
+autorejoin = true
+
+# Set to the number of seconds before reconnecting when you are kicked
+# or banned. No value, 0, or a negative value means you will be reconnected
+# instantly. Only effective if autorejoin is set to true.
+#autorejoin_delay = 5
+
+# If you want poezio to join
+# the room with an alternative nickname when
+# your nickname is already in use in the room you
+# wanted to join, put a non-empty value.
+# Else, poezio won't join the room
+# This value will be added to your nickname to
+# create the alternative nickname.
+# For example, if you set "_", and wanted to use
+# the nickname "john", your alternative nickname
+# will be "john_"
+#alternative_nickname =
+
+# set to 'true' if you want to save logs of all the messages
+# in files.
+#use_log = true
+
+# set to 'false' to not sync the local lgos with the MAM server history
+#mam_sync = true
+
+# The number of lines to preload in a chat buffer when it opens
+# (the lines are preloaded from the log files)
+# 0 or a negative value disable that option
+#load_log = 10
+
+# If log_dir is not set, logs will be saved in $XDG_DATA_HOME/poezio/logs,
+# i.e. in ~/.local/share/poezio/logs/. So, you should specify the directory
+# you want to use instead. This directory will be created if it doesn't exist
+#log_dir =
+
+# Log the errors poezio encounters in log_dir/errors.log
+# A false value disables this option.
+#log_errors = true
+
+# If plugins_dir is not set, plugins will be loaded from the plugins/ dir in the
+# poezio directory, then $XDG_DATA_HOME/poezio/plugins.
+# You can specify another directory to use. It will be created if it doesn't exist
+#plugins_dir =
+
+# If plugins_conf_dir is not set, plugin configs will be loaded from
+# $XDG_CONFIG_HOME/poezio/plugins. You can specify another directory here.
+#plugins_conf_dir =
+
+# the full path to the photo (avatar) you want to use
+# it should be less than 16Ko
+# The avatar is not set by default, because it slows
+# poezio's startup a little. Uncomment if you want the default avatar
+
+#photo = ../data/poezio_80.png
+
+# If you want to show all the tabs in the Tab bar, even those
+# with no activity, set to true. Else, set to false
+#show_inactive_tabs = true
+
+# If you want to highlight tabs where the contact is typing
+# possible values:
+# - direct: one-to-one chats
+# - private: private chats in chatrooms
+# - conversation: chats with contacts or other JIDs
+# - muc: chatrooms
+# - true: all chat tabs
+# - false or anything else: no highlighting
+#show_composing_tabs = direct
+
+# Ignore private messages received in chatrooms
+#ignore_private = false
+
+# If you want to show the tab names in the bottom tab bar, set this to true
+#show_tab_names = false
+
+# If you want to disable the numbers in the bottom tab bar, set this to false
+# If show_tab_names and show_tab_numbers are both false, the numbers will be
+# shown
+#show_tab_numbers = true
+
+# Use the contact name, the nick in the chatroom instead of the full JID to
+# display the tab if set to true.
+#use_tab_nicks = true
+
+# If set to false, poezio will first display the bookmark name, or if empty the
+# user part of the JID (before the @) when displaying the chatroom tab name.
+#show_muc_jid = false
+
+# If this option is set to false, the contact list will not show the contact
+# JIDs when that is possible.
+# e.g. instead of: toto (toto@example.org) (2)
+# poezio will only show: toto (2)
+#show_roster_jids = true
+
+# Show JIDs in conversation tabs
+#show_jid_in_conversations = true
+
+# show s2s errors in the contact list
+#show_s2s_errors = true
+
+# If set to true, the contact list will display offline contacts too
+roster_show_offline = true
+
+# How to sort the contacts inside the contact list groups.
+# They are used sequentially, (from left to right)
+# Available sorting methods are:
+# - reverse: reverse the sorting
+# - jid: sort by JID (alphabetical order)
+# - show: sort by show (available/away/xa/…)
+# - name: sort by name (if no name, then the bare jid is used)
+# - sname: case-sensitive name sorting (uppercase first)
+# - resource: sort by resource number
+# - online: sort by online presence (online or not)
+# You can arrange them however you like, and you have to separate them with
+# colons (":"). Keep in mind that if there are more than 3 or 4 your
+# sorting is most likely inefficient.
+#roster_sort = jid:show
+
+# How to sort the contact list groups.
+# The principles are the same as roster_sort.
+# Available methods are:
+# - reverse: reverse the sorting
+# - name: sort by group name (alphabetical order)
+# - sname: case-sensitive name sorting (uppercase first)
+# - fold: sort unfolded/folded
+# - connected: sort by number of connected contacts
+# - size: sort by group size
+# - none: put the "none" group (if any) at the end of the list
+#roster_group_sort = name
+
+# The terminal can beep on various event. Put the event you want in a list
+# (separated by spaces).
+# The events can be
+# - highlight (when you are highlighted in a chatroom)
+# - private (when a new private message is received, from your contacts or
+# someone from a chatroiom)
+# - message (any message from a chatroom)
+# - invite (when you receive an invitation for joining a chatroom)
+#beep_on = highlight private invite disconnect
+
+# Theme
+
+# If themes_dir is not set, logs will searched for in $XDG_DATA_HOME/poezio/themes,
+# i.e. in ~/.local/share/poezio/themes/. So you should specify the directory you
+# want to use instead. This directory will be created at startup if it doesn't
+# exist
+#themes_dir =
+
+# The name of the theme file that will be used. The file should be located
+# in the theme_dir directory.
+# If the file is not found (or no filename is specified) the default
+# theme will be used instead
+theme = dark
+
+# Whether to create gaps when moving or closing a tab
+# (a gap means that the number of your tabs does not depend of the previous tabs
+# but only of the creation order)
+#create_gaps = false
+
+# If Alt-x is pressed and you are already on the tab numbered "x",
+# you will go on the previous tab if that option is true
+#go_to_previous_tab_on_alt_number = false
+
+# If true, a vertical list of tabs, with their name, is displayed on the left
+# of the screen. Otherwise, it is a horizontal bar with just the tab numbers
+# above the input bar.
+enable_vertical_tab_list = true
+
+# Horizontal size of the vertical tab list
+#vertical_tab_list_size = 20
+
+# If set to desc, the tabs will be displayed from top to bottom in the list,
+# if set to asc, they will be displayed from bottom to top.
+#vertical_tab_list_sort = desc
+
+# Show the user list at the bottom when in a chatroom
+# (useful when you want to look at the bottom of the screen only)
+# possible values: desc, asc
+#user_list_sort = desc
+
+# If _nick, nick_, _nick_, nick__ etc. should have the same color as nick
+#nick_color_aliases = true
+
+# The nick of people who join, part, change their status, etc. in a chatroom
+# will be displayed using their nick color if true.
+#display_user_color_in_join_part = true
+
+# Change the tab state when receiving chatroom messages.
+# useful if you are connected to a high-volume chatroom and do not
+# want it to appear in your tab bar as active. Highlights are still
+# shown.
+#notify_messages = true
+
+# Enable Message Carbons (XEP-0280) to deliver message copies from and to
+# other resources with carbons enabled.
+#enable_carbons = true
+
+# Acknowledge message delivery receipts (XEP-0184)
+#ack_message_receipts = true
+
+# Ask for message delivery receipts (XEP-0184)
+#request_message_receipts = true
+
+# Display your contacts’ avatar in the roster if true.
+#enable_avatars = true
+
+# Use Unicode half-block (▄) instead of full-block (█) to display images.
+# This doubles the vertical resolution and gives square pixels, but may
+# cause issues in some terminals.
+#image_use_half_blocks = false
+
+# Extract base64 images received in XHTML-IM messages
+# if true.
+#extract_inline_images = true
+
+# The directory where the images will be saved; if unset,
+# defaults to $XDG_CACHE_HOME/poezio/images.
+#tmp_image_dir =
+
+# If set to true, use the nickname broadcasted by the user if none has been
+# set manually.
+#enable_user_nick = true
+
+# if true, chat states will be sent to the people you are talking to.
+# Chat states are, for example, messages informing that you are composing
+# a message or that you closed the tab, etc
+# Set to false if you don't want people to know these information
+# Note that you won’t receive the chat states of your contacts
+# if you don't send yours.
+#send_chat_states = true
+
+# if true, information about the software (name and version)
+# will be sent if requested by anyone
+# Set to false if you don't want people to know these information
+#send_poezio_info = true
+
+# if true, information about the Operation System you're using
+# will be sent when requested by anyone
+# Set to false if you don't want people to know these information
+# Note that this information will not be sent if send_poezio_info is False
+#send_os_info = true
+
+# if true, your current time will be sent if asked
+# Set to false if you don't want people to know that information
+#send_time = true
+
+# If true, the history of the similar inputs won't be shared between
+# different tabs (as in weechat).
+#separate_history = false
+
+# The language you specify using.
+# This *may* be used by an automated entity to send you tailored replies
+# If you don't understand, leave en.
+#lang = en
+
+# Configure the number of maximum lines and messages (for each tab) that
+# can be kept in memory. If poezio consumes too much memory, lower these
+# values
+#max_messages_in_memory = 2048
+#max_lines_in_memory = 2048
+
+# Show the separator at the bottom of the text buffer, even if no one
+# spoke
+#show_useless_separator = true
+
+# Set this to true if you want the commands to be executed remotely
+# (with ssh & the daemon), see the documentation of the /link plugin
+# for details
+#exec_remote = false
+
+# Path of the FIFO in which the remote commands will be sent.
+# The "poezio.fifo" file will be created in this directory
+# Used with exec_remote set to true, see the documentation of /link for details
+# Defaults to ./
+#remote_fifo_path = ./
+
+# Defines if all tabs are resized at the same time (if set to false)
+# or if they are really resized only when needed (if set to true).
+# “true” should be the most comfortable value
+#lazy_resize = true
+
+# If set to true and if show_tab_names is set, the info bar will only show
+# the unique prefix of each tab name instead of the full name. This saves a
+# lot of space if many tabs exist or are active.
+# Best used with the `/wup` command or the `_go_to_room_name` action to select
+# a tab based on the prefix.
+#unique_prefix_tab_names = false
+
+[bindings]
+# Bindings are keyboard shortcut aliases. You can use them
+# to define your own keys and bind them with some functions
+# The syntax is
+# key = bind
+# where ^x means Control + x
+# and M-x means Alt + x
+# The example turns Alt + i into a tab key
+M-i = ^I
+
+[var]
+# You should not edit this section, it is just used by poezio
+# to save various data across restarts
+folded_roster_groups =
+info_win_height = 0
+
+[muc_colors]
+# Set color for a nick, under the form
+# nick = color
+
+[#cock.li%irc.darenet.org@biboumi.chat.tyil.nl]
+notify_messages = false
+[#guardsmanbob%irc.twitch.tv@biboumi.chat.tyil.nl]
+notify_messages = false
+[#fosdem%irc.libera.chat@biboumi.chat.tyil.nl]
+notify_messages = false
+[#scriptkitties%irc.libera.chat@biboumi.chat.tyil.nl]
+notify_messages = false
+[#indieweb%irc.libera.chat@biboumi.chat.tyil.nl]
+notify_messages = false
+[#scriptkitties%irc.oftc.net@biboumi.chat.tyil.nl]
+notify_messages = false
+[#scriptkitties%irc.darenet.org@biboumi.chat.tyil.nl]
+notify_messages = false
+[gajim@conference.gajim.org]
+notify_messages = false
+[slidge@conference.nicoco.fr]
+notify_messages = false
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;
+}