Initial
This commit is contained in:
		
						commit
						be81075e22
					
				
							
								
								
									
										37
									
								
								.config/fish/config.fish
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.config/fish/config.fish
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
if command -vq flatpak
 | 
			
		||||
    set -ga fish_user_paths ~/.local/share/flatpak/exports/bin /var/lib/flatpak/exports/bin
 | 
			
		||||
    set -gx --path XDG_DATA_DIRS /usr/local/share/ /usr/share/ ~/.local/share/flatpak/exports/share
 | 
			
		||||
    for install_dir in (flatpak --installations)
 | 
			
		||||
        set -gxa XDG_DATA_DIRS $install_dir/exports/share
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
egrep "^export " ~/.bash_profile | while read e
 | 
			
		||||
	set var (echo $e | sed -E "s/^export ([A-Za-z_]+)=(.*)\$/\1/")
 | 
			
		||||
	set value (echo $e | sed -E "s/^export ([A-Za-z_]+)=(.*)\$/\2/")
 | 
			
		||||
 | 
			
		||||
	# remove surrounding quotes if existing
 | 
			
		||||
	set value (echo $value | sed -E "s/^\"(.*)\"\$/\1/")
 | 
			
		||||
 | 
			
		||||
	if test $var = "PATH"
 | 
			
		||||
		# replace ":" by spaces. this is how PATH looks for Fish
 | 
			
		||||
		set value (echo $value | sed -E "s/:/ /g")
 | 
			
		||||
 | 
			
		||||
		# use eval because we need to expand the value
 | 
			
		||||
		eval set -xg $var $value
 | 
			
		||||
 | 
			
		||||
		continue
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	# evaluate variables. we can use eval because we most likely just used "$var"
 | 
			
		||||
	set value (eval echo $value)
 | 
			
		||||
 | 
			
		||||
	#echo "set -xg '$var' '$value' (via '$e')"
 | 
			
		||||
	set -xg $var $value
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
if status --is-interactive
 | 
			
		||||
    neofetch
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
set -U fish_user_paths /usr/local/ubin ~/bin ~/go/bin ~/anaconda3/bin $fish_user_paths
 | 
			
		||||
							
								
								
									
										9
									
								
								.config/mpv/f3kdb.vpy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.config/mpv/f3kdb.vpy
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
import vapoursynth as vs
 | 
			
		||||
core = vs.get_core()
 | 
			
		||||
 | 
			
		||||
#core.std.LoadPlugin("/usr/local/lib/libf3kdb.so")
 | 
			
		||||
 | 
			
		||||
clip = video_in
 | 
			
		||||
clip = core.f3kdb.Deband(clip, grainy=0, grainc=0, output_depth=16)
 | 
			
		||||
 | 
			
		||||
clip.set_output()
 | 
			
		||||
							
								
								
									
										208
									
								
								.config/mpv/input.conf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										208
									
								
								.config/mpv/input.conf
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,208 @@
 | 
			
		||||
# mpv keybindings
 | 
			
		||||
#
 | 
			
		||||
# Location of user-defined bindings: ~/.config/mpv/input.conf
 | 
			
		||||
#
 | 
			
		||||
# Lines starting with # are comments. Use SHARP to assign the # key.
 | 
			
		||||
# Copy this file and uncomment and edit the bindings you want to change.
 | 
			
		||||
#
 | 
			
		||||
# List of commands and further details: DOCS/man/input.rst
 | 
			
		||||
# List of special keys: --input-keylist
 | 
			
		||||
# Keybindings testing mode: mpv --input-test --force-window --idle
 | 
			
		||||
#
 | 
			
		||||
# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore').
 | 
			
		||||
#
 | 
			
		||||
# Strings need to be quoted and escaped:
 | 
			
		||||
#   KEY show_text "This is a single backslash: \\ and a quote: \" !"
 | 
			
		||||
#
 | 
			
		||||
# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with
 | 
			
		||||
# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal).
 | 
			
		||||
#
 | 
			
		||||
# The default keybindings are hardcoded into the mpv binary.
 | 
			
		||||
# You can disable them completely with: --no-input-default-bindings
 | 
			
		||||
 | 
			
		||||
# Developer note:
 | 
			
		||||
# On compilation, this file is baked into the mpv binary, and all lines are
 | 
			
		||||
# uncommented (unless '#' is followed by a space) - thus this file defines the
 | 
			
		||||
# default key bindings.
 | 
			
		||||
 | 
			
		||||
# If this is enabled, treat all the following bindings as default.
 | 
			
		||||
#default-bindings start
 | 
			
		||||
 | 
			
		||||
#MOUSE_BTN0 ignore                      # don't do anything
 | 
			
		||||
#MOUSE_BTN0_DBL cycle fullscreen        # toggle fullscreen on/off
 | 
			
		||||
#MOUSE_BTN2 cycle pause                 # toggle pause on/off
 | 
			
		||||
#MOUSE_BTN3 seek 10
 | 
			
		||||
#MOUSE_BTN4 seek -10
 | 
			
		||||
#MOUSE_BTN5 add volume 2
 | 
			
		||||
#MOUSE_BTN6 add volume -2
 | 
			
		||||
 | 
			
		||||
# Mouse wheels, touchpad or other input devices that have axes
 | 
			
		||||
# if the input devices supports precise scrolling it will also scale the
 | 
			
		||||
# numeric value accordingly
 | 
			
		||||
#AXIS_UP    seek 10
 | 
			
		||||
#AXIS_DOWN  seek -10
 | 
			
		||||
#AXIS_LEFT  seek 5
 | 
			
		||||
#AXIS_RIGHT seek -5
 | 
			
		||||
 | 
			
		||||
## Seek units are in seconds, but note that these are limited by keyframes
 | 
			
		||||
RIGHT seek  10
 | 
			
		||||
LEFT  seek -5
 | 
			
		||||
UP    seek  20
 | 
			
		||||
DOWN  seek -20
 | 
			
		||||
# Do smaller, always exact (non-keyframe-limited), seeks with shift.
 | 
			
		||||
# Don't show them on the OSD (no-osd).
 | 
			
		||||
#Shift+RIGHT no-osd seek  1 exact
 | 
			
		||||
#Shift+LEFT  no-osd seek -1 exact
 | 
			
		||||
#Shift+UP    no-osd seek  5 exact
 | 
			
		||||
#Shift+DOWN  no-osd seek -5 exact
 | 
			
		||||
# Skip to previous/next subtitle (subject to some restrictions; see manpage)
 | 
			
		||||
#Ctrl+LEFT   no-osd sub_seek -1
 | 
			
		||||
#Ctrl+RIGHT  no-osd sub_seek  1
 | 
			
		||||
#PGUP add chapter 1                     # skip to next chapter
 | 
			
		||||
#PGDWN add chapter -1                   # skip to previous chapter
 | 
			
		||||
#Shift+PGUP seek 600
 | 
			
		||||
#Shift+PGDWN seek -600
 | 
			
		||||
#[ multiply speed 0.9091                # scale playback speed
 | 
			
		||||
#] multiply speed 1.1
 | 
			
		||||
#{ multiply speed 0.5
 | 
			
		||||
#} multiply speed 2.0
 | 
			
		||||
#BS set speed 1.0                       # reset speed to normal
 | 
			
		||||
