diff --git a/.config/dconf/user b/.config/dconf/user
index acbcd09..42109a2 100644
Binary files a/.config/dconf/user and b/.config/dconf/user differ
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
index 49c0c85..da5231d 100644
--- a/.config/fish/fish_variables
+++ b/.config/fish/fish_variables
@@ -44,4 +44,4 @@ SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack
SETUVAR fish_pager_color_selected_completion:\x1d
SETUVAR fish_pager_color_selected_description:\x1d
SETUVAR fish_pager_color_selected_prefix:\x1d
-SETUVAR fish_user_paths:/usr/local/texlive/2025/bin/x86_64\x2dlinux\x1e/home/never/\x2ecargo/bin\x1e/home/never/\x2elocal/bin
+SETUVAR fish_user_paths:/home/never/\x2elocal/scripts\x1e/usr/local/texlive/2025/bin/x86_64\x2dlinux\x1e/home/never/\x2ecargo/bin\x1e/home/never/\x2elocal/bin
diff --git a/.config/fuzzel/fuzzel.ini b/.config/fuzzel/fuzzel.ini
index 708c4d0..c54ba5e 100644
--- a/.config/fuzzel/fuzzel.ini
+++ b/.config/fuzzel/fuzzel.ini
@@ -68,7 +68,7 @@ radius=0
[dmenu]
# mode=text # text|index
-# exit-immediately-if-empty=no
+exit-immediately-if-empty=yes
[key-bindings]
# cancel=Escape Control+g Control+c Control+bracketleft
diff --git a/.config/niri/config.kdl b/.config/niri/config.kdl
index 99209c5..bfe9259 100644
--- a/.config/niri/config.kdl
+++ b/.config/niri/config.kdl
@@ -157,10 +157,10 @@ layout {
// You can change how the focus ring looks.
focus-ring {
// Uncomment this line to disable the focus ring.
- on
+ off
// How many logical pixels the ring extends out from the windows.
- width 4
+ width 2
// Colors can be set in a variety of ways:
// - CSS named colors: "red"
@@ -196,9 +196,9 @@ layout {
border {
// The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable the focus ring.
- off
+ on
- width 4
+ width 2
active-color "#ffc87f"
inactive-color "#505050"
@@ -365,8 +365,12 @@ binds {
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Return hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
+ Mod+B hotkey-overlay-title="Open a Browser: qutebrowser" { spawn "qutebrowser"; }
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
-
+ Mod+M hotkey-overlay-title="Search mpd Library: fuzzel" { spawn-sh "musicmenu.fish"; }
+ Mod+Shift+M hotkey-overlay-title="Browse mpd Playlist: fuzzel" { spawn-sh "playlistmenu.fish"; }
+
+ Mod+P hotkey-overlay-title="Browse mpd Playlist: fuzzel" { spawn-sh "powermenu.fish"; }
// Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc.
// Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`.
// For example, this is a standard bind to toggle the screen reader (orca).
@@ -380,6 +384,9 @@ binds {
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
+ XF86AudioPlay allow-when-locked=true { spawn-sh "mpc toggle"; }
+ XF86AudioPrev allow-when-locked=true { spawn-sh "mpc prev"; }
+ XF86AudioNext allow-when-locked=true { spawn-sh "mpc next"; }
// Example brightness key mappings for brightnessctl.
// You can use regular spawn with multiple arguments too (to avoid going through "sh"),
// but you need to manually put each argument in separate "" quotes.
@@ -535,8 +542,8 @@ binds {
// The following binds move the focused window in and out of a column.
// If the window is alone, they will consume it into the nearby column to the side.
// If the window is already in a column, they will expel it out.
- Mod+BracketLeft { consume-or-expel-window-left; }
- Mod+BracketRight { consume-or-expel-window-right; }
+ Mod+Ctrl+Z { consume-or-expel-window-left; }
+ Mod+Ctrl+O { consume-or-expel-window-right; }
// Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; }
diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml
index 04b803a..80980b9 100644
--- a/.config/qutebrowser/autoconfig.yml
+++ b/.config/qutebrowser/autoconfig.yml
@@ -6,8 +6,40 @@
config_version: 2
settings:
+ colors.completion.category.bg:
+ global: '#3c3836'
+ colors.completion.category.border.bottom:
+ global: '#3c3836'
+ colors.completion.category.border.top:
+ global: '#83a598'
+ colors.completion.category.fg:
+ global: '#83a598'
+ colors.completion.item.selected.bg:
+ global: '#7c6f64'
+ colors.completion.item.selected.fg:
+ global: '#fbf1c7'
+ colors.prompts.bg:
+ global: '#665c54'
+ colors.prompts.fg:
+ global: '#d5c4a1'
+ colors.prompts.selected.bg:
+ global: '#504945'
+ colors.statusbar.private.fg:
+ global: '#d3869b'
+ colors.statusbar.progress.bg:
+ global: '#83a598'
+ colors.tabs.bar.bg:
+ global: '#3c3836'
+ colors.tabs.indicator.start:
+ global: '#83a598'
+ colors.tabs.selected.even.bg:
+ global: '#7c6f64'
+ colors.tabs.selected.even.fg:
+ global: '#fbf1c7'
colors.tabs.selected.odd.bg:
- global: '#282828'
+ global: '#7c6f64'
+ colors.tabs.selected.odd.fg:
+ global: '#fbf1c7'
colors.webpage.bg:
global: white
colors.webpage.preferred_color_scheme:
@@ -46,4 +78,4 @@ settings:
fonts.default_family:
global: Adwaita Mono
tabs.position:
- global: left
+ global: right
diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py
index a6d9a9b..1ccd8b0 100644
--- a/.config/qutebrowser/config.py
+++ b/.config/qutebrowser/config.py
@@ -1,4 +1,2 @@
-config.load_autoconfig()
-# config.bind('', 'hint links spawn --detach mpv {hint-url}')
config.source("gruvbox.py")
-#c.colors.webpage.bg = "#ffffff"
+config.load_autoconfig()
\ No newline at end of file
diff --git a/.config/tuxedo-control-center/SS b/.config/tuxedo-control-center/SS
index 4eb0b27..54e16c0 120000
--- a/.config/tuxedo-control-center/SS
+++ b/.config/tuxedo-control-center/SS
@@ -1 +1 @@
-/tmp/.org.chromium.Chromium.sEF4uh/SS
\ No newline at end of file
+/tmp/.org.chromium.Chromium.O8weLB/SS
\ No newline at end of file
diff --git a/.config/tuxedo-control-center/SingletonCookie b/.config/tuxedo-control-center/SingletonCookie
index f12efd3..761a766 120000
--- a/.config/tuxedo-control-center/SingletonCookie
+++ b/.config/tuxedo-control-center/SingletonCookie
@@ -1 +1 @@
-5441741259319359421
\ No newline at end of file
+9249301947240957090
\ No newline at end of file
diff --git a/.config/tuxedo-control-center/SingletonLock b/.config/tuxedo-control-center/SingletonLock
index ce32d5b..fe469c9 120000
--- a/.config/tuxedo-control-center/SingletonLock
+++ b/.config/tuxedo-control-center/SingletonLock
@@ -1 +1 @@
-fedora-75193
\ No newline at end of file
+fedora-3675
\ No newline at end of file
diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc
index 1086d02..18e3a3d 100644
--- a/.config/waybar/config.jsonc
+++ b/.config/waybar/config.jsonc
@@ -1,18 +1,95 @@
{
"layer": "top",
+
"modules-left": ["niri/workspaces"],
"modules-center": ["niri/window"],
- "modules-right": ["battery", "clock"],
+ "modules-right": ["bluetooth", "network", "wireplumber#source", "wireplumber#sink", "battery", "clock"],
+
"niri/window": {
"max-length": 100
},
- "battery": {
- "format": "{capacity}% {icon}",
- "format-icons": ["", "", "", "", ""]
+
+ "mpris": {
+ "format": "{player_icon} {dynamic}",
+ "format-paused": "{status_icon} {dynamic}",
+ "player-icons": {
+ "default": ""
+ },
+ "status-icons": {
+ "paused": ""
+ },
+ "ignored-players": ["firefox"]
},
+
+ "bluetooth": {
+ // "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system
+ "format": "",
+ "format-disabled": "", // an empty format will hide the module
+ "format-connected": "",
+ "tooltip-format": "{controller_alias}\t{controller_address}",
+ "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}",
+ "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
+ "min-length": 2
+ },
+
+ "network": {
+ "interface": "wlp2s0",
+ "format": "{ifname}",
+ "format-icons": ["", "", "", ""],
+ "format-wifi": "{icon}",
+ "format-ethernet": "",
+ "format-disconnected": "", //An empty format will hide the module.
+ "tooltip-format": "{ifname}",
+ "tooltip-format-wifi": "{essid} ({signalStrength}%) ",
+ "tooltip-format-ethernet": "{ifname} ",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "min-length": 2
+ },
+
+ "wireplumber#sink": {
+ "format": "{icon}",
+ "format-muted": "",
+ "format-icons": ["", "", ""],
+ "tooltip-format": "{node_name} ({volume}%)",
+ "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
+ "scroll-step": 5,
+ "min-length": 2
+ },
+
+ "wireplumber#source": {
+ "node-type": "Audio/Source",
+ "format": "",
+ "format-muted": "",
+ "tooltip-format": "{node_name} ({volume}%)",
+ "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle",
+ "scroll-step": 5,
+ "min-length": 2
+ },
+
+ "battery": {
+ "interval": 60,
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "events": {
+ "on-discharging-warning": "notify-send -u normal 'Low Battery'",
+ "on-discharging-critical": "notify-send -u critical 'Very Low Battery'",
+ "on-charging-100": "notify-send -u normal 'Battery Full!'"
+ },
+ "format": "{icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", "", ""],
+ "tooltip-format": "{time} ({capacity}%)",
+ "min-length": 2
+ },
+
"clock": {
"format-alt": "{:%a, %d. %b %H:%M}",
"tooltip": false
}
+
}
+
+
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
index a663362..c35165b 100644
--- a/.config/waybar/style.css
+++ b/.config/waybar/style.css
@@ -1,8 +1,13 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
- font-family: FontAwesome, Adwaita Sans, sans-serif;
- font-weight: bold;
- font-size: 13px;
+ font-family: Symbols Nerd Font, Adwaita Sans, sans-serif;
+ font-weight: 600;
+ font-size: 14px;
+}
+
+tooltip {
+ font-weight: normal;
+ border-radius: 0px;
}
window#waybar {
@@ -24,7 +29,7 @@ window#waybar.empty {
window#waybar.solo {
background-color: #FFFFFF;
}
-*/
+
window#waybar.termite {
background-color: #3F3F3F;
@@ -34,6 +39,7 @@ window#waybar.chromium {
background-color: #000000;
border: none;
}
+*/
button {
/* Use box-shadow instead of border so the text isn't offset */
@@ -49,13 +55,8 @@ button:hover {
box-shadow: inset 0 -2px #ffffff;
}
-/* you can set a style on hover for any module like this */
-#pulseaudio:hover {
- background-color: #a37800;
-}
-
#workspaces button {
- padding: 0 5px;
+ padding: 0 4px;
background-color: transparent;
color: #999999;
}
@@ -87,6 +88,7 @@ button:hover {
#disk,
#temperature,
#backlight,
+#bluetooth,
#network,
#pulseaudio,
#wireplumber,
@@ -97,7 +99,7 @@ button:hover {
#scratchpad,
#power-profiles-daemon,
#mpd {
- padding: 0 10px;
+ padding: 0 8px;
color: #ffffff;
}
@@ -116,10 +118,6 @@ button:hover {
margin-right: 0;
}
-tooltip {
- border-radius: 0px;
-}
-
/*
clock {
background-color: #64727D;
@@ -136,25 +134,20 @@ clock {
color: #ffffff;
background-color: #26A65B;
}
-*/
+
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
-
+*/
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
- background-color: #f53c3c;
- color: #ffffff;
- animation-name: blink;
- animation-duration: 0.5s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #9b0000
}
+/*
#power-profiles-daemon {
padding-right: 15px;
}
@@ -195,10 +188,12 @@ label:focus {
background-color: #90b1b1;
}
+
#network {
background-color: #2980b9;
}
+
#network.disconnected {
background-color: #f53c3c;
}
@@ -335,3 +330,4 @@ label:focus {
#privacy-item.audio-out {
background-color: #0069d4;
}
+*/
diff --git a/.local/scripts/albumcover-update.bash b/.local/scripts/albumcover-update.bash
new file mode 100755
index 0000000..2d9025f
--- /dev/null
+++ b/.local/scripts/albumcover-update.bash
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+for file in *.opus; do
+ ffmpeg \
+ -hide_banner \
+ -i "${file}" -i "cover.jpg" \
+ -map_metadata 0:s:a:0 -disposition attached_pic \
+ -metadata date="$1" \
+ -c:a copy "0${file}"
+
+ rm "$file"
+ mv "0${file}" "${file#"0"}"
+done
diff --git a/.local/scripts/musicmenu.fish b/.local/scripts/musicmenu.fish
new file mode 100755
index 0000000..eeaa13b
--- /dev/null
+++ b/.local/scripts/musicmenu.fish
@@ -0,0 +1,35 @@
+#!/usr/bin/env fish
+
+set input (mpc list title group album group artist | perl -077 -pe 's/\s*?(\S.*?)\s*$/$1\n/igs' | fuzzel -w 100 --dmenu || exit 0)
+
+ if string match -r "\s{8}" $input != ""
+ mpc insert (mpc find title (string trim $input))
+ mpc play
+ exit 0
+ end
+
+ if string match -r "\s{4}" $input != ""
+ mpc clear
+ mpc findadd album (string trim $input)
+ mpc play
+ exit 0
+ end
+
+ if string match -r "\s{0}" $input != ""
+ set input (mpc list title artist (string trim $input) group album | fuzzel -w 100 --dmenu || exit 0)
+
+ if string match -r "\s{4}" $input != ""
+ mpc insert (mpc find title (string trim $input))
+ mpc play
+ exit 0
+ end
+
+ if string match -r "\s{0}" $input != ""
+ mpc clear
+ mpc findadd album (string trim $input)
+ mpc play
+ exit 0
+ end
+
+ end
+
diff --git a/.local/scripts/openbox-xwayland b/.local/scripts/openbox-xwayland
new file mode 100755
index 0000000..c2120e2
--- /dev/null
+++ b/.local/scripts/openbox-xwayland
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+Xwayland :10 & env -i DISPLAY=":10" openbox
diff --git a/.local/scripts/playlist-dl.bash b/.local/scripts/playlist-dl.bash
new file mode 100755
index 0000000..74640a4
--- /dev/null
+++ b/.local/scripts/playlist-dl.bash
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+url=$1
+
+album=$(yt-dlp -I 1:1 --skip-download --print "%(album)s" ${url})
+artist=$(yt-dlp -I 1:1 --skip-download --print "%(artists.0,artist)s" ${url})
+folder="${artist} - ${album}"
+
+yt-dlp \
+ --embed-metadata \
+ --parse-metadata "%(playlist_index)s:%(track_number)s" \
+ --parse-metadata "%(release_date,upload_date)s:%(date)s" \
+ --parse-metadata "%(artists.0,artist)s:%(artist)s" \
+ --extract-audio --audio-format opus \
+ -o "${folder}/%(playlist_index)s - %(title)s.%(ext)s" ${url}
+
+yt-dlp -I 1:0 --write-thumbnail -o "${folder}/cover.jpg" ${url}
+
+cd "${folder}"
+
+for file in *.opus; do
+ ffmpeg \
+ -hide_banner \
+ -i "${file}" -i "cover.jpg" \
+ -map_metadata 0:s:a:0 -disposition attached_pic \
+ -c:a copy "0${file}"
+
+ rm "$file"
+ mv "0${file}" "${file#"0"}"
+done
diff --git a/.local/scripts/playlistmenu.fish b/.local/scripts/playlistmenu.fish
new file mode 100755
index 0000000..c873d3c
--- /dev/null
+++ b/.local/scripts/playlistmenu.fish
@@ -0,0 +1,8 @@
+#!/usr/bin/env fish
+
+set playlist (string split (mpc playlist))
+set input (mpc playlist | fuzzel -w 100 --dmenu || exit 0)
+
+echo $input
+
+mpc play (math (contains -i $input $playlist) + 1)
diff --git a/.local/scripts/powermenu.fish b/.local/scripts/powermenu.fish
new file mode 100755
index 0000000..5f97416
--- /dev/null
+++ b/.local/scripts/powermenu.fish
@@ -0,0 +1,21 @@
+#!/usr/bin/env fish
+
+set input (echo -e 'Suspend\nShutdown\nRestart' | fuzzel --dmenu -l 3 || exit 0)
+
+set check (echo -e 'Cancel\nProceed' | fuzzel --dmenu -l 2 || exit 0)
+
+if test $check = "Cancel"
+ exit 0
+end
+
+switch $input
+ case Suspend
+ systemctl suspend
+
+ case Shutdown
+ systemctl poweroff
+
+ case Restart
+ systemctl restart
+
+end