Update 2022-12-07 10:39 Linux/x86_64
This commit is contained in:
		
							parent
							
								
									7948684fdf
								
							
						
					
					
						commit
						889ec09621
					
				
							
								
								
									
										26
									
								
								.config/ranger/rc.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								.config/ranger/rc.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					set preview_images false
 | 
				
			||||||
 | 
					set preview_images_method w3m
 | 
				
			||||||
 | 
					set w3m_delay 0.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set preview_script ~/.config/ranger/scope.sh
 | 
				
			||||||
 | 
					set use_preview_script true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set open_all_images false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set draw_borders true
 | 
				
			||||||
 | 
					set column_ratios 1,1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set automatically_count_files false
 | 
				
			||||||
 | 
					set vcs_aware false
 | 
				
			||||||
 | 
					set draw_progress_bar_in_status_bar true
 | 
				
			||||||
 | 
					set update_title false
 | 
				
			||||||
 | 
					set flushinput true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set autoupdate_cumulative_size false
 | 
				
			||||||
 | 
					set show_cursor false
 | 
				
			||||||
 | 
					set show_selection_in_titlebar false
 | 
				
			||||||
 | 
					set idle_delay 500
 | 
				
			||||||
 | 
					set show_cursor false
 | 
				
			||||||
 | 
					set sort_directories_first true
 | 
				
			||||||
 | 
					set confirm_on_delete never
 | 
				
			||||||
 | 
					set mouse_enabled false
 | 
				
			||||||
							
								
								
									
										193
									
								
								.config/ranger/rifle.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								.config/ranger/rifle.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,193 @@
 | 
				
			|||||||
 | 
					# vim: ft=cfg
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This is the configuration file of "rifle", ranger's file executor/opener.
 | 
				
			||||||
 | 
					# Each line consists of conditions and a command.  For each line the conditions
 | 
				
			||||||
 | 
					# are checked and if they are met, the respective command is run.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Syntax:
 | 
				
			||||||
 | 
					#   <condition1> , <condition2> , ... = command
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The command can contain these environment variables:
 | 
				
			||||||
 | 
					#   $1-$9 | The n-th selected file
 | 
				
			||||||
 | 
					#   $@    | All selected files
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# If you use the special command "ask", rifle will ask you what program to run.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Prefixing a condition with "!" will negate its result.
 | 
				
			||||||
 | 
					# These conditions are currently supported:
 | 
				
			||||||
 | 
					#   match <regexp> | The regexp matches $1
 | 
				
			||||||
 | 
					#   ext <regexp>   | The regexp matches the extension of $1
 | 
				
			||||||
 | 
					#   mime <regexp>  | The regexp matches the mime type of $1
 | 
				
			||||||
 | 
					#   name <regexp>  | The regexp matches the basename of $1
 | 
				
			||||||
 | 
					#   path <regexp>  | The regexp matches the absolute path of $1
 | 
				
			||||||
 | 
					#   has <program>  | The program is installed (i.e. located in $PATH)
 | 
				
			||||||
 | 
					#   env <variable> | The environment variable "variable" is non-empty
 | 
				
			||||||
 | 
					#   file           | $1 is a file
 | 
				
			||||||
 | 
					#   directory      | $1 is a directory
 | 
				
			||||||
 | 
					#   number <n>     | change the number of this command to n
 | 
				
			||||||
 | 
					#   terminal       | stdin, stderr and stdout are connected to a terminal
 | 
				
			||||||
 | 
					#   X              | $DISPLAY is not empty (i.e. Xorg runs)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# There are also pseudo-conditions which have a "side effect":
 | 
				
			||||||
 | 
					#   flag <flags>  | Change how the program is run. See below.
 | 
				
			||||||
 | 
					#   label <label> | Assign a label or name to the command so it can
 | 
				
			||||||
 | 
					#                 | be started with :open_with <label> in ranger
 | 
				
			||||||
 | 
					#                 | or `rifle -p <label>` in the standalone executable.
 | 
				
			||||||
 | 
					#   else          | Always true.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Flags are single characters which slightly transform the command:
 | 
				
			||||||
 | 
					#   f | Fork the program, make it run in the background.
 | 
				
			||||||
 | 
					#     |   New command = setsid $command >& /dev/null &
 | 
				
			||||||
 | 
					#   r | Execute the command with root permissions
 | 
				
			||||||
 | 
					#     |   New command = sudo $command
 | 
				
			||||||
 | 
					#   t | Run the program in a new terminal.  If $TERMCMD is not defined,
 | 
				
			||||||
 | 
					#     | rifle will attempt to extract it from $TERM.
 | 
				
			||||||
 | 
					#     |   New command = $TERMCMD -e $command
 | 
				
			||||||
 | 
					# Note: The "New command" serves only as an illustration, the exact
 | 
				
			||||||
 | 
					# implementation may differ.
 | 
				
			||||||
 | 
					# Note: When using rifle in ranger, there is an additional flag "c" for
 | 
				
			||||||
 | 
					# only running the current file even if you have marked multiple files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Websites
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Rarely installed browsers get higher priority; It is assumed that if you
 | 
				
			||||||
 | 
					# install a rare browser, you probably use it.  Firefox/konqueror/w3m on the
 | 
				
			||||||
 | 
					# other hand are often only installed as fallback browsers.
 | 
				
			||||||
 | 
					ext x?html?, has vimb,             X, flag f = vimb -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has luakit,           X, flag f = luakit -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has qutebrowser,      X, flag f = qutebrowser -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has firefox,          X, flag f = firefox -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has chrome,           X, flag f = chrome -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has chromium,         X, flag f = chromium -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has links,             terminal = links "$@"
 | 
				
			||||||
 | 
					ext x?html?, has lynx,              terminal = lynx -- "$@"
 | 
				
			||||||
 | 
					ext x?html?, has w3m,               terminal = w3m "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Misc
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Define the "editor" for text files as first action
 | 
				
			||||||
 | 
					mime ^text,  label editor = ${VISUAL:-$EDITOR} -- "$@"
 | 
				
			||||||
 | 
					mime ^text,  label pager  = "$PAGER" -- "$@"
 | 
				
			||||||
 | 
					!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
 | 
				
			||||||
 | 
					!mime ^text, label pager,  ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ext 1                         = man "$1"
 | 
				
			||||||
 | 
					ext s[wmf]c, has zsnes, X     = zsnes "$1"
 | 
				
			||||||
 | 
					ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
 | 
				
			||||||
 | 
					ext nes, has fceux, X         = fceux "$1"
 | 
				
			||||||
 | 
					name ^[mM]akefile$            = make
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#--------------------------------------------
 | 
				
			||||||
 | 
					# Code
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					ext py  = python -- "$1"
 | 
				
			||||||
 | 
					ext pl  = perl -- "$1"
 | 
				
			||||||
 | 
					ext rb  = ruby -- "$1"
 | 
				
			||||||
 | 
					ext js  = node -- "$1"
 | 
				
			||||||
 | 
					ext sh  = sh -- "$1"
 | 
				
			||||||
 | 
					ext php = php -- "$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#--------------------------------------------
 | 
				
			||||||
 | 
					# Audio without X
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					mime ^audio|ogg$, terminal, has mpv      = mpv -- "$@"
 | 
				
			||||||
 | 
					mime ^audio|ogg$, terminal, has mplayer  = mplayer -- "$@"
 | 
				
			||||||
 | 
					ext midi?,        terminal, has wildmidi = wildmidi -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#--------------------------------------------
 | 
				
			||||||
 | 
					# Video/Audio with a GUI
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					mime ^video|audio, has mpv,      X, flag f = mpv --geometry=1000x560 -- "$@"
 | 
				
			||||||
 | 
					mime ^video,       has mpv,      X, flag f = mpv --fs -- "$@"
 | 
				
			||||||
 | 
					mime ^video,       has mplayer,  X, flag f = mplayer -- "$@"
 | 
				
			||||||
 | 
					mime ^video,       has mplayer,  X, flag f = mplayer -fs -- "$@"
 | 
				
			||||||
 | 
					mime ^video|audio, has vlc,      X, flag f = vlc -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#--------------------------------------------
 | 
				
			||||||
 | 
					# Video without X:
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					mime ^video, terminal, !X, has mpv       = mpv -- "$@"
 | 
				
			||||||
 | 
					mime ^video, terminal, !X, has mplayer   = mplayer -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Documents
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					ext pdf, has zathura,  X, flag f = zathura -- "$@"
 | 
				
			||||||
 | 
					ext pdf, has mupdf,    X, flag f = mupdf "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ext docx?, has catdoc,       terminal = catdoc -- "$@" | "$PAGER"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ext                        sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric,    X, flag f = gnumeric -- "$@"
 | 
				
			||||||
 | 
					ext                        sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread,     X, flag f = kspread -- "$@"
 | 
				
			||||||
 | 
					ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ext djvu, has zathura,X, flag f = zathura -- "$@"
 | 
				
			||||||
 | 
					ext djvu, has evince, X, flag f = evince -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
 | 
				
			||||||
 | 
					ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Image Viewing:
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
 | 
				
			||||||
 | 
					mime ^image/svg, has display,  X, flag f = display -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mime ^image, has sxiv,      X, flag f = sxiv -a -r -- "$@"
 | 
				
			||||||
 | 
					mime ^image, has pqiv,      X, flag f = pqiv -- "$@"
 | 
				
			||||||
 | 
					mime ^image, has feh,       X, flag f = feh -- "$@"
 | 
				
			||||||
 | 
					ext xcf,                    X, flag f = gimp -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Archives
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# avoid password prompt by providing empty password
 | 
				
			||||||
 | 
					ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
 | 
				
			||||||
 | 
					# This requires atool
 | 
				
			||||||
 | 
					ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,     has atool = atool --list --each -- "$@" | "$PAGER"
 | 
				
			||||||
 | 
					ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
 | 
				
			||||||
 | 
					ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,  has atool = atool --extract --each -- "$@"
 | 
				
			||||||
 | 
					ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Listing and extracting archives without atool:
 | 
				
			||||||
 | 
					ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
 | 
				
			||||||
 | 
					ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
 | 
				
			||||||
 | 
					ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
 | 
				
			||||||
 | 
					ext zip, has unzip = unzip -l "$1" | less
 | 
				
			||||||
 | 
					ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
 | 
				
			||||||
 | 
					ext ace, has unace = unace l "$1" | less
 | 
				
			||||||
 | 
					ext ace, has unace = for file in "$@"; do unace e "$file"; done
 | 
				
			||||||
 | 
					ext rar, has unrar = unrar l "$1" | less
 | 
				
			||||||
 | 
					ext rar, has unrar = for file in "$@"; do unrar x "$file"; done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Flag t fallback terminals
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Rarely installed terminal emulators get higher priority; It is assumed that
 | 
				
			||||||
 | 
					# if you install a rare terminal emulator, you probably use it.
 | 
				
			||||||
 | 
					# gnome-terminal/konsole/xterm on the other hand are often installed as part of
 | 
				
			||||||
 | 
					# a desktop environment or as fallback terminal emulators.
 | 
				
			||||||
 | 
					mime ^ranger/x-terminal-emulator, has st = st -e "$@"
 | 
				
			||||||
 | 
					mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
 | 
				
			||||||
 | 
					mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
 | 
				
			||||||
 | 
					mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
 | 
				
			||||||
 | 
					mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					# Misc
 | 
				
			||||||
 | 
					#-------------------------------------------
 | 
				
			||||||
 | 
					label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
 | 
				
			||||||
 | 
					label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
 | 
				
			||||||
 | 
					label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
 | 
				
			||||||
 | 
					label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Define the editor for non-text files + pager as last action
 | 
				
			||||||
 | 
					              !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php  = ask
 | 
				
			||||||
 | 
					label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php  = ${VISUAL:-$EDITOR} -- "$@"
 | 
				
			||||||
 | 
					label pager,  !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php  = "$PAGER" -- "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The very last action, so that it's never triggered accidentally, is to execute a program:
 | 
				
			||||||
 | 
					mime application/x-executable = "$1"
 | 
				
			||||||
							
								
								
									
										350
									
								
								.config/ranger/scope.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										350
									
								
								.config/ranger/scope.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,350 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -o noclobber -o noglob -o nounset -o pipefail
 | 
				
			||||||
 | 
					IFS=$'\n'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## If the option `use_preview_script` is set to `true`,
 | 
				
			||||||
 | 
					## then this script will be called and its output will be displayed in ranger.
 | 
				
			||||||
 | 
					## ANSI color codes are supported.
 | 
				
			||||||
 | 
					## STDIN is disabled, so interactive scripts won't work properly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## This script is considered a configuration file and must be updated manually.
 | 
				
			||||||
 | 
					## It will be left untouched if you upgrade ranger.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Because of some automated testing we do on the script #'s for comments need
 | 
				
			||||||
 | 
					## to be doubled up. Code that is commented out, because it's an alternative for
 | 
				
			||||||
 | 
					## example, gets only one #.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Meanings of exit codes:
 | 
				
			||||||
 | 
					## code | meaning    | action of ranger
 | 
				
			||||||
 | 
					## -----+------------+-------------------------------------------
 | 
				
			||||||
 | 
					## 0    | success    | Display stdout as preview
 | 
				
			||||||
 | 
					## 1    | no preview | Display no preview at all
 | 
				
			||||||
 | 
					## 2    | plain text | Display the plain content of the file
 | 
				
			||||||
 | 
					## 3    | fix width  | Don't reload when width changes
 | 
				
			||||||
 | 
					## 4    | fix height | Don't reload when height changes
 | 
				
			||||||
 | 
					## 5    | fix both   | Don't ever reload
 | 
				
			||||||
 | 
					## 6    | image      | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
 | 
				
			||||||
 | 
					## 7    | image      | Display the file directly as an image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Script arguments
 | 
				
			||||||
 | 
					FILE_PATH="${1}"         # Full path of the highlighted file
 | 
				
			||||||
 | 
					PV_WIDTH="${2}"          # Width of the preview pane (number of fitting characters)
 | 
				
			||||||
 | 
					## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
 | 
				
			||||||
 | 
					PV_HEIGHT="${3}"         # Height of the preview pane (number of fitting characters)
 | 
				
			||||||
 | 
					IMAGE_CACHE_PATH="${4}"  # Full path that should be used to cache image preview
 | 
				
			||||||
 | 
					PV_IMAGE_ENABLED="${5}"  # 'True' if image previews are enabled, 'False' otherwise.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FILE_EXTENSION="${FILE_PATH##*.}"
 | 
				
			||||||
 | 
					FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Settings
 | 
				
			||||||
 | 
					HIGHLIGHT_SIZE_MAX=262143  # 256KiB
 | 
				
			||||||
 | 
					HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
 | 
				
			||||||
 | 
					HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
 | 
				
			||||||
 | 
					HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
 | 
				
			||||||
 | 
					PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
 | 
				
			||||||
 | 
					OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
 | 
				
			||||||
 | 
					OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					handle_extension() {
 | 
				
			||||||
 | 
					    case "${FILE_EXTENSION_LOWER}" in
 | 
				
			||||||
 | 
					        ## Archive
 | 
				
			||||||
 | 
					        a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
 | 
				
			||||||
 | 
					        rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
 | 
				
			||||||
 | 
					            atool --list -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            bsdtar --list --file "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					        rar)
 | 
				
			||||||
 | 
					            ## Avoid password prompt by providing empty password
 | 
				
			||||||
 | 
					            unrar lt -p- -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					        7z)
 | 
				
			||||||
 | 
					            ## Avoid password prompt by providing empty password
 | 
				
			||||||
 | 
					            7z l -p -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## PDF
 | 
				
			||||||
 | 
					        pdf)
 | 
				
			||||||
 | 
					            ## Preview as text conversion
 | 
				
			||||||
 | 
					            pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
 | 
				
			||||||
 | 
					              fmt -w "${PV_WIDTH}" && exit 5
 | 
				
			||||||
 | 
					            mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
 | 
				
			||||||
 | 
					              fmt -w "${PV_WIDTH}" && exit 5
 | 
				
			||||||
 | 
					            exiftool "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## BitTorrent
 | 
				
			||||||
 | 
					        torrent)
 | 
				
			||||||
 | 
					            transmission-show -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## OpenDocument
 | 
				
			||||||
 | 
					        odt|ods|odp|sxw)
 | 
				
			||||||
 | 
					            ## Preview as text conversion
 | 
				
			||||||
 | 
					            odt2txt "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            ## Preview as markdown conversion
 | 
				
			||||||
 | 
					            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## XLSX
 | 
				
			||||||
 | 
					        xlsx)
 | 
				
			||||||
 | 
					            ## Preview as csv conversion
 | 
				
			||||||
 | 
					            ## Uses: https://github.com/dilshod/xlsx2csv
 | 
				
			||||||
 | 
					            xlsx2csv -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## HTML
 | 
				
			||||||
 | 
					        htm|html|xhtml)
 | 
				
			||||||
 | 
					            ## Preview as text conversion
 | 
				
			||||||
 | 
					            w3m -dump "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            lynx -dump -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            elinks -dump "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## JSON
 | 
				
			||||||
 | 
					        json)
 | 
				
			||||||
 | 
					            jq --color-output . "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            python -m json.tool -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
 | 
				
			||||||
 | 
					        ## by file(1).
 | 
				
			||||||
 | 
					        dff|dsf|wv|wvc)
 | 
				
			||||||
 | 
					            mediainfo "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exiftool "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            ;; # Continue with next handler on failure
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					handle_image() {
 | 
				
			||||||
 | 
					    ## Size of the preview if there are multiple options or it has to be
 | 
				
			||||||
 | 
					    ## rendered from vector graphics. If the conversion program allows
 | 
				
			||||||
 | 
					    ## specifying only one dimension while keeping the aspect ratio, the width
 | 
				
			||||||
 | 
					    ## will be used.
 | 
				
			||||||
 | 
					    local DEFAULT_SIZE="1920x1080"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local mimetype="${1}"
 | 
				
			||||||
 | 
					    case "${mimetype}" in
 | 
				
			||||||
 | 
					        ## SVG
 | 
				
			||||||
 | 
					        # image/svg+xml|image/svg)
 | 
				
			||||||
 | 
					        #     convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
 | 
				
			||||||
 | 
					        #     exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## DjVu
 | 
				
			||||||
 | 
					        # image/vnd.djvu)
 | 
				
			||||||
 | 
					        #     ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
 | 
				
			||||||
 | 
					        #           - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
 | 
				
			||||||
 | 
					        #           && exit 6 || exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Image
 | 
				
			||||||
 | 
					        image/*)
 | 
				
			||||||
 | 
					            local orientation
 | 
				
			||||||
 | 
					            orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
 | 
				
			||||||
 | 
					            ## If orientation data is present and the image actually
 | 
				
			||||||
 | 
					            ## needs rotating ("1" means no rotation)...
 | 
				
			||||||
 | 
					            if [[ -n "$orientation" && "$orientation" != 1 ]]; then
 | 
				
			||||||
 | 
					                ## ...auto-rotate the image according to the EXIF data.
 | 
				
			||||||
 | 
					                convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ## `w3mimgdisplay` will be called for all images (unless overriden
 | 
				
			||||||
 | 
					            ## as above), but might fail for unsupported types.
 | 
				
			||||||
 | 
					            exit 7;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Video
 | 
				
			||||||
 | 
					        video/*)
 | 
				
			||||||
 | 
					            # Thumbnail
 | 
				
			||||||
 | 
					            ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## PDF
 | 
				
			||||||
 | 
					        # application/pdf)
 | 
				
			||||||
 | 
					        #     pdftoppm -f 1 -l 1 \
 | 
				
			||||||
 | 
					        #              -scale-to-x "${DEFAULT_SIZE%x*}" \
 | 
				
			||||||
 | 
					        #              -scale-to-y -1 \
 | 
				
			||||||
 | 
					        #              -singlefile \
 | 
				
			||||||
 | 
					        #              -jpeg -tiffcompression jpeg \
 | 
				
			||||||
 | 
					        #              -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
 | 
				
			||||||
 | 
					        #         && exit 6 || exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## ePub, MOBI, FB2 (using Calibre)
 | 
				
			||||||
 | 
					        # application/epub+zip|application/x-mobipocket-ebook|\
 | 
				
			||||||
 | 
					        # application/x-fictionbook+xml)
 | 
				
			||||||
 | 
					        #     # ePub (using https://github.com/marianosimone/epub-thumbnailer)
 | 
				
			||||||
 | 
					        #     epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
 | 
				
			||||||
 | 
					        #         "${DEFAULT_SIZE%x*}" && exit 6
 | 
				
			||||||
 | 
					        #     ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
 | 
				
			||||||
 | 
					        #         >/dev/null && exit 6
 | 
				
			||||||
 | 
					        #     exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Font
 | 
				
			||||||
 | 
					        application/font*|application/*opentype)
 | 
				
			||||||
 | 
					            preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
 | 
				
			||||||
 | 
					            if fontimage -o "${preview_png}" \
 | 
				
			||||||
 | 
					                         --pixelsize "120" \
 | 
				
			||||||
 | 
					                         --fontname \
 | 
				
			||||||
 | 
					                         --pixelsize "80" \
 | 
				
			||||||
 | 
					                         --text "  ABCDEFGHIJKLMNOPQRSTUVWXYZ  " \
 | 
				
			||||||
 | 
					                         --text "  abcdefghijklmnopqrstuvwxyz  " \
 | 
				
			||||||
 | 
					                         --text "  0123456789.:,;(*!?') ff fl fi ffi ffl  " \
 | 
				
			||||||
 | 
					                         --text "  The quick brown fox jumps over the lazy dog.  " \
 | 
				
			||||||
 | 
					                         "${FILE_PATH}";
 | 
				
			||||||
 | 
					            then
 | 
				
			||||||
 | 
					                convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
 | 
				
			||||||
 | 
					                    && rm "${preview_png}" \
 | 
				
			||||||
 | 
					                    && exit 6
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                exit 1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Preview archives using the first image inside.
 | 
				
			||||||
 | 
					        ## (Very useful for comic book collections for example.)
 | 
				
			||||||
 | 
					        # application/zip|application/x-rar|application/x-7z-compressed|\
 | 
				
			||||||
 | 
					        #     application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
 | 
				
			||||||
 | 
					        #     local fn=""; local fe=""
 | 
				
			||||||
 | 
					        #     local zip=""; local rar=""; local tar=""; local bsd=""
 | 
				
			||||||
 | 
					        #     case "${mimetype}" in
 | 
				
			||||||
 | 
					        #         application/zip) zip=1 ;;
 | 
				
			||||||
 | 
					        #         application/x-rar) rar=1 ;;
 | 
				
			||||||
 | 
					        #         application/x-7z-compressed) ;;
 | 
				
			||||||
 | 
					        #         *) tar=1 ;;
 | 
				
			||||||
 | 
					        #     esac
 | 
				
			||||||
 | 
					        #     { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
 | 
				
			||||||
 | 
					        #     { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
 | 
				
			||||||
 | 
					        #     { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
 | 
				
			||||||
 | 
					        #     { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
 | 
				
			||||||
 | 
					        #
 | 
				
			||||||
 | 
					        #     fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
 | 
				
			||||||
 | 
					        #             [ print(l, end='') for l in sys.stdin if \
 | 
				
			||||||
 | 
					        #               (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
 | 
				
			||||||
 | 
					        #         sort -V | head -n 1)
 | 
				
			||||||
 | 
					        #     [ "$fn" = "" ] && return
 | 
				
			||||||
 | 
					        #     [ "$bsd" ] && fn=$(printf '%b' "$fn")
 | 
				
			||||||
 | 
					        #
 | 
				
			||||||
 | 
					        #     [ "$tar" ] && tar --extract --to-stdout \
 | 
				
			||||||
 | 
					        #         --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
 | 
				
			||||||
 | 
					        #     fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
 | 
				
			||||||
 | 
					        #     [ "$bsd" ] && bsdtar --extract --to-stdout \
 | 
				
			||||||
 | 
					        #         --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
 | 
				
			||||||
 | 
					        #     [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
 | 
				
			||||||
 | 
					        #     [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
 | 
				
			||||||
 | 
					        #         "${IMAGE_CACHE_PATH}" && exit 6
 | 
				
			||||||
 | 
					        #     [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
 | 
				
			||||||
 | 
					        #         "${IMAGE_CACHE_PATH}" && exit 6
 | 
				
			||||||
 | 
					        #     [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
 | 
				
			||||||
 | 
					        #     ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # openscad_image() {
 | 
				
			||||||
 | 
					    #     TMPPNG="$(mktemp -t XXXXXX.png)"
 | 
				
			||||||
 | 
					    #     openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
 | 
				
			||||||
 | 
					    #         --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
 | 
				
			||||||
 | 
					    #         -o "${TMPPNG}" "${1}"
 | 
				
			||||||
 | 
					    #     mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
 | 
				
			||||||
 | 
					    # }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # case "${FILE_EXTENSION_LOWER}" in
 | 
				
			||||||
 | 
					    #     ## 3D models
 | 
				
			||||||
 | 
					    #     ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
 | 
				
			||||||
 | 
					    #     ## is hardcoded as jpeg. So we make a tempfile.png and just
 | 
				
			||||||
 | 
					    #     ## move/rename it to jpg. This works because image libraries are
 | 
				
			||||||
 | 
					    #     ## smart enough to handle it.
 | 
				
			||||||
 | 
					    #     csg|scad)
 | 
				
			||||||
 | 
					    #         openscad_image "${FILE_PATH}" && exit 6
 | 
				
			||||||
 | 
					    #         ;;
 | 
				
			||||||
 | 
					    #     3mf|amf|dxf|off|stl)
 | 
				
			||||||
 | 
					    #         openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
 | 
				
			||||||
 | 
					    #         ;;
 | 
				
			||||||
 | 
					    # esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					handle_mime() {
 | 
				
			||||||
 | 
					    local mimetype="${1}"
 | 
				
			||||||
 | 
					    case "${mimetype}" in
 | 
				
			||||||
 | 
					        ## RTF and DOC
 | 
				
			||||||
 | 
					        text/rtf|*msword)
 | 
				
			||||||
 | 
					            ## Preview as text conversion
 | 
				
			||||||
 | 
					            ## note: catdoc does not always work for .doc files
 | 
				
			||||||
 | 
					            ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
 | 
				
			||||||
 | 
					            catdoc -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## DOCX, ePub, FB2 (using markdown)
 | 
				
			||||||
 | 
					        ## You might want to remove "|epub" and/or "|fb2" below if you have
 | 
				
			||||||
 | 
					        ## uncommented other methods to preview those formats
 | 
				
			||||||
 | 
					        *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
 | 
				
			||||||
 | 
					            ## Preview as markdown conversion
 | 
				
			||||||
 | 
					            pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## XLS
 | 
				
			||||||
 | 
					        *ms-excel)
 | 
				
			||||||
 | 
					            ## Preview as csv conversion
 | 
				
			||||||
 | 
					            ## xls2csv comes with catdoc:
 | 
				
			||||||
 | 
					            ##   http://www.wagner.pp.ru/~vitus/software/catdoc/
 | 
				
			||||||
 | 
					            xls2csv -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Text
 | 
				
			||||||
 | 
					        text/* | */xml)
 | 
				
			||||||
 | 
					            ## Syntax highlight
 | 
				
			||||||
 | 
					            if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
 | 
				
			||||||
 | 
					                exit 2
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if [[ "$( tput colors )" -ge 256 ]]; then
 | 
				
			||||||
 | 
					                local pygmentize_format='terminal256'
 | 
				
			||||||
 | 
					                local highlight_format='xterm256'
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                local pygmentize_format='terminal'
 | 
				
			||||||
 | 
					                local highlight_format='ansi'
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
 | 
				
			||||||
 | 
					                --out-format="${highlight_format}" \
 | 
				
			||||||
 | 
					                --force -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            env COLORTERM=8bit bat --color=always --style="plain" \
 | 
				
			||||||
 | 
					                -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
 | 
				
			||||||
 | 
					                -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 2;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## DjVu
 | 
				
			||||||
 | 
					        image/vnd.djvu)
 | 
				
			||||||
 | 
					            ## Preview as text conversion (requires djvulibre)
 | 
				
			||||||
 | 
					            djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
 | 
				
			||||||
 | 
					            exiftool "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Image
 | 
				
			||||||
 | 
					        image/*)
 | 
				
			||||||
 | 
					            ## Preview as text conversion
 | 
				
			||||||
 | 
					            # img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
 | 
				
			||||||
 | 
					            exiftool "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## Video and audio
 | 
				
			||||||
 | 
					        video/* | audio/*)
 | 
				
			||||||
 | 
					            mediainfo "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exiftool "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					            exit 1;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					handle_fallback() {
 | 
				
			||||||
 | 
					    echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
 | 
				
			||||||
 | 
					if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
 | 
				
			||||||
 | 
					    handle_image "${MIMETYPE}"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					handle_extension
 | 
				
			||||||
 | 
					handle_mime "${MIMETYPE}"
 | 
				
			||||||
 | 
					handle_fallback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit 1
 | 
				
			||||||
							
								
								
									
										78
									
								
								.config/sxiv/exec/key-handler
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										78
									
								
								.config/sxiv/exec/key-handler
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					# C-x + ?-?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					copy_to_clipboard() {
 | 
				
			||||||
 | 
					    printf '%s\n' "Clipping $1"
 | 
				
			||||||
 | 
					    printf '%s' "$(readlink -f "$1")" \
 | 
				
			||||||
 | 
					        | xclip -selection clipboard
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					upload_to_paste() {
 | 
				
			||||||
 | 
					    printf '%s\n' "Pasting $1"
 | 
				
			||||||
 | 
					    scp "$1" sdk@codevoid.de:/home/www/htdocs/gopher/p/
 | 
				
			||||||
 | 
					    printf '%s' "https://codevoid.de/I/p/${1##*/}" \
 | 
				
			||||||
 | 
					        | xclip -selection clipboard
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					save_image() {
 | 
				
			||||||
 | 
					    if [ -z "$SXIVDIR" ]
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        . $HOME/.bin/_config
 | 
				
			||||||
 | 
					        SXIVDIR="$(find . -type d -maxdepth 1 | dmenu -p "Save" $DMENUOPTS)"
 | 
				
			||||||
 | 
					        export SXIVDIR;
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    printf '%s\n' "Saving $1 to $SXIVDIR/"
 | 
				
			||||||
 | 
					    mkdir -p "$SXIVDIR"
 | 
				
			||||||
 | 
					    mv "$1" "$SXIVDIR/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    base="${1%.*}"
 | 
				
			||||||
 | 
					    for type in cr2 CR2 orf ORF dng DNG tif TIF xmp XMP
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					        test -f "${base}.${type}" && mv "${base}.${type}" "$SXIVDIR/"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					edit_image() {
 | 
				
			||||||
 | 
					    base=${1%.*}
 | 
				
			||||||
 | 
					    for type in cr2 CR2 orf ORF dng DNG
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					        printf "Trying %s.%s\n" "${base}" "${type}"
 | 
				
			||||||
 | 
					        if [ -f "${base}.${type}" ]
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            rawtherapee "${base}.${type}"
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    for type in tif TIF
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					        printf "Trying %s.%s\n" "${base}" "${type}"
 | 
				
			||||||
 | 
					        if [ -f "${base}.${type}" ]
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            gimp "${base}.${type}"
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rotate_cw() {
 | 
				
			||||||
 | 
					    printf '%s\n' "Rotating CW"
 | 
				
			||||||
 | 
					    convert -rotate 90 "$1" "$1"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rotate_ccw() {
 | 
				
			||||||
 | 
					    printf '%s\n' "Rotating CCW"
 | 
				
			||||||
 | 
					    convert -rotate 270 "$1" "$1"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while read file
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
					    case "$1" in
 | 
				
			||||||
 | 
					        "d")      edit_image "$file" ;;
 | 
				
			||||||
 | 
					        "c")      copy_to_clipboard "$file" ;;
 | 
				
			||||||
 | 
					        "p")      printf '%s\n' "$(readlink -f "$file")" ;;
 | 
				
			||||||
 | 
					        "u")      upload_to_paste "$file" ;;
 | 
				
			||||||
 | 
					        "x")      save_image "$file" ;;
 | 
				
			||||||
 | 
					        "Right")  rotate_cw "$file" ;;
 | 
				
			||||||
 | 
					        "Left")   rotate_ccw "$file" ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user