diff options
| -rw-r--r-- | ranger/.config/ranger/rc.conf | 530 | ||||
| -rwxr-xr-x | ranger/.config/ranger/scope.sh | 84 | 
2 files changed, 614 insertions, 0 deletions
diff --git a/ranger/.config/ranger/rc.conf b/ranger/.config/ranger/rc.conf new file mode 100644 index 0000000..36cb768 --- /dev/null +++ b/ranger/.config/ranger/rc.conf @@ -0,0 +1,530 @@ +# =================================================================== +# This file contains the default startup commands for ranger. +# To change them, it is recommended to create the file +# ~/.config/ranger/rc.conf and add your custom commands there. +# +# If you copy this whole file there, you may want to set the environment +# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice. +# +# The purpose of this file is mainly to define keybindings and settings. +# For running more complex python code, please create a plugin in "plugins/" or +# a command in "commands.py". +# +# Each line is a command that will be run before the user interface +# is initialized.  As a result, you can not use commands which rely +# on the UI such as :delete or :mark. +# =================================================================== + +# =================================================================== +# == Options +# =================================================================== + +# How many columns are there, and what are their relative widths? +set column_ratios 1,3,4 + +# Which files should be hidden? (regular expression) +set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$ + +# Show hidden files? You can toggle this by typing 'zh' +set show_hidden false + +# Ask for a confirmation when running the "delete" command? +# Valid values are "always" (default), "never", "multiple" +# With "multiple", ranger will ask only if you delete multiple files at once. +set confirm_on_delete multiple + +# Which script is used to generate file previews? +# ranger ships with scope.sh, a script that calls external programs (see +# README for dependencies) to preview images, archives, etc. +set preview_script ~/.config/ranger/scope.sh + +# Use the external preview script or display simple plain text previews? +set use_preview_script true + +# Open all images in this directory when running certain image viewers +# like feh or sxiv?  You can still open selected files by marking them. +set open_all_images true + +# Be aware of version control systems and display information. +set vcs_aware false + +# State of the three backends git, hg, bzr. The possible states are +# disabled, local (only show local info), enabled (show local and remote +# information). +set vcs_backend_git enabled +set vcs_backend_hg disabled +set vcs_backend_bzr disabled + +# Preview images in full color with the external command "w3mimgpreview"? +# This requires the console web browser "w3m" and a supported terminal. +# It has been successfully tested with "xterm" and "urxvt" without tmux. +set preview_images true + +# Use a unicode "..." character to mark cut-off filenames? +set unicode_ellipsis false + +# Show dotfiles in the bookmark preview box? +set show_hidden_bookmarks true + +# Which colorscheme to use?  These colorschemes are available by default: +# default, jungle, snow +set colorscheme default + +# Preview files on the rightmost column? +# And collapse (shrink) the last column if there is nothing to preview? +set preview_files true +set preview_directories true +set collapse_preview true + +# Save the console history on exit? +set save_console_history true + +# Draw the status bar on top of the browser window (default: bottom) +set status_bar_on_top false + +# Draw a progress bar in the status bar which displays the average state of all +# currently running tasks which support progress bars? +set draw_progress_bar_in_status_bar true + +# Draw borders around columns? +set draw_borders true + +# Display the directory name in tabs? +set dirname_in_tabs false + +# Enable the mouse support? +set mouse_enabled true + +# Display the file size in the main column or status bar? +set display_size_in_main_column true +set display_size_in_status_bar true + +# Display files tags in all columns or only in main column? +set display_tags_in_all_columns true + +# Set a title for the window? +set update_title false + +# Set the title to "ranger" in the tmux program? +set update_tmux_title false + +# Shorten the title if it gets long?  The number defines how many +# directories are displayed at once, 0 turns off this feature. +set shorten_title 3 + +# Abbreviate $HOME with ~ in the titlebar (first line) of ranger? +set tilde_in_titlebar false + +# How many directory-changes or console-commands should be kept in history? +set max_history_size 20 +set max_console_history_size 50 + +# Try to keep so much space between the top/bottom border when scrolling: +set scroll_offset 8 + +# Flush the input after each key hit?  (Noticable when ranger lags) +set flushinput true + +# Padding on the right when there's no preview? +# This allows you to click into the space to run the file. +set padding_right true + +# Save bookmarks (used with mX and `X) instantly? +# This helps to synchronize bookmarks between multiple ranger +# instances but leads to *slight* performance loss. +# When false, bookmarks are saved when ranger is exited. +set autosave_bookmarks true + +# You can display the "real" cumulative size of directories by using the +# command :get_cumulative_size or typing "dc".  The size is expensive to +# calculate and will not be updated automatically.  You can choose +# to update it automatically though by turning on this option: +set autoupdate_cumulative_size false + +# Turning this on makes sense for screen readers: +set show_cursor false + +# One of: size, basename, mtime, type +set sort natural + +# Additional sorting options +set sort_reverse false +set sort_case_insensitive true +set sort_directories_first true + +# Enable this if key combinations with the Alt Key don't work for you. +# (Especially on xterm) +set xterm_alt_key false + +# =================================================================== +# == Local Options +# =================================================================== +# You can set local options that only affect a single directory. + +# Examples: +# setlocal path=~/downloads sort mtime + +# =================================================================== +# == Command Aliases in the Console +# =================================================================== + +alias e    edit +alias q    quit +alias q!   quitall +alias qall quitall +alias setl setlocal + +alias filter     scout -prt +alias find       scout -aet +alias mark       scout -mr +alias unmark     scout -Mr +alias search     scout -rs +alias search_inc scout -rts +alias travel     scout -aefiklst + +# =================================================================== +# == Define keys for the browser +# =================================================================== + +# Basic +map     Q quit! +map     q quit +copymap q ZZ ZQ + +map R     reload_cwd +map <C-r> reset +map <C-l> redraw_window +map <C-c> abort +map <esc> change_mode normal + +map i display_file +map ? help +map W display_log +map w taskview_open +map S shell $SHELL + +map :  console +map ;  console +map !  console shell  +map @  console -p6 shell  %%s +map #  console shell -p  +map s  console shell  +map r  chain draw_possible_programs; console open_with  +map f  console find  +map cd console cd  + +# Tagging / Marking +map t       tag_toggle +map ut      tag_remove +map "<any>  tag_toggle tag=%any +map <Space> mark_files toggle=True +map v       mark_files all=True toggle=True +map uv      mark_files all=True val=False +map V       toggle_visual_mode +map uV      toggle_visual_mode reverse=True + +# For the nostalgics: Midnight Commander bindings +map <F1> help +map <F3> display_file +map <F4> edit +map <F5> copy +map <F6> cut +map <F7> console mkdir  +map <F8> console delete +map <F10> exit + +# In case you work on a keyboard with dvorak layout +map <UP>       move up=1 +map <DOWN>     move down=1 +map <LEFT>     move left=1 +map <RIGHT>    move right=1 +map <HOME>     move to=0 +map <END>      move to=-1 +map <PAGEDOWN> move down=1   pages=True +map <PAGEUP>   move up=1     pages=True +map <CR>       move right=1 +map <DELETE>   console delete +map <INSERT>   console touch  + +# VIM-like +copymap <UP>       k +copymap <DOWN>     j +copymap <LEFT>     h +copymap <RIGHT>    l +copymap <HOME>     gg +copymap <END>      G +copymap <PAGEDOWN> <C-F> +copymap <PAGEUP>   <C-B> + +map J  move down=0.5  pages=True +map K  move up=0.5    pages=True +copymap J <C-D> +copymap K <C-U> + +# Jumping around +map H     history_go -1 +map L     history_go 1 +map ]     move_parent 1 +map [     move_parent -1 +map }     traverse + +map gh cd ~ +map ge cd /etc +map gu cd /usr +map gd cd /dev +map gl cd -r . +map gL cd -r %f +map go cd /opt +map gv cd /var +map gm cd /media +map gM cd /mnt +map gs cd /srv +map gr cd / +map gR eval fm.cd(ranger.RANGERDIR) +map g/ cd / +map g? cd /usr/share/doc/ranger + +# External Programs +map E  edit +map du shell -p du --max-depth=1 -h --apparent-size +map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh +map yp shell -d echo -n %d/%f | xsel -i +map yd shell -d echo -n %d    | xsel -i +map yn shell -d echo -n %f    | xsel -i + +# Filesystem Operations +map =  chmod + +map cw console rename  +map A  eval fm.open_console('rename ' + fm.thisfile.basename) +map I  eval fm.open_console('rename ' + fm.thisfile.basename, position=7) + +map pp paste +map po paste overwrite=True +map pl paste_symlink relative=False +map pL paste_symlink relative=True +map phl paste_hardlink +map pht paste_hardlinked_subtree + +map dd cut +map ud uncut +map da cut mode=add +map dr cut mode=remove + +map yy copy +map uy uncut +map ya copy mode=add +map yr copy mode=remove + +# Temporary workarounds +map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier) +map dG  eval fm.cut(dirarg=dict(to=-1), narg=quantifier) +map dj  eval fm.cut(dirarg=dict(down=1), narg=quantifier) +map dk  eval fm.cut(dirarg=dict(up=1), narg=quantifier) +map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier) +map yG  eval fm.copy(dirarg=dict(to=-1), narg=quantifier) +map yj  eval fm.copy(dirarg=dict(down=1), narg=quantifier) +map yk  eval fm.copy(dirarg=dict(up=1), narg=quantifier) + +# Searching +map /  console search  +map n  search_next +map N  search_next forward=False +map ct search_next order=tag +map cs search_next order=size +map ci search_next order=mimetype +map cc search_next order=ctime +map cm search_next order=mtime +map ca search_next order=atime + +# Tabs +map <C-n>     tab_new ~ +map <C-w>     tab_close +map <TAB>     tab_move 1 +map <S-TAB>   tab_move -1 +map <A-Right> tab_move 1 +map <A-Left>  tab_move -1 +map gt        tab_move 1 +map gT        tab_move -1 +map gn        tab_new ~ +map gc        tab_close +map uq        tab_restore +map <a-1>     tab_open 1 +map <a-2>     tab_open 2 +map <a-3>     tab_open 3 +map <a-4>     tab_open 4 +map <a-5>     tab_open 5 +map <a-6>     tab_open 6 +map <a-7>     tab_open 7 +map <a-8>     tab_open 8 +map <a-9>     tab_open 9 + +# Sorting +map or toggle_option sort_reverse +map os chain set sort=size;      set sort_reverse=False +map ob chain set sort=basename;  set sort_reverse=False +map on chain set sort=natural;   set sort_reverse=False +map om chain set sort=mtime;     set sort_reverse=False +map oc chain set sort=ctime;     set sort_reverse=False +map oa chain set sort=atime;     set sort_reverse=False +map ot chain set sort=type;      set sort_reverse=False + +map oS chain set sort=size;      set sort_reverse=True +map oB chain set sort=basename;  set sort_reverse=True +map oN chain set sort=natural;   set sort_reverse=True +map oM chain set sort=mtime;     set sort_reverse=True +map oC chain set sort=ctime;     set sort_reverse=True +map oA chain set sort=atime;     set sort_reverse=True +map oT chain set sort=type;      set sort_reverse=True + +map dc get_cumulative_size + +# Settings +map zc    toggle_option collapse_preview +map zd    toggle_option sort_directories_first +map zh    toggle_option show_hidden +map <C-h> toggle_option show_hidden +map zi    toggle_option flushinput +map zm    toggle_option mouse_enabled +map zp    toggle_option preview_files +map zP    toggle_option preview_directories +map zs    toggle_option sort_case_insensitive +map zu    toggle_option autoupdate_cumulative_size +map zv    toggle_option use_preview_script +map zf    console filter  + +# Bookmarks +map `<any>  enter_bookmark %any +map '<any>  enter_bookmark %any +map m<any>  set_bookmark %any +map um<any> unset_bookmark %any + +map m<bg>   draw_bookmarks +copymap m<bg>  um<bg> `<bg> '<bg> + +# Generate all the chmod bindings with some python help: +eval for arg in "rwxXst": cmd("map +u{0} shell -d chmod u+{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map +g{0} shell -d chmod g+{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map +o{0} shell -d chmod o+{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map +a{0} shell -d chmod a+{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map +{0}  shell -d chmod u+{0} %s".format(arg)) + +eval for arg in "rwxXst": cmd("map -u{0} shell -d chmod u-{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map -g{0} shell -d chmod g-{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map -o{0} shell -d chmod o-{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map -a{0} shell -d chmod a-{0} %s".format(arg)) +eval for arg in "rwxXst": cmd("map -{0}  shell -d chmod u-{0} %s".format(arg)) + +# =================================================================== +# == Define keys for the console +# =================================================================== +# Note: Unmapped keys are passed directly to the console. + +# Basic +cmap <tab>   eval fm.ui.console.tab() +cmap <s-tab> eval fm.ui.console.tab(-1) +cmap <ESC>   eval fm.ui.console.close() +cmap <CR>    eval fm.ui.console.execute() +cmap <C-l>   redraw_window + +copycmap <ESC> <C-c> +copycmap <CR>  <C-j> + +# Move around +cmap <up>    eval fm.ui.console.history_move(-1) +cmap <down>  eval fm.ui.console.history_move(1) +cmap <left>  eval fm.ui.console.move(left=1) +cmap <right> eval fm.ui.console.move(right=1) +cmap <home>  eval fm.ui.console.move(right=0, absolute=True) +cmap <end>   eval fm.ui.console.move(right=-1, absolute=True) + +# Line Editing +cmap <backspace>  eval fm.ui.console.delete(-1) +cmap <delete>     eval fm.ui.console.delete(0) +cmap <C-w>        eval fm.ui.console.delete_word() +cmap <C-k>        eval fm.ui.console.delete_rest(1) +cmap <C-u>        eval fm.ui.console.delete_rest(-1) +cmap <C-y>        eval fm.ui.console.paste() + +# And of course the emacs way +copycmap <up>        <C-p> +copycmap <down>      <C-n> +copycmap <left>      <C-b> +copycmap <right>     <C-f> +copycmap <home>      <C-a> +copycmap <end>       <C-e> +copycmap <delete>    <C-d> +copycmap <backspace> <C-h> + +# Note: There are multiple ways to express backspaces.  <backspace> (code 263) +# and <backspace2> (code 127).  To be sure, use both. +copycmap <backspace> <backspace2> + +# This special expression allows typing in numerals: +cmap <allow_quantifiers> false + +# =================================================================== +# == Pager Keybindings +# =================================================================== + +# Movement +pmap  <down>      pager_move  down=1 +pmap  <up>        pager_move  up=1 +pmap  <left>      pager_move  left=4 +pmap  <right>     pager_move  right=4 +pmap  <home>      pager_move  to=0 +pmap  <end>       pager_move  to=-1 +pmap  <pagedown>  pager_move  down=1.0  pages=True +pmap  <pageup>    pager_move  up=1.0    pages=True +pmap  <C-d>       pager_move  down=0.5  pages=True +pmap  <C-u>       pager_move  up=0.5    pages=True + +copypmap <UP>       k  <C-p> +copypmap <DOWN>     j  <C-n> <CR> +copypmap <LEFT>     h +copypmap <RIGHT>    l +copypmap <HOME>     g +copypmap <END>      G +copypmap <C-d>      d +copypmap <C-u>      u +copypmap <PAGEDOWN> n  f  <C-F>  <Space> +copypmap <PAGEUP>   p  b  <C-B> + +# Basic +pmap     <ESC> pager_close +copypmap <ESC> q Q i <F3> +pmap E      edit_file + +# =================================================================== +# == Taskview Keybindings +# =================================================================== + +# Movement +tmap <up>        taskview_move up=1 +tmap <down>      taskview_move down=1 +tmap <home>      taskview_move to=0 +tmap <end>       taskview_move to=-1 +tmap <pagedown>  taskview_move down=1.0  pages=True +tmap <pageup>    taskview_move up=1.0    pages=True +tmap <C-d>       taskview_move down=0.5  pages=True +tmap <C-u>       taskview_move up=0.5    pages=True + +copytmap <UP>       k  <C-p> +copytmap <DOWN>     j  <C-n> <CR> +copytmap <HOME>     g +copytmap <END>      G +copytmap <C-u>      u +copytmap <PAGEDOWN> n  f  <C-F>  <Space> +copytmap <PAGEUP>   p  b  <C-B> + +# Changing priority and deleting tasks +tmap J          eval -q fm.ui.taskview.task_move(-1) +tmap K          eval -q fm.ui.taskview.task_move(0) +tmap dd         eval -q fm.ui.taskview.task_remove() +tmap <pagedown> eval -q fm.ui.taskview.task_move(-1) +tmap <pageup>   eval -q fm.ui.taskview.task_move(0) +tmap <delete>   eval -q fm.ui.taskview.task_remove() + +# Basic +tmap <ESC> taskview_close +copytmap <ESC> q Q w <C-c> diff --git a/ranger/.config/ranger/scope.sh b/ranger/.config/ranger/scope.sh new file mode 100755 index 0000000..64bab71 --- /dev/null +++ b/ranger/.config/ranger/scope.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env sh +# ranger supports enhanced previews.  If the option "use_preview_script" +# is set to True and this file exists, this script will be called and its +# output is displayed in ranger.  ANSI color codes are supported. + +# NOTES: This script is considered a configuration file.  If you upgrade +# ranger, it will be left untouched. (You must update it yourself.) +# Also, ranger disables STDIN here, so interactive scripts won't work properly + +# Meanings of exit codes: +# code | meaning    | action of ranger +# -----+------------+------------------------------------------- +# 0    | success    | success. display stdout as preview +# 1    | no preview | failure. display no preview at all +# 2    | plain text | display the plain content of the file +# 3    | fix width  | success. Don't reload when width changes +# 4    | fix height | success. Don't reload when height changes +# 5    | fix both   | success. Don't ever reload + +# Meaningful aliases for arguments: +path="$1"    # Full path of the selected file +width="$2"   # Width of the preview pane (number of fitting characters) +height="$3"  # Height of the preview pane (number of fitting characters) + +maxln=200    # Stop after $maxln lines.  Can be used like ls | head -n $maxln + +# Find out something about the file: +mimetype=$(file --mime-type -Lb "$path") +extension=${path##*.} + +# Functions: +# runs a command and saves its output into $output.  Useful if you need +# the return value AND want to use the output in a pipe +try() { output=$(eval '"$@"'); } + +# writes the output of the previouosly used "try" command +dump() { echo "$output"; } + +# a common post-processing function used after most commands +trim() { head -n "$maxln"; } + +# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success +highlight() { command highlight "$@"; test $? = 0 -o $? = 141; } + +case "$extension" in +    # Archive extensions: +    7z|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) +        try als "$path" && { dump | trim; exit 0; } +        try acat "$path" && { dump | trim; exit 3; } +        try bsdtar -lf "$path" && { dump | trim; exit 0; } +        exit 1;; +    rar) +        try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;; +    # PDF documents: +    pdf) +        try pdftotext -l 10 -nopgbrk -q "$path" - && \ +            { dump | trim | fmt -s -w $width; exit 0; } || exit 1;; +    # BitTorrent Files +    torrent) +        try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;; +    # HTML Pages: +    htm|html|xhtml) +        try w3m    -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } +        try lynx   -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } +        try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } +        ;; # fall back to highlight/cat if the text browsers fail +esac + +case "$mimetype" in +    # Syntax highlight for text files: +    text/* | */xml) +        try highlight --out-format=ansi "$path" && { dump | trim; exit 5; } || exit 2;; +    # Ascii-previews of images: +    image/*) +        img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;; +    # Display information about media files: +    video/* | audio/*) +        exiftool "$path" && exit 5 +        # Use sed to remove spaces so the output fits into the narrow window +        try mediainfo "$path" && { dump | trim | sed 's/  \+:/: /;';  exit 5; } || exit 1;; +esac + +exit 1  | 