#q quit
 | 
			
		||||
#Q quit_watch_later
 | 
			
		||||
#q {encode} quit
 | 
			
		||||
#ESC set fullscreen no
 | 
			
		||||
#ESC {encode} quit
 | 
			
		||||
#p cycle pause                          # toggle pause/playback mode
 | 
			
		||||
#. frame_step                           # advance one frame and pause
 | 
			
		||||
#, frame_back_step                      # go back by one frame and pause
 | 
			
		||||
#SPACE cycle pause
 | 
			
		||||
#> playlist_next                        # skip to next file
 | 
			
		||||
#ENTER playlist_next                    # skip to next file
 | 
			
		||||
#< playlist_prev                        # skip to previous file
 | 
			
		||||
#O osd                                  # cycle through OSD mode
 | 
			
		||||
c cycle osd-fractions
 | 
			
		||||
#o show_progress
 | 
			
		||||
#P show_progress
 | 
			
		||||
#I show_text "${filename}"              # display filename in osd
 | 
			
		||||
#z add sub-delay -0.1                   # subtract 100 ms delay from subs
 | 
			
		||||
#x add sub-delay +0.1                   # add
 | 
			
		||||
#ctrl++ add audio-delay 0.100           # this changes audio/video sync
 | 
			
		||||
#ctrl+- add audio-delay -0.100
 | 
			
		||||
#9 add volume -2
 | 
			
		||||
/ cycle pause
 | 
			
		||||
#0 add volume 2
 | 
			
		||||
#* add volume 2
 | 
			
		||||
#m cycle mute
 | 
			
		||||
#1 add contrast -1
 | 
			
		||||
#2 add contrast 1
 | 
			
		||||
#3 add brightness -1
 | 
			
		||||
#4 add brightness 1
 | 
			
		||||
#5 add gamma -1
 | 
			
		||||
#6 add gamma 1
 | 
			
		||||
#7 add saturation -1
 | 
			
		||||
#8 add saturation 1
 | 
			
		||||
#d cycle framedrop                      # cycle through framedrop modes
 | 
			
		||||
# toggle deinterlacer (automatically inserts or removes required filter)
 | 
			
		||||
d cycle deinterlace
 | 
			
		||||
b cycle deband
 | 
			
		||||
#r add sub-pos -1                       # move subtitles up
 | 
			
		||||
#t add sub-pos +1                       #                down
 | 
			
		||||
#v cycle sub-visibility
 | 
			
		||||
# stretch SSA/ASS subtitles with anamorphic videos to match historical
 | 
			
		||||
#V cycle ass-vsfilter-aspect-compat
 | 
			
		||||
# switch between applying no style overrides to SSA/ASS subtitles, and
 | 
			
		||||
# overriding them almost completely with the normal subtitle style
 | 
			
		||||
#u cycle_values ass-style-override "force" "no"
 | 
			
		||||
#j cycle sub                            # cycle through subtitles
 | 
			
		||||
#J cycle sub down                       # ...backwards
 | 
			
		||||
#SHARP cycle audio                      # switch audio streams
 | 
			
		||||
#_ cycle video
 | 
			
		||||
#T cycle ontop                          # toggle video window ontop of other windows
 | 
			
		||||
#f cycle fullscreen                     # toggle fullscreen
 | 
			
		||||
#s screenshot                           # take a screenshot
 | 
			
		||||
#S screenshot video                     # ...without subtitles
 | 
			
		||||
#Ctrl+s screenshot window               # ...with subtitles and OSD, and scaled
 | 
			
		||||
#Alt+s screenshot each-frame            # automatically screenshot every frame
 | 
			
		||||
#w add panscan -0.1                     # zoom out with -panscan 0 -fs
 | 
			
		||||
#e add panscan +0.1                     #      in
 | 
			
		||||
# cycle video aspect ratios; "-1" is the container aspect
 | 
			
		||||
#A cycle_values video-aspect "16:9" "4:3" "2.35:1" "-1"
 | 
			
		||||
#POWER quit
 | 
			
		||||
#PLAY cycle pause
 | 
			
		||||
#PAUSE cycle pause
 | 
			
		||||
#PLAYPAUSE cycle pause
 | 
			
		||||
#STOP quit
 | 
			
		||||
#FORWARD seek 60
 | 
			
		||||
#REWIND seek -60
 | 
			
		||||
#NEXT playlist_next
 | 
			
		||||
#PREV playlist_prev
 | 
			
		||||
#VOLUME_UP add volume 2
 | 
			
		||||
#VOLUME_DOWN add volume -2
 | 
			
		||||
#MUTE cycle mute
 | 
			
		||||
#CLOSE_WIN quit
 | 
			
		||||
#CLOSE_WIN {encode} quit
 | 
			
		||||
#E cycle edition                        # next edition
 | 
			
		||||
#l ab_loop                              # Set/clear A-B loop points
 | 
			
		||||
#L cycle_values loop "inf" "no"         # toggle infinite looping
 | 
			
		||||
#ctrl+c quit
 | 
			
		||||
 | 
			
		||||
# Apple Remote section
 | 
			
		||||
#AR_PLAY cycle pause
 | 
			
		||||
#AR_PLAY_HOLD quit
 | 
			
		||||
#AR_CENTER cycle pause
 | 
			
		||||
#AR_CENTER_HOLD quit
 | 
			
		||||
#AR_NEXT seek 10
 | 
			
		||||
#AR_NEXT_HOLD seek 120
 | 
			
		||||
#AR_PREV seek -10
 | 
			
		||||
#AR_PREV_HOLD seek -120
 | 
			
		||||
#AR_MENU show_progress
 | 
			
		||||
#AR_MENU_HOLD cycle mute
 | 
			
		||||
#AR_VUP add volume 2
 | 
			
		||||
#AR_VUP_HOLD add chapter 1
 | 
			
		||||
#AR_VDOWN add volume -2
 | 
			
		||||
#AR_VDOWN_HOLD add chapter -1
 | 
			
		||||
 | 
			
		||||
# For dvdnav:// and bdnav://
 | 
			
		||||
 | 
			
		||||
# navigation controls during playback
 | 
			
		||||
#ENTER  {discnav} discnav menu        # DISCNAV MENU
 | 
			
		||||
# BS    {discnav} discnav prev        # DISCNAV PREVIOUS menu (in the order chapter->title->root)
 | 
			
		||||
# navigation controls when showing menu (additionally to the controls above)
 | 
			
		||||
#UP    {discnav-menu} discnav up          # DISCNAV UP
 | 
			
		||||
#DOWN  {discnav-menu} discnav down        # DISCNAV DOWN
 | 
			
		||||
#LEFT  {discnav-menu} discnav left        # DISCNAV LEFT
 | 
			
		||||
#RIGHT {discnav-menu} discnav right       # DISCNAV RIGHT
 | 
			
		||||
#ENTER {discnav-menu} discnav select      # DISCNAV SELECT (ok)
 | 
			
		||||
#MOUSE_BTN0 {discnav-menu} discnav mouse
 | 
			
		||||
#MOUSE_MOVE {discnav-menu} discnav mouse_move
 | 
			
		||||
 | 
			
		||||
# For tv://
 | 
			
		||||
#h cycle tv-channel -1                  # previous channel
 | 
			
		||||
