From: Samir Benmendil Date: Fri, 26 Sep 2014 15:10:07 +0000 (+0100) Subject: ranger: add config files X-Git-Url: https://git.rmz.io/dotfiles.git/commitdiff_plain/2a9779ad6b6506244818df4864a3185a029674d6 ranger: add config files --- diff --git a/.gitignore b/.gitignore index dbfb78d..cf8a015 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.log *.pyc +*.pyo diff --git a/Makefile b/Makefile index 665ef7c..c543a53 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ APATH := $(realpath .) FILES := bin DOTFILES := conky* git* goobookrc msmtp* mutt ncmpcpp offlineimap* profile weechat xbindkeysrc Xresources xprofile zprofile zshrc -CONFIGFILES := aliases compton.conf git mimeo.conf mpd retroarch vim xkb zsh +CONFIGFILES := aliases compton.conf git mimeo.conf mpd ranger retroarch vim xkb zsh .PHONY: install $(FILES) $(DOTFILES) $(CONFIGFILES) install: $(FILES) $(DOTFILES) $(CONFIGFILES) diff --git a/ranger/.gitignore b/ranger/.gitignore new file mode 100644 index 0000000..6c41588 --- /dev/null +++ b/ranger/.gitignore @@ -0,0 +1,4 @@ +bookmarks +__pycache__ +tagged +history diff --git a/ranger/commands.py b/ranger/commands.py new file mode 100644 index 0000000..f33d345 --- /dev/null +++ b/ranger/commands.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2009-2013 Roman Zimbelmann +# This configuration file is licensed under the same terms as ranger. +# =================================================================== +# This file contains ranger's commands. +# It's all in python; lines beginning with # are comments. +# +# Note that additional commands are automatically generated from the methods +# of the class ranger.core.actions.Actions. +# +# You can customize commands in the file ~/.config/ranger/commands.py. +# It has the same syntax as this file. In fact, you can just copy this +# file there with `ranger --copy-config=commands' and make your modifications. +# But make sure you update your configs when you update ranger. +# +# =================================================================== +# Every class defined here which is a subclass of `Command' will be used as a +# command in ranger. Several methods are defined to interface with ranger: +# execute(): called when the command is executed. +# cancel(): called when closing the console. +# tab(): called when is pressed. +# quick(): called after each keypress. +# +# The return values for tab() can be either: +# None: There is no tab completion +# A string: Change the console to this string +# A list/tuple/generator: cycle through every item in it +# +# The return value for quick() can be: +# False: Nothing happens +# True: Execute the command afterwards +# +# The return value for execute() and cancel() doesn't matter. +# +# =================================================================== +# Commands have certain attributes and methods that facilitate parsing of +# the arguments: +# +# self.line: The whole line that was written in the console. +# self.args: A list of all (space-separated) arguments to the command. +# self.quantifier: If this command was mapped to the key "X" and +# the user pressed 6X, self.quantifier will be 6. +# self.arg(n): The n-th argument, or an empty string if it doesn't exist. +# self.rest(n): The n-th argument plus everything that followed. For example, +# If the command was "search foo bar a b c", rest(2) will be "bar a b c" +# self.start(n): The n-th argument and anything before it. For example, +# If the command was "search foo bar a b c", rest(2) will be "bar a b c" +# +# =================================================================== +# And this is a little reference for common ranger functions and objects: +# +# self.fm: A reference to the "fm" object which contains most information +# about ranger. +# self.fm.notify(string): Print the given string on the screen. +# self.fm.notify(string, bad=True): Print the given string in RED. +# self.fm.reload_cwd(): Reload the current working directory. +# self.fm.thisdir: The current working directory. (A File object.) +# self.fm.thisfile: The current file. (A File object too.) +# self.fm.thistab.get_selection(): A list of all selected files. +# self.fm.execute_console(string): Execute the string as a ranger command. +# self.fm.open_console(string): Open the console with the given string +# already typed in for you. +# self.fm.move(direction): Moves the cursor in the given direction, which +# can be something like down=3, up=5, right=1, left=1, to=6, ... +# +# File objects (for example self.fm.thisfile) have these useful attributes and +# methods: +# +# cf.path: The path to the file. +# cf.basename: The base name only. +# cf.load_content(): Force a loading of the directories content (which +# obviously works with directories only) +# cf.is_directory: True/False depending on whether it's a directory. +# +# For advanced commands it is unavoidable to dive a bit into the source code +# of ranger. +# =================================================================== + +from ranger.api.commands import * + diff --git a/ranger/rc.conf b/ranger/rc.conf new file mode 100644 index 0000000..0c6417a --- /dev/null +++ b/ranger/rc.conf @@ -0,0 +1,532 @@ +# =================================================================== +# 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 true + +# 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. +# Does not work in urxvt with 32bit colordepth, tradeoff between preview +# and transparency. +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 jungle + +# 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 200 +set max_console_history_size 500 + +# 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 false + +# 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 reset +#map redraw_window +#map abort +#map 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 " tag_toggle tag=%any +#map 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 help +#map display_file +#map edit +#map copy +#map cut +#map console mkdir +#map console delete +#map exit + +# In case you work on a keyboard with dvorak layout +#map move up=1 +#map move down=1 +#map move left=1 +#map move right=1 +#map move to=0 +#map move to=-1 +#map move down=1 pages=True +#map move up=1 pages=True +#map move right=1 +#map console delete +#map console touch + +# VIM-like +#copymap k +#copymap j +#copymap h +#copymap l +#copymap gg +#copymap G +#copymap +#copymap + +#map J move down=0.5 pages=True +#map K move up=0.5 pages=True +#copymap J +#copymap K + +# 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 tab_new ~ +#map tab_close +#map tab_move 1 +#map tab_move -1 +#map tab_move 1 +#map 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 tab_open 1 +map tab_open 2 +map tab_open 3 +map tab_open 4 +map tab_open 5 +map tab_open 6 +map tab_open 7 +map tab_open 8 +map 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 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 ` enter_bookmark %any +#map ' enter_bookmark %any +#map m set_bookmark %any +#map um unset_bookmark %any + +#map m draw_bookmarks +#copymap m um ` ' + +# 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 eval fm.ui.console.tab() +#cmap eval fm.ui.console.tab(-1) +#cmap eval fm.ui.console.close() +#cmap eval fm.ui.console.execute() +#cmap redraw_window + +#copycmap +#copycmap + +# Move around +#cmap eval fm.ui.console.history_move(-1) +#cmap eval fm.ui.console.history_move(1) +#cmap eval fm.ui.console.move(left=1) +#cmap eval fm.ui.console.move(right=1) +#cmap eval fm.ui.console.move(right=0, absolute=True) +#cmap eval fm.ui.console.move(right=-1, absolute=True) + +# Line Editing +#cmap eval fm.ui.console.delete(-1) +#cmap eval fm.ui.console.delete(0) +#cmap eval fm.ui.console.delete_word() +#cmap eval fm.ui.console.delete_rest(1) +#cmap eval fm.ui.console.delete_rest(-1) +#cmap eval fm.ui.console.paste() + +# And of course the emacs way +#copycmap +#copycmap +#copycmap +#copycmap +#copycmap +#copycmap +#copycmap +#copycmap + +# Note: There are multiple ways to express backspaces. (code 263) +# and (code 127). To be sure, use both. +#copycmap + +# This special expression allows typing in numerals: +#cmap false + +# =================================================================== +# == Pager Keybindings +# =================================================================== + +# Movement +#pmap pager_move down=1 +#pmap pager_move up=1 +#pmap pager_move left=4 +#pmap pager_move right=4 +#pmap pager_move to=0 +#pmap pager_move to=-1 +#pmap pager_move down=1.0 pages=True +#pmap pager_move up=1.0 pages=True +#pmap pager_move down=0.5 pages=True +#pmap pager_move up=0.5 pages=True + +#copypmap k +#copypmap j +#copypmap h +#copypmap l +#copypmap g +#copypmap G +#copypmap d +#copypmap u +#copypmap n f +#copypmap p b + +# Basic +#pmap pager_close +#copypmap q Q i +#pmap E edit_file + +# =================================================================== +# == Taskview Keybindings +# =================================================================== + +# Movement +#tmap taskview_move up=1 +#tmap taskview_move down=1 +#tmap taskview_move to=0 +#tmap taskview_move to=-1 +#tmap taskview_move down=1.0 pages=True +#tmap taskview_move up=1.0 pages=True +#tmap taskview_move down=0.5 pages=True +#tmap taskview_move up=0.5 pages=True + +#copytmap k +#copytmap j +#copytmap g +#copytmap G +#copytmap u +#copytmap n f +#copytmap p 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 eval -q fm.ui.taskview.task_move(-1) +#tmap eval -q fm.ui.taskview.task_move(0) +#tmap eval -q fm.ui.taskview.task_remove() + +# Basic +#tmap taskview_close +#copytmap q Q w diff --git a/ranger/rifle.conf b/ranger/rifle.conf new file mode 100644 index 0000000..f195092 --- /dev/null +++ b/ranger/rifle.conf @@ -0,0 +1,185 @@ +# 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: +# , , ... = 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 | The regexp matches $1 +# ext | The regexp matches the extension of $1 +# mime | The regexp matches the mime type of $1 +# name | The regexp matches the basename of $1 +# path | The regexp matches the absolute path of $1 +# has | The program is installed (i.e. located in $PATH) +# file | $1 is a file +# directory | $1 is a directory +# number | 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 | Change how the program is run. See below. +# label