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