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