add scripts

This commit is contained in:
Never Gude 2025-12-29 23:40:17 +01:00
parent da6833b55b
commit a1d7377ca1
17 changed files with 265 additions and 45 deletions

Binary file not shown.

View file

@ -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_completion:\x1d
SETUVAR fish_pager_color_selected_description:\x1d SETUVAR fish_pager_color_selected_description:\x1d
SETUVAR fish_pager_color_selected_prefix:\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

View file

@ -68,7 +68,7 @@ radius=0
[dmenu] [dmenu]
# mode=text # text|index # mode=text # text|index
# exit-immediately-if-empty=no exit-immediately-if-empty=yes
[key-bindings] [key-bindings]
# cancel=Escape Control+g Control+c Control+bracketleft # cancel=Escape Control+g Control+c Control+bracketleft

View file

@ -157,10 +157,10 @@ layout {
// You can change how the focus ring looks. // You can change how the focus ring looks.
focus-ring { focus-ring {
// Uncomment this line to disable the focus ring. // Uncomment this line to disable the focus ring.
on off
// How many logical pixels the ring extends out from the windows. // How many logical pixels the ring extends out from the windows.
width 4 width 2
// Colors can be set in a variety of ways: // Colors can be set in a variety of ways:
// - CSS named colors: "red" // - CSS named colors: "red"
@ -196,9 +196,9 @@ layout {
border { border {
// The settings are the same as for the focus ring. // The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable 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" active-color "#ffc87f"
inactive-color "#505050" inactive-color "#505050"
@ -365,8 +365,12 @@ binds {
// Suggested binds for running programs: terminal, app launcher, screen locker. // Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Return hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; } Mod+Return hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; } 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"; } 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. // 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`. // 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). // 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"; } 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"; } 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. // Example brightness key mappings for brightnessctl.
// You can use regular spawn with multiple arguments too (to avoid going through "sh"), // 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. // 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. // 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 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. // If the window is already in a column, they will expel it out.
Mod+BracketLeft { consume-or-expel-window-left; } Mod+Ctrl+Z { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; } Mod+Ctrl+O { consume-or-expel-window-right; }
// Consume one window from the right to the bottom of the focused column. // Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; } Mod+Comma { consume-window-into-column; }

View file

@ -6,8 +6,40 @@
config_version: 2 config_version: 2
settings: 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: colors.tabs.selected.odd.bg:
global: '#282828' global: '#7c6f64'
colors.tabs.selected.odd.fg:
global: '#fbf1c7'
colors.webpage.bg: colors.webpage.bg:
global: white global: white
colors.webpage.preferred_color_scheme: colors.webpage.preferred_color_scheme:
@ -46,4 +78,4 @@ settings:
fonts.default_family: fonts.default_family:
global: Adwaita Mono global: Adwaita Mono
tabs.position: tabs.position:
global: left global: right

View file

@ -1,4 +1,2 @@
config.load_autoconfig()
# config.bind('<Ctrl+/>', 'hint links spawn --detach mpv {hint-url}')
config.source("gruvbox.py") config.source("gruvbox.py")
#c.colors.webpage.bg = "#ffffff" config.load_autoconfig()

View file

@ -1 +1 @@
/tmp/.org.chromium.Chromium.sEF4uh/SS /tmp/.org.chromium.Chromium.O8weLB/SS

View file

@ -1 +1 @@
5441741259319359421 9249301947240957090

View file

@ -1 +1 @@
fedora-75193 fedora-3675

View file

@ -1,18 +1,95 @@
{ {
"layer": "top", "layer": "top",
"modules-left": ["niri/workspaces"], "modules-left": ["niri/workspaces"],
"modules-center": ["niri/window"], "modules-center": ["niri/window"],
"modules-right": ["battery", "clock"], "modules-right": ["bluetooth", "network", "wireplumber#source", "wireplumber#sink", "battery", "clock"],
"niri/window": { "niri/window": {
"max-length": 100 "max-length": 100
}, },
"battery": {
"format": "{capacity}% {icon}", "mpris": {
"format-icons": ["", "", "", "", ""] "format": "{player_icon} {dynamic}",
"format-paused": "{status_icon} <i>{dynamic}</i>",
"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": { "clock": {
"format-alt": "{:%a, %d. %b %H:%M}", "format-alt": "{:%a, %d. %b %H:%M}",
"tooltip": false "tooltip": false
} }
} }

View file

@ -1,8 +1,13 @@
* { * {
/* `otf-font-awesome` is required to be installed for icons */ /* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Adwaita Sans, sans-serif; font-family: Symbols Nerd Font, Adwaita Sans, sans-serif;
font-weight: bold; font-weight: 600;
font-size: 13px; font-size: 14px;
}
tooltip {
font-weight: normal;
border-radius: 0px;
} }
window#waybar { window#waybar {
@ -24,7 +29,7 @@ window#waybar.empty {
window#waybar.solo { window#waybar.solo {
background-color: #FFFFFF; background-color: #FFFFFF;
} }
*/
window#waybar.termite { window#waybar.termite {
background-color: #3F3F3F; background-color: #3F3F3F;
@ -34,6 +39,7 @@ window#waybar.chromium {
background-color: #000000; background-color: #000000;
border: none; border: none;
} }
*/
button { button {
/* Use box-shadow instead of border so the text isn't offset */ /* Use box-shadow instead of border so the text isn't offset */
@ -49,13 +55,8 @@ button:hover {
box-shadow: inset 0 -2px #ffffff; 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 { #workspaces button {
padding: 0 5px; padding: 0 4px;
background-color: transparent; background-color: transparent;
color: #999999; color: #999999;
} }
@ -87,6 +88,7 @@ button:hover {
#disk, #disk,
#temperature, #temperature,
#backlight, #backlight,
#bluetooth,
#network, #network,
#pulseaudio, #pulseaudio,
#wireplumber, #wireplumber,
@ -97,7 +99,7 @@ button:hover {
#scratchpad, #scratchpad,
#power-profiles-daemon, #power-profiles-daemon,
#mpd { #mpd {
padding: 0 10px; padding: 0 8px;
color: #ffffff; color: #ffffff;
} }
@ -116,10 +118,6 @@ button:hover {
margin-right: 0; margin-right: 0;
} }
tooltip {
border-radius: 0px;
}
/* /*
clock { clock {
background-color: #64727D; background-color: #64727D;
@ -136,25 +134,20 @@ clock {
color: #ffffff; color: #ffffff;
background-color: #26A65B; background-color: #26A65B;
} }
*/
@keyframes blink { @keyframes blink {
to { to {
background-color: #ffffff; background-color: #ffffff;
color: #000000; color: #000000;
} }
} }
*/
/* Using steps() instead of linear as a timing function to limit cpu usage */ /* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background-color: #f53c3c; color: #9b0000
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
} }
/*
#power-profiles-daemon { #power-profiles-daemon {
padding-right: 15px; padding-right: 15px;
} }
@ -195,10 +188,12 @@ label:focus {
background-color: #90b1b1; background-color: #90b1b1;
} }
#network { #network {
background-color: #2980b9; background-color: #2980b9;
} }
#network.disconnected { #network.disconnected {
background-color: #f53c3c; background-color: #f53c3c;
} }
@ -335,3 +330,4 @@ label:focus {
#privacy-item.audio-out { #privacy-item.audio-out {
background-color: #0069d4; background-color: #0069d4;
} }
*/

View file

@ -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

35
.local/scripts/musicmenu.fish Executable file
View file

@ -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

View file

@ -0,0 +1,3 @@
#!/usr/bin/env sh
Xwayland :10 & env -i DISPLAY=":10" openbox

30
.local/scripts/playlist-dl.bash Executable file
View file

@ -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

View file

@ -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)

21
.local/scripts/powermenu.fish Executable file
View file

@ -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