#k cycle tv-channel +1                  # next channel
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Legacy bindings (may or may not be removed in the future)
 | 
			
		||||
#
 | 
			
		||||
#! add chapter -1                       # skip to previous chapter
 | 
			
		||||
#@ add chapter 1                        #         next
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Not assigned by default
 | 
			
		||||
# (not an exhaustive list of unbound commands)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
2 add sub-scale +0.1                  # increase subtitle font size
 | 
			
		||||
1 add sub-scale -0.1                  # decrease subtitle font size
 | 
			
		||||
# ? sub_step -1                         # immediately display next subtitle
 | 
			
		||||
# ? sub_step +1                         #                     previous
 | 
			
		||||
# ? cycle_values window-scale 0.5 2 1   # switch between 1/2, 2x, unresized window size
 | 
			
		||||
# ? cycle colormatrix
 | 
			
		||||
# ? add audio-delay 0.100               # this changes audio/video sync
 | 
			
		||||
# ? add audio-delay -0.100
 | 
			
		||||
# ? cycle angle                         # switch DVD/Bluray angle
 | 
			
		||||
# ? add balance -0.1                    # adjust audio balance in favor of left
 | 
			
		||||
# ? add balance 0.1                     #                                  right
 | 
			
		||||
# ? cycle sub-forced-only               # toggle DVD forced subs
 | 
			
		||||
# ? cycle program                       # cycle transport stream programs
 | 
			
		||||
# ? stop                                # stop playback (quit or enter idle mode)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										74
									
								
								.config/mpv/motioninterpolation.vpy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								.config/mpv/motioninterpolation.vpy
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,74 @@
 | 
			
		||||
# vim: set ft=python:
 | 
			
		||||
 | 
			
		||||
# see the README at https://gist.github.com/phiresky/4bfcfbbd05b3c2ed8645
 | 
			
		||||
# source: https://github.com/mpv-player/mpv/issues/2149
 | 
			
		||||
# source: https://github.com/mpv-player/mpv/issues/566
 | 
			
		||||
# source: https://github.com/haasn/gentoo-conf/blob/nanodesu/home/nand/.mpv/filters/mvtools.vpy
 | 
			
		||||
 | 
			
		||||
import vapoursynth
 | 
			
		||||
 | 
			
		||||
core = vapoursynth.get_core()
 | 
			
		||||
# ref: http://avisynth.org.ru/mvtools/mvtools2.html#functions
 | 
			
		||||
# default is 400, less means interpolation will only happen when it will work well
 | 
			
		||||
ignore_threshold=140
 | 
			
		||||
# if n% of blocks change more than threshold then don't interpolate at all (default is 51%)
 | 
			
		||||
scene_change_percentage=15
 | 
			
		||||
 | 
			
		||||
dst_fps = display_fps
 | 
			
		||||
# Interpolating to fps higher than 60 is too CPU-expensive, smoothmotion can handle the rest.
 | 
			
		||||
# while (dst_fps > 60):
 | 
			
		||||
#    dst_fps /= 2
 | 
			
		||||
 | 
			
		||||
if "video_in" in globals():
 | 
			
		||||
    # realtime
 | 
			
		||||
    clip = video_in
 | 
			
		||||
    # Needed because clip FPS is missing
 | 
			
		||||
    src_fps_num = int(container_fps * 1e8)
 | 
			
		||||
    src_fps_den = int(1e8)
 | 
			
		||||
    clip = core.std.AssumeFPS(clip, fpsnum = src_fps_num, fpsden = src_fps_den)
 | 
			
		||||
else:
 | 
			
		||||
    # run with vspipe
 | 
			
		||||
    clip = core.ffms2.Source(source=in_filename)
 | 
			
		||||
    dst_fps=float(dst_fps)
 | 
			
		||||
 | 
			
		||||
# resolution in megapixels. 1080p ≈ 2MP, 720p ≈ 1MP
 | 
			
		||||
mpix = clip.width * clip.height / 1000000
 | 
			
		||||
 | 
			
		||||
# Skip interpolation for >1080p or 60 Hz content due to performance
 | 
			
		||||
