From 425074f49878990a48ca8362ed080fa5208ffd04 Mon Sep 17 00:00:00 2001 From: Tibeuleu <> Date: Mon, 9 Jun 2025 12:12:25 +0200 Subject: [PATCH] add mpv configs --- .config/i3/config | 39 ++--- .config/mpv/input.conf | 6 + .config/mpv/mpv.conf | 158 +++++++++++++++++++ .config/mpv/scripts/sponsorblock_minimal.lua | 130 +++++++++++++++ .config/qutebrowser/autoconfig.yml | 2 +- .config/x11/xinitrc | 1 - .config/x11/xprofile | 1 + 7 files changed, 316 insertions(+), 21 deletions(-) create mode 100755 .config/mpv/input.conf create mode 100644 .config/mpv/mpv.conf create mode 100644 .config/mpv/scripts/sponsorblock_minimal.lua diff --git a/.config/i3/config b/.config/i3/config index 9e0026f..dac456c 100755 --- a/.config/i3/config +++ b/.config/i3/config @@ -1,5 +1,4 @@ # vim: filetype=i3 -# File originally by Luke Smith # This config file will use environmental variables such as $BROWSER and $TERMINAL. # You can set these variables in ~/.profile or ~/.bash_profile if you have it as below: @@ -71,6 +70,7 @@ bindsym $mod+Shift+q [con_id="__focused__" instance="^(?!dropdown_).*$"] exec - bindsym $mod+w exec --no-startup-id $BROWSER bindsym $mod+Shift+w exec $term -e nmtui +bindsym $mod+Ctrl+w exec --no-startup-id qutebrowser bindsym $mod+r exec --no-startup-id element-desktop bindsym $mod+Shift+r exec --no-startup-id dmenuunicode @@ -95,6 +95,7 @@ bindsym $mod+Shift+p exec --no-startup-id mpc stop bindsym $mod+a exec --no-startup-id ddspawn dropdowncalc -f mono:pixelsize=24 bindsym $mod+Shift+a exec $term -e alsamixer +bindsym $mod+Ctrl+a exec $term -e pulsemixer bindsym $mod+s exec --no-startup-id signal-desktop --use-tray-icon bindsym $mod+Shift+s exec --no-startup-id slack @@ -273,11 +274,11 @@ bindsym Shift+Print exec --no-startup-id maimpick bindsym $mod+Print exec --no-startup-id dmenurecord bindsym $mod+Shift+F12 exec --no-startup-id "killall screenkey || screenkey" bindsym $mod+Delete exec $stoprec -bindsym XF86Launch1 exec --no-startup-id xset dpms force off +#bindsym XF86Launch1 exec --no-startup-id xset dpms force off # #---Extra XF86 Keys---# # bindsym XF86AudioMute exec --no-startup-id amixer sset Master toggle && pkill -RTMIN+10 i3blocks -bindsym XF86AudioMicMute exec --no-startup-id amixer sset Capture toggle +#bindsym XF86AudioMicMute exec --no-startup-id amixer sset Capture toggle bindsym XF86AudioLowerVolume exec --no-startup-id amixer sset Master 5%- && pkill -RTMIN+10 i3blocks bindsym Shift+XF86AudioLowerVolume exec --no-startup-id amixer sset Master 1%- && pkill -RTMIN+10 i3blocks bindsym Control+XF86AudioLowerVolume exec --no-startup-id amixer sset Master 10%- && pkill -RTMIN+10 i3blocks @@ -290,9 +291,9 @@ bindsym Control+XF86MonBrightnessDown exec --no-startup-id xbacklight -time 1000 bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -time 500 -steps 5 -inc 5 bindsym Shift+XF86MonBrightnessUp exec --no-startup-id xbacklight -time 100 -steps 1 -inc 1 bindsym Control+XF86MonBrightnessUp exec --no-startup-id xbacklight -time 1000 -steps 10 -inc 10 -bindsym XF86Display exec --no-startup-id displayselect -bindsym XF86WLAN exec $nettoggle -bindsym XF86Bluetooth exec doas rfkill unblock bluetooth | $term bluetoothctl +#bindsym XF86Display exec --no-startup-id displayselect +#bindsym XF86WLAN exec $nettoggle +#bindsym XF86Bluetooth exec doas rfkill unblock bluetooth | $term bluetoothctl ##bindsym XF86Copy exec ##bindsym XF86Open exec ##bindsym XF86Paste exec @@ -307,22 +308,22 @@ bindsym XF86PowerOff exec --no-startup-id sysact ##bindsym XF86Xfer exec ##bindsym XF86WWW exec --no-startup-id $BROWSER ##bindsym XF86DOS exec -bindsym XF86ScreenSaver exec exec --no-startup-id slock +#bindsym XF86ScreenSaver exec exec --no-startup-id slock ##bindsym XF86RotateWindows exec ##bindsym XF86TaskPane exec ##bindsym XF86Favorites exec ##bindsym XF86MyComputer exec $term -e lf ##bindsym XF86Back exec ##bindsym XF86Forward exec -bindsym XF86Eject exec --no-startup-id dmenuumount -bindsym XF86AudioNext exec --no-startup-id mpc next -bindsym XF86AudioPlay exec --no-startup-id mpc toggle -bindsym XF86AudioPrev exec --no-startup-id mpc prev -bindsym XF86AudioStop exec --no-startup-id mpc toggle -##bindsym XF86AudioRecord exec --no-startup-id $term -e ncmpcpp -bindsym XF86AudioRewind exec --no-startup-id mpc seek -10 -bindsym XF86AudioForward exec --no-startup-id mpc seek +10 -bindsym XF86AudioMedia exec --no-startup-id $term -e ncmpcpp +#bindsym XF86Eject exec --no-startup-id dmenuumount +#bindsym XF86AudioNext exec --no-startup-id mpc next +#bindsym XF86AudioPlay exec --no-startup-id mpc toggle +#bindsym XF86AudioPrev exec --no-startup-id mpc prev +#bindsym XF86AudioStop exec --no-startup-id mpc toggle +#bindsym XF86AudioRecord exec --no-startup-id $term -e ncmpcpp +#bindsym XF86AudioRewind exec --no-startup-id mpc seek -10 +#bindsym XF86AudioForward exec --no-startup-id mpc seek +10 +#bindsym XF86AudioMedia exec --no-startup-id $term -e ncmpcpp ##bindsym XF86Phone exec ##bindsym XF86Tools exec ##bindsym XF86HomePage exec $BROWSER @@ -340,11 +341,11 @@ bindsym XF86AudioMedia exec --no-startup-id $term -e ncmpcpp ##bindsym XF86Launch7 exec ##bindsym XF86Launch8 exec ##bindsym XF86Launch9 exec -bindsym XF86TouchpadToggle exec --no-startup-id toggletouchpad +#bindsym XF86TouchpadToggle exec --no-startup-id toggletouchpad #bindsym XF86TouchpadOn exec --no-startup-id synclient TouchpadOff=0 #bindsym XF86TouchpadOff exec --no-startup-id synclient TouchpadOff=1 -bindsym XF86Suspend exec --no-startup-id lockscreen -bindsym XF86Close kill +#bindsym XF86Suspend exec --no-startup-id lockscreen +#bindsym XF86Close kill #bindsym XF86WebCam exec --no-startup-id camtoggle #bindsym XF86Mail exec --no-startup-id thunderbird #bindsym XF86Messenger exec $term -e weechat diff --git a/.config/mpv/input.conf b/.config/mpv/input.conf new file mode 100755 index 0000000..0ea8571 --- /dev/null +++ b/.config/mpv/input.conf @@ -0,0 +1,6 @@ +l seek 5 +h seek -5 +j seek -60 +k seek 60 +S cycle sub +n cycle_values af loudnorm=I=-30 loudnorm=I=-15 anull diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf new file mode 100644 index 0000000..8d93f3f --- /dev/null +++ b/.config/mpv/mpv.conf @@ -0,0 +1,158 @@ +# +# Example mpv configuration file +# +# Warning: +# +# The commented example options usually do _not_ set the default values. Call +# mpv with --list-options to see the default values for most options. There is +# no builtin or example mpv.conf with all the defaults. +# +# +# Configuration files are read system-wide from /etc/mpv or /usr/local/etc/mpv, +# and per-user from ~/.config/mpv, where per-user settings override +# system-wide settings, all of which are overridden by the command line. +# +# Configuration file settings and the command line options use the same +# underlying mechanisms. Most options can be put into the configuration file +# by dropping the preceding '--'. See the man page for a complete list of +# options. +# +# Lines starting with '#' are comments and are ignored. +# +# See the CONFIGURATION FILES section in the man page +# for a detailed description of the syntax. +# +# Profiles should be placed at the bottom of the configuration file to ensure +# that settings wanted as defaults are not restricted to specific profiles. + +################## +# video settings # +################## + +# Start in fullscreen mode by default. +#fs=yes + +# force starting with centered window +#geometry=50%:50% + +# don't allow a new window to have a size larger than 90% of the screen size +#autofit-larger=90%x90% + +# Do not close the window on exit. +#keep-open=yes + +# Do not wait with showing the video window until it has loaded. (This will +# resize the window once video is loaded. Also always shows a window with +# audio.) +#force-window=immediate + +# Disable the On Screen Controller (OSC). +#osc=no + +# Keep the player window on top of all other windows. +#ontop=yes + +# Default video output to Xorg only +vo=xv + +# Specify fast video rendering preset (for --vo= only) +# Recommended for mobile devices or older hardware with limited processing power +#profile=fast + +# Specify high quality video rendering preset (for --vo= only) +# Offers superior image fidelity and visual quality for an enhanced viewing +# experience on capable hardware +#profile=high-quality + +# Force video to lock on the display's refresh rate, and change video and audio +# speed to some degree to ensure synchronous playback - can cause problems +# with some drivers and desktop environments. +#video-sync=display-resample + +# Enable hardware decoding if available. Often, this does not work with all +# video outputs, but should work well with default settings on most systems. +# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs +# may or may not help. +hwdec=auto + +################## +# audio settings # +################## + +# Specify default audio device. You can list devices with: --audio-device=help +# The option takes the device string (the stuff between the '...'). +#audio-device=alsa/default + +# Do not filter audio to keep pitch when changing playback speed. +#audio-pitch-correction=no + +# Output 5.1 audio natively, and upmix/downmix audio with a different format. +#audio-channels=5.1 +# Disable any automatic remix, _if_ the audio output accepts the audio format. +# of the currently played file. See caveats mentioned in the manpage. +# (The default is "auto-safe", see manpage.) +#audio-channels=auto + +################## +# other settings # +################## +# +screenshot-template="%F_%p-%#01n" + +# automatically save the current playback position on quit +save-position-on-quit + +# Pretend to be a web browser. Might fix playback with some streaming sites, +# but also will break with shoutcast streams. +#user-agent="Mozilla/5.0" + +# cache settings +# +# Use a large seekable RAM cache even for local input. +#cache=yes +# +# Use extra large RAM cache (needs cache=yes to make it useful). +#demuxer-max-bytes=500M +#demuxer-max-back-bytes=100M +# +# Disable the behavior that the player will pause if the cache goes below a +# certain fill size. +#cache-pause=no +# +# Store cache payload on the hard disk instead of in RAM. (This may negatively +# impact performance unless used for slow input such as network.) +#cache-dir=~/.cache/ +#cache-on-disk=yes + +# Display English subtitles if available. +slang=en + +# Play French audio if available, fall back to English otherwise. +alang=fr,en + +# Change subtitle encoding. For Arabic subtitles use 'cp1256'. +# If the file seems to be valid UTF-8, prefer UTF-8. +# (You can add '+' in front of the codepage to force it.) +#sub-codepage=cp1256 + +# You can also include other configuration files. +#include=/path/to/the/file/you/want/to/include + +############ +# Profiles # +############ + +# The options declared as part of profiles override global default settings, +# but only take effect when the profile is active. + +# The following profile can be enabled on the command line with: --profile=eye-cancer + +#[eye-cancer] +#sharpen=5 + +############# +# Streaming # +############# +# Youtube Support +script-opts=ytdl_hook-ytdl_path=/usr/bin/yt-dlp +ytdl-format=bestvideo[height<=?1080][fps<=?30][vcodec!=?vp9]+bestaudio/best diff --git a/.config/mpv/scripts/sponsorblock_minimal.lua b/.config/mpv/scripts/sponsorblock_minimal.lua new file mode 100644 index 0000000..ebcc26d --- /dev/null +++ b/.config/mpv/scripts/sponsorblock_minimal.lua @@ -0,0 +1,130 @@ +-- sponsorblock_minimal.lua +-- +-- This script skips sponsored segments of YouTube videos +-- using data from https://github.com/ajayyy/SponsorBlock + +local opt = require 'mp.options' +local utils = require 'mp.utils' + +local ON = false +local ranges = nil + +local options = { + server = "https://sponsor.ajay.app/api/skipSegments", + + -- Categories to fetch and skip + categories = '"sponsor","intro","outro","interaction","selfpromo"', + + -- Set this to "true" to use sha256HashPrefix instead of videoID + hash = "" +} + +opt.read_options(options) + +function skip_ads(name,pos) + if pos then + for _, i in pairs(ranges) do + v = i.segment[2] + if i.segment[1] <= pos and v > pos then + --this message may sometimes be wrong + --it only seems to be a visual thing though + mp.osd_message(("[sponsorblock] skipping forward %ds"):format(math.floor(v-mp.get_property("time-pos")))) + --need to do the +0.01 otherwise mpv will start spamming skip sometimes + --example: https://www.youtube.com/watch?v=4ypMJzeNooo + mp.set_property("time-pos",v+0.01) + return + end + end + end +end + +function file_loaded() + local video_path = mp.get_property("path", "") + local video_referer = string.match(mp.get_property("http-header-fields", ""), "Referer:([^,]+)") or "" + + local urls = { + "ytdl://youtu%.be/([%w-_]+).*", + "ytdl://w?w?w?%.?youtube%.com/v/([%w-_]+).*", + "https?://youtu%.be/([%w-_]+).*", + "https?://w?w?w?%.?youtube%.com/v/([%w-_]+).*", + "/watch.*[?&]v=([%w-_]+).*", + "/embed/([%w-_]+).*", + "^ytdl://([%w-_]+)$", + "-([%w-_]+)%." + } + local youtube_id = nil + local purl = mp.get_property("metadata/by-key/PURL", "") + for i,url in ipairs(urls) do + youtube_id = youtube_id or string.match(video_path, url) or string.match(video_referer, url) or string.match(purl, url) + if youtube_id then break end + end + + if not youtube_id or string.len(youtube_id) < 11 then return end + youtube_id = string.sub(youtube_id, 1, 11) + + local args = {"curl", "-L", "-s", "-G", "--data-urlencode", ("categories=[%s]"):format(options.categories)} + local url = options.server + if options.hash == "true" then + local sha = mp.command_native{ + name = "subprocess", + capture_stdout = true, + args = {"sha256sum"}, + stdin_data = youtube_id + } + url = ("%s/%s"):format(url, string.sub(sha.stdout, 0, 4)) + else + table.insert(args, "--data-urlencode") + table.insert(args, "videoID=" .. youtube_id) + end + table.insert(args, url) + + local sponsors = mp.command_native{ + name = "subprocess", + capture_stdout = true, + playback_only = false, + args = args + } + if sponsors.stdout then + local json = utils.parse_json(sponsors.stdout) + if type(json) == "table" then + if options.hash == "true" then + for _, i in pairs(json) do + if i.videoID == youtube_id then + ranges = i.segments + break + end + end + else + ranges = json + end + + if ranges then + ON = true + mp.add_key_binding("b","sponsorblock",toggle) + mp.observe_property("time-pos", "native", skip_ads) + end + end + end +end + +function end_file() + if not ON then return end + mp.unobserve_property(skip_ads) + ranges = nil + ON = false +end + +function toggle() + if ON then + mp.unobserve_property(skip_ads) + mp.osd_message("[sponsorblock] off") + ON = false + else + mp.observe_property("time-pos", "native", skip_ads) + mp.osd_message("[sponsorblock] on") + ON = true + end +end + +mp.register_event("file-loaded", file_loaded) +mp.register_event("end-file", end_file) diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml index 995998b..706e79f 100644 --- a/.config/qutebrowser/autoconfig.yml +++ b/.config/qutebrowser/autoconfig.yml @@ -9,4 +9,4 @@ settings: content.javascript.enabled: global: true statusbar.show: - global: never + global: always diff --git a/.config/x11/xinitrc b/.config/x11/xinitrc index cd658cf..ab56ec4 100755 --- a/.config/x11/xinitrc +++ b/.config/x11/xinitrc @@ -9,7 +9,6 @@ # source them here with the line below. export STATUSBAR="i3blocks" -[[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/x11/Xresources ]] && xrdb -merge -I${XDG_CONFIG_HOME:-$HOME/.config}/x11/Xresources . ~/.xprofile dbus-update-activation-environment DISPLAY XAUTHORITY WAYLAND_DISPLAY ssh-agent i3 diff --git a/.config/x11/xprofile b/.config/x11/xprofile index 4e7dfa0..0f3c887 100755 --- a/.config/x11/xprofile +++ b/.config/x11/xprofile @@ -13,6 +13,7 @@ # ! pidof pulseaudio >/dev/null && # setsid -f pulseaudio --start >/dev/null 2>&1 +[[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/x11/Xresources ]] && xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/Xresources remaps & # run the remaps script, switching caps/esc and more; check it for more info setbg & # set the background with the `setbg` script mpd & # music player daemon-you might prefer it as a service though