if not (mpix > 2.5 or clip.fps_num/clip.fps_den > 59):
 | 
			
		||||
    analParams = {
 | 
			
		||||
        'overlap': 0,
 | 
			
		||||
        'search': 3,
 | 
			
		||||
        'truemotion': True,
 | 
			
		||||
        #'chrome': True,
 | 
			
		||||
        #'blksize':16,
 | 
			
		||||
        #'searchparam':1
 | 
			
		||||
    }
 | 
			
		||||
    blockParams = {
 | 
			
		||||
        'thscd1': ignore_threshold,
 | 
			
		||||
        'thscd2': int(scene_change_percentage*255/100),
 | 
			
		||||
        'mode': 3,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if mpix > 1.5:
 | 
			
		||||
        # can't handle these on Full HD with Intel i5-2500k
 | 
			
		||||
        # see the description of these parameters in http://avisynth.org.ru/mvtools/mvtools2.html#functions
 | 
			
		||||
        analParams['search'] = 0
 | 
			
		||||
        blockParams['mode'] = 0
 | 
			
		||||
        quality = 'low'
 | 
			
		||||
    else:
 | 
			
		||||
        quality = 'high'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    dst_fps_num = int(dst_fps * 1e4)
 | 
			
		||||
    dst_fps_den = int(1e4)
 | 
			
		||||
    print("Reflowing from {} fps to {} fps (quality={})".format(clip.fps_num/clip.fps_den,dst_fps_num/dst_fps_den,quality))
 | 
			
		||||
    
 | 
			
		||||
    sup  = core.mv.Super(clip, pel=2)
 | 
			
		||||
    bvec = core.mv.Analyse(sup, isb=True, **analParams)
 | 
			
		||||
    fvec = core.mv.Analyse(sup, isb=False, **analParams)
 | 
			
		||||
    clip = core.mv.BlockFPS(clip, sup, bvec, fvec, 
 | 
			
		||||
            num=dst_fps_num, den=dst_fps_den, 
 | 
			
		||||
            **blockParams)
 | 
			
		||||
 | 
			
		||||
clip.set_output()
 | 
			
		||||
							
								
								
									
										151
									
								
								.config/mpv/mpv.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								.config/mpv/mpv.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,151 @@
 | 
			
		||||
#
 | 
			
		||||
# mpv configuration file
 | 
			
		||||
#
 | 
			
		||||
# Configuration files are read system-wide from /usr/local/etc/mpv.conf
 | 
			
		||||
# and per-user from ~/.config/mpv/mpv.conf, 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.
 | 
			
		||||
#
 | 
			
		||||
# Note that the commented example options usually do _not_ set the default
 | 
			
		||||
# values. Calling mpv with --list-options is a nice way to see the default
 | 
			
		||||
# values for most options.
 | 
			
		||||
 | 
			
		||||
input-unix-socket=~/.config/mpv/mpv.sock
 | 
			
		||||
 | 
			
		||||
##################
 | 
			
		||||
# video settings #
 | 
			
		||||
##################
 | 
			
		||||
 | 
			
		||||
no-border
 | 
			
		||||
no-osd-bar
 | 
			
		||||
osd-level=0
 | 
			
		||||
osd-fractions
 | 
			
		||||
 | 
			
		||||
# Specify default video driver (see --vo=help for a list).
 | 
			
		||||
#vo=vdpau
 | 
			
		||||
 | 
			
		||||
# 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%
 | 
			
		||||
 | 
			
		||||
# Disable the On Screen Controller (OSC).
 | 
			
		||||
#osc=no
 | 
			
		||||
 | 
			
		||||
# Keep the player window on top of all other windows.
 | 
			
		||||
#ontop=yes
 | 
			
		||||
 | 
			
		||||
##################
 | 
			
		||||
# audio settings #
 | 
			
		||||
##################
 | 
			
		||||
 | 
			
		||||
# Specify default audio driver (see --ao=help for a list).
 | 
			
		||||
#ao=alsa
 | 
			
		||||
 | 
			
		||||
# Disable softvol usage, and always use the system mixer if available.
 | 
			
		||||
#softvol=no
 | 
			
		||||
 | 
			
		||||
# Scale audio tempo by playback speed without altering pitch. (By default does
 | 
			
		||||
# nothing if playback speed is not changed. May introduce artifacts.)
 | 
			
		||||
#af=scaletempo
 | 
			
		||||
 | 
			
		||||
# 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.
 | 
			
		||||
#audio-channels=empty
 | 
			
		||||
audio-normalize-downmix=yes
 | 
			
		||||
 | 
			
		||||
##################
 | 
			
		||||
# other settings #
 | 
			
		||||
##################
 | 
			
		||||
 | 
			
		||||
# 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 8MB input cache by default. The cache is enabled for network streams only.
 | 
			
		||||
#cache-default=8192
 | 
			
		||||
#
 | 
			
		||||
# Use 8MB input cache for everything, even local files.
 | 
			
		||||
#cache=8192
 | 
			
		||||
#
 | 
			
		||||
# If a seek is issued, and the target is 1024KB past the cached range, then
 | 
			
		||||
# keep reading until the seek target is hit, instead of doing a real seek.
 | 
			
		||||
#cache-seek-min=1024
 | 
			
		||||
#
 | 
			
		||||
# Disable the behavior that the player will pause if the cache goes below a
 | 
			
		||||
# certain fill size.
 | 
			
		||||
#cache-pause=no
 | 
			
		||||
#
 | 
			
		||||
# Read ahead about 5 seconds of audio and video packets.
 | 
			
		||||
#demuxer-readahead-secs=5.0
 | 
			
		||||
 | 
			
		||||
# Display English subtitles if available.
 | 
			
		||||
slang=en
 | 
			
		||||
 | 
			
		||||
# Play Finnish audio if available, fall back to English otherwise.
 | 
			
		||||
alang=jpn,en
 | 
			
		||||
 | 
			
		||||
# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
 | 
			
		||||
# If the file seems to be valid UTF-8, prefer UTF-8.
 | 
			
		||||
#sub-codepage=utf8:cp1256
 | 
			
		||||
 | 
			
		||||
# Enable hardware decoding if available. Often, this requires using an certain
 | 
			
		||||
# video output, otherwise no hardware decoding will be used.
 | 
			
		||||
#hwdec=auto
 | 
			
		||||
 | 
			
		||||
############
 | 
			
		||||
# 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=vdpau
 | 
			
		||||
 | 
			
		||||
#[vdpau]
 | 
			
		||||
# The profile forces the vdpau VO.
 | 
			
		||||
#vo=vdpau
 | 
			
		||||
# Use hardware decoding (this might break playback of some h264 files)
 | 
			
		||||
#hwdec=vdpau
 | 
			
		||||
# Most video filters do not work with hardware decoding.
 | 
			
		||||
#vf-clr=yes
 | 
			
		||||
 | 
			
		||||
#vo=opengl-hq
 | 
			
		||||
#vo=opengl-hq:interpolation
 | 
			
		||||
hwdec=vaapi
 | 
			
		||||
#hwdec=cuda
 | 
			
		||||
#hwdec=auto
 | 
			
		||||
vo=gpu
 | 
			
		||||
 | 
			
		||||
video-sync=display-resample
 | 
			
		||||
 | 
			
		||||
#vf=dejudder
 | 
			
		||||
#vf=format=yuv420p,vapoursynth=~~/motioninterpolation.vpy:4:4
 | 
			
		||||
 | 
			
		||||
# You can also include other configuration files.
 | 
			
		||||
#include=/path/to/the/file/you/want/to/include
 | 
			
		||||
 | 
			
		||||
screenshot-format=png
 | 
			
		||||
screenshot-template="~/Desktop/%tF %tH-%tM-%tS screenshot"
 | 
			
		||||
fullscreen
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										84
									
								
								.config/mpv/shaders/deband.glsl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								.config/mpv/shaders/deband.glsl
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,84 @@
 | 
			
		||||
// GLSL debanding shader, use as: source-shader=path/to/deband.glsl
 | 
			
		||||
// (Loosely based on flash3kyuu_deband, but expanded to multiple iterations)
 | 
			
		||||
 | 
			
		||||
//------------ Configuration section ------------
 | 
			
		||||
// The threshold of difference below which a pixel is considered to be part of
 | 
			
		||||
// a gradient. Higher = more debanding, but setting it too high diminishes image
 | 
			
		||||
// details.
 | 
			
		||||
#define THRESHOLD 64
 | 
			
		||||
 | 
			
		||||
// The range (in source pixels) at which to sample for neighbours. Higher values
 | 
			
		||||
// will find more gradients, but lower values will deband more aggressively.
 | 
			
		||||
#define RANGE 8
 | 
			
		||||
 | 
			
		||||
// The number of debanding iterations to perform. Each iteration samples from
 | 
			
		||||
// random positions, so increasing the number of iterations is likely to
 | 
			
		||||
// increase the debanding quality. Conversely, it slows the shader down.
 | 
			
		||||
// (Each iteration will use a multiple of the configured RANGE, and a
 | 
			
		||||
// successively lower THRESHOLD - so setting it much higher has little effect)
 | 
			
		||||
#define ITERATIONS 4
 | 
			
		||||
 | 
			
		||||
// (Optional) Add some extra noise to the image. This significantly helps cover
 | 
			
		||||
// up remaining banding and blocking artifacts, at comparatively little visual
 | 
			
		||||
// quality. Higher = more grain. Setting it to 0 disables the effect.
 | 
			
		||||
#define GRAIN 48
 | 
			
		||||
 | 
			
		||||
// Note: If performance is too slow, try eg. RANGE=16 ITERATIONS=2. In general,
 | 
			
		||||
// an increase in the number of ITERATIONS should roughly correspond to a
 | 
			
		||||
// decrease in RANGE and perhaps an increase in THRESHOLD.
 | 
			
		||||
//------------ End of configuration ------------
 | 
			
		||||
 | 
			
		||||
// Wide usage friendly PRNG, shamelessly stolen from a GLSL tricks forum post
 | 
			
		||||
float mod289(float x)  { return x - floor(x / 289.0) * 289.0; }
 | 
			
		||||
float permute(float x) { return mod289((34.0*x + 1.0) * x); }
 | 
			
		||||
float rand(float x)    { return fract(x / 41.0); }
 | 
			
		||||
 | 
			
		||||
// Helper: Calculate a stochastic approximation of the avg color around a pixel
 | 
			
		||||
vec4 average(sampler2D tex, vec2 pos, float range, inout float h)
 | 
			
		||||
{
 | 
			
		||||
    // Compute a random rangle and distance
 | 
			
		||||
    float dist = rand(h) * range;     h = permute(h);
 | 
			
		||||
    float dir  = rand(h) * 6.2831853; h = permute(h);
 | 
			
		||||
 | 
			
		||||
    vec2 pt = dist / image_size;
 | 
			
		||||
    vec2 o = vec2(cos(dir), sin(dir));
 | 
			
		||||
 | 
			
		||||
    // Sample at quarter-turn intervals around the source pixel
 | 
			
		||||
    vec4 ref[4];
 | 
			
		||||
    ref[0] = texture(tex, pos + pt * vec2( o.x,  o.y));
 | 
			
		||||
    ref[1] = texture(tex, pos + pt * vec2(-o.y,  o.x));
 | 
			
		||||
    ref[2] = texture(tex, pos + pt * vec2(-o.x, -o.y));
 | 
			
		||||
    ref[3] = texture(tex, pos + pt * vec2( o.y, -o.x));
 | 
			
		||||
 | 
			
		||||
    // Return the (normalized) average
 | 
			
		||||
    return cmul*(ref[0] + ref[1] + ref[2] + ref[3])/4.0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
vec4 sample(sampler2D tex, vec2 pos, vec2 tex_size)
 | 
			
		||||
{
 | 
			
		||||
    float h;
 | 
			
		||||
    // Initialize the PRNG by hashing the position + a random uniform
 | 
			
		||||
    vec3 m = vec3(pos, random) + vec3(1.0);
 | 
			
		||||
    h = permute(permute(permute(m.x)+m.y)+m.z);
 | 
			
		||||
 | 
			
		||||
    // Sample the source pixel
 | 
			
		||||
    vec4 col = cmul*texture(tex, pos);
 | 
			
		||||
 | 
			
		||||
    for (int i = 1; i <= ITERATIONS; i++) {
 | 
			
		||||
        // Use the average instead if the difference is below the threshold
 | 
			
		||||
        vec4 avg = average(tex, pos, i*RANGE, h);
 | 
			
		||||
        vec4 diff = abs(col - avg);
 | 
			
		||||
        col = mix(avg, col, greaterThan(diff, vec4(THRESHOLD/(i*16384.0))));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Add some random noise to the output
 | 
			
		||||
    vec3 noise;
 | 
			
		||||
    noise.x = rand(h); h = permute(h);
 | 
			
		||||
    noise.y = rand(h); h = permute(h);
 | 
			
		||||
    noise.z = rand(h); h = permute(h);
 | 
			
		||||
    col.rgb += (GRAIN/8192.0) * (noise - vec3(0.5));
 | 
			
		||||
 | 
			
		||||
    return col;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// vim: set ft=glsl:
 | 
			
		||||
							
								
								
									
										261
									
								
								.config/mpv/xrandr.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								.config/mpv/xrandr.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,261 @@
 | 
			
		||||
-- use xrandr command to set output to best fitting fps rate
 | 
			
		||||
--  when playing videos with mpv.
 | 
			
		||||
 | 
			
		||||
utils = require 'mp.utils'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
xrandr_blacklist = {}
 | 
			
		||||
function xrandr_parse_blacklist()
 | 
			
		||||
	-- Parse the optional "blacklist" from a string into an array for later use.
 | 
			
		||||
	-- For now, we only support a list of rates, since the "mode" is not subject
 | 
			
		||||
	--  to automatic change (mpv is better at scaling than most displays) and
 | 
			
		||||
	--  this also makes the blacklist option more easy to specify:
 | 
			
		||||
	local b = mp.get_opt("xrandr-blacklist")
 | 
			
		||||
	if (b == nil) then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	local i = 1
 | 
			
		||||
	for s in string.gmatch(b, "([^, ]+)") do
 | 
			
		||||
		xrandr_blacklist[i] = 0.0 + s
 | 
			
		||||
		i = i+1
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
xrandr_parse_blacklist()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function xrandr_check_blacklist(mode, rate)
 | 
			
		||||
	-- check if (mode, rate) is black-listed - e.g. because the
 | 
			
		||||
	--  computer display output is known to be incompatible with the
 | 
			
		||||
	--  display at this specific mode/rate 
 | 
			
		||||
	
 | 
			
		||||
	for i=1,#xrandr_blacklist do
 | 
			
		||||
		r = xrandr_blacklist[i]
 | 
			
		||||
		
 | 
			
		||||
		if (r == rate) then
 | 
			
		||||
			mp.msg.log("info", "will not use mode '" .. mode .. "' with rate " .. rate .. " because option -script-opts=xrandr-blacklist said so")
 | 
			
		||||
			return true
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	return false
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
xrandr_detect_done = false
 | 
			
		||||
xrandr_modes = {}
 | 
			
		||||
xrandr_connected_outputs = {}
 | 
			
		||||
function xrandr_detect_available_rates()
 | 
			
		||||
	if (xrandr_detect_done) then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	xrandr_detect_done = true
 | 
			
		||||
	
 | 
			
		||||
	-- invoke xrandr to find out which fps rates are available on which outputs
 | 
			
		||||
	
 | 
			
		||||
	local p = {}
 | 
			
		||||
	p["cancellable"] = false
 | 
			
		||||
	p["args"] = {}
 | 
			
		||||
	p["args"][1] = "xrandr"
 | 
			
		||||
	p["args"][2] = "-q"
 | 
			
		||||
	local res = utils.subprocess(p)
 | 
			
		||||
	
 | 
			
		||||
	if (res["error"] ~= nil) then
 | 
			
		||||
		mp.msg.log("info", "failed to execute 'xrand -q', error message: " .. res["error"])
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	mp.msg.log("v","xrandr -q\n" .. res["stdout"])
 | 
			
		||||
 | 
			
		||||
	local output_idx = 1
 | 
			
		||||
	for output in string.gmatch(res["stdout"], '\n([^ ]+) connected') do
 | 
			
		||||
		
 | 
			
		||||
		table.insert(xrandr_connected_outputs, output)
 | 
			
		||||
		
 | 
			
		||||
		-- the first line with a "*" after the match contains the mode associated with the mode
 | 
			
		||||
		local mls = string.match(res["stdout"], "\n" .. string.gsub(output, "%p", "%%%1") .. " connected.*")
 | 
			
		||||
		local r
 | 
			
		||||
		local mode
 | 
			
		||||
		mode, r = string.match(mls, '\n   ([0-9x]+) ([^*\n]*%*[^\n]*)')
 | 
			
		||||
		
 | 
			
		||||
		if (r == nil) then
 | 
			
		||||
			-- if no refresh rate is reported active for an output by xrandr,
 | 
			
		||||
			-- search for the mode that is "recommended" (marked by "+" in xrandr's output)
 | 
			
		||||
			mode, r = string.match(mls, '\n   ([0-9x]+) ([^+\n]*%+[^\n]*)')
 | 
			
		||||
		end
 | 
			
		||||
		mp.msg.log("info", "output " .. output .. " mode=" .. mode .. " refresh rates = " .. r)
 | 
			
		||||
		
 | 
			
		||||
		xrandr_modes[output] = { mode = mode, rates_s = r, rates = {} }
 | 
			
		||||
		local i = 1
 | 
			
		||||
		for s in string.gmatch(r, "([^ +*]+)") do
 | 
			
		||||
			
 | 
			
		||||
			-- check if rate "r" is black-listed - this is checked here because 
 | 
			
		||||
			if (not xrandr_check_blacklist(mode, 0.0 + s)) then
 | 
			
		||||
				xrandr_modes[output].rates[i] = 0.0 + s
 | 
			
		||||
				i = i+1
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		
 | 
			
		||||
		output_idx = output_idx + 1
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function xrandr_find_best_fitting_rate(fps, output)
 | 
			
		||||
	
 | 
			
		||||
	local xrandr_rates = xrandr_modes[output].rates
 | 
			
		||||
	
 | 
			
		||||
	-- try integer multipliers of 1 to 3, in that order
 | 
			
		||||
	for m=1,3 do
 | 
			
		||||
		
 | 
			
		||||
		-- check for a "perfect" match (where fps rates of e.g. 60.0 are not equal 59.9 or such)
 | 
			
		||||
		for i=1,#xrandr_rates do
 | 
			
		||||
			r = xrandr_rates[i]
 | 
			
		||||
			if (math.abs(r-(m * fps)) < 0.001) then
 | 
			
		||||
				return r
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	for m=1,3 do
 | 
			
		||||
		
 | 
			
		||||
		-- check for a "less precise" match (where fps rates of e.g. 60.0 and 59.9 are assumed "equal")
 | 
			
		||||
		for i=1,#xrandr_rates do
 | 
			
		||||
			r = xrandr_rates[i]
 | 
			
		||||
			if (math.abs(r-(m * fps)) < 0.2) then
 | 
			
		||||
				if (m == 1) then
 | 
			
		||||
					-- pass the original rate to xrandr later, because
 | 
			
		||||
					-- e.g. a 23.976 Hz mode might be displayed as "24.0",
 | 
			
		||||
					-- but still xrandr may set the better matching mode
 | 
			
		||||
					-- if the exact number is passed
 | 
			
		||||
					return fps
 | 
			
		||||
				else
 | 
			
		||||
					return r
 | 
			
		||||
				end
 | 
			
		||||
				
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	-- if no known frame rate is any "good", use the highest available frame rate,
 | 
			
		||||
	-- as this will probably cause the least "jitter"
 | 
			
		||||
 | 
			
		||||
	local mr = 0.0
 | 
			
		||||
	for i=1,#xrandr_rates do
 | 
			
		||||
		r = xrandr_rates[i]
 | 
			
		||||
		-- mp.msg.log("v","r=" .. r .. " mr=" .. mr)
 | 
			
		||||
		if (r > mr) then
 | 
			
		||||
			mr = r
 | 
			
		||||
		end
 | 
			
		||||
	end	
 | 
			
		||||
	
 | 
			
		||||
	return mr	
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
xrandr_active_outputs = {}
 | 
			
		||||
function xrandr_set_active_outputs()
 | 
			
		||||
	local dn = mp.get_property("display-names")
 | 
			
		||||
	
 | 
			
		||||
	if (dn ~= nil) then
 | 
			
		||||
		mp.msg.log("v","display-names=" .. dn)
 | 
			
		||||
		xrandr_active_outputs = {}
 | 
			
		||||
		for w in (dn .. ","):gmatch("([^,]*),") do 
 | 
			
		||||
			table.insert(xrandr_active_outputs, w)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- last detected non-nil video frame rate:
 | 
			
		||||
xrandr_cfps = nil
 | 
			
		||||
 | 
			
		||||
-- for each output, we remember which refresh rate we set last, so
 | 
			
		||||
-- we do not unnecessarily set the same refresh rate again
 | 
			
		||||
xrandr_previously_set = {}
 | 
			
		||||
 | 
			
		||||
function xrandr_set_rate()
 | 
			
		||||
 | 
			
		||||
	local f = mp.get_property_native("fps")
 | 
			
		||||
	if (f == nil or f == xrandr_cfps) then
 | 
			
		||||
		-- either no change or no frame rate information, so don't set anything
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	xrandr_cfps = f
 | 
			
		||||
 | 
			
		||||
	xrandr_detect_available_rates()
 | 
			
		||||
	
 | 
			
		||||
	xrandr_set_active_outputs()
 | 
			
		||||
	
 | 
			
		||||
	local vdpau_hack = false
 | 
			
		||||
	local old_vid = nil
 | 
			
		||||
	local old_position = nil
 | 
			
		||||
	if (mp.get_property("options/vo") == "vdpau") then
 | 
			
		||||
		-- enable wild hack: need to close and re-open video for vdpau,
 | 
			
		||||
		-- because vdpau barfs if xrandr is run while it is in use
 | 
			
		||||
		
 | 
			
		||||
		vdpau_hack = true
 | 
			
		||||
		old_position = mp.get_property("time-pos")
 | 
			
		||||
		old_vid = mp.get_property("vid")
 | 
			
		||||
		mp.set_property("vid", "no")
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	local outs = {}
 | 
			
		||||
	if (#xrandr_active_outputs == 0) then
 | 
			
		||||
		-- No active outputs - probably because vo (like with vdpau) does
 | 
			
		||||
		-- not provide the information which outputs are covered.
 | 
			
		||||
		-- As a fall-back, let's assume all connected outputs are relevant.
 | 
			
		||||
		mp.msg.log("v","no output is known to be used by mpv, assuming all connected outputs are used.")
 | 
			
		||||
		outs = xrandr_connected_outputs
 | 
			
		||||
	else
 | 
			
		||||
		outs = xrandr_active_outputs
 | 
			
		||||
	end
 | 
			
		||||
		
 | 
			
		||||
	-- iterate over all relevant outputs used by mpv's output:
 | 
			
		||||
	for n, output in ipairs(outs) do
 | 
			
		||||
		
 | 
			
		||||
		local bfr = xrandr_find_best_fitting_rate(xrandr_cfps, output)
 | 
			
		||||
		
 | 
			
		||||
		if (bfr == 0.0) then
 | 
			
		||||
			mp.msg.log("info", "no non-blacklisted rate available, not invoking xrandr")
 | 
			
		||||
		else
 | 
			
		||||
			mp.msg.log("info", "container fps is " .. xrandr_cfps .. "Hz, for output " .. output .. " mode " .. xrandr_modes[output].mode .. " the best fitting display fps rate is " .. bfr .. "Hz")
 | 
			
		||||
 | 
			
		||||
			if (bfr == xrandr_previously_set[output]) then
 | 
			
		||||
				mp.msg.log("v", "output " .. output .. " was already set to " .. bfr .. "Hz before - not changing")
 | 
			
		||||
			else 
 | 
			
		||||
				-- invoke xrandr to set the best fitting refresh rate for output 
 | 
			
		||||
				local p = {}
 | 
			
		||||
				p["cancellable"] = false
 | 
			
		||||
				p["args"] = {}
 | 
			
		||||
				p["args"][1] = "xrandr"
 | 
			
		||||
				p["args"][2] = "--output"
 | 
			
		||||
				p["args"][3] = output
 | 
			
		||||
				p["args"][4] = "--mode"
 | 
			
		||||
				p["args"][5] = xrandr_modes[output].mode
 | 
			
		||||
				p["args"][6] = "--rate"
 | 
			
		||||
				p["args"][7] = bfr
 | 
			
		||||
 | 
			
		||||
				local res = utils.subprocess(p)
 | 
			
		||||
 | 
			
		||||
				if (res["error"] ~= nil) then
 | 
			
		||||
					mp.msg.log("error", "failed to set refresh rate for output " .. output .. " using xrandr, error message: " .. res["error"])
 | 
			
		||||
				else
 | 
			
		||||
					xrandr_previously_set[output] = bfr
 | 
			
		||||
				end
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
	if (vdpau_hack) then
 | 
			
		||||
		mp.set_property("vid", old_vid)
 | 
			
		||||
		mp.commandv("seek", old_position, "absolute", "keyframes")
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- we'll consider setting refresh rates whenever the video fps or the active outputs change:
 | 
			
		||||
mp.observe_property("fps", "native", xrandr_set_rate)
 | 
			
		||||
mp.observe_property("display-names", "native", xrandr_set_rate)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										162
									
								
								.config/polybar/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								.config/polybar/config
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,162 @@
 | 
			
		||||
;==========================================================
 | 
			
		||||
;
 | 
			
		||||
;
 | 
			
		||||
;   ██████╗  ██████╗ ██╗  ██╗   ██╗██████╗  █████╗ ██████╗
 | 
			
		||||
;   ██╔══██╗██╔═══██╗██║  ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
 | 
			
		||||
;   ██████╔╝██║   ██║██║   ╚████╔╝ ██████╔╝███████║██████╔╝
 | 
			
		||||
;   ██╔═══╝ ██║   ██║██║    ╚██╔╝  ██╔══██╗██╔══██║██╔══██╗
 | 
			
		||||
;   ██║     ╚██████╔╝███████╗██║   ██████╔╝██║  ██║██║  ██║
 | 
			
		||||
;   ╚═╝      ╚═════╝ ╚══════╝╚═╝   ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝
 | 
			
		||||
;
 | 
			
		||||
;
 | 
			
		||||
;   To learn more about how to configure Polybar
 | 
			
		||||
;   go to https://github.com/polybar/polybar
 | 
			
		||||
;
 | 
			
		||||
;   The README contains a lot of information
 | 
			
		||||
;
 | 
			
		||||
;==========================================================
 | 
			
		||||
 | 
			
		||||
[colors]
 | 
			
		||||
;background = ${xrdb:color0:#222}
 | 
			
		||||
background = #002b2f2f
 | 
			
		||||
background-alt = #002b2f2f
 | 
			
		||||
;foreground = ${xrdb:color7:#222}
 | 
			
		||||
foreground = #ffffff
 | 
			
		||||
foreground-alt = #ffffff
 | 
			
		||||
primary = #fffff
 | 
			
		||||
secondary = #ffffff
 | 
			
		||||
alert = #bd2c40
 | 
			
		||||
 | 
			
		||||
[paddings]
 | 
			
		||||
inner = 2.5
 | 
			
		||||
outer = 5
 | 
			
		||||
 | 
			
		||||
[bar/top]
 | 
			
		||||
width = 1000
 | 
			
		||||
height = 24
 | 
			
		||||
offset-x = 1220
 | 
			
		||||
offset-y = 0
 | 
			
		||||
radius = 0.0
 | 
			
		||||
fixed-center = true
 | 
			
		||||
 | 
			
		||||
background = ${colors.background}
 | 
			
		||||
foreground = ${colors.foreground}
 | 
			
		||||
 | 
			
		||||
line-size = 3
 | 
			
		||||
line-color = #f00
 | 
			
		||||
 | 
			
		||||
border-size = 0
 | 
			
		||||
border-color = #00000000
 | 
			
		||||
 | 
			
		||||
padding-left = 0
 | 
			
		||||
padding-right = 2
 | 
			
		||||
 | 
			
		||||
module-margin-left = 1
 | 
			
		||||
module-margin-right = 1
 | 
			
		||||
 | 
			
		||||
font-0 = fixed:pixelsize=10;1
 | 
			
		||||
font-1 = unifont:fontformat=truetype:size=9:antialias=false;0
 | 
			
		||||
font-2 = siji:pixelsize=11;1
 | 
			
		||||
 | 
			
		||||
modules-left = 
 | 
			
		||||
modules-center = filesystem filesystem-data eth memory cpu temperature
 | 
			
		||||
modules-right = 
 | 
			
		||||
 | 
			
		||||
;tray-position = none
 | 
			
		||||
;tray-padding = 2
 | 
			
		||||
;tray-background = #0063ff
 | 
			
		||||
 | 
			
		||||
;wm-restack = bspwm
 | 
			
		||||
 | 
			
		||||
;i3 stuff
 | 
			
		||||
;wm-restack = i3
 | 
			
		||||
;override-redirect = true
 | 
			
		||||
 | 
			
		||||
;kde stuff
 | 
			
		||||
override-redirect = false
 | 
			
		||||
 | 
			
		||||
;scroll-up = bspwm-desknext
 | 
			
		||||
;scroll-down = bspwm-deskprev
 | 
			
		||||
 | 
			
		||||
;scroll-up = i3wm-wsnext
 | 
			
		||||
;scroll-down = i3wm-wsprev
 | 
			
		||||
 | 
			
		||||
cursor-click = pointer
 | 
			
		||||
cursor-scroll = ns-resize
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[module/filesystem]
 | 
			
		||||
type = internal/fs
 | 
			
		||||
interval = 25
 | 
			
		||||
 | 
			
		||||
mount-0 = /
 | 
			
		||||
 | 
			
		||||
label-mounted = %{F#00B6A6}%mountpoint%%{F-}: %percentage_used%% %free%
 | 
			
		||||
label-unmounted = %mountpoint% not mounted
 | 
			
		||||
label-unmounted-foreground = ${colors.foreground-alt}
 | 
			
		||||
 | 
			
		||||
[module/cpu]
 | 
			
		||||
type = internal/cpu
 | 
			
		||||
interval = 2
 | 
			
		||||
format-prefix = " "
 | 
			
		||||
format-prefix-foreground = ${colors.foreground-alt}
 | 
			
		||||
format-underline = #f90000
 | 
			
		||||
label = %percentage:2%%
 | 
			
		||||
 | 
			
		||||
[module/memory]
 | 
			
		||||
type = internal/memory
 | 
			
		||||
interval = 2
 | 
			
		||||
format-prefix = " "
 | 
			
		||||
format-prefix-foreground = ${colors.foreground-alt}
 | 
			
		||||
format-underline = #4bffdc
 | 
			
		||||
label = %percentage_used%%
 | 
			
		||||
 | 
			
		||||
[module/eth]
 | 
			
		||||
type = internal/network
 | 
			
		||||
interface = enp6s0
 | 
			
		||||
interval = 3.0
 | 
			
		||||
 | 
			
		||||
format-connected-underline = #55aa55
 | 
			
		||||
format-connected-prefix = " "
 | 
			
		||||
format-connected-prefix-foreground = ${colors.foreground-alt}
 | 
			
		||||
label-connected = %local_ip%  %downspeed:8%  %upspeed:8%
 | 
			
		||||
 | 
			
		||||
format-disconnected =
 | 
			
		||||
;format-disconnected = <label-disconnected>
 | 
			
		||||
;format-disconnected-underline = ${self.format-connected-underline}
 | 
			
		||||
;label-disconnected = %ifname% disconnected
 | 
			
		||||
;label-disconnected-foreground = ${colors.foreground-alt}
 | 
			
		||||
 | 
			
		||||
[module/temperature]
 | 
			
		||||
type = internal/temperature
 | 
			
		||||
interval = 2
 | 
			
		||||
hwmon-path = /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon2/temp1_input
 | 
			
		||||
warn-temperature = 60
 | 
			
		||||
 | 
			
		||||
format = <ramp> <label>
 | 
			
		||||
format-underline = #f50a4d
 | 
			
		||||
format-warn = <ramp> <label-warn>
 | 
			
		||||
format-warn-underline = ${self.format-underline}
 | 
			
		||||
 | 
			
		||||
label = %temperature-c%
 | 
			
		||||
label-warn = %temperature-c%
 | 
			
		||||
label-warn-foreground = ${colors.secondary}
 | 
			
		||||
 | 
			
		||||
ramp-0 = 
 | 
			
		||||
ramp-1 = 
 | 
			
		||||
ramp-2 = 
 | 
			
		||||
ramp-foreground = ${colors.foreground-alt}
 | 
			
		||||
 | 
			
		||||
[settings]
 | 
			
		||||
screenchange-reload = true
 | 
			
		||||
;compositing-background = xor
 | 
			
		||||
;compositing-background = screen
 | 
			
		||||
;compositing-foreground = source
 | 
			
		||||
;compositing-border = over
 | 
			
		||||
;pseudo-transparency = false
 | 
			
		||||
 | 
			
		||||
[global/wm]
 | 
			
		||||
margin-top = 0
 | 
			
		||||
margin-bottom = 0
 | 
			
		||||
 | 
			
		||||
; vim:ft=dosini
 | 
			
		||||
							
								
								
									
										17
									
								
								.config/polybar/scripts/arch-update-check.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										17
									
								
								.config/polybar/scripts/arch-update-check.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
if ! updates_arch=$(checkupdates 2> /dev/null | wc -l ); then
 | 
			
		||||
    updates_arch=0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if ! updates_aur=$(yay -Qum 2> /dev/null | wc -l); then
 | 
			
		||||
    updates_aur=0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
updates=$(("$updates_arch" + "$updates_aur"))
 | 
			
		||||
 | 
			
		||||
RED='\033[0;31m'
 | 
			
		||||
 | 
			
		||||
if [ "$updates" -gt 0 ]; then
 | 
			
		||||
    echo " $updates"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										8
									
								
								.config/polybar/scripts/check-vpn.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								.config/polybar/scripts/check-vpn.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if pgrep openvpn > /dev/null; then
 | 
			
		||||
	echo -n "%{u#00bf07}"
 | 
			
		||||
else
 | 
			
		||||
	echo -n "%{u#ff1c01}"
 | 
			
		||||
fi
 | 
			
		||||
echo "VPN"
 | 
			
		||||
							
								
								
									
										14
									
								
								.config/zsh/functions
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.config/zsh/functions
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
#!/bin/zsh
 | 
			
		||||
function zsh_add_config() {
 | 
			
		||||
  [ -f "$ZSH_CONFIG/$1" ] && ! [ -L "$ZSH_CONFIG/$1" ] && source "$ZSH_CONFIG/$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function zsh_add_plugin() {
 | 
			
		||||
  PLUGIN_NAME=$(echo $1 | cut -d"/" -f2)
 | 
			
		||||
  if [ -d "$ZSH_CONFIG/plugins/$PLUGIN_NAME" ]; then
 | 
			
		||||
    zsh_add_config "plugins/$PLUGIN_NAME/$PLUGIN_NAME.plugin.zsh"
 | 
			
		||||
    zsh_add_config "plugins/$PLUGIN_NAME/$PLUGIN_NAME.zsh"
 | 
			
		||||
  else
 | 
			
		||||
    git clone "https://github.com/$1.git" "$ZSH_CONFIG/plugins/$PLUGIN_NAME"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								.config/zsh/keybinds.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.config/zsh/keybinds.zsh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
 | 
			
		||||
MOTION_WORDCHARS='~!#$%^&*(){}[]<>?.+;-/'
 | 
			
		||||
 | 
			
		||||
''{back,for}ward-word() WORDCHARS=$MOTION_WORDCHARS zle .$WIDGET
 | 
			
		||||
 | 
			
		||||
bindkey '^[[1;3C' forward-word
 | 
			
		||||
bindkey '^[[1;3D' backward-word
 | 
			
		||||
bindkey '^[^?' backward-kill-word
 | 
			
		||||
							
								
								
									
										1
									
								
								.config/zsh/plugins/pure
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								.config/zsh/plugins/pure
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit 3b2606db2e7eb6f05c67b229b5e3c68a1c3947a6
 | 
			
		||||
							
								
								
									
										1
									
								
								.config/zsh/plugins/zsh-autosuggestions
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								.config/zsh/plugins/zsh-autosuggestions
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit a411ef3e0992d4839f0732ebeb9823024afaaaa8
 | 
			
		||||
							
								
								
									
										1
									
								
								.config/zsh/plugins/zsh-syntax-highlighting
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								.config/zsh/plugins/zsh-syntax-highlighting
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit caa749d030d22168445c4cb97befd406d2828db0
 | 
			
		||||
							
								
								
									
										33
									
								
								.zshrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.zshrc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
# The following lines were added by compinstall
 | 
			
		||||
zstyle :compinstall filename '/home/grmrgecko/.zshrc'
 | 
			
		||||
 | 
			
		||||
autoload -Uz compinit
 | 
			
		||||
compinit
 | 
			
		||||
# End of lines added by compinstall
 | 
			
		||||
# Lines configured by zsh-newuser-install
 | 
			
		||||
HISTFILE=~/.histfile
 | 
			
		||||
HISTSIZE=1000
 | 
			
		||||
SAVEHIST=1000
 | 
			
		||||
bindkey -e
 | 
			
		||||
# End of lines configured by zsh-newuser-install
 | 
			
		||||
 | 
			
		||||
export PATH="/usr/local/ubin:$HOME/bin:$HOME/go/bin:$HOME/anaconda3/bin:$PATH"
 | 
			
		||||
 | 
			
		||||
ZSH_CONFIG="$HOME/.config/zsh"
 | 
			
		||||
source "$ZSH_CONFIG/functions"
 | 
			
		||||
 | 
			
		||||
zsh_add_config keybinds.zsh
 | 
			
		||||
 | 
			
		||||
PURE_PROMPT_SYMBOL="$"
 | 
			
		||||
PROMPT_PURE_SSH_CONNECTION=YES
 | 
			
		||||
zsh_add_plugin sindresorhus/pure
 | 
			
		||||
autoload -U promptinit; promptinit
 | 
			
		||||
zstyle :prompt:pure:user color cyan
 | 
			
		||||
zstyle :prompt:pure:host color white
 | 
			
		||||
zstyle ':prompt:pure:prompt:*' color white
 | 
			
		||||
prompt pure
 | 
			
		||||
 | 
			
		||||
zsh_add_plugin zsh-users/zsh-syntax-highlighting
 | 
			
		||||
zsh_add_plugin zsh-users/zsh-autosuggestions
 | 
			
		||||
 | 
			
		||||
neofetch
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user