commit 29898d5f86027d1059ea5b9d503482a8df83e39e
parent 162aa491e076ff92c53c9bc36e2d13fa42a38e38
Author: andersuno <anders.hedman01@gmail.com>
Date:   Wed,  9 Oct 2019 19:35:53 +0200
 Changes to be committed:
	new file:   .config/bspwm/bspwmrc
	new file:   .config/compton.conf
	new file:   .config/dunst/dunstrc
	new file:   .config/i3/config
	new file:   .config/neofetch/config.conf
	new file:   .config/polybar/config
	new file:   .config/polybar/config.sample
	new file:   .config/ranger/bookmarks
	new file:   .config/ranger/commands.py
	new file:   .config/ranger/commands_full.py
	new file:   .config/ranger/history
	new file:   .config/ranger/rc.conf
	new file:   .config/ranger/rifle.conf
	new file:   .config/ranger/scope.sh
	new file:   .config/ranger/tagged
	new file:   .config/sxhkd/sxhkdrc
	new file:   .config/terminator/config
	new file:   .config/vifm/colors/Default.vifm
	new file:   .config/vifm/scripts/README
	new file:   .config/vifm/scripts/imgc
	new file:   .config/vifm/scripts/imgt
	new file:   .config/vifm/scripts/vifmimg
	new file:   .config/vifm/scripts/vifmrun
	new file:   .config/vifm/vifm-help.txt
	new file:   .config/vifm/vifminfo
	new file:   .config/vifm/vifmrc
	new file:   .config/vifm/vifmrc.orig
Diffstat:
27 files changed, 12410 insertions(+), 0 deletions(-)
diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+#systemctl --user start sxhkd.service
+~/Scripts/sxhkd.sh
+~/.fehbg &
+~/Scripts/polybar.sh
+compton &
+
+bspc monitor -d I II III IV V VI VII VIII IX X
+
+bspc config border_width         1
+bspc config window_gap          0
+
+bspc config split_ratio          0.52
+bspc config borderless_monocle   true
+bspc config gapless_monocle      true
+
+bspc desktop II -l monocle
+
+bspc rule -a Chromium desktop='^2' follow=on
+bspc rule -a Timeshift-gtk state=floating
+
+bspc rule -a Gimp desktop='^8' state=floating follow=on
+bspc rule -a mplayer2 state=floating
+bspc rule -a Kupfer.py focus=on
+bspc rule -a Screenkey manage=off
diff --git a/.config/compton.conf b/.config/compton.conf
@@ -0,0 +1,29 @@
+opacity-rule = [
+   #"10:class_i = 'screenfetch'",
+   #"95:class_g = 'UXTerm' && focused",
+   #"80:class_g = 'UXTerm' && !focused"
+   "85:class_g *?= 'Terminator'",
+   "90:class_g *?= 'surf'",
+   "90:class_g *?= 'chromium'",
+   ];
+
+#################################
+#
+# Fading
+#
+#################################
+
+# Fade windows during opacity changes.
+fading = true;
+# The time between steps in a fade in milliseconds. (default 10).
+fade-delta = 4;
+# Opacity change between steps while fading in. (default 0.028).
+fade-in-step = 0.03;
+# Opacity change between steps while fading out. (default 0.03).
+fade-out-step = 0.03;
+# Fade windows in/out when opening/closing
+# no-fading-openclose = true;
+
+# Specify a list of conditions of windows that should not be faded.
+fade-exclude = [ ];
+
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
@@ -0,0 +1,258 @@
+[global]
+font = Iosevka Term 11
+
+# Allow a small subset of html markup:
+#   <b>bold</b>
+#   <i>italic</i>
+#   <s>strikethrough</s>
+#   <u>underline</u>
+#
+# For a complete reference see
+# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
+# If markup is not allowed, those tags will be stripped out of the
+# message.
+markup = yes
+plain_text = no
+
+# The format of the message.  Possible variables are:
+#   %a  appname
+#   %s  summary
+#   %b  body
+#   %i  iconname (including its path)
+#   %I  iconname (without its path)
+#   %p  progress value if set ([  0%] to [100%]) or nothing
+# Markup is allowed
+format = "<b>%s</b>\n%b"
+
+# Sort messages by urgency.
+sort = no
+
+# Show how many messages are currently hidden (because of geometry).
+indicate_hidden = yes
+
+# Alignment of message text.
+# Possible values are "left", "center" and "right".
+alignment = center
+
+# The frequency with wich text that is longer than the notification
+# window allows bounces back and forth.
+# This option conflicts with "word_wrap".
+# Set to 0 to disable.
+bounce_freq = 0
+
+# Show age of message if message is older than show_age_threshold
+# seconds.
+# Set to -1 to disable.
+show_age_threshold = 10
+
+# Split notifications into multiple lines if they don't fit into
+# geometry.
+word_wrap = yes
+
+# Ignore newlines '\n' in notifications.
+ignore_newline = no
+
+# Hide duplicate's count and stack them
+stack_duplicates = yes
+hide_duplicates_count = yes
+
+
+# The geometry of the window:
+#   [{width}]x{height}[+/-{x}+/-{y}]
+# The geometry of the message window.
+# The height is measured in number of notifications everything else
+# in pixels.  If the width is omitted but the height is given
+# ("-geometry x2"), the message window expands over the whole screen
+# (dmenu-like).  If width is 0, the window expands to the longest
+# message displayed.  A positive x is measured from the left, a
+# negative from the right side of the screen.  Y is measured from
+# the top and down respectevly.
+# The width can be negative.  In this case the actual width is the
+# screen width minus the width defined in within the geometry option.
+#geometry = "250x50-40+40"
+#geometry = "300x50-15+49"
+geometry = "300x50-15+15"
+
+# Shrink window if it's smaller than the width.  Will be ignored if
+# width is 0.
+shrink = no
+
+# The transparency of the window.  Range: [0; 100].
+# This option will only work if a compositing windowmanager is
+# present (e.g. xcompmgr, compiz, etc.).
+transparency = 5
+
+# Don't remove messages, if the user is idle (no mouse or keyboard input)
+# for longer than idle_threshold seconds.
+# Set to 0 to disable.
+idle_threshold = 20
+
+# Which monitor should the notifications be displayed on.
+monitor = 0
+
+# Display notification on focused monitor.  Possible modes are:
+#   mouse: follow mouse pointer
+#   keyboard: follow window with keyboard focus
+#   none: don't follow anything
+#
+# "keyboard" needs a windowmanager that exports the
+# _NET_ACTIVE_WINDOW property.
+# This should be the case for almost all modern windowmanagers.
+#
+# If this option is set to mouse or keyboard, the monitor option
+# will be ignored.
+follow = none
+
+# Should a notification popped up from history be sticky or timeout
+# as if it would normally do.
+sticky_history = yes
+
+# Maximum amount of notifications kept in history
+history_length = 15
+
+# Display indicators for URLs (U) and actions (A).
+show_indicators = no
+
+# The height of a single line.  If the height is smaller than the
+# font height, it will get raised to the font height.
+# This adds empty space above and under the text.
+line_height = 3
+
+# Draw a line of "separatpr_height" pixel height between two
+# notifications.
+# Set to 0 to disable.
+separator_height = 2
+
+# Padding between text and separator.
+padding = 6
+
+# Horizontal padding.
+horizontal_padding = 6
+
+# Define a color for the separator.
+# possible values are:
+#  * auto: dunst tries to find a color fitting to the background;
+#  * foreground: use the same color as the foreground;
+#  * frame: use the same color as the frame;
+#  * anything else will be interpreted as a X color.
+separator_color = frame
+
+# Print a notification on startup.
+# This is mainly for error detection, since dbus (re-)starts dunst
+# automatically after a crash.
+startup_notification = false
+
+# dmenu path.
+dmenu = /usr/bin/dmenu -p dunst:
+
+# Browser for opening urls in context menu.
+browser = /usr/bin/firefox -new-tab
+
+# Align icons left/right/off
+icon_position = right
+max_icon_size = 80
+
+# Paths to default icons.
+icon_path = /usr/share/icons/Adwaita/48x48/mimetypes/:/usr/share/icons/Adwaita/48x48/status/:/usr/share/icons/Adwaita/48x48/devices/:/usr/share/icons/Adwaita/48x48/notifications/:/usr/share/icons/Adwaita/48x48/emblems/:/usr/share/icons/Adwaita/48x48/legacy/:/usr/share/icons/hicolor/48x48/apps/
+
+frame_width = 3
+frame_color = "#8EC07C"
+
+[shortcuts]
+
+# Shortcuts are specified as [modifier+][modifier+]...key
+# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
+# "mod3" and "mod4" (windows-key).
+# Xev might be helpful to find names for keys.
+
+# Close notification.
+close = ctrl+space
+
+# Close all notifications.
+close_all = ctrl+shift+space
+
+# Redisplay last message(s).
+# On the US keyboard layout "grave" is normally above TAB and left
+# of "1".
+history = ctrl+grave
+
+# Context menu.
+context = ctrl+shift+period
+
+[urgency_low]
+# IMPORTANT: colors have to be defined in quotation marks.
+# Otherwise the "#" and following would be interpreted as a comment.
+frame_color = "#3B7C87"
+foreground = "#3B7C87"
+background = "#191311"
+#background = "#2B313C"
+timeout = 8
+
+[urgency_normal]
+frame_color = "#5B8234"
+foreground = "#5B8234"
+background = "#191311"
+#background = "#2B313C"
+timeout = 8
+
+[urgency_critical]
+frame_color = "#B7472A"
+foreground = "#B7472A"
+background = "#191311"
+#background = "#2B313C"
+timeout = 10
+
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+# Messages can be matched by "appname", "summary", "body", "icon", "category",
+# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
+# "background", "new_icon" and "format".
+# Shell-like globbing will get expanded.
+#
+# SCRIPTING
+# You can specify a script that gets run when the rule matches by
+# setting the "script" option.
+# The script will be called as follows:
+#   script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: if you don't want a notification to be displayed, set the format
+# to "".
+# NOTE: It might be helpful to run dunst -print in a terminal in order
+# to find fitting options for rules.
+
+#[espeak]
+#    summary = "*"
+#    script = dunst_espeak.sh
+
+#[script-test]
+#    summary = "*script*"
+#    script = dunst_test.sh
+
+#[ignore]
+#    # This notification will not be displayed
+#    summary = "foobar"
+#    format = ""
+
+#[signed_on]
+#    appname = Pidgin
+#    summary = "*signed on*"
+#    urgency = low
+#
+#[signed_off]
+#    appname = Pidgin
+#    summary = *signed off*
+#    urgency = low
+#
+#[says]
+#    appname = Pidgin
+#    summary = *says*
+#    urgency = critical
+#
+#[twitter]
+#    appname = Pidgin
+#    summary = *twitter.com*
+#    urgency = normal
+#
+# vim: ft=cfg
diff --git a/.config/i3/config b/.config/i3/config
@@ -0,0 +1,225 @@
+# This file has been auto-generated by i3-config-wizard(1).
+# It will not be overwritten, so edit it as you like.
+#
+# Should you change your keyboard layout some time, delete
+# this file and re-run i3-config-wizard(1).
+#
+
+# i3 config file (v4)
+#
+# Please see https://i3wm.org/docs/userguide.html for a complete reference!
+
+set $mod Mod4
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar {} block below.
+font pango:monospace 9
+
+# This font is widely installed, provides lots of unicode glyphs, right-to-left
+# text rendering and scalability on retina/hidpi displays (thanks to pango).
+#font pango:DejaVu Sans Mono 8
+
+# Before i3 v4.8, we used to recommend this one as the default:
+# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+# The font above is very space-efficient, that is, it looks good, sharp and
+# clear in small sizes. However, its unicode glyph coverage is limited, the old
+# X core fonts rendering does not support right-to-left and this being a bitmap
+# font, it doesn’t scale on retina/hidpi displays.
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# start a terminal
+bindsym $mod+Return exec --no-startup-id i3-sensible-terminal
+bindsym $mod+BackSpace exec --no-startup-id st
+# kill focused window
+bindsym $mod+Shift+q kill
+
+# start dmenu (a program launcher)
+bindsym $mod+d exec --no-startup-id dmenu_run
+# There also is the (new) i3-dmenu-desktop which only displays applications
+# shipping a .desktop file. It is a wrapper around dmenu, so you need that
+# installed.
+# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
+
+#Workspace names
+#set $ws1 "1:"
+#set $ws2 "2:"
+#set $ws3 "3:"
+#set $ws4 "4:"
+#set $ws5 "5:"
+#set $ws6 "6:"
+#set $ws7 "7:"
+#set $ws8 "8:"
+#set $ws9 "9:"
+#set $ws10 "10:"
+
+#Use xprop
+#class=WM_CLASS(STRING)
+#title=WM_NAME(STRING)
+for_window [class="^.*"] border pixel 1
+for_window [class="Firefox-esr"] border pixel 5
+for_window [class="keepassxc"] floating enable
+for_window [title="Terminator Preferences"] floating enable
+for_window [title="searchbuff"] floating enable, resize set 1300 100, move position 32 30, focus
+assign [class="Chromium"] $ws1
+
+#Gaps
+gaps inner 10
+gaps outer 5
+#gaps horizontal 10
+#gaps vertical 10
+#gaps top 10
+#gaps right 10
+#gaps bottom 10
+#gaps left 10
+
+
+
+# change focus
+bindsym $mod+j focus left
+bindsym $mod+k focus down
+bindsym $mod+l focus up
+bindsym $mod+semicolon focus right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+bindsym $mod+Shift+j move left
+bindsym $mod+Shift+k move down
+bindsym $mod+Shift+l move up
+bindsym $mod+Shift+semicolon move right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# split in horizontal orientation
+bindsym $mod+h split h
+
+# split in vertical orientation
+bindsym $mod+v split v
+
+# enter fullscreen mode for the focused container
+bindsym $mod+f fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+#bindsym $mod+d focus child
+
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
+set $ws1 "1:"
+set $ws2 "2:"
+set $ws3 "3:"
+set $ws4 "4:"
+set $ws5 "5:"
+set $ws6 "6:"
+set $ws7 "7:"
+set $ws8 "8:"
+set $ws9 "9:"
+set $ws10 "10:"
+
+# switch to workspace
+bindsym $mod+1 workspace $ws1
+bindsym $mod+2 workspace $ws2
+bindsym $mod+3 workspace $ws3
+bindsym $mod+4 workspace $ws4
+bindsym $mod+5 workspace $ws5
+bindsym $mod+6 workspace $ws6
+bindsym $mod+7 workspace $ws7
+bindsym $mod+8 workspace $ws8
+bindsym $mod+9 workspace $ws9
+bindsym $mod+0 workspace $ws10
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace $ws1
+bindsym $mod+Shift+2 move container to workspace $ws2
+bindsym $mod+Shift+3 move container to workspace $ws3
+bindsym $mod+Shift+4 move container to workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5
+bindsym $mod+Shift+6 move container to workspace $ws6
+bindsym $mod+Shift+7 move container to workspace $ws7
+bindsym $mod+Shift+8 move container to workspace $ws8
+bindsym $mod+Shift+9 move container to workspace $ws9
+bindsym $mod+Shift+0 move container to workspace $ws10
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+        # These bindings trigger as soon as you enter the resize mode
+
+        # Pressing left will shrink the window’s width.
+        # Pressing right will grow the window’s width.
+        # Pressing up will shrink the window’s height.
+        # Pressing down will grow the window’s height.
+        bindsym j resize shrink width 10 px or 10 ppt
+        bindsym k resize grow height 10 px or 10 ppt
+        bindsym l resize shrink height 10 px or 10 ppt
+        bindsym semicolon resize grow width 10 px or 10 ppt
+
+        # same bindings, but for the arrow keys
+        bindsym Left resize shrink width 10 px or 10 ppt
+        bindsym Down resize grow height 10 px or 10 ppt
+        bindsym Up resize shrink height 10 px or 10 ppt
+        bindsym Right resize grow width 10 px or 10 ppt
+
+        # back to normal: Enter or Escape or $mod+r
+        bindsym Return mode "default"
+        bindsym Escape mode "default"
+        bindsym $mod+r mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+# Start i3bar to display a workspace bar (plus the system information i3status
+# finds out, if available)
+bar {
+        status_command i3status
+}
+
+exec_always --no-startup-id compton
+exec_always --no-startup-id ~/.fehbg
+
+bindsym $mod+i exec --no-startup-id /home/anders/Scripts/.scriptmenu
+#bindsym $mod+o exec --no-startup-id chromium
+bindsym $mod+KP_Enter exec --no-startup-id i3lock-fancy
+bindsym $mod+KP_Add exec --no-startup-id "sudo /home/anders/Scripts/brightup.sh"
+bindsym $mod+KP_Subtract exec --no-startup-id "sudo /home/anders/Scripts/brightdown.sh"
+bindsym XF86MonBrightnessUp exec --no-startup-id "sudo /home/anders/Scripts/brightup.sh"
+bindsym XF86MonBrightnessDown exec --no-startup-id "sudo /home/anders/Scripts/brightdown.sh"
+bindsym XF86AudioRaiseVolume exec --no-startup-id "pactl set-sink-volume 0 +5%"
+bindsym XF86AudioLowerVolume exec --no-startup-id "pactl set-sink-volume 0 -5%"
+bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute 0 toggle"
+
+bindsym $mod+p exec --no-startup-id "kpmenu -d /home/anders/.kp/Database.kdbx"
+bindsym $mod+Shift+p exec --no-startup-id "keepassxc"
+
+bindsym $mod+Shift+s exec --no-startup-id "/home/anders/Scripts/surfraw.sh"
+
+#bindsym $mod+  exec --no-startup-id
diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf
@@ -0,0 +1,764 @@
+# See this wiki page for more info:
+# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
+print_info() {
+    info title
+    info underline
+
+    info "OS" distro
+    info "Host" model
+    info "Kernel" kernel
+    info "Uptime" uptime
+    info "Packages" packages
+    info "Shell" shell
+    info "Resolution" resolution
+    info "DE" de
+    info "WM" wm
+    info "WM Theme" wm_theme
+    info "Theme" theme
+    info "Icons" icons
+    info "Terminal" term
+    info "Terminal Font" term_font
+    info "CPU" cpu
+    info "GPU" gpu
+    info "Memory" memory
+
+    # info "GPU Driver" gpu_driver  # Linux/macOS only
+    # info "CPU Usage" cpu_usage
+    # info "Disk" disk
+    # info "Battery" battery
+    # info "Font" font
+    # info "Song" song
+    # [[ $player ]] && prin "Music Player" "$player"
+    # info "Local IP" local_ip
+    # info "Public IP" public_ip
+    # info "Users" users
+    # info "Locale" locale  # This only works on glibc systems.
+
+    info cols
+}
+
+
+# Kernel
+
+
+# Shorten the output of the kernel function.
+#
+# Default:  'on'
+# Values:   'on', 'off'
+# Flag:     --kernel_shorthand
+# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
+#
+# Example:
+# on:  '4.8.9-1-ARCH'
+# off: 'Linux 4.8.9-1-ARCH'
+kernel_shorthand="on"
+
+
+# Distro
+
+
+# Shorten the output of the distro function
+#
+# Default:  'off'
+# Values:   'on', 'off', 'tiny'
+# Flag:     --distro_shorthand
+# Supports: Everything except Windows and Haiku
+distro_shorthand="off"
+
+# Show/Hide OS Architecture.
+# Show 'x86_64', 'x86' and etc in 'Distro:' output.
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --os_arch
+#
+# Example:
+# on:  'Arch Linux x86_64'
+# off: 'Arch Linux'
+os_arch="on"
+
+
+# Uptime
+
+
+# Shorten the output of the uptime function
+#
+# Default: 'on'
+# Values:  'on', 'off', 'tiny'
+# Flag:    --uptime_shorthand
+#
+# Example:
+# on:   '2 days, 10 hours, 3 mins'
+# off:  '2 days, 10 hours, 3 minutes'
+# tiny: '2d 10h 3m'
+uptime_shorthand="on"
+
+
+# Memory
+
+
+# Show memory pecentage in output.
+#
+# Default: 'off'
+# Values:  'on', 'off'
+# Flag:    --memory_percent
+#
+# Example:
+# on:   '1801MiB / 7881MiB (22%)'
+# off:  '1801MiB / 7881MiB'
+memory_percent="off"
+
+
+# Packages
+
+
+# Show/Hide Package Manager names.
+#
+# Default: 'tiny'
+# Values:  'on', 'tiny' 'off'
+# Flag:    --package_managers
+#
+# Example:
+# on:   '998 (pacman), 8 (flatpak), 4 (snap)'
+# tiny: '908 (pacman, flatpak, snap)'
+# off:  '908'
+package_managers="on"
+
+
+# Shell
+
+
+# Show the path to $SHELL
+#
+# Default: 'off'
+# Values:  'on', 'off'
+# Flag:    --shell_path
+#
+# Example:
+# on:  '/bin/bash'
+# off: 'bash'
+shell_path="off"
+
+# Show $SHELL version
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --shell_version
+#
+# Example:
+# on:  'bash 4.4.5'
+# off: 'bash'
+shell_version="on"
+
+
+# CPU
+
+
+# CPU speed type
+#
+# Default: 'bios_limit'
+# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
+# Flag:    --speed_type
+# Supports: Linux with 'cpufreq'
+# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
+speed_type="bios_limit"
+
+# CPU speed shorthand
+#
+# Default: 'off'
+# Values: 'on', 'off'.
+# Flag:    --speed_shorthand
+# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
+#
+# Example:
+# on:    'i7-6500U (4) @ 3.1GHz'
+# off:   'i7-6500U (4) @ 3.100GHz'
+speed_shorthand="off"
+
+# Enable/Disable CPU brand in output.
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --cpu_brand
+#
+# Example:
+# on:   'Intel i7-6500U'
+# off:  'i7-6500U (4)'
+cpu_brand="on"
+
+# CPU Speed
+# Hide/Show CPU speed.
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --cpu_speed
+#
+# Example:
+# on:  'Intel i7-6500U (4) @ 3.1GHz'
+# off: 'Intel i7-6500U (4)'
+cpu_speed="on"
+
+# CPU Cores
+# Display CPU cores in output
+#
+# Default: 'logical'
+# Values:  'logical', 'physical', 'off'
+# Flag:    --cpu_cores
+# Support: 'physical' doesn't work on BSD.
+#
+# Example:
+# logical:  'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
+# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
+# off:      'Intel i7-6500U @ 3.1GHz'
+cpu_cores="logical"
+
+# CPU Temperature
+# Hide/Show CPU temperature.
+# Note the temperature is added to the regular CPU function.
+#
+# Default: 'off'
+# Values:  'C', 'F', 'off'
+# Flag:    --cpu_temp
+# Supports: Linux, BSD
+# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
+#       coretemp kernel module. This only supports newer Intel processors.
+#
+# Example:
+# C:   'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
+# F:   'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
+# off: 'Intel i7-6500U (4) @ 3.1GHz'
+cpu_temp="off"
+
+
+# GPU
+
+
+# Enable/Disable GPU Brand
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --gpu_brand
+#
+# Example:
+# on:  'AMD HD 7950'
+# off: 'HD 7950'
+gpu_brand="on"
+
+# Which GPU to display
+#
+# Default: 'all'
+# Values:  'all', 'dedicated', 'integrated'
+# Flag:    --gpu_type
+# Supports: Linux
+#
+# Example:
+# all:
+#   GPU1: AMD HD 7950
+#   GPU2: Intel Integrated Graphics
+#
+# dedicated:
+#   GPU1: AMD HD 7950
+#
+# integrated:
+#   GPU1: Intel Integrated Graphics
+gpu_type="all"
+
+
+# Resolution
+
+
+# Display refresh rate next to each monitor
+# Default: 'off'
+# Values:  'on', 'off'
+# Flag:    --refresh_rate
+# Supports: Doesn't work on Windows.
+#
+# Example:
+# on:  '1920x1080 @ 60Hz'
+# off: '1920x1080'
+refresh_rate="off"
+
+
+# Gtk Theme / Icons / Font
+
+
+# Shorten output of GTK Theme / Icons / Font
+#
+# Default: 'off'
+# Values:  'on', 'off'
+# Flag:    --gtk_shorthand
+#
+# Example:
+# on:  'Numix, Adwaita'
+# off: 'Numix [GTK2], Adwaita [GTK3]'
+gtk_shorthand="off"
+
+
+# Enable/Disable gtk2 Theme / Icons / Font
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --gtk2
+#
+# Example:
+# on:  'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Adwaita [GTK3]'
+gtk2="on"
+
+# Enable/Disable gtk3 Theme / Icons / Font
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --gtk3
+#
+# Example:
+# on:  'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Numix [GTK2]'
+gtk3="on"
+
+
+# IP Address
+
+
+# Website to ping for the public IP
+#
+# Default: 'http://ident.me'
+# Values:  'url'
+# Flag:    --ip_host
+public_ip_host="http://ident.me"
+
+# Public IP timeout.
+#
+# Default: '2'
+# Values:  'int'
+# Flag:    --ip_timeout
+public_ip_timeout=2
+
+
+# Disk
+
+
+# Which disks to display.
+# The values can be any /dev/sdXX, mount point or directory.
+# NOTE: By default we only show the disk info for '/'.
+#
+# Default: '/'
+# Values:  '/', '/dev/sdXX', '/path/to/drive'.
+# Flag:    --disk_show
+#
+# Example:
+# disk_show=('/' '/dev/sdb1'):
+#      'Disk (/): 74G / 118G (66%)'
+#      'Disk (/mnt/Videos): 823G / 893G (93%)'
+#
+# disk_show=('/'):
+#      'Disk (/): 74G / 118G (66%)'
+#
+disk_show=('/')
+
+# Disk subtitle.
+# What to append to the Disk subtitle.
+#
+# Default: 'mount'
+# Values:  'mount', 'name', 'dir'
+# Flag:    --disk_subtitle
+#
+# Example:
+# name:   'Disk (/dev/sda1): 74G / 118G (66%)'
+#         'Disk (/dev/sdb2): 74G / 118G (66%)'
+#
+# mount:  'Disk (/): 74G / 118G (66%)'
+#         'Disk (/mnt/Local Disk): 74G / 118G (66%)'
+#         'Disk (/mnt/Videos): 74G / 118G (66%)'
+#
+# dir:    'Disk (/): 74G / 118G (66%)'
+#         'Disk (Local Disk): 74G / 118G (66%)'
+#         'Disk (Videos): 74G / 118G (66%)'
+disk_subtitle="mount"
+
+
+# Song
+
+
+# Manually specify a music player.
+#
+# Default: 'auto'
+# Values:  'auto', 'player-name'
+# Flag:    --music_player
+#
+# Available values for 'player-name':
+#
+# amarok
+# audacious
+# banshee
+# bluemindo
+# clementine
+# cmus
+# deadbeef
+# deepin-music
+# dragon
+# elisa
+# exaile
+# gnome-music
+# gmusicbrowser
+# guayadeque
+# iTunes
+# juk
+# lollypop
+# mocp
+# mopidy
+# mpd
+# netease-cloud-music
+# pogo
+# pragha
+# qmmp
+# quodlibet
+# rhythmbox
+# sayonara
+# smplayer
+# spotify
+# tomahawk
+# vlc
+# xmms2d
+# yarock
+music_player="auto"
+
+# Format to display song information.
+#
+# Default: '%artist% - %album% - %title%'
+# Values:  '%artist%', '%album%', '%title%'
+# Flag:    --song_format
+#
+# Example:
+# default: 'Song: Jet - Get Born - Sgt Major'
+song_format="%artist% - %album% - %title%"
+
+# Print the Artist, Album and Title on separate lines
+#
+# Default: 'off'
+# Values:  'on', 'off'
+# Flag:    --song_shorthand
+#
+# Example:
+# on:  'Artist: The Fratellis'
+#      'Album: Costello Music'
+#      'Song: Chelsea Dagger'
+#
+# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
+song_shorthand="off"
+
+# 'mpc' arguments (specify a host, password etc).
+#
+# Default:  ''
+# Example: mpc_args=(-h HOST -P PASSWORD)
+mpc_args=()
+
+
+# Text Colors
+
+
+# Text Colors
+#
+# Default:  'distro'
+# Values:   'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag:     --colors
+#
+# Each number represents a different part of the text in
+# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
+#
+# Example:
+# colors=(distro)      - Text is colored based on Distro colors.
+# colors=(4 6 1 8 8 6) - Text is colored in the order above.
+colors=(distro)
+
+
+# Text Options
+
+
+# Toggle bold text
+#
+# Default:  'on'
+# Values:   'on', 'off'
+# Flag:     --bold
+bold="on"
+
+# Enable/Disable Underline
+#
+# Default:  'on'
+# Values:   'on', 'off'
+# Flag:     --underline
+underline_enabled="on"
+
+# Underline character
+#
+# Default:  '-'
+# Values:   'string'
+# Flag:     --underline_char
+underline_char="-"
+
+
+# Info Separator
+# Replace the default separator with the specified string.
+#
+# Default:  ':'
+# Flag:     --separator
+#
+# Example:
+# separator="->":   'Shell-> bash'
+# separator=" =":   'WM = dwm'
+separator=":"
+
+
+# Color Blocks
+
+
+# Color block range
+# The range of colors to print.
+#
+# Default:  '0', '7'
+# Values:   'num'
+# Flag:     --block_range
+#
+# Example:
+#
+# Display colors 0-7 in the blocks.  (8 colors)
+# neofetch --block_range 0 7
+#
+# Display colors 0-15 in the blocks. (16 colors)
+# neofetch --block_range 0 15
+block_range=(0 7)
+
+# Toggle color blocks
+#
+# Default:  'on'
+# Values:   'on', 'off'
+# Flag:     --color_blocks
+color_blocks="on"
+
+# Color block width in spaces
+#
+# Default:  '3'
+# Values:   'num'
+# Flag:     --block_width
+block_width=3
+
+# Color block height in lines
+#
+# Default:  '1'
+# Values:   'num'
+# Flag:     --block_height
+block_height=1
+
+
+# Progress Bars
+
+
+# Bar characters
+#
+# Default:  '-', '='
+# Values:   'string', 'string'
+# Flag:     --bar_char
+#
+# Example:
+# neofetch --bar_char 'elapsed' 'total'
+# neofetch --bar_char '-' '='
+bar_char_elapsed="-"
+bar_char_total="="
+
+# Toggle Bar border
+#
+# Default:  'on'
+# Values:   'on', 'off'
+# Flag:     --bar_border
+bar_border="on"
+
+# Progress bar length in spaces
+# Number of chars long to make the progress bars.
+#
+# Default:  '15'
+# Values:   'num'
+# Flag:     --bar_length
+bar_length=15
+
+# Progress bar colors
+# When set to distro, uses your distro's logo colors.
+#
+# Default:  'distro', 'distro'
+# Values:   'distro', 'num'
+# Flag:     --bar_colors
+#
+# Example:
+# neofetch --bar_colors 3 4
+# neofetch --bar_colors distro 5
+bar_color_elapsed="distro"
+bar_color_total="distro"
+
+
+# Info display
+# Display a bar with the info.
+#
+# Default: 'off'
+# Values:  'bar', 'infobar', 'barinfo', 'off'
+# Flags:   --cpu_display
+#          --memory_display
+#          --battery_display
+#          --disk_display
+#
+# Example:
+# bar:     '[---=======]'
+# infobar: 'info [---=======]'
+# barinfo: '[---=======] info'
+# off:     'info'
+cpu_display="off"
+memory_display="off"
+battery_display="off"
+disk_display="off"
+
+
+# Backend Settings
+
+
+# Image backend.
+#
+# Default:  'ascii'
+# Values:   'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
+#           'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
+# Flag:     --backend
+image_backend="ascii"
+#image_backend="w3m"
+
+# Image Source
+#
+# Which image or ascii file to display.
+#
+# Default:  'auto'
+# Values:   'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
+#           'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
+# Flag:     --source
+#
+# NOTE: 'auto' will pick the best image source for whatever image backend is used.
+#       In ascii mode, distro ascii art will be used and in an image mode, your
+#       wallpaper will be used.
+image_source="auto"
+#image_source="/home/anders/Images/archlogo.jpg"
+
+
+# Ascii Options
+
+
+# Ascii distro
+# Which distro's ascii art to display.
+#
+# Default: 'auto'
+# Values:  'auto', 'distro_name'
+# Flag:    --ascii_distro
+#
+# NOTE: Arch and Ubuntu have 'old' logo variants.
+#       Change this to 'arch_old' or 'ubuntu_old' to use the old logos.
+# NOTE: Ubuntu has flavor variants.
+#       Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu-GNOME' or 'Ubuntu-Budgie' to use the flavors.
+# NOTE: Arch, Crux and Gentoo have a smaller logo variant.
+#       Change this to 'arch_small', 'crux_small' or 'gentoo_small' to use the small logos.
+ascii_distro="auto"
+#ascii_distro="arch_small"
+
+# Ascii Colors
+#
+# Default:  'distro'
+# Values:   'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag:     --ascii_colors
+#
+# Example:
+# ascii_colors=(distro)      - Ascii is colored based on Distro colors.
+# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
+ascii_colors=(distro)
+
+# Bold ascii logo
+# Whether or not to bold the ascii logo.
+#
+# Default: 'on'
+# Values:  'on', 'off'
+# Flag:    --ascii_bold
+ascii_bold="on"
+
+
+# Image Options
+
+
+# Image loop
+# Setting this to on will make neofetch redraw the image constantly until
+# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
+#
+# Default:  'off'
+# Values:   'on', 'off'
+# Flag:     --loop
+image_loop="off"
+
+# Thumbnail directory
+#
+# Default: '~/.cache/thumbnails/neofetch'
+# Values:  'dir'
+thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
+
+# Crop mode
+#
+# Default:  'normal'
+# Values:   'normal', 'fit', 'fill'
+# Flag:     --crop_mode
+#
+# See this wiki page to learn about the fit and fill options.
+# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
+crop_mode="normal"
+
+# Crop offset
+# Note: Only affects 'normal' crop mode.
+#
+# Default:  'center'
+# Values:   'northwest', 'north', 'northeast', 'west', 'center'
+#           'east', 'southwest', 'south', 'southeast'
+# Flag:     --crop_offset
+crop_offset="center"
+
+# Image size
+# The image is half the terminal width by default.
+#
+# Default: 'auto'
+# Values:  'auto', '00px', '00%', 'none'
+# Flags:   --image_size
+#          --size
+image_size="auto"
+
+# Gap between image and text
+#
+# Default: '3'
+# Values:  'num', '-num'
+# Flag:    --gap
+gap=3
+
+# Image offsets
+# Only works with the w3m backend.
+#
+# Default: '0'
+# Values:  'px'
+# Flags:   --xoffset
+#          --yoffset
+yoffset=0
+xoffset=0
+
+# Image background color
+# Only works with the w3m backend.
+#
+# Default: ''
+# Values:  'color', 'blue'
+# Flag:    --bg_color
+background_color=
+
+
+# Misc Options
+
+# Stdout mode
+# Turn off all colors and disables image backend (ASCII/Image).
+# Useful for piping into another command.
+# Default: 'off'
+# Values: 'on', 'off'
+stdout="off"
diff --git a/.config/polybar/config b/.config/polybar/config
@@ -0,0 +1,455 @@
+;==========================================================
+;
+;
+;   ██████╗  ██████╗ ██╗  ██╗   ██╗██████╗  █████╗ ██████╗
+;   ██╔══██╗██╔═══██╗██║  ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
+;   ██████╔╝██║   ██║██║   ╚████╔╝ ██████╔╝███████║██████╔╝
+;   ██╔═══╝ ██║   ██║██║    ╚██╔╝  ██╔══██╗██╔══██║██╔══██╗
+;   ██║     ╚██████╔╝███████╗██║   ██████╔╝██║  ██║██║  ██║
+;   ╚═╝      ╚═════╝ ╚══════╝╚═╝   ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝
+;
+;
+;   To learn more about how to configure Polybar
+;   go to https://github.com/jaagr/polybar
+;
+;   The README contains alot of information
+;
+;==========================================================
+
+[colors]
+;background = ${xrdb:color0:#222}
+background = #222
+background-alt = #444
+;foreground = ${xrdb:color7:#222}
+foreground = #dfdfdf
+foreground-alt = #555
+primary = #ffb52a
+secondary = #e60053
+alert = #bd2c40
+
+;Xterm colors
+black = #000000
+maroon = #800000
+green = #008000
+olive = #808000
+navy = #000080
+purple = #800080
+teal = #008080
+silver = #c0c0c0
+grey = #808080
+red = #ff0000
+lime = #00ff00
+yellow = #ffff00
+blue = #0000ff
+fuchsia = #ff00ff
+aqua = #00ffff
+white = #ffffff
+
+[bar/mybar]
+;monitor = ${env:MONITOR:HDMI-1}
+width = 100%
+height = 20
+;offset-x = 1%
+;offset-y = 1%
+radius = 0.0
+fixed-center = false
+bottom = true
+
+background = ${colors.background}
+foreground = ${colors.foreground}
+
+line-size = 0
+line-color = #f00
+
+border-size = 0
+border-color = #00000000
+
+padding-left = 0
+padding-right = 2
+
+module-margin-left = 1
+module-margin-right = 2
+
+font-0 = fixed:pixelsize=10;1
+font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
+font-2 = siji:pixelsize=10;1
+font-3 = FontAwesome:size=8
+
+modules-left = bspwm
+;modules-center = xwindow
+modules-right = wlan eth updates filesystem xbacklight pulseaudio memory cpu temperature battery date powermenu
+
+tray-position = right
+tray-padding = 0
+tray-background = ${colors.background}
+tray-detached = false
+tray-maxsize = 16
+
+
+wm-restack = bspwm
+;wm-restack = i3
+
+;override-redirect = true
+
+;scroll-up = bspwm-desknext
+;scroll-down = bspwm-deskprev
+
+;scroll-up = i3wm-wsnext
+;scroll-down = i3wm-wsprev
+
+cursor-click = pointer
+cursor-scroll = ns-resize
+
+[module/xwindow]
+type = internal/xwindow
+label = %title:0:30:...%
+
+[module/xkeyboard]
+type = internal/xkeyboard
+blacklist-0 = num lock
+
+format-prefix = " "
+format-prefix-foreground = ${colors.foreground-alt}
+format-prefix-underline = ${colors.secondary}
+
+label-layout = %layout%
+label-layout-underline = ${colors.secondary}
+
+label-indicator-padding = 2
+label-indicator-margin = 1
+label-indicator-background = ${colors.secondary}
+label-indicator-underline = ${colors.secondary}
+
+[module/filesystem]
+type = internal/fs
+interval = 25
+
+mount-0 = /
+
+;label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
+label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %free%
+label-unmounted = %mountpoint% not mounted
+label-unmounted-foreground = ${colors.foreground-alt}
+
+[module/bspwm]
+type = internal/bspwm
+
+ws-icon-0 = I;
+ws-icon-1 = II;
+;ws-icon-2 = III;♜
+;ws-icon-3 = IV;♝
+;ws-icon-4 = V;♞
+ws-icon-default = 
+
+label-focused = [%index%]
+label-focused-background = ${colors.background-alt}
+label-focused-underline= ${colors.primary}
+label-focused-padding = 1
+
+label-occupied = %index%
+label-occupied-padding = 2
+
+label-urgent = %index%!
+label-urgent-background = ${colors.alert}
+label-urgent-padding = 2
+
+label-empty = %index%
+label-empty-foreground = ${colors.foreground-alt}
+label-empty-padding = 2
+
+; Separator in between workspaces
+; label-separator = |
+
+[module/mpd]
+type = internal/mpd
+format-online = <label-song>  <icon-prev> <icon-stop> <toggle> <icon-next>
+
+icon-prev = 
+icon-stop = 
+icon-play = 
+icon-pause = 
+icon-next = 
+
+label-song-maxlen = 25
+label-song-ellipsis = true
+
+[module/xbacklight]
+type = internal/xbacklight
+
+format = <ramp><label>
+label = %percentage%%
+
+ramp-0 = 🌕
+ramp-1 = 🌔
+ramp-2 = 🌓
+ramp-3 = 🌒
+ramp-4 = 🌑
+
+bar-width = 10
+bar-indicator = |
+bar-indicator-foreground = #fff
+bar-indicator-font = 2
+bar-fill = ─
+bar-fill-font = 2
+bar-fill-foreground = #9f78e1
+bar-empty = ─
+bar-empty-font = 2
+bar-empty-foreground = ${colors.foreground-alt}
+
+[module/backlight-acpi]
+inherit = module/xbacklight
+type = internal/backlight
+card = intel_backlight
+
+[module/cpu]
+type = internal/cpu
+interval = 2
+format-prefix = " "
+format-prefix-foreground = ${colors.foreground}
+format-underline = #f90000
+label = %percentage:2%%
+
+[module/memory]
+type = internal/memory
+interval = 2
+format-prefix = " "
+format-prefix-foreground = ${colors.foreground}
+format-underline = #4bffdc
+label = %gb_used%
+
+[module/wlan]
+type = internal/network
+interface = wlp2s0
+interval = 3.0
+
+format-connected = <ramp-signal> <label-connected>
+format-connected-underline = #9f78e1
+label-connected = %essid% | %local_ip%
+
+format-disconnected =
+;format-disconnected = <label-disconnected>
+;format-disconnected-underline = ${self.format-connected-underline}
+;label-disconnected = %ifname% disconnected
+;label-disconnected-foreground = ${colors.foreground-alt}
+
+ramp-signal-0 = 
+ramp-signal-1 = 
+ramp-signal-2 = 
+ramp-signal-3 = 
+ramp-signal-4 = 
+;ramp-signal-foreground = ${colors.foreground}
+ramp-signal-foreground = ${colors.lime}
+
+[module/eth]
+type = internal/network
+interface = enp1s0f0
+interval = 3.0
+
+format-connected-underline = #55aa55
+format-connected-prefix = " "
+format-connected-prefix-foreground = ${colors.lime}
+label-connected = %local_ip%
+
+format-disconnected =
+;format-disconnected = <label-disconnected>
+;format-disconnected-underline = ${self.format-connected-underline}
+;label-disconnected = %ifname% disconnected
+;label-disconnected-foreground = ${colors.foreground-alt}
+
+[module/date]
+type = internal/date
+interval = 5
+
+date =
+date-alt = " %Y-%m-%d"
+
+time = %H:%M
+time-alt = %H:%M:%S
+
+;format-prefix = 
+;format-prefix-foreground = ${colors.foreground-alt}
+format-underline = #0a6cf5
+
+label = %date% %time%
+
+[module/pulseaudio]
+type = internal/pulseaudio
+
+format-volume = <label-volume>
+; <bar-volume>
+label-volume = %percentage%%
+label-volume-foreground = ${root.foreground}
+
+label-muted = %percentage%%
+label-muted-foreground = #666
+
+bar-volume-width = 10
+bar-volume-foreground-0 = #55aa55
+bar-volume-foreground-1 = #55aa55
+bar-volume-foreground-2 = #55aa55
+bar-volume-foreground-3 = #55aa55
+bar-volume-foreground-4 = #55aa55
+bar-volume-foreground-5 = #f5a70a
+bar-volume-foreground-6 = #ff5555
+bar-volume-gradient = false
+bar-volume-indicator = |
+bar-volume-indicator-font = 2
+bar-volume-fill = ─
+bar-volume-fill-font = 2
+bar-volume-empty = ─
+bar-volume-empty-font = 2
+bar-volume-empty-foreground = ${colors.foreground-alt}
+
+[module/alsa]
+type = internal/alsa
+
+format-volume = <label-volume> <bar-volume>
+label-volume = VOL
+label-volume-foreground = ${root.foreground}
+
+format-muted-prefix = " "
+format-muted-foreground = ${colors.foreground-alt}
+label-muted = sound muted
+
+bar-volume-width = 10
+bar-volume-foreground-0 = #55aa55
+bar-volume-foreground-1 = #55aa55
+bar-volume-foreground-2 = #55aa55
+bar-volume-foreground-3 = #55aa55
+bar-volume-foreground-4 = #55aa55
+bar-volume-foreground-5 = #f5a70a
+bar-volume-foreground-6 = #ff5555
+bar-volume-gradient = false
+bar-volume-indicator = |
+bar-volume-indicator-font = 2
+bar-volume-fill = ─
+bar-volume-fill-font = 2
+bar-volume-empty = ─
+bar-volume-empty-font = 2
+bar-volume-empty-foreground = ${colors.foreground-alt}
+
+[module/battery]
+type = internal/battery
+battery = BAT1
+adapter = ACAD
+full-at = 100
+
+;<animation-charging>
+
+format-charging = <label-charging>
+format-charging-underline = #ffb52a
+
+format-discharging = <ramp-capacity> <label-discharging>
+format-discharging-underline = ${self.format-charging-underline}
+
+format-charging-prefix = " "
+format-charging-prefix-foreground = ${colors.lime}
+format-full-prefix = " "
+format-full-prefix-foreground = ${colors.lime}
+format-full-underline = ${self.format-charging-underline}
+
+ramp-capacity-0 = 
+ramp-capacity-1 = 
+ramp-capacity-2 = 
+ramp-capacity-3 = 
+ramp-capacity-4 = 
+ramp-capacity-5 = 
+ramp-capacity-6 = 
+ramp-capacity-7 = 
+ramp-capacity-8 = 
+ramp-capacity-9 = 
+ramp-capacity-0-foreground = ${colors.secondary}
+ramp-capacity-1-foreground = ${colors.secondary}
+ramp-capacity-2-foreground = ${colors.secondary}
+ramp-capacity-3-foreground = ${colors.primary}
+ramp-capacity-4-foreground = ${colors.primary}
+ramp-capacity-5-foreground = ${colors.primary}
+ramp-capacity-6-foreground = ${colors.primary}
+ramp-capacity-7-foreground = ${colors.lime}
+ramp-capacity-8-foreground = ${colors.lime}
+ramp-capacity-9-foreground = ${colors.lime}
+
+animation-charging-0 = 
+animation-charging-1 = 
+animation-charging-2 = 
+animation-charging-foreground = ${colors.foreground}
+animation-charging-framerate = 750
+
+animation-discharging-0 = 
+animation-discharging-1 = 
+animation-discharging-2 = 
+animation-discharging-foreground = ${colors.foreground}
+animation-discharging-framerate = 750
+
+[module/temperature]
+type = internal/temperature
+thermal-zone = 0
+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}
+
+[module/powermenu]
+type = custom/menu
+
+expand-right = true
+
+format-spacing = 1
+
+label-open = 
+label-open-foreground = ${colors.secondary}
+label-close =  cancel
+label-close-foreground = ${colors.secondary}
+label-separator = |
+label-separator-foreground = ${colors.foreground-alt}
+
+menu-0-0 = reboot
+menu-0-0-exec = menu-open-1
+menu-0-1 = power off
+menu-0-1-exec = menu-open-2
+
+menu-1-0 = cancel
+menu-1-0-exec = menu-open-0
+menu-1-1 = reboot
+menu-1-1-exec = sudo reboot
+
+menu-2-0 = power off
+menu-2-0-exec = sudo shutdown now
+menu-2-1 = cancel
+menu-2-1-exec = menu-open-0
+
+[module/updates]
+type = custom/script
+exec = ~/Scripts/pacmanupdates.sh
+interval = 3600
+
+format = : <label>
+format-background = ${colors.background}
+format-foreground = ${colors.foreground}
+format-prefix = " "
+format-prefix-foreground = ${colors.teal}
+
+[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
diff --git a/.config/polybar/config.sample b/.config/polybar/config.sample
@@ -0,0 +1,423 @@
+;==========================================================
+;
+;
+;   ██████╗  ██████╗ ██╗  ██╗   ██╗██████╗  █████╗ ██████╗
+;   ██╔══██╗██╔═══██╗██║  ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
+;   ██████╔╝██║   ██║██║   ╚████╔╝ ██████╔╝███████║██████╔╝
+;   ██╔═══╝ ██║   ██║██║    ╚██╔╝  ██╔══██╗██╔══██║██╔══██╗
+;   ██║     ╚██████╔╝███████╗██║   ██████╔╝██║  ██║██║  ██║
+;   ╚═╝      ╚═════╝ ╚══════╝╚═╝   ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝
+;
+;
+;   To learn more about how to configure Polybar
+;   go to https://github.com/jaagr/polybar
+;
+;   The README contains alot of information
+;
+;==========================================================
+
+[colors]
+;background = ${xrdb:color0:#222}
+background = #222
+background-alt = #444
+;foreground = ${xrdb:color7:#222}
+foreground = #dfdfdf
+foreground-alt = #555
+primary = #ffb52a
+secondary = #e60053
+alert = #bd2c40
+
+[bar/example]
+;monitor = ${env:MONITOR:HDMI-1}
+width = 100%
+height = 27
+;offset-x = 1%
+;offset-y = 1%
+radius = 6.0
+fixed-center = false
+
+background = ${colors.background}
+foreground = ${colors.foreground}
+
+line-size = 3
+line-color = #f00
+
+border-size = 4
+border-color = #00000000
+
+padding-left = 0
+padding-right = 2
+
+module-margin-left = 1
+module-margin-right = 2
+
+font-0 = fixed:pixelsize=10;1
+font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
+font-2 = siji:pixelsize=10;1
+
+modules-left = bspwm i3
+modules-center = xwindow 
+modules-right = filesystem xbacklight alsa pulseaudio xkeyboard memory cpu wlan eth battery temperature date powermenu
+
+tray-position = right
+tray-padding = 2
+;tray-background = #0063ff
+
+;wm-restack = bspwm
+;wm-restack = i3
+
+;override-redirect = true
+
+;scroll-up = bspwm-desknext
+;scroll-down = bspwm-deskprev
+
+;scroll-up = i3wm-wsnext
+;scroll-down = i3wm-wsprev
+
+cursor-click = pointer
+cursor-scroll = ns-resize
+
+[module/xwindow]
+type = internal/xwindow
+label = %title:0:30:...%
+
+[module/xkeyboard]
+type = internal/xkeyboard
+blacklist-0 = num lock
+
+format-prefix = " "
+format-prefix-foreground = ${colors.foreground-alt}
+format-prefix-underline = ${colors.secondary}
+
+label-layout = %layout%
+label-layout-underline = ${colors.secondary}
+
+label-indicator-padding = 2
+label-indicator-margin = 1
+label-indicator-background = ${colors.secondary}
+label-indicator-underline = ${colors.secondary}
+
+[module/filesystem]
+type = internal/fs
+interval = 25
+
+mount-0 = /
+
+label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
+label-unmounted = %mountpoint% not mounted
+label-unmounted-foreground = ${colors.foreground-alt}
+
+[module/bspwm]
+type = internal/bspwm
+
+label-focused = %index%
+label-focused-background = ${colors.background-alt}
+label-focused-underline= ${colors.primary}
+label-focused-padding = 2
+
+label-occupied = %index%
+label-occupied-padding = 2
+
+label-urgent = %index%!
+label-urgent-background = ${colors.alert}
+label-urgent-padding = 2
+
+label-empty = %index%
+label-empty-foreground = ${colors.foreground-alt}
+label-empty-padding = 2
+
+; Separator in between workspaces
+; label-separator = |
+
+[module/i3]
+type = internal/i3
+format = <label-state> <label-mode>
+index-sort = true
+wrapping-scroll = false
+
+; Only show workspaces on the same output as the bar
+;pin-workspaces = true
+
+label-mode-padding = 2
+label-mode-foreground = #000
+label-mode-background = ${colors.primary}
+
+; focused = Active workspace on focused monitor
+label-focused = %index%
+label-focused-background = ${module/bspwm.label-focused-background}
+label-focused-underline = ${module/bspwm.label-focused-underline}
+label-focused-padding = ${module/bspwm.label-focused-padding}
+
+; unfocused = Inactive workspace on any monitor
+label-unfocused = %index%
+label-unfocused-padding = ${module/bspwm.label-occupied-padding}
+
+; visible = Active workspace on unfocused monitor
+label-visible = %index%
+label-visible-background = ${self.label-focused-background}
+label-visible-underline = ${self.label-focused-underline}
+label-visible-padding = ${self.label-focused-padding}
+
+; urgent = Workspace with urgency hint set
+label-urgent = %index%
+label-urgent-background = ${module/bspwm.label-urgent-background}
+label-urgent-padding = ${module/bspwm.label-urgent-padding}
+
+; Separator in between workspaces
+; label-separator = |
+
+
+[module/mpd]
+type = internal/mpd
+format-online = <label-song>  <icon-prev> <icon-stop> <toggle> <icon-next>
+
+icon-prev = 
+icon-stop = 
+icon-play = 
+icon-pause = 
+icon-next = 
+
+label-song-maxlen = 25
+label-song-ellipsis = true
+
+[module/xbacklight]
+type = internal/xbacklight
+
+format = <label> <bar>
+label = BL
+
+bar-width = 10
+bar-indicator = |
+bar-indicator-foreground = #fff
+bar-indicator-font = 2
+bar-fill = ─
+bar-fill-font = 2
+bar-fill-foreground = #9f78e1
+bar-empty = ─
+bar-empty-font = 2
+bar-empty-foreground = ${colors.foreground-alt}
+
+[module/backlight-acpi]
+inherit = module/xbacklight
+type = internal/backlight
+card = intel_backlight
+
+[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/wlan]
+type = internal/network
+interface = wlp2s0
+interval = 3.0
+
+format-connected = <ramp-signal> <label-connected>
+format-connected-underline = #9f78e1
+label-connected = %essid%
+
+format-disconnected =
+;format-disconnected = <label-disconnected>
+;format-disconnected-underline = ${self.format-connected-underline}
+;label-disconnected = %ifname% disconnected
+;label-disconnected-foreground = ${colors.foreground-alt}
+
+ramp-signal-0 = 
+ramp-signal-1 = 
+ramp-signal-2 = 
+ramp-signal-3 = 
+ramp-signal-4 = 
+ramp-signal-foreground = ${colors.foreground-alt}
+
+[module/eth]
+type = internal/network
+interface = enp1s0f0
+interval = 3.0
+
+format-connected-underline = #55aa55
+format-connected-prefix = " "
+format-connected-prefix-foreground = ${colors.foreground-alt}
+label-connected = %local_ip%
+
+format-disconnected =
+;format-disconnected = <label-disconnected>
+;format-disconnected-underline = ${self.format-connected-underline}
+;label-disconnected = %ifname% disconnected
+;label-disconnected-foreground = ${colors.foreground-alt}
+
+[module/date]
+type = internal/date
+interval = 5
+
+date =
+date-alt = " %Y-%m-%d"
+
+time = %H:%M
+time-alt = %H:%M:%S
+
+format-prefix = 
+format-prefix-foreground = ${colors.foreground-alt}
+format-underline = #0a6cf5
+
+label = %date% %time%
+
+[module/pulseaudio]
+type = internal/pulseaudio
+
+format-volume = <label-volume> <bar-volume>
+label-volume = VOL %percentage%%
+label-volume-foreground = ${root.foreground}
+
+label-muted = 🔇 muted
+label-muted-foreground = #666
+
+bar-volume-width = 10
+bar-volume-foreground-0 = #55aa55
+bar-volume-foreground-1 = #55aa55
+bar-volume-foreground-2 = #55aa55
+bar-volume-foreground-3 = #55aa55
+bar-volume-foreground-4 = #55aa55
+bar-volume-foreground-5 = #f5a70a
+bar-volume-foreground-6 = #ff5555
+bar-volume-gradient = false
+bar-volume-indicator = |
+bar-volume-indicator-font = 2
+bar-volume-fill = ─
+bar-volume-fill-font = 2
+bar-volume-empty = ─
+bar-volume-empty-font = 2
+bar-volume-empty-foreground = ${colors.foreground-alt}
+
+[module/alsa]
+type = internal/alsa
+
+format-volume = <label-volume> <bar-volume>
+label-volume = VOL
+label-volume-foreground = ${root.foreground}
+
+format-muted-prefix = " "
+format-muted-foreground = ${colors.foreground-alt}
+label-muted = sound muted
+
+bar-volume-width = 10
+bar-volume-foreground-0 = #55aa55
+bar-volume-foreground-1 = #55aa55
+bar-volume-foreground-2 = #55aa55
+bar-volume-foreground-3 = #55aa55
+bar-volume-foreground-4 = #55aa55
+bar-volume-foreground-5 = #f5a70a
+bar-volume-foreground-6 = #ff5555
+bar-volume-gradient = false
+bar-volume-indicator = |
+bar-volume-indicator-font = 2
+bar-volume-fill = ─
+bar-volume-fill-font = 2
+bar-volume-empty = ─
+bar-volume-empty-font = 2
+bar-volume-empty-foreground = ${colors.foreground-alt}
+
+[module/battery]
+type = internal/battery
+battery = BAT1
+adapter = ACAD
+full-at = 98
+
+format-charging = <animation-charging> <label-charging>
+format-charging-underline = #ffb52a
+
+format-discharging = <animation-discharging> <label-discharging>
+format-discharging-underline = ${self.format-charging-underline}
+
+format-full-prefix = " "
+format-full-prefix-foreground = ${colors.foreground-alt}
+format-full-underline = ${self.format-charging-underline}
+
+ramp-capacity-0 = 
+ramp-capacity-1 = 
+ramp-capacity-2 = 
+ramp-capacity-foreground = ${colors.foreground-alt}
+
+animation-charging-0 = 
+animation-charging-1 = 
+animation-charging-2 = 
+animation-charging-foreground = ${colors.foreground-alt}
+animation-charging-framerate = 750
+
+animation-discharging-0 = 
+animation-discharging-1 = 
+animation-discharging-2 = 
+animation-discharging-foreground = ${colors.foreground-alt}
+animation-discharging-framerate = 750
+
+[module/temperature]
+type = internal/temperature
+thermal-zone = 0
+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}
+
+[module/powermenu]
+type = custom/menu
+
+expand-right = true
+
+format-spacing = 1
+
+label-open = 
+label-open-foreground = ${colors.secondary}
+label-close =  cancel
+label-close-foreground = ${colors.secondary}
+label-separator = |
+label-separator-foreground = ${colors.foreground-alt}
+
+menu-0-0 = reboot
+menu-0-0-exec = menu-open-1
+menu-0-1 = power off
+menu-0-1-exec = menu-open-2
+
+menu-1-0 = cancel
+menu-1-0-exec = menu-open-0
+menu-1-1 = reboot
+menu-1-1-exec = sudo reboot
+
+menu-2-0 = power off
+menu-2-0-exec = sudo poweroff
+menu-2-1 = cancel
+menu-2-1-exec = menu-open-0
+
+[settings]
+screenchange-reload = true
+;compositing-background = xor
+;compositing-background = screen
+;compositing-foreground = source
+;compositing-border = over
+;pseudo-transparency = false
+
+[global/wm]
+margin-top = 5
+margin-bottom = 5
+
+; vim:ft=dosini
diff --git a/.config/ranger/bookmarks b/.config/ranger/bookmarks
diff --git a/.config/ranger/commands.py b/.config/ranger/commands.py
@@ -0,0 +1,58 @@
+# This is a sample commands.py.  You can add your own commands here.
+#
+# Please refer to commands_full.py for all the default commands and a complete
+# documentation.  Do NOT add them all here, or you may end up with defunct
+# commands when upgrading ranger.
+
+# You always need to import ranger.api.commands here to get the Command class:
+from ranger.api.commands import *
+
+# A simple command for demonstration purposes follows.
+#------------------------------------------------------------------------------
+
+# You can import any python module as needed.
+import os
+
+# Any class that is a subclass of "Command" will be integrated into ranger as a
+# command.  Try typing ":my_edit<ENTER>" in ranger!
+class my_edit(Command):
+    # The so-called doc-string of the class will be visible in the built-in
+    # help that is accessible by typing "?c" inside ranger.
+    """:my_edit <filename>
+
+    A sample command for demonstration purposes that opens a file in an editor.
+    """
+
+    # The execute method is called when you run this command in ranger.
+    def execute(self):
+        # self.arg(1) is the first (space-separated) argument to the function.
+        # This way you can write ":my_edit somefilename<ENTER>".
+        if self.arg(1):
+            # self.rest(1) contains self.arg(1) and everything that follows
+            target_filename = self.rest(1)
+        else:
+            # self.fm is a ranger.core.filemanager.FileManager object and gives
+            # you access to internals of ranger.
+            # self.fm.thisfile is a ranger.container.file.File object and is a
+            # reference to the currently selected file.
+            target_filename = self.fm.thisfile.path
+
+        # This is a generic function to print text in ranger.  
+        self.fm.notify("Let's edit the file " + target_filename + "!")
+
+        # Using bad=True in fm.notify allows you to print error messages:
+        if not os.path.exists(target_filename):
+            self.fm.notify("The given file does not exist!", bad=True)
+            return
+
+        # This executes a function from ranger.core.acitons, a module with a
+        # variety of subroutines that can help you construct commands.
+        # Check out the source, or run "pydoc ranger.core.actions" for a list.
+        self.fm.edit_file(target_filename)
+
+    # The tab method is called when you press tab, and should return a list of
+    # suggestions that the user will tab through.
+    def tab(self):
+        # This is a generic tab-completion function that iterates through the
+        # content of the current directory.
+        return self._tab_directory_content()
diff --git a/.config/ranger/commands_full.py b/.config/ranger/commands_full.py
@@ -0,0 +1,1504 @@
+# -*- coding: utf-8 -*-
+# This file is part of ranger, the console file manager.
+# This configuration file is licensed under the same terms as ranger.
+# ===================================================================
+#
+# NOTE: If you copied this file to ~/.config/ranger/commands_full.py,
+# then it will NOT be loaded by ranger, and only serve as a reference.
+#
+# ===================================================================
+# 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 <TAB> 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): Anything before the n-th argument.  For example, if the
+#      command was "search foo bar a b c", start(2) will be "search foo"
+#
+# ===================================================================
+# 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 *
+
+class alias(Command):
+    """:alias <newcommand> <oldcommand>
+
+    Copies the oldcommand as newcommand.
+    """
+
+    context = 'browser'
+    resolve_macros = False
+
+    def execute(self):
+        if not self.arg(1) or not self.arg(2):
+            self.fm.notify('Syntax: alias <newcommand> <oldcommand>', bad=True)
+        else:
+            self.fm.commands.alias(self.arg(1), self.rest(2))
+
+class cd(Command):
+    """:cd [-r] <dirname>
+
+    The cd command changes the directory.
+    The command 'cd -' is equivalent to typing ``.
+    Using the option "-r" will get you to the real path.
+    """
+
+    def execute(self):
+        import os.path
+        if self.arg(1) == '-r':
+            self.shift()
+            destination = os.path.realpath(self.rest(1))
+            if os.path.isfile(destination):
+                self.fm.select_file(destination)
+                return
+        else:
+            destination = self.rest(1)
+
+        if not destination:
+            destination = '~'
+
+        if destination == '-':
+            self.fm.enter_bookmark('`')
+        else:
+            self.fm.cd(destination)
+
+    def tab(self):
+        import os
+        from os.path import dirname, basename, expanduser, join
+
+        cwd = self.fm.thisdir.path
+        rel_dest = self.rest(1)
+
+        bookmarks = [v.path for v in self.fm.bookmarks.dct.values()
+                if rel_dest in v.path ]
+
+        # expand the tilde into the user directory
+        if rel_dest.startswith('~'):
+            rel_dest = expanduser(rel_dest)
+
+        # define some shortcuts
+        abs_dest = join(cwd, rel_dest)
+        abs_dirname = dirname(abs_dest)
+        rel_basename = basename(rel_dest)
+        rel_dirname = dirname(rel_dest)
+
+        try:
+            # are we at the end of a directory?
+            if rel_dest.endswith('/') or rel_dest == '':
+                _, dirnames, _ = next(os.walk(abs_dest))
+
+            # are we in the middle of the filename?
+            else:
+                _, dirnames, _ = next(os.walk(abs_dirname))
+                dirnames = [dn for dn in dirnames \
+                        if dn.startswith(rel_basename)]
+        except (OSError, StopIteration):
+            # os.walk found nothing
+            pass
+        else:
+            dirnames.sort()
+            if self.fm.settings.cd_bookmarks:
+                dirnames = bookmarks + dirnames
+
+            # no results, return None
+            if len(dirnames) == 0:
+                return
+
+            # one result. since it must be a directory, append a slash.
+            if len(dirnames) == 1:
+                return self.start(1) + join(rel_dirname, dirnames[0]) + '/'
+
+            # more than one result. append no slash, so the user can
+            # manually type in the slash to advance into that directory
+            return (self.start(1) + join(rel_dirname, dirname) for dirname in dirnames)
+
+
+class chain(Command):
+    """:chain <command1>; <command2>; ...
+
+    Calls multiple commands at once, separated by semicolons.
+    """
+    def execute(self):
+        for command in self.rest(1).split(";"):
+            self.fm.execute_console(command)
+
+
+class shell(Command):
+    escape_macros_for_shell = True
+
+    def execute(self):
+        if self.arg(1) and self.arg(1)[0] == '-':
+            flags = self.arg(1)[1:]
+            command = self.rest(2)
+        else:
+            flags = ''
+            command = self.rest(1)
+
+        if not command and 'p' in flags:
+            command = 'cat %f'
+        if command:
+            if '%' in command:
+                command = self.fm.substitute_macros(command, escape=True)
+            self.fm.execute_command(command, flags=flags)
+
+    def tab(self):
+        from ranger.ext.get_executables import get_executables
+        if self.arg(1) and self.arg(1)[0] == '-':
+            command = self.rest(2)
+        else:
+            command = self.rest(1)
+        start = self.line[0:len(self.line) - len(command)]
+
+        try:
+            position_of_last_space = command.rindex(" ")
+        except ValueError:
+            return (start + program + ' ' for program \
+                    in get_executables() if program.startswith(command))
+        if position_of_last_space == len(command) - 1:
+            selection = self.fm.thistab.get_selection()
+            if len(selection) == 1:
+                return self.line + selection[0].shell_escaped_basename + ' '
+            else:
+                return self.line + '%s '
+        else:
+            before_word, start_of_word = self.line.rsplit(' ', 1)
+            return (before_word + ' ' + file.shell_escaped_basename \
+                    for file in self.fm.thisdir.files \
+                    if file.shell_escaped_basename.startswith(start_of_word))
+
+class open_with(Command):
+    def execute(self):
+        app, flags, mode = self._get_app_flags_mode(self.rest(1))
+        self.fm.execute_file(
+                files = [f for f in self.fm.thistab.get_selection()],
+                app = app,
+                flags = flags,
+                mode = mode)
+
+    def tab(self):
+        return self._tab_through_executables()
+
+    def _get_app_flags_mode(self, string):
+        """Extracts the application, flags and mode from a string.
+
+        examples:
+        "mplayer f 1" => ("mplayer", "f", 1)
+        "aunpack 4" => ("aunpack", "", 4)
+        "p" => ("", "p", 0)
+        "" => None
+        """
+
+        app = ''
+        flags = ''
+        mode = 0
+        split = string.split()
+
+        if len(split) == 0:
+            pass
+
+        elif len(split) == 1:
+            part = split[0]
+            if self._is_app(part):
+                app = part
+            elif self._is_flags(part):
+                flags = part
+            elif self._is_mode(part):
+                mode = part
+
+        elif len(split) == 2:
+            part0 = split[0]
+            part1 = split[1]
+
+            if self._is_app(part0):
+                app = part0
+                if self._is_flags(part1):
+                    flags = part1
+                elif self._is_mode(part1):
+                    mode = part1
+            elif self._is_flags(part0):
+                flags = part0
+                if self._is_mode(part1):
+                    mode = part1
+            elif self._is_mode(part0):
+                mode = part0
+                if self._is_flags(part1):
+                    flags = part1
+
+        elif len(split) >= 3:
+            part0 = split[0]
+            part1 = split[1]
+            part2 = split[2]
+
+            if self._is_app(part0):
+                app = part0
+                if self._is_flags(part1):
+                    flags = part1
+                    if self._is_mode(part2):
+                        mode = part2
+                elif self._is_mode(part1):
+                    mode = part1
+                    if self._is_flags(part2):
+                        flags = part2
+            elif self._is_flags(part0):
+                flags = part0
+                if self._is_mode(part1):
+                    mode = part1
+            elif self._is_mode(part0):
+                mode = part0
+                if self._is_flags(part1):
+                    flags = part1
+
+        return app, flags, int(mode)
+
+    def _is_app(self, arg):
+        return not self._is_flags(arg) and not arg.isdigit()
+
+    def _is_flags(self, arg):
+        from ranger.core.runner import ALLOWED_FLAGS
+        return all(x in ALLOWED_FLAGS for x in arg)
+
+    def _is_mode(self, arg):
+        return all(x in '0123456789' for x in arg)
+
+
+class set_(Command):
+    """:set <option name>=<python expression>
+
+    Gives an option a new value.
+    """
+    name = 'set'  # don't override the builtin set class
+    def execute(self):
+        name = self.arg(1)
+        name, value, _ = self.parse_setting_line()
+        self.fm.set_option_from_string(name, value)
+
+    def tab(self):
+        from ranger.gui.colorscheme import get_all_colorschemes
+        name, value, name_done = self.parse_setting_line()
+        settings = self.fm.settings
+        if not name:
+            return sorted(self.firstpart + setting for setting in settings)
+        if not value and not name_done:
+            return (self.firstpart + setting for setting in settings \
+                    if setting.startswith(name))
+        if not value:
+            # Cycle through colorschemes when name, but no value is specified
+            if name == "colorscheme":
+                return (self.firstpart + colorscheme for colorscheme \
+                        in get_all_colorschemes())
+            return self.firstpart + str(settings[name])
+        if bool in settings.types_of(name):
+            if 'true'.startswith(value.lower()):
+                return self.firstpart + 'True'
+            if 'false'.startswith(value.lower()):
+                return self.firstpart + 'False'
+        # Tab complete colorscheme values if incomplete value is present
+        if name == "colorscheme":
+            return (self.firstpart + colorscheme for colorscheme \
+                    in get_all_colorschemes() if colorscheme.startswith(value))
+
+
+class setlocal(set_):
+    """:setlocal path=<python string> <option name>=<python expression>
+
+    Gives an option a new value.
+    """
+    PATH_RE = re.compile(r'^\s*path="?(.*?)"?\s*$')
+    def execute(self):
+        import os.path
+        match = self.PATH_RE.match(self.arg(1))
+        if match:
+            path = os.path.normpath(os.path.expanduser(match.group(1)))
+            self.shift()
+        elif self.fm.thisdir:
+            path = self.fm.thisdir.path
+        else:
+            path = None
+
+        if path:
+            name = self.arg(1)
+            name, value, _ = self.parse_setting_line()
+            self.fm.set_option_from_string(name, value, localpath=path)
+
+
+class setintag(setlocal):
+    """:setintag <tag or tags> <option name>=<option value>
+
+    Sets an option for directories that are tagged with a specific tag.
+    """
+    def execute(self):
+        tags = self.arg(1)
+        self.shift()
+        name, value, _ = self.parse_setting_line()
+        self.fm.set_option_from_string(name, value, tags=tags)
+
+
+class default_linemode(Command):
+    def execute(self):
+        import re
+        from ranger.container.fsobject import FileSystemObject
+
+        if len(self.args) < 2:
+            self.fm.notify("Usage: default_linemode [path=<regexp> | tag=<tag(s)>] <linemode>", bad=True)
+
+        # Extract options like "path=..." or "tag=..." from the command line
+        arg1 = self.arg(1)
+        method = "always"
+        argument = None
+        if arg1.startswith("path="):
+            method = "path"
+            argument = re.compile(arg1[5:])
+            self.shift()
+        elif arg1.startswith("tag="):
+            method = "tag"
+            argument = arg1[4:]
+            self.shift()
+
+        # Extract and validate the line mode from the command line
+        linemode = self.rest(1)
+        if linemode not in FileSystemObject.linemode_dict:
+            self.fm.notify("Invalid linemode: %s; should be %s" %
+                    (linemode, "/".join(FileSystemObject.linemode_dict)), bad=True)
+
+        # Add the prepared entry to the fm.default_linemodes
+        entry = [method, argument, linemode]
+        self.fm.default_linemodes.appendleft(entry)
+
+        # Redraw the columns
+        if hasattr(self.fm.ui, "browser"):
+            for col in self.fm.ui.browser.columns:
+                col.need_redraw = True
+
+    def tab(self):
+        mode = self.arg(1)
+        return (self.arg(0) + " " + linemode
+                for linemode in self.fm.thisfile.linemode_dict.keys()
+                if linemode.startswith(self.arg(1)))
+
+
+class quit(Command):
+    """:quit
+
+    Closes the current tab.  If there is only one tab, quit the program.
+    """
+
+    def execute(self):
+        if len(self.fm.tabs) <= 1:
+            self.fm.exit()
+        self.fm.tab_close()
+
+
+class quitall(Command):
+    """:quitall
+
+    Quits the program immediately.
+    """
+
+    def execute(self):
+        self.fm.exit()
+
+
+class quit_bang(quitall):
+    """:quit!
+
+    Quits the program immediately.
+    """
+    name = 'quit!'
+    allow_abbrev = False
+
+
+class terminal(Command):
+    """:terminal
+
+    Spawns an "x-terminal-emulator" starting in the current directory.
+    """
+    def execute(self):
+        import os
+        from ranger.ext.get_executables import get_executables
+        command = os.environ.get('TERMCMD', os.environ.get('TERM'))
+        if command not in get_executables():
+            command = 'x-terminal-emulator'
+        if command not in get_executables():
+            command = 'xterm'
+        self.fm.run(command, flags='f')
+
+
+class delete(Command):
+    """:delete
+
+    Tries to delete the selection.
+
+    "Selection" is defined as all the "marked files" (by default, you
+    can mark files with space or v). If there are no marked files,
+    use the "current file" (where the cursor is)
+
+    When attempting to delete non-empty directories or multiple
+    marked files, it will require a confirmation.
+    """
+
+    allow_abbrev = False
+
+    def execute(self):
+        import os
+        if self.rest(1):
+            self.fm.notify("Error: delete takes no arguments! It deletes "
+                    "the selected file(s).", bad=True)
+            return
+
+        cwd = self.fm.thisdir
+        cf = self.fm.thisfile
+        if not cwd or not cf:
+            self.fm.notify("Error: no file selected for deletion!", bad=True)
+            return
+
+        confirm = self.fm.settings.confirm_on_delete
+        many_files = (cwd.marked_items or (cf.is_directory and not cf.is_link \
+                and len(os.listdir(cf.path)) > 0))
+
+        if confirm != 'never' and (confirm != 'multiple' or many_files):
+            self.fm.ui.console.ask("Confirm deletion of: %s (y/N)" %
+                ', '.join(f.basename for f in self.fm.thistab.get_selection()),
+                self._question_callback, ('n', 'N', 'y', 'Y'))
+        else:
+            # no need for a confirmation, just delete
+            for f in self.fm.tags.tags:
+                if str(f).startswith(self.fm.thisfile.path):
+                    self.fm.tags.remove(f)
+            self.fm.delete()
+
+    def _question_callback(self, answer):
+        if answer == 'y' or answer == 'Y':
+            for f in self.fm.tags.tags:
+                if str(f).startswith(self.fm.thisfile.path):
+                    self.fm.tags.remove(f)
+            self.fm.delete()
+
+
+class mark_tag(Command):
+    """:mark_tag [<tags>]
+
+    Mark all tags that are tagged with either of the given tags.
+    When leaving out the tag argument, all tagged files are marked.
+    """
+    do_mark = True
+
+    def execute(self):
+        cwd = self.fm.thisdir
+        tags = self.rest(1).replace(" ","")
+        if not self.fm.tags:
+            return
+        for fileobj in cwd.files:
+            try:
+                tag = self.fm.tags.tags[fileobj.realpath]
+            except KeyError:
+                continue
+            if not tags or tag in tags:
+                cwd.mark_item(fileobj, val=self.do_mark)
+        self.fm.ui.status.need_redraw = True
+        self.fm.ui.need_redraw = True
+
+
+class console(Command):
+    """:console <command>
+
+    Open the console with the given command.
+    """
+    def execute(self):
+        position = None
+        if self.arg(1)[0:2] == '-p':
+            try:
+                position = int(self.arg(1)[2:])
+                self.shift()
+            except:
+                pass
+        self.fm.open_console(self.rest(1), position=position)
+
+
+class load_copy_buffer(Command):
+    """:load_copy_buffer
+
+    Load the copy buffer from confdir/copy_buffer
+    """
+    copy_buffer_filename = 'copy_buffer'
+    def execute(self):
+        from ranger.container.file import File
+        from os.path import exists
+        try:
+            fname = self.fm.confpath(self.copy_buffer_filename)
+            f = open(fname, 'r')
+        except:
+            return self.fm.notify("Cannot open %s" % \
+                    (fname or self.copy_buffer_filename), bad=True)
+        self.fm.copy_buffer = set(File(g) \
+            for g in f.read().split("\n") if exists(g))
+        f.close()
+        self.fm.ui.redraw_main_column()
+
+
+class save_copy_buffer(Command):
+    """:save_copy_buffer
+
+    Save the copy buffer to confdir/copy_buffer
+    """
+    copy_buffer_filename = 'copy_buffer'
+    def execute(self):
+        fname = None
+        try:
+            fname = self.fm.confpath(self.copy_buffer_filename)
+            f = open(fname, 'w')
+        except:
+            return self.fm.notify("Cannot open %s" % \
+                    (fname or self.copy_buffer_filename), bad=True)
+        f.write("\n".join(f.path for f in self.fm.copy_buffer))
+        f.close()
+
+
+class unmark_tag(mark_tag):
+    """:unmark_tag [<tags>]
+
+    Unmark all tags that are tagged with either of the given tags.
+    When leaving out the tag argument, all tagged files are unmarked.
+    """
+    do_mark = False
+
+
+class mkdir(Command):
+    """:mkdir <dirname>
+
+    Creates a directory with the name <dirname>.
+    """
+
+    def execute(self):
+        from os.path import join, expanduser, lexists
+        from os import makedirs
+
+        dirname = join(self.fm.thisdir.path, expanduser(self.rest(1)))
+        if not lexists(dirname):
+            makedirs(dirname)
+        else:
+            self.fm.notify("file/directory exists!", bad=True)
+
+    def tab(self):
+        return self._tab_directory_content()
+
+
+class touch(Command):
+    """:touch <fname>
+
+    Creates a file with the name <fname>.
+    """
+
+    def execute(self):
+        from os.path import join, expanduser, lexists
+
+        fname = join(self.fm.thisdir.path, expanduser(self.rest(1)))
+        if not lexists(fname):
+            open(fname, 'a').close()
+        else:
+            self.fm.notify("file/directory exists!", bad=True)
+
+    def tab(self):
+        return self._tab_directory_content()
+
+
+class edit(Command):
+    """:edit <filename>
+
+    Opens the specified file in vim
+    """
+
+    def execute(self):
+        if not self.arg(1):
+            self.fm.edit_file(self.fm.thisfile.path)
+        else:
+            self.fm.edit_file(self.rest(1))
+
+    def tab(self):
+        return self._tab_directory_content()
+
+
+class eval_(Command):
+    """:eval [-q] <python code>
+
+    Evaluates the python code.
+    `fm' is a reference to the FM instance.
+    To display text, use the function `p'.
+
+    Examples:
+    :eval fm
+    :eval len(fm.directories)
+    :eval p("Hello World!")
+    """
+    name = 'eval'
+    resolve_macros = False
+
+    def execute(self):
+        if self.arg(1) == '-q':
+            code = self.rest(2)
+            quiet = True
+        else:
+            code = self.rest(1)
+            quiet = False
+        import ranger
+        global cmd, fm, p, quantifier
+        fm = self.fm
+        cmd = self.fm.execute_console
+        p = fm.notify
+        quantifier = self.quantifier
+        try:
+            try:
+                result = eval(code)
+            except SyntaxError:
+                exec(code)
+            else:
+                if result and not quiet:
+                    p(result)
+        except Exception as err:
+            p(err)
+
+
+class rename(Command):
+    """:rename <newname>
+
+    Changes the name of the currently highlighted file to <newname>
+    """
+
+    def execute(self):
+        from ranger.container.file import File
+        from os import access
+
+        new_name = self.rest(1)
+
+        tagged = {}
+        old_name = self.fm.thisfile.basename
+        for f in self.fm.tags.tags:
+            if str(f).startswith(self.fm.thisfile.path):
+                tagged[f] = self.fm.tags.tags[f]
+                self.fm.tags.remove(f)
+
+        if not new_name:
+            return self.fm.notify('Syntax: rename <newname>', bad=True)
+
+        if new_name == self.fm.thisfile.basename:
+            return
+
+        if access(new_name, os.F_OK):
+            return self.fm.notify("Can't rename: file already exists!", bad=True)
+
+        if self.fm.rename(self.fm.thisfile, new_name):
+            f = File(new_name)
+            self.fm.thisdir.pointed_obj = f
+            self.fm.thisfile = f
+            for t in tagged:
+                self.fm.tags.tags[t.replace(old_name,new_name)] = tagged[t]
+                self.fm.tags.dump()
+
+    def tab(self):
+        return self._tab_directory_content()
+
+class rename_append(Command):
+    """:rename_append
+
+    Creates an open_console for the rename command, automatically placing the cursor before the file extension.
+    """
+
+    def execute(self):
+        cf = self.fm.thisfile
+        if cf.basename.find('.') != 0 and cf.basename.rfind('.') != -1 and not cf.is_directory:
+            self.fm.open_console('rename ' + cf.basename, position=(7 + cf.basename.rfind('.')))
+        else:
+            self.fm.open_console('rename ' + cf.basename)
+
+class chmod(Command):
+    """:chmod <octal number>
+
+    Sets the permissions of the selection to the octal number.
+
+    The octal number is between 0 and 777. The digits specify the
+    permissions for the user, the group and others.
+
+    A 1 permits execution, a 2 permits writing, a 4 permits reading.
+    Add those numbers to combine them. So a 7 permits everything.
+    """
+
+    def execute(self):
+        mode = self.rest(1)
+        if not mode:
+            mode = str(self.quantifier)
+
+        try:
+            mode = int(mode, 8)
+            if mode < 0 or mode > 0o777:
+                raise ValueError
+        except ValueError:
+            self.fm.notify("Need an octal number between 0 and 777!", bad=True)
+            return
+
+        for file in self.fm.thistab.get_selection():
+            try:
+                os.chmod(file.path, mode)
+            except Exception as ex:
+                self.fm.notify(ex)
+
+        try:
+            # reloading directory.  maybe its better to reload the selected
+            # files only.
+            self.fm.thisdir.load_content()
+        except:
+            pass
+
+
+class bulkrename(Command):
+    """:bulkrename
+
+    This command opens a list of selected files in an external editor.
+    After you edit and save the file, it will generate a shell script
+    which does bulk renaming according to the changes you did in the file.
+
+    This shell script is opened in an editor for you to review.
+    After you close it, it will be executed.
+    """
+    def execute(self):
+        import sys
+        import tempfile
+        from ranger.container.file import File
+        from ranger.ext.shell_escape import shell_escape as esc
+        py3 = sys.version_info[0] >= 3
+
+        # Create and edit the file list
+        filenames = [f.relative_path for f in self.fm.thistab.get_selection()]
+        listfile = tempfile.NamedTemporaryFile(delete=False)
+        listpath = listfile.name
+
+        if py3:
+            listfile.write("\n".join(filenames).encode("utf-8"))
+        else:
+            listfile.write("\n".join(filenames))
+        listfile.close()
+        self.fm.execute_file([File(listpath)], app='editor')
+        listfile = open(listpath, 'r')
+        new_filenames = listfile.read().split("\n")
+        listfile.close()
+        os.unlink(listpath)
+        if all(a == b for a, b in zip(filenames, new_filenames)):
+            self.fm.notify("No renaming to be done!")
+            return
+
+        # Generate script
+        cmdfile = tempfile.NamedTemporaryFile()
+        script_lines = []
+        script_lines.append("# This file will be executed when you close the editor.\n")
+        script_lines.append("# Please double-check everything, clear the file to abort.\n")
+        script_lines.extend("mv -vi -- %s %s\n" % (esc(old), esc(new)) \
+                for old, new in zip(filenames, new_filenames) if old != new)
+        script_content = "".join(script_lines)
+        if py3:
+            cmdfile.write(script_content.encode("utf-8"))
+        else:
+            cmdfile.write(script_content)
+        cmdfile.flush()
+
+        # Open the script and let the user review it, then check if the script
+        # was modified by the user
+        self.fm.execute_file([File(cmdfile.name)], app='editor')
+        cmdfile.seek(0)
+        script_was_edited = (script_content != cmdfile.read())
+
+        # Do the renaming
+        self.fm.run(['/bin/sh', cmdfile.name], flags='w')
+        cmdfile.close()
+
+        # Retag the files, but only if the script wasn't changed during review,
+        # because only then we know which are the source and destination files.
+        if not script_was_edited:
+            tags_changed = False
+            for old, new in zip(filenames, new_filenames):
+                if old != new:
+                    oldpath = self.fm.thisdir.path + '/' + old
+                    newpath = self.fm.thisdir.path + '/' + new
+                    if oldpath in self.fm.tags:
+                        old_tag = self.fm.tags.tags[oldpath]
+                        self.fm.tags.remove(oldpath)
+                        self.fm.tags.tags[newpath] = old_tag
+                        tags_changed = True
+            if tags_changed:
+                self.fm.tags.dump()
+        else:
+            fm.notify("files have not been retagged")
+
+class relink(Command):
+    """:relink <newpath>
+
+    Changes the linked path of the currently highlighted symlink to <newpath>
+    """
+
+    def execute(self):
+        from ranger.container.file import File
+
+        new_path = self.rest(1)
+        cf = self.fm.thisfile
+
+        if not new_path:
+            return self.fm.notify('Syntax: relink <newpath>', bad=True)
+
+        if not cf.is_link:
+            return self.fm.notify('%s is not a symlink!' % cf.basename, bad=True)
+
+        if new_path == os.readlink(cf.path):
+            return
+
+        try:
+            os.remove(cf.path)
+            os.symlink(new_path, cf.path)
+        except OSError as err:
+            self.fm.notify(err)
+
+        self.fm.reset()
+        self.fm.thisdir.pointed_obj = cf
+        self.fm.thisfile = cf
+
+    def tab(self):
+        if not self.rest(1):
+            return self.line+os.readlink(self.fm.thisfile.path)
+        else:
+            return self._tab_directory_content()
+
+
+class help_(Command):
+    """:help
+
+    Display ranger's manual page.
+    """
+    name = 'help'
+    def execute(self):
+        def callback(answer):
+            if answer == "q":
+                return
+            elif answer == "m":
+                self.fm.display_help()
+            elif answer == "c":
+                self.fm.dump_commands()
+            elif answer == "k":
+                self.fm.dump_keybindings()
+            elif answer == "s":
+                self.fm.dump_settings()
+
+        c = self.fm.ui.console.ask("View [m]an page, [k]ey bindings,"
+                " [c]ommands or [s]ettings? (press q to abort)", callback, list("mkcsq") + [chr(27)])
+
+
+class copymap(Command):
+    """:copymap <keys> <newkeys1> [<newkeys2>...]
+
+    Copies a "browser" keybinding from <keys> to <newkeys>
+    """
+    context = 'browser'
+
+    def execute(self):
+        if not self.arg(1) or not self.arg(2):
+            return self.fm.notify("Not enough arguments", bad=True)
+
+        for arg in self.args[2:]:
+            self.fm.ui.keymaps.copy(self.context, self.arg(1), arg)
+
+
+class copypmap(copymap):
+    """:copypmap <keys> <newkeys1> [<newkeys2>...]
+
+    Copies a "pager" keybinding from <keys> to <newkeys>
+    """
+    context = 'pager'
+
+
+class copycmap(copymap):
+    """:copycmap <keys> <newkeys1> [<newkeys2>...]
+
+    Copies a "console" keybinding from <keys> to <newkeys>
+    """
+    context = 'console'
+
+
+class copytmap(copymap):
+    """:copycmap <keys> <newkeys1> [<newkeys2>...]
+
+    Copies a "taskview" keybinding from <keys> to <newkeys>
+    """
+    context = 'taskview'
+
+
+class unmap(Command):
+    """:unmap <keys> [<keys2>, ...]
+
+    Remove the given "browser" mappings
+    """
+    context = 'browser'
+
+    def execute(self):
+        for arg in self.args[1:]:
+            self.fm.ui.keymaps.unbind(self.context, arg)
+
+
+class cunmap(unmap):
+    """:cunmap <keys> [<keys2>, ...]
+
+    Remove the given "console" mappings
+    """
+    context = 'browser'
+
+
+class punmap(unmap):
+    """:punmap <keys> [<keys2>, ...]
+
+    Remove the given "pager" mappings
+    """
+    context = 'pager'
+
+
+class tunmap(unmap):
+    """:tunmap <keys> [<keys2>, ...]
+
+    Remove the given "taskview" mappings
+    """
+    context = 'taskview'
+
+
+class map_(Command):
+    """:map <keysequence> <command>
+
+    Maps a command to a keysequence in the "browser" context.
+
+    Example:
+    map j move down
+    map J move down 10
+    """
+    name = 'map'
+    context = 'browser'
+    resolve_macros = False
+
+    def execute(self):
+        if not self.arg(1) or not self.arg(2):
+            return self.fm.notify("Not enough arguments", bad=True)
+
+        self.fm.ui.keymaps.bind(self.context, self.arg(1), self.rest(2))
+
+
+class cmap(map_):
+    """:cmap <keysequence> <command>
+
+    Maps a command to a keysequence in the "console" context.
+
+    Example:
+    cmap <ESC> console_close
+    cmap <C-x> console_type test
+    """
+    context = 'console'
+
+
+class tmap(map_):
+    """:tmap <keysequence> <command>
+
+    Maps a command to a keysequence in the "taskview" context.
+    """
+    context = 'taskview'
+
+
+class pmap(map_):
+    """:pmap <keysequence> <command>
+
+    Maps a command to a keysequence in the "pager" context.
+    """
+    context = 'pager'
+
+
+class scout(Command):
+    """:scout [-FLAGS] <pattern>
+
+    Swiss army knife command for searching, traveling and filtering files.
+    The command takes various flags as arguments which can be used to
+    influence its behaviour:
+
+    -a = automatically open a file on unambiguous match
+    -e = open the selected file when pressing enter
+    -f = filter files that match the current search pattern
+    -g = interpret pattern as a glob pattern
+    -i = ignore the letter case of the files
+    -k = keep the console open when changing a directory with the command
+    -l = letter skipping; e.g. allow "rdme" to match the file "readme"
+    -m = mark the matching files after pressing enter
+    -M = unmark the matching files after pressing enter
+    -p = permanent filter: hide non-matching files after pressing enter
+    -s = smart case; like -i unless pattern contains upper case letters
+    -t = apply filter and search pattern as you type
+    -v = inverts the match
+
+    Multiple flags can be combined.  For example, ":scout -gpt" would create
+    a :filter-like command using globbing.
+    """
+    AUTO_OPEN       = 'a'
+    OPEN_ON_ENTER   = 'e'
+    FILTER          = 'f'
+    SM_GLOB         = 'g'
+    IGNORE_CASE     = 'i'
+    KEEP_OPEN       = 'k'
+    SM_LETTERSKIP   = 'l'
+    MARK            = 'm'
+    UNMARK          = 'M'
+    PERM_FILTER     = 'p'
+    SM_REGEX        = 'r'
+    SMART_CASE      = 's'
+    AS_YOU_TYPE     = 't'
+    INVERT          = 'v'
+
+    def __init__(self, *args, **kws):
+        Command.__init__(self, *args, **kws)
+        self._regex = None
+        self.flags, self.pattern = self.parse_flags()
+
+    def execute(self):
+        thisdir = self.fm.thisdir
+        flags   = self.flags
+        pattern = self.pattern
+        regex   = self._build_regex()
+        count   = self._count(move=True)
+
+        self.fm.thistab.last_search = regex
+        self.fm.set_search_method(order="search")
+
+        if self.MARK in flags or self.UNMARK in flags:
+            value = flags.find(self.MARK) > flags.find(self.UNMARK)
+            if self.FILTER in flags:
+                for f in thisdir.files:
+                    thisdir.mark_item(f, value)
+            else:
+                for f in thisdir.files:
+                    if regex.search(f.basename):
+                        thisdir.mark_item(f, value)
+
+        if self.PERM_FILTER in flags:
+            thisdir.filter = regex if pattern else None
+
+        # clean up:
+        self.cancel()
+
+        if self.OPEN_ON_ENTER in flags or \
+                self.AUTO_OPEN in flags and count == 1:
+            if os.path.exists(pattern):
+                self.fm.cd(pattern)
+            else:
+                self.fm.move(right=1)
+
+        if self.KEEP_OPEN in flags and thisdir != self.fm.thisdir:
+            # reopen the console:
+            if not pattern:
+                self.fm.open_console(self.line)
+            else:
+                self.fm.open_console(self.line[0:-len(pattern)])
+
+        if self.quickly_executed and thisdir != self.fm.thisdir and pattern != "..":
+            self.fm.block_input(0.5)
+
+    def cancel(self):
+        self.fm.thisdir.temporary_filter = None
+        self.fm.thisdir.refilter()
+
+    def quick(self):
+        asyoutype = self.AS_YOU_TYPE in self.flags
+        if self.FILTER in self.flags:
+            self.fm.thisdir.temporary_filter = self._build_regex()
+        if self.PERM_FILTER in self.flags and asyoutype:
+            self.fm.thisdir.filter = self._build_regex()
+        if self.FILTER in self.flags or self.PERM_FILTER in self.flags:
+            self.fm.thisdir.refilter()
+        if self._count(move=asyoutype) == 1 and self.AUTO_OPEN in self.flags:
+            return True
+        return False
+
+    def tab(self):
+        self._count(move=True, offset=1)
+
+    def _build_regex(self):
+        if self._regex is not None:
+            return self._regex
+
+        frmat   = "%s"
+        flags   = self.flags
+        pattern = self.pattern
+
+        if pattern == ".":
+            return re.compile("")
+
+        # Handle carets at start and dollar signs at end separately
+        if pattern.startswith('^'):
+            pattern = pattern[1:]
+            frmat = "^" + frmat
+        if pattern.endswith('$'):
+            pattern = pattern[:-1]
+            frmat += "$"
+
+        # Apply one of the search methods
+        if self.SM_REGEX in flags:
+            regex = pattern
+        elif self.SM_GLOB in flags:
+            regex = re.escape(pattern).replace("\\*", ".*").replace("\\?", ".")
+        elif self.SM_LETTERSKIP in flags:
+            regex = ".*".join(re.escape(c) for c in pattern)
+        else:
+            regex = re.escape(pattern)
+
+        regex = frmat % regex
+
+        # Invert regular expression if necessary
+        if self.INVERT in flags:
+            regex = "^(?:(?!%s).)*$" % regex
+
+        # Compile Regular Expression
+        options = re.LOCALE | re.UNICODE
+        if self.IGNORE_CASE in flags or self.SMART_CASE in flags and \
+                pattern.islower():
+            options |= re.IGNORECASE
+        try:
+            self._regex = re.compile(regex, options)
+        except:
+            self._regex = re.compile("")
+        return self._regex
+
+    def _count(self, move=False, offset=0):
+        count   = 0
+        cwd     = self.fm.thisdir
+        pattern = self.pattern
+
+        if not pattern:
+            return 0
+        if pattern == '.':
+            return 0
+        if pattern == '..':
+            return 1
+
+        deq = deque(cwd.files)
+        deq.rotate(-cwd.pointer - offset)
+        i = offset
+        regex = self._build_regex()
+        for fsobj in deq:
+            if regex.search(fsobj.basename):
+                count += 1
+                if move and count == 1:
+                    cwd.move(to=(cwd.pointer + i) % len(cwd.files))
+                    self.fm.thisfile = cwd.pointed_obj
+            if count > 1:
+                return count
+            i += 1
+
+        return count == 1
+
+
+class filter_inode_type(Command):
+    """
+    :filter_inode_type [dfl]
+
+    Displays only the files of specified inode type. Parameters
+    can be combined.
+
+        d display directories
+        f display files
+        l display links
+    """
+
+    FILTER_DIRS  = 'd'
+    FILTER_FILES = 'f'
+    FILTER_LINKS = 'l'
+
+    def execute(self):
+        if not self.arg(1):
+            self.fm.thisdir.inode_type_filter = None
+        else:
+            self.fm.thisdir.inode_type_filter = lambda file: (
+                    True if ((self.FILTER_DIRS  in self.arg(1) and file.is_directory) or
+                             (self.FILTER_FILES in self.arg(1) and file.is_file and not file.is_link) or
+                             (self.FILTER_LINKS in self.arg(1) and file.is_link)) else False)
+        self.fm.thisdir.refilter()
+
+
+class grep(Command):
+    """:grep <string>
+
+    Looks for a string in all marked files or directories
+    """
+
+    def execute(self):
+        if self.rest(1):
+            action = ['grep', '--line-number']
+            action.extend(['-e', self.rest(1), '-r'])
+            action.extend(f.path for f in self.fm.thistab.get_selection())
+            self.fm.execute_command(action, flags='p')
+
+
+# Version control commands
+# --------------------------------
+class stage(Command):
+    """
+    :stage
+
+    Stage selected files for the corresponding version control system
+    """
+    def execute(self):
+        from ranger.ext.vcs import VcsError
+
+        filelist = [f.path for f in self.fm.thistab.get_selection()]
+        self.fm.thisdir.vcs_outdated = True
+#        for f in self.fm.thistab.get_selection():
+#            f.vcs_outdated = True
+
+        try:
+            self.fm.thisdir.vcs.add(filelist)
+        except VcsError:
+            self.fm.notify("Could not stage files.")
+
+        self.fm.reload_cwd()
+
+
+class unstage(Command):
+    """
+    :unstage
+
+    Unstage selected files for the corresponding version control system
+    """
+    def execute(self):
+        from ranger.ext.vcs import VcsError
+
+        filelist = [f.path for f in self.fm.thistab.get_selection()]
+        self.fm.thisdir.vcs_outdated = True
+#        for f in self.fm.thistab.get_selection():
+#            f.vcs_outdated = True
+
+        try:
+            self.fm.thisdir.vcs.reset(filelist)
+        except VcsError:
+            self.fm.notify("Could not unstage files.")
+
+        self.fm.reload_cwd()
+
+
+class diff(Command):
+    """
+    :diff
+
+    Displays a diff of selected files against the last committed version
+    """
+    def execute(self):
+        from ranger.ext.vcs import VcsError
+        import tempfile
+
+        L = self.fm.thistab.get_selection()
+        if len(L) == 0: return
+
+        filelist = [f.path for f in L]
+        vcs = L[0].vcs
+
+        diff = vcs.get_raw_diff(filelist=filelist)
+        if len(diff.strip()) > 0:
+            tmp = tempfile.NamedTemporaryFile()
+            tmp.write(diff.encode('utf-8'))
+            tmp.flush()
+
+            pager = os.environ.get('PAGER', ranger.DEFAULT_PAGER)
+            self.fm.run([pager, tmp.name])
+        else:
+            raise Exception("diff is empty")
+
+
+class log(Command):
+    """
+    :log
+
+    Displays the log of the current repo or files
+    """
+    def execute(self):
+        from ranger.ext.vcs import VcsError
+        import tempfile
+
+        L = self.fm.thistab.get_selection()
+        if len(L) == 0: return
+
+        filelist = [f.path for f in L]
+        vcs = L[0].vcs
+
+        log = vcs.get_raw_log(filelist=filelist)
+        tmp = tempfile.NamedTemporaryFile()
+        tmp.write(log.encode('utf-8'))
+        tmp.flush()
+
+        pager = os.environ.get('PAGER', ranger.DEFAULT_PAGER)
+        self.fm.run([pager, tmp.name])
+
+class flat(Command):
+    """
+    :flat <level>
+
+    Flattens the directory view up to the specified level.
+
+        -1 fully flattened
+         0 remove flattened view
+    """
+
+    def execute(self):
+        try:
+            level = self.rest(1)
+            level = int(level)
+        except ValueError:
+            level = self.quantifier
+        if level < -1:
+            self.fm.notify("Need an integer number (-1, 0, 1, ...)", bad=True)
+        self.fm.thisdir.unload()
+        self.fm.thisdir.flat = level
+        self.fm.thisdir.load_content()
+
+
+# Metadata commands
+# --------------------------------
+
+class prompt_metadata(Command):
+    """
+    :prompt_metadata <key1> [<key2> [<key3> ...]]
+
+    Prompt the user to input metadata for multiple keys in a row.
+    """
+
+    _command_name = "meta"
+    _console_chain = None
+    def execute(self):
+        prompt_metadata._console_chain = self.args[1:]
+        self._process_command_stack()
+
+    def _process_command_stack(self):
+        if prompt_metadata._console_chain:
+            key = prompt_metadata._console_chain.pop()
+            self._fill_console(key)
+        else:
+            for col in self.fm.ui.browser.columns:
+                col.need_redraw = True
+
+    def _fill_console(self, key):
+        metadata = self.fm.metadata.get_metadata(self.fm.thisfile.path)
+        if key in metadata and metadata[key]:
+            existing_value = metadata[key]
+        else:
+            existing_value = ""
+        text = "%s %s %s" % (self._command_name, key, existing_value)
+        self.fm.open_console(text, position=len(text))
+
+
+class meta(prompt_metadata):
+    """
+    :meta <key> [<value>]
+
+    Change metadata of a file.  Deletes the key if value is empty.
+    """
+
+    def execute(self):
+        key = self.arg(1)
+        value = self.rest(1)
+        update_dict = dict()
+        update_dict[key] = self.rest(2)
+        selection = self.fm.thistab.get_selection()
+        for f in selection:
+            self.fm.metadata.set_metadata(f.path, update_dict)
+        self._process_command_stack()
+
+    def tab(self):
+        key = self.arg(1)
+        metadata = self.fm.metadata.get_metadata(self.fm.thisfile.path)
+        if key in metadata and metadata[key]:
+            return [" ".join([self.arg(0), self.arg(1), metadata[key]])]
+        else:
+            return [self.arg(0) + " " + key for key in sorted(metadata)
+                    if key.startswith(self.arg(1))]
+
+
+class linemode(default_linemode):
+    """
+    :linemode <mode>
+
+    Change what is displayed as a filename.
+
+    - "mode" may be any of the defined linemodes (see: ranger.core.linemode).
+      "normal" is mapped to "filename".
+    """
+
+    def execute(self):
+        mode = self.arg(1)
+
+        if mode == "normal":
+            mode = DEFAULT_LINEMODE
+
+        if mode not in self.fm.thisfile.linemode_dict:
+            self.fm.notify("Unhandled linemode: `%s'" % mode, bad=True)
+            return
+
+        self.fm.thisdir._set_linemode_of_children(mode)
+
+        # Ask the browsercolumns to redraw
+        for col in self.fm.ui.browser.columns:
+            col.need_redraw = True
diff --git a/.config/ranger/history b/.config/ranger/history
@@ -0,0 +1,22 @@
+help
+rename 
+rename debian2.jpg
+rename gnu1.jpg
+rename gnu2.png
+rename debian2.png
+rename debian3.jpg
+set preview_images True
+set preview_images_method urxvt 
+set preview_images_method urxvt-full
+search 
+search Down
+search wal
+search wall
+search network
+search mnt
+search vir
+delete
+
+search usr
+search w
+search W
diff --git a/.config/ranger/rc.conf b/.config/ranger/rc.conf
@@ -0,0 +1,583 @@
+# ===================================================================
+# 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 true
+
+# Ask for a confirmation when running the "delete" command?
+# Valid values are "always", "never", "multiple" (default)
+# 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.md for dependencies) to preview images, archives, etc.
+set preview_script ~/.config/ranger/scope.sh
+
+# Use the external preview script or display simple plain text or image previews?
+set use_preview_script true
+
+# Automatically count files in the directory, even before entering them?
+set automatically_count_files 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
+
+# Use one of the supported image preview protocols
+set preview_images true
+
+# Set the preview image method. Supported methods:
+#
+# * w3m (default):
+#   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.
+#
+# * iterm2:
+#   Preview images in full color using iTerm2 image previews
+#   (http://iterm2.com/images.html). This requires using iTerm2 compiled
+#   with image preview support.
+set preview_images_method w3m
+#set preview_images_method urxvt
+
+# 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, solarized
+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, natural, basename, atime, ctime, mtime, type, random
+set sort natural
+
+# Additional sorting options
+set sort_reverse false
+set sort_case_insensitive true
+set sort_directories_first true
+set sort_unicode false
+
+# Enable this if key combinations with the Alt Key don't work for you.
+# (Especially on xterm)
+set xterm_alt_key false
+
+# Whether to include bookmarks in cd command
+set cd_bookmarks true
+
+# Avoid previewing files larger than this size, in bytes.  Use a value of 0 to
+# disable this feature.
+set preview_max_size 0
+
+# Add the highlighted file to the path in the titlebar
+set show_selection_in_titlebar true
+
+# The delay that ranger idly waits for user input, in milliseconds, with a
+# resolution of 100ms.  Lower delay reduces lag between directory updates but
+# increases CPU load.
+set idle_delay 2000
+
+# When the metadata manager module looks for metadata, should it only look for
+# a ".metadata.json" file in the current directory, or do a deep search and
+# check all directories above the current one as well?
+set metadata_deep_search 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 qa   quitall
+alias qall quitall
+alias setl setlocal
+
+alias filter     scout -prt
+alias find       scout -aeit
+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%space
+map @  console -p6 shell  %%s
+map #  console shell -p%space
+map s  console shell%space
+map r  chain draw_possible_programs; console open_with%space
+map f  console find%space
+map cd console cd%space
+
+# Change the line mode
+map Mf linemode filename
+map Mi linemode fileinfo
+map Mp linemode permissions
+map Mt linemode metatitle
+
+# 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%space
+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%space
+
+# 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=3
+#map J  move down=0.5  pages=True
+map K  move up=3
+#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 -f echo -n %d/%f | xsel -i; xsel -o | xsel -i -b
+map yd shell -f echo -n %d    | xsel -i; xsel -o | xsel -i -b
+map yn shell -f echo -n %f    | xsel -i; xsel -o | xsel -i -b
+
+# Filesystem Operations
+map =  chmod
+
+map cw console rename%space
+map a  rename_append
+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 console delete
+
+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%space
+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 oz set sort=random
+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 oe chain set sort=extension; 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 oE chain set sort=extension; 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%space
+
+# 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 -f chmod u+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map +{0}  shell -f chmod u+{0} %s".format(arg))
+
+eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
+eval for arg in "rwxXst": cmd("map -{0}  shell -f 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     <C-l> redraw_window
+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 <C-l> redraw_window
+tmap <ESC> taskview_close
+copytmap <ESC> q Q w <C-c>
diff --git a/.config/ranger/rifle.conf b/.config/ranger/rifle.conf
@@ -0,0 +1,197 @@
+# 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 surf,           X, flag f = surf -- file://"$1"
+ext x?html?, has vimprobable,    X, flag f = vimprobable -- "$@"
+ext x?html?, has vimprobable2,   X, flag f = vimprobable2 -- "$@"
+ext x?html?, has dwb,            X, flag f = dwb -- "$@"
+ext x?html?, has jumanji,        X, flag f = jumanji -- "$@"
+ext x?html?, has luakit,         X, flag f = luakit -- "$@"
+ext x?html?, has uzbl,           X, flag f = uzbl -- "$@"
+ext x?html?, has uzbl-browser,   X, flag f = uzbl-browser -- "$@"
+ext x?html?, has uzbl-core,      X, flag f = uzbl-core -- "$@"
+ext x?html?, has midori,         X, flag f = midori -- "$@"
+ext x?html?, has chromium,       X, flag f = chromium -- "$@"
+ext x?html?, has opera,          X, flag f = opera -- "$@"
+ext x?html?, has firefox,        X, flag f = firefox -- "$@"
+ext x?html?, has seamonkey,      X, flag f = seamonkey -- "$@"
+ext x?html?, has iceweasel,      X, flag f = iceweasel -- "$@"
+ext x?html?, has epiphany,       X, flag f = epiphany -- "$@"
+ext x?html?, has konqueror,      X, flag f = konqueror -- "$@"
+ext x?html?, has elinks,          terminal = elinks "$@"
+ext x?html?, has links2,          terminal = links2 "$@"
+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 = $EDITOR -- "$@"
+mime ^text,  label pager  = "$PAGER" -- "$@"
+!mime ^text, label editor, ext xml|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
+!mime ^text, label pager,  ext xml|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"
+ext exe                       = wine "$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 mplayer  = mplayer -- "$@"
+mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
+mime ^audio|ogg$, terminal, has mpv      = mpv -- "$@"
+ext midi?,        terminal, has wildmidi = wildmidi -- "$@"
+
+#--------------------------------------------
+# Video/Audio with a GUI
+#-------------------------------------------
+mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
+mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
+mime ^video,       has mpv,      X, flag f = mpv -- "$@"
+mime ^video,       has mpv,      X, flag f = mpv --fs -- "$@"
+mime ^video,       has mplayer2, X, flag f = mplayer2 -- "$@"
+mime ^video,       has mplayer2, X, flag f = mplayer2 -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 -- "$@"
+mime ^video|audio, has totem,    X, flag f = totem -- "$@"
+mime ^video|audio, has totem,    X, flag f = totem --fullscreen -- "$@"
+
+#--------------------------------------------
+# Video without X:
+#-------------------------------------------
+mime ^video, terminal, !X, has mpv       = mpv -- "$@"
+mime ^video, terminal, !X, has mplayer2  = mplayer2 -- "$@"
+mime ^video, terminal, !X, has mplayer   = mplayer -- "$@"
+
+#-------------------------------------------
+# Documents
+#-------------------------------------------
+ext pdf, has llpp,     X, flag f = llpp "$@"
+ext pdf, has zathura,  X, flag f = zathura -- "$@"
+ext pdf, has mupdf,    X, flag f = mupdf -- "$@"
+ext pdf, has apvlv,    X, flag f = apvlv -- "$@"
+ext pdf, has xpdf,     X, flag f = xpdf -- "$@"
+ext pdf, has evince,   X, flag f = evince -- "$@"
+ext pdf, has atril,    X, flag f = atril -- "$@"
+ext pdf, has okular,   X, flag f = okular -- "$@"
+ext pdf, has epdfview, X, flag f = epdfview -- "$@"
+ext pdf, has qpdfview, X, flag f = qpdfview "$@"
+
+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 pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice,     X, flag f = soffice "$@"
+ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice,     X, flag f = ooffice "$@"
+
+ext djvu, has evince, X, flag f = evince -- "$@"
+ext djvu, has atril,  X, flag f = atril -- "$@"
+
+#-------------------------------------------
+# Image Viewing:
+#-------------------------------------------
+mime ^image, has sxiv,      X, flag f = sxiv -- "$@"
+mime ^image, has feh,       X, flag f = feh -- "$@"
+mime ^image, has mirage,    X, flag f = mirage -- "$@"
+mime ^image, has ristretto, X, flag f = ristretto "$@"
+mime ^image, has eog,       X, flag f = eog -- "$@"
+mime ^image, has eom,       X, flag f = eom -- "$@"
+mime ^image, has gimp,      X, flag f = gimp -- "$@"
+ext xcf,                    X, flag f = gimp -- "$@"
+
+#-------------------------------------------
+# Archives
+#-------------------------------------------
+# This requires atool
+ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,  has als     = als -- "$@" | "$PAGER"
+ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has als     = als -- "$@" | "$PAGER"
+ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,  has aunpack = aunpack -- "$@"
+ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has aunpack = aunpack -- "$@"
+
+# Fallback:
+ext tar|gz, has tar = tar vvtf "$@" | "$PAGER"
+ext tar|gz, has tar = tar vvxf "$@"
+
+#-------------------------------------------
+# Misc
+#-------------------------------------------
+label wallpaper, number 11, mime ^image, X = feh --bg-scale "$1"
+label wallpaper, number 12, mime ^image, X = feh --bg-tile "$1"
+label wallpaper, number 13, mime ^image, X = feh --bg-center "$1"
+label wallpaper, number 14, mime ^image, X = feh --bg-fill "$1"
+
+# Define the editor for non-text files + pager as last action
+              !mime ^text, !ext xml|csv|tex|py|pl|rb|js|sh|php  = ask
+label editor, !mime ^text, !ext xml|csv|tex|py|pl|rb|js|sh|php  = $EDITOR -- "$@"
+label pager,  !mime ^text, !ext xml|csv|tex|py|pl|rb|js|sh|php  = "$PAGER" -- "$@"
diff --git a/.config/ranger/scope.sh b/.config/ranger/scope.sh
@@ -0,0 +1,89 @@
+#!/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
+# 6    | image      | success. display the image $cached points to as an image preview
+
+# 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)
+cached="$4"  # Path that should be used to cache image previews
+
+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=$(/bin/echo -E "${path##*.}" | tr "[:upper:]" "[:lower:]")
+
+# 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 previously used "try" command
+dump() { /bin/echo -E "$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;;
+    # Image preview for videos, disabled by default:
+    # video/*)
+    #     ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || 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
diff --git a/.config/ranger/tagged b/.config/ranger/tagged
diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc
@@ -0,0 +1,193 @@
+#XF86Audio{Prev,Next}
+#	mpc -q {prev,next}
+#
+#@XF86LaunchA
+#	scrot -s -e 'image_viewer $f'
+#
+#super + shift + equal
+#	sxiv -rt "$HOME/image"
+#
+#XF86LaunchB
+#	xdotool selectwindow | xsel -bi
+#
+#super + {h,j,k,l}
+#	bspc node -f {west,south,north,east}
+#
+#super + alt + {0-9}
+#	mpc -q seek {0-9}0%
+#
+#super + {alt,ctrl,alt + ctrl} + XF86Eject
+#	sudo systemctl {suspend,reboot,poweroff}
+#
+#super + {_,shift + }{h,j,k,l}
+#	bspc node -{f,s} {west,south,north,east}
+#
+#
+#
+#super + alt + control + {h,j,k,l} ; {0-9}
+#	bspc node @{west,south,north,east} -r 0.{0-9}
+#
+#super + alt + p
+#	bspc config focus_follows_pointer {true,false}
+
+#
+# wm independent hotkeys
+#
+
+#Program launcher
+super + @p ; {b,c,e,p,t}
+	{sudo timeshift-launcher,chromium,geany,keepassxc,terminator}
+
+#Script launcher
+super + s
+	/home/anders/Scripts/.scriptmenu
+
+# terminal emulator
+super + Return
+	terminator
+
+# terminal emulator
+super + shift + Return
+	st
+
+#Keepass menu
+super + shift + p
+	kpmenu -d /home/anders/.kp/Database.kdbx
+
+#i3Lock
+super + KP_Enter
+	i3lock-fancy
+
+#Volume
+XF86Audio{Raise,Lower}Volume
+	pactl set-sink-volume 0 {+,-}5%
+
+XF86AudioMute
+	pactl set-sink-mute 0 toggle
+
+#Brightness
+XF86MonBrightness{Down,Up}
+	sudo /home/anders/Scripts/bright{down,up}.sh
+
+super + KP_{Subtract,Add}
+	sudo /home/anders/Scripts/bright{down,up}.sh
+
+# program launcher
+super + d
+	dmenu_run
+
+# make sxhkd reload its configuration files:
+super + Escape
+	pkill -USR1 -x sxhkd
+
+#
+# bspwm hotkeys
+#
+
+# quit/restart bspwm
+super + alt + {q,r}
+	bspc {quit,wm -r}
+
+# close and kill
+super + {_,shift + }w
+	bspc node -{c,k}
+
+# alternate between the tiled and monocle layout
+super + m
+	bspc desktop -l next
+
+# send the newest marked node to the newest preselected node
+super + y
+	bspc node newest.marked.local -n newest.!automatic.local
+
+# swap the current node and the biggest node
+super + g
+	bspc node -s biggest
+
+#
+# state/flags
+#
+
+# set the window state
+super + {t,shift + t,f,shift + f}
+	bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
+
+# set the node flags
+super + ctrl + {m,x,y,z}
+	bspc node -g {marked,locked,sticky,private}
+
+#
+# focus/swap
+#
+
+# focus the node in the given direction
+super + {_,shift + }{h,j,k,l}
+	bspc node -{f,s} {west,south,north,east}
+
+# focus the node for the given path jump
+super + {p,b,comma,period}
+	bspc node -f @{parent,brother,first,second}
+
+# focus the next/previous node in the current desktop
+super + {_,shift + }c
+	bspc node -f {next,prev}.local
+
+# focus the next/previous desktop in the current monitor
+#super + bracket{left,right}
+#	bspc desktop -f {prev,next}.local
+
+# focus the last node/desktop
+super + {grave,Tab}
+	bspc {node,desktop} -f last
+
+# focus the older or newer node in the focus history
+super + {o,i}
+	bspc wm -h off; \
+	bspc node {older,newer} -f; \
+	bspc wm -h on
+
+# focus or send to the given desktop
+super + {_,shift + }{1-9,0}
+	bspc {desktop -f,node -d} '^{1-9,10}'
+
+#
+# preselect
+#
+
+# preselect the direction
+super + ctrl + {h,j,k,l}
+	bspc node -p {west,south,north,east}
+
+# preselect the ratio
+super + ctrl + {1-9}
+	bspc node -o 0.{1-9}
+
+# cancel the preselection for the focused node
+super + ctrl + space
+	bspc node -p cancel
+
+# cancel the preselection for the focused desktop
+super + ctrl + shift + space
+	bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
+
+#
+# move/resize
+#
+
+# resize gaps
+super + alt + {8,9}
+	bspc config window_gap $((`bspc config window_gap` {-,+} 5))
+super + alt + 0
+	bspc config window_gap 0
+
+# expand a window by moving one of its side outward
+super + alt + {h,j,k,l}
+	bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
+
+# contract a window by moving one of its side inward
+super + alt + shift + {h,j,k,l}
+	bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
+
+# move a floating window
+super + {Left,Down,Up,Right}
+	bspc node -v {-20 0,0 20,0 -20,20 0}
diff --git a/.config/terminator/config b/.config/terminator/config
@@ -0,0 +1,22 @@
+[global_config]
+[keybindings]
+  help = F11
+[layouts]
+  [[default]]
+    [[[child1]]]
+      parent = window0
+      type = Terminal
+    [[[window0]]]
+      parent = ""
+      type = Window
+[plugins]
+[profiles]
+  [[default]]
+    cursor_color = "#aaaaaa"
+    font = DejaVu Sans Mono 10
+    foreground_color = "#ffffff"
+    palette = "#000000:#cd0000:#00cd00:#cdcd00:#0000ee:#cd00cd:#00cdcd:#e5e5e5:#7f7f7f:#ff0000:#00ff00:#ffff00:#5c5cff:#ff00ff:#00ffff:#ffffff"
+    scrollback_lines = 1000
+    scrollbar_position = hidden
+    show_titlebar = False
+    use_system_font = False
diff --git a/.config/vifm/colors/Default.vifm b/.config/vifm/colors/Default.vifm
@@ -0,0 +1,80 @@
+" You can edit this file by hand.
+" The " character at the beginning of a line comments out the line.
+" Blank lines are ignored.
+
+" The Default color scheme is used for any directory that does not have
+" a specified scheme and for parts of user interface like menus. A
+" color scheme set for a base directory will also
+" be used for the sub directories.
+
+" The standard ncurses colors are:
+" Default = -1 = None, can be used for transparency or default color
+" Black = 0
+" Red = 1
+" Green = 2
+" Yellow = 3
+" Blue = 4
+" Magenta = 5
+" Cyan = 6
+" White = 7
+
+" Light versions of colors are also available (set bold attribute):
+" LightBlack
+" LightRed
+" LightGreen
+" LightYellow
+" LightBlue
+" LightMagenta
+" LightCyan
+" LightWhite
+
+" Available attributes (some of them can be combined):
+" bold
+" underline
+" reverse or inverse
+" standout
+" italic (on unsupported systems becomes reverse)
+" none
+
+" Vifm supports 256 colors you can use color numbers 0-255
+" (requires properly set up terminal: set your TERM environment variable
+" (directly or using resources) to some color terminal name (e.g.
+" xterm-256color) from /usr/lib/terminfo/; you can check current number
+" of colors in your terminal with tput colors command)
+
+" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color
+
+highlight clear
+
+highlight Win cterm=none ctermfg=white ctermbg=black
+highlight Directory cterm=bold ctermfg=cyan ctermbg=default
+highlight Link cterm=bold ctermfg=yellow ctermbg=default
+highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
+highlight Socket cterm=bold ctermfg=magenta ctermbg=default
+highlight Device cterm=bold ctermfg=red ctermbg=default
+highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
+highlight Executable cterm=bold ctermfg=green ctermbg=default
+highlight Selected cterm=bold ctermfg=magenta ctermbg=default
+highlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default
+highlight TopLine cterm=none ctermfg=black ctermbg=white
+highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
+highlight StatusLine cterm=bold ctermfg=black ctermbg=white
+highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
+highlight CmdLine cterm=none ctermfg=white ctermbg=black
+highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
+highlight Border cterm=none ctermfg=black ctermbg=white
+highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
+highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
+highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
+highlight AuxWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight TabLine cterm=none ctermfg=white ctermbg=black
+highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default
+highlight User1 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User2 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User3 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User4 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User5 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User6 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User7 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User8 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
+highlight User9 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
diff --git a/.config/vifm/scripts/README b/.config/vifm/scripts/README
@@ -0,0 +1,6 @@
+This directory is dedicated for user-supplied scripts/executables.
+vifm modifies its PATH environment variable to let user run those
+scripts without specifying full path.  All subdirectories are added
+as well.  File in a subdirectory overrules file with the same name
+in parent directories.  Restart might be needed to recognize files
+in newly created or renamed subdirectories.
+\ No newline at end of file
diff --git a/.config/vifm/scripts/imgc b/.config/vifm/scripts/imgc
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+W3MIMGDISPLAY="/usr/lib/w3m/w3mimgdisplay"
+FONTH=18 # Size of one terminal row
+FONTW=9 # Size of one terminal column
+
+X=$1
+Y=$2
+COLUMNS=$3
+LINES=$4
+
+x=$((FONTW * X))
+y=$((FONTH * Y))
+
+erase="6;$x;$y;$(( FONTW*COLUMNS ));$(( FONTH*LINES ))\n3;"
+echo -e "$erase" | $W3MIMGDISPLAY
diff --git a/.config/vifm/scripts/imgt b/.config/vifm/scripts/imgt
@@ -0,0 +1,38 @@
+#!/bin/bash
+#
+# Based on script by z3bra -- 2014-01-21
+
+W3MIMGDISPLAY="/usr/lib/w3m/w3mimgdisplay"
+FONTH=16 # Size of one terminal row
+FONTW=9 # Size of one terminal column
+
+X=$1
+Y=$2
+COLUMNS=$3
+LINES=$4
+FILENAME=$5
+
+read width height <<< `echo "5;$FILENAME" | $W3MIMGDISPLAY`
+if [ -z "$width" -o -z "$height" ]; then
+    echo 'Error: Failed to obtain image size.'
+    exit 1
+fi
+
+x=$((FONTW * X))
+y=$((FONTH * Y))
+
+max_width=$((FONTW * COLUMNS))
+max_height=$((FONTH * LINES))
+
+if [ "$width" -gt "$max_width" ]; then
+    height=$((height * max_width / width))
+    width=$max_width
+fi
+if [ "$height" -gt "$max_height" ]; then
+    width=$((width * max_height / height))
+    height=$max_height
+fi
+
+w3m_command="0;1;$x;$y;$width;$height;;;;;$FILENAME\n4;\n3;"
+
+echo -e "$w3m_command" | $W3MIMGDISPLAY
diff --git a/.config/vifm/scripts/vifmimg b/.config/vifm/scripts/vifmimg
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+readonly ID_PREVIEW="preview"
+
+#AUTO_REMOVE="yes"
+# By enabling this option the script will remove the preview file after it is drawn
+# and by doing so the preview will always be up-to-date with the file.
+# This however, requires more CPU and therefore affects the overall performance.
+
+if [ -e "$FIFO_UEBERZUG" ]; then
+    if [[ "$1" == "draw" ]]; then
+        declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
+                           [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
+                           [path]="${PWD}/$6") \
+            > "$FIFO_UEBERZUG"
+
+    elif [[ "$1" == "videopreview" ]]; then
+        echo -e "Loading preview..\nFile: $6"
+        [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/"
+        [[ ! -f "/tmp${PWD}/$6.png" ]] && ffmpegthumbnailer -i "${PWD}/$6" -o "/tmp${PWD}/$6.png" -s 0 -q 10
+        declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
+                           [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
+                           [path]="/tmp${PWD}/$6.png") \
+            > "$FIFO_UEBERZUG"
+
+    elif [[ "$1" == "gifpreview" ]]; then
+        echo -e "Loading preview..\nFile: $6"
+        [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/" && convert -coalesce "${PWD}/$6" "/tmp${PWD}/$6/$6.png"
+        for frame in $(ls -1 /tmp${PWD}/$6/$6*.png | sort -V); do
+           declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
+                           [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
+                           [path]="$frame") \
+            > "$FIFO_UEBERZUG"
+            # Sleep between frames to make the animation smooth.
+            sleep .07
+        done
+
+    elif [[ "$1" == "pdfpreview" ]]; then
+        echo -e "Loading preview..\nFile: $6"
+        [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/"
+        [[ ! -f "/tmp${PWD}/$6.png" ]] && pdftoppm -png -singlefile "$6" "/tmp${PWD}/$6"
+        declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
+                           [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
+                           [path]="/tmp${PWD}/$6.png") \
+            > "$FIFO_UEBERZUG"
+
+    elif [[ "$1" == "clear" ]]; then
+        declare -p -A cmd=([action]=remove [identifier]="$ID_PREVIEW") \
+            > "$FIFO_UEBERZUG"
+        [[ ! -z $AUTO_REMOVE ]] && [[ -f "/tmp${PWD}/$6.png" ]] && rm -f "/tmp${PWD}/$6.png"
+        [[ ! -z $AUTO_REMOVE ]] && [[ -d "/tmp${PWD}/$6/" ]] && rm -rf "/tmp${PWD}/$6/"
+
+    fi
+fi
diff --git a/.config/vifm/scripts/vifmrun b/.config/vifm/scripts/vifmrun
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+export FIFO_UEBERZUG="/tmp/vifm-ueberzug-${PPID}"
+
+function cleanup {
+    rm "$FIFO_UEBERZUG" 2>/dev/null
+    pkill -P $$ 2>/dev/null
+}
+
+rm "$FIFO_UEBERZUG" 2>/dev/null
+mkfifo "$FIFO_UEBERZUG"
+trap cleanup EXIT
+tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser bash &
+
+vifm
+cleanup
diff --git a/.config/vifm/vifm-help.txt b/.config/vifm/vifm-help.txt
@@ -0,0 +1,5899 @@
+VIFM(1)			    General Commands Manual		       VIFM(1)
+
+
+
+NAME
+       vifm - vi file manager
+
+SYNOPSIS
+       vifm [OPTION]...
+       vifm [OPTION]... path
+       vifm [OPTION]... path path
+
+DESCRIPTION
+       Vifm is an ncurses based file manager with vi like keybindings.	If you
+       use vi, vifm gives you complete keyboard control over your files	 with-
+       out having to learn a new set of commands.
+
+OPTIONS
+       vifm  starts  in	 the  current directory unless it is given a different
+       directory on the command line or 'vifminfo' option includes  "savedirs"
+       (in which case last visited directories are used as defaults).
+
+       -      Read list of files from standard input stream and compose custom
+	      view out of them (see "Custom views" section).  Current  working
+	      directory is used as a base for relative paths.
+
+       <path> Starts Vifm in the specified path.
+
+       <path> <path>
+	      Starts Vifm in the specified paths.
+
+       Specifying  two	directories  triggers split view even when vifm was in
+       single-view mode on finishing previous session.	To suppress  this  be-
+       haviour :only command can be put in the vifmrc file.
+
+       When only one path argument is found on command-line, the left/top pane
+       is automatically set as the current view.
+
+       Paths to files are also allowed in case you want	 vifm  to  start  with
+       some archive opened.
+
+       --select <path>
+	      Open  parent  directory  of  the given path and select specified
+	      file in it.
+
+       -f     Makes  vifm  instead  of	opening	 files	write	selection   to
+	      $VIFM/vimfiles and quit.
+
+       --choose-files <path>|-
+	      Sets  output  file  to  write  selection into on exit instead of
+	      opening files.  "-" means standard output.  Use empty  value  to
+	      disable it.
+
+       --choose-dir <path>|-
+	      Sets  output  file to write last visited directory into on exit.
+	      "-" means standard output.  Use empty value to disable it.
+
+       --delimiter <delimiter>
+	      Sets separator for list of  file	paths  written	out  by	 vifm.
+	      Empty  value  means null character.  Default is new line charac-
+	      ter.
+
+       --on-choose <command>
+	      Sets command to be executed on selected files instead of opening
+	      them.   The  command may use any of macros described in "Command
+	      macros" section below.  The command is executed once  for	 whole
+	      selection.
+
+       --logging[=<startup log path>]
+	      Log some operational details $VIFM/log.  If the optional startup
+	      log path is specified and permissions allow to open it for writ-
+	      ing, then logging of early initialization (before value of $VIFM
+	      is determined) is put there.
+
+       --server-list
+	      List available server names and exit.
+
+       --server-name <name>
+	      Name of target or this instance (sequential numbers are appended
+	      on name conflict).
+
+       --remote
+	      Sends  the rest of the command line to another instance of vifm,
+	      --server-name is treated just like any other argument and should
+	      precede  --remote on the command line.  When there is no server,
+	      quits silently.  There is no limit on how many arguments can  be
+	      processed.  One can combine --remote with -c <command> or +<com-
+	      mand> to execute commands in already running instance  of	 vifm.
+	      See also "Client-Server" section below.
+
+       --remote-expr
+	      passes  expression  to  vifm server and prints result.  See also
+	      "Client-Server" section below.
+
+       -c <command> or +<command>
+	      Run command-line mode <command> on startup.   Commands  in  such
+	      arguments are executed in the order they appear in command line.
+	      Commands with spaces or special symbols must be enclosed in dou-
+	      ble  or  single  quotes or all special symbols should be escaped
+	      (the exact syntax strongly depends on shell).  "+"  argument  is
+	      equivalent to "$" and thus picks last item of of the view.
+
+       --help, -h
+	      Show a brief command summary and exit vifm.
+
+       --version, -v
+	      Show version information and quit.
+
+       --no-configs
+	      Skip reading vifmrc and vifminfo.
+
+
+       See "Startup" section below for the explanations on $VIFM.
+
+General keys
+       Ctrl-C or Escape
+	      cancel most operations (see "Cancellation" section below), clear
+	      all selected files.
+
+       Ctrl-L clear and redraw the screen.
+
+Basic Movement
+       The basic vi key bindings are used to move through the files and pop-up
+       windows.
+
+       k, gk, or Ctrl-P
+	      move cursor up one line.
+
+       j, gj or Ctrl-N
+	      move cursor down one line.
+
+       h      when  'lsview'  is  off  move  up one directory (moves to parent
+	      directory node in tree view), otherwise move left one file.
+
+       l      when 'lsview' is off move into a directory or launches  a	 file,
+	      otherwise move right one file.
+
+       gg     move to the first line of the file list.
+
+       G      move to the last line in the file list.
+
+       gh     go  up one directory regardless of view representation (regular,
+	      ls-like).	 Also can be used to leave custom views including tree
+	      view.
+
+       gl or Enter
+	      enter directory or launch a file.
+
+       H      move to the first file in the window.
+
+       M      move to the file in the middle of the window.
+
+       L      move to the last file in the window.
+
+       Ctrl-F or Page Down
+	      move forward one page.
+
+       Ctrl-B or Page Up
+	      move back one page.
+
+       Ctrl-D jump back one half page.
+
+       Ctrl-U jump forward one half page.
+
+       n%     move to the file that is n percent from the top of the list (for
+	      example 25%).
+
+       0 or ^ move cursor to the first column.	See 'lsview'  option  descrip-
+	      tion.
+
+       $      move  cursor  to	the last column.  See 'lsview' option descrip-
+	      tion.
+
+       Space  switch file lists.
+
+       gt     switch to the next tab (wrapping around).
+
+       {n}gt  switch to the tab number {n} (wrapping around).
+
+       gT     switch to the previous tab (wrapping around).
+
+       {n}gT  switch to {n}-th previous tab.
+
+Movement with Count
+       Most movement commands also accept a count,  12j	 would	move  down  12
+       files.
+
+       [count]%
+	      move to percent of the file list.
+
+       [count]j
+	      move down [count] files.
+
+       [count]k
+	      move up [count] files.
+
+       [count]G or [count]gg
+	      move to list position [count].
+
+       [count]h
+	      go up [count] directories.
+
+Scrolling panes
+       zt     redraw pane with file in top of list.
+
+       zz     redraw pane with file in center of list.
+
+       zb     redraw pane with file in bottom of list.
+
+       Ctrl-E scroll pane one line down.
+
+       Ctrl-Y scroll pane one line up.
+
+Pane manipulation
+       Second character can be entered with or without Control key.
+
+       Ctrl-W H
+	      move the pane to the far left.
+
+       Ctrl-W J
+	      move the pane to the very bottom.
+
+       Ctrl-W K
+	      move the pane to the very top.
+
+       Ctrl-W L
+	      move the pane to the far right.
+
+
+       Ctrl-W h
+	      switch to the left pane.
+
+       Ctrl-W j
+	      switch to the pane below.
+
+       Ctrl-W k
+	      switch to the pane above.
+
+       Ctrl-W l
+	      switch to the right pane.
+
+
+       Ctrl-W b
+	      switch to bottom-right window.
+
+       Ctrl-W t
+	      switch to top-left window.
+
+
+       Ctrl-W p
+	      switch to previous window.
+
+       Ctrl-W w
+	      switch to other pane.
+
+
+       Ctrl-W o
+	      leave only one pane.
+
+       Ctrl-W s
+	      split window horizontally.
+
+       Ctrl-W v
+	      split window vertically.
+
+
+       Ctrl-W x
+	      exchange panes.
+
+       Ctrl-W z
+	      quit preview pane or view modes.
+
+
+       Ctrl-W -
+	      decrease size of the view by count.
+
+       Ctrl-W +
+	      increase size of the view by count.
+
+       Ctrl-W <
+	      decrease size of the view by count.
+
+       Ctrl-W >
+	      increase size of the view by count.
+
+
+       Ctrl-W |
+	      set current view size to count.
+
+       Ctrl-W _
+	      set current view size to count.
+
+       Ctrl-W =
+	      make size of two views equal.
+
+       For  Ctrl-W +, Ctrl-W -, Ctrl-W <, Ctrl-W >, Ctrl-W | and Ctrl-W _ com-
+       mands count can be given before and/or  after  Ctrl-W.	The  resulting
+       count  is  a  multiplication of those two.  So "2 Ctrl-W 2 -" decreases
+       window size by 4 lines or columns.
+
+       Ctrl-W | and Ctrl-W _ maximise current view by default.
+
+Marks
+       Marks are set the same way as they are in vi.
+
+       You can use these characters for marks [a-z][A-Z][0-9].
+
+       m[a-z][A-Z][0-9]
+	      set a mark for the file at the current cursor position.
+
+       '[a-z][A-Z][0-9]
+	      navigate to the file set for the mark.
+
+
+       There are also several special marks that can't be set manually:
+
+	 - ' (single quote) - previously visited directory of the  view,  thus
+	   hitting '' allows switching between two last locations
+
+	 - < - the first file of the last visually selected block
+
+	 - > - the last file of the last visually selected block
+
+Searching
+       /regular expression pattern
+	      search  for  files matching regular expression in forward direc-
+	      tion and advance cursor to next match.
+
+       /      perform forward search with top item of search pattern history.
+
+       ?regular expression pattern
+	      search for files matching regular expression in backward	direc-
+	      tion and advance cursor to previous match.
+
+       ?      perform backward search with top item of search pattern history.
+
+       Trailing	 slash	for directories is taken into account, so /\/ searches
+       for directories and symbolic links to directories.  At  the  moment  //
+       works  too, but this can change in the future, so consider escaping the
+       slash if not typing pattern by hand.
+
+       Matches are automatically selected  if  'hlsearch'  is  set.   Enabling
+       'incsearch'  makes  search  interactive.	  'ignorecase' and 'smartcase'
+       options affect case sensitivity of search queries.
+
+
+       [count]n
+	      go to the next file matching last search	pattern.   Takes  last
+	      search direction into account.
+
+       [count]N
+	      go  to  the  previous  file matching last search pattern.	 Takes
+	      last search direction into account.
+
+       If 'hlsearch' option is set, hitting n/N to perform search  and	go  to
+       the first matching item resets current selection in normal mode.	 It is
+       not the case if search was already performed on files in the directory,
+       thus  selection	is  not reset after clearing selection with escape key
+       and hitting n/N key again.
+
+       Note: vifm uses extended regular expressions for / and ?.
+
+
+       [count]f[character]
+	      search forward for file with [character] as first	 character  in
+	      name.  Search wraps around the end of the list.
+
+       [count]F[character]
+	      search  backward for file with [character] as first character in
+	      name.  Search wraps around the end of the list.
+
+       [count];
+	      find the next match of f or F.
+
+       [count],
+	      find the previous match of f or F.
+
+       Note: f, F, ; and , wrap around list beginning and end  when  they  are
+       used alone and they don't wrap when they are used as selectors.
+
+File Filters
+       There are three basic file filters:
+
+	 - dot files filter (excluding "." and ".." special directories, whose
+	   appearance is controlled by the 'dotdirs' option);
+
+	 - manual filter for file names;
+
+	 - automatic filter for file names;
+
+	 - local filter for file names (see description of the "=" normal mode
+	   command).
+
+       Performing  operations  on  manual  filter for file names automatically
+       does the same on automatic one.	The  file  name	 filter	 is  separated
+       mainly for convenience purpose and to get more deterministic behaviour.
+
+       The basic vim folding key bindings are used for filtering files.
+
+       Each file list has its own copy of each filter.
+
+       Filtered files are not checked in / search or :commands.
+
+       Files  and  directories	are  filtered separately.  For this a slash is
+       appended to a directory name before testing whether it matches the fil-
+       ter.  Examples:
+
+
+	 " filter directories which names end with '.files'
+	 :filter /^.*\.files\/$/
+
+	 " filter files which names end with '.d'
+	 :filter /^.*\.d$/
+
+	 " filter files and directories which names end with '.o'
+	 :filter /^.*\.o\/?$/
+
+       Note: vifm uses extended regular expressions.
+
+       za     toggle visibility of dot files.
+
+       zo     show dot files.
+
+       zm     hide dot files.
+
+       zf     add selected files to file name filter.
+
+       zO     show files hidden by file name filter.
+
+       zM     restore all filters.
+
+       zR     remove all filters.
+
+       zr     remove local filter.
+
+       zd     exclude  selection  or  current  file  from a custom view.  Does
+	      nothing for regular view.	 For  tree  view  excluding  directory
+	      excludes	that  sub-tree.	  For  compare views zd hides group of
+	      adjacent identical files, count can be specified as 1 to exclude
+	      just single file or selected items instead.  Files excluded this
+	      way are not counted as filtered out and can't be returned unless
+	      view is reloaded.
+
+       =regular expression pattern
+	      filter  out  files that don't match regular expression.  Whether
+	      view is updated as regular expression is changed depends on  the
+	      value  of	 the 'incsearch' option.  This kind of filter is auto-
+	      matically reset when directory is changed.
+
+Other Normal Mode Keys
+       [count]:
+	      enter command line mode.	[count] generates range.
+
+       q:     open external editor to prompt for  command-line	command.   See
+	      "Command line editing" section for details.
+
+       q/     open external editor to prompt for search pattern to be searched
+	      in forward direction.  See "Command line	editing"  section  for
+	      details.
+
+       q?     open external editor to prompt for search pattern to be searched
+	      in backward direction.  See "Command line editing"  section  for
+	      details.
+
+       q=     open external editor to prompt for filter pattern.  See "Command
+	      line editing" section for details.  Unlike other	q{x}  commands
+	      this one doesn't work in Visual mode.
+
+       [count]!! and [count]!<selector>
+	      enter  command  line mode with entered ! command.	 [count] modi-
+	      fies range.
+
+       Ctrl-O go backwards through directory history of current view.	Nonex-
+	      istent directories are automatically skipped.
+
+       Ctrl-I if  'cpoptions' contains "t" flag, <tab> and <c-i> switch active
+	      pane just like <space> does, otherwise it goes  forward  through
+	      directory	 history of current view.  Nonexistent directories are
+	      automatically skipped.
+
+       Ctrl-G create a window showing detailed information about  the  current
+	      file.
+
+       Shift-Tab
+	      enters  view  mode  (works  only after activating view pane with
+	      :view command).
+
+       ga     calculate directory size.	 Uses cached directory sizes when pos-
+	      sible  for  better  performance.	 As a special case calculating
+	      size of ".." entry results in calculation	 of  size  of  current
+	      directory.
+
+       gA     like  ga,	 but  force  update.   Ignores old values of directory
+	      sizes.
+
+       If file under cursor is selected, each selected item is processed, oth-
+       erwise only current file is updated.
+
+       gf     find  link  destination (like l with 'followlinks' off, but also
+	      finds directories).
+
+       gr     only for MS-Windows
+	      same as l key, but tries	to  run	 program  with	administrative
+	      privileges.
+
+       av     go  to visual mode into selection amending state preserving cur-
+	      rent selection.
+
+       gv     go to visual mode restoring last selection.
+
+       [reg]gs
+	      when no register is specified, restore last t selection (similar
+	      to  what	gv  does  for  visual mode selection).	If register is
+	      present, then all files listed in that register  and  which  are
+	      visible in current view are selected.
+
+       gu<selector>
+	      make names of selected files lowercase.
+
+       [count]guu and [count]gugu
+	      make names of [count] files starting from the current one lower-
+	      case.  Without [count] only current file is affected.
+
+       gU<selector>
+	      make names of selected files uppercase.
+
+       [count]gUU and [count]gUgU
+	      make names of [count] files starting from the current one upper-
+	      case.  Without [count] only current file is affected.
+
+       e      explore file in the current pane.
+
+       i      handle  file (even if it's an executable and 'runexec' option is
+	      set).
+
+       cw     change word is used to rename a file or files.
+
+       cW     change WORD is used to change only name of file (without	exten-
+	      sion).
+
+       cl     change link target.
+
+       co     only for *nix
+	      change file owner.
+
+       cg     only for *nix
+	      change file group.
+
+       [count]cp
+	      change  file  attributes	(permission  on *nix and properties on
+	      Windows).	 If [count] is specified, it's	treated	 as  numerical
+	      argument	 for   non-recursive  `chmod`  command	(of  the  form
+	      [0-7]{3,4}).
+
+       [count]C
+	      clone file [count] times.
+
+       [count]dd or d[count]selector
+	      move selected file or  files  to	trash  directory  (if  'trash'
+	      option is set, otherwise delete).	 See "Trash directory" section
+	      below.
+
+       [count]DD or D[count]selector
+	      like dd and d<selector>, but omitting trash directory (even when
+	      'trash' option is set).
+
+       Y, [count]yy or y[count]selector
+	      yank selected files.
+
+       p      copy  yanked files to the current directory or move the files to
+	      the current directory if they were deleted with dd or  :d[elete]
+	      or  if  the  files were yanked from trash directory.  See "Trash
+	      directory" section below.
+
+       P      move the last yanked files.  The advantage of using P instead of
+	      d	 followed  by  p  is that P moves files only once.  This isn't
+	      important in case you're moving files in the  same  file	system
+	      where  your home directory is, but using P to move files on some
+	      other file system (or file systems, in case  you	want  to  move
+	      files  from  fs1	to  fs2 and your home is on fs3) can save your
+	      time.
+
+       al     put symbolic links with absolute paths.
+
+       rl     put symbolic links with relative paths.
+
+       t      select or unselect (tag) the current file.
+
+       u      undo last change.
+
+       Ctrl-R redo last change.
+
+       dp     in compare view of "ofboth grouppaths" kind, makes corresponding
+	      entry of the other pane equal to the current one.	 The semantics
+	      is as follows:
+	       - nothing done for identical entries
+	       - if file is missing in current view, its pair gets removed
+	       - if file is missing or differs in other view, it's replaced
+	       - file pairs are defined by matching relative paths
+	      File removal obeys 'trash' option.  When the option is  enabled,
+	      the  operation  can  be undone/redone (although results won't be
+	      visible automatically).
+	      Unlike in Vim, this operation is	performed  on  a  single  line
+	      rather than a set of adjacent changes.
+
+       do     same as dp, but applies changes in the opposite direction.
+
+       v or V enter visual mode, clears current selection.
+
+       [count]Ctrl-A
+	      increment first number in file name by [count] (1 by default).
+
+       [count]Ctrl-X
+	      decrement first number in file name by [count] (1 by default).
+
+       ZQ     same as :quit!.
+
+       ZZ     same as :quit.
+
+       .      repeat  last  command-line  command (not normal mode command) of
+	      this session (does nothing right after startup or :restart  com-
+	      mand).   The  command doesn't depend on command-line history and
+	      can be used with completely disabled history.
+
+       (      go to previous group.  Groups are	 defined  by  primary  sorting
+	      key.   For  name and iname members of each group have same first
+	      letter, for all other sorting keys vifm uses size, uid, ...
+
+       )      go to next group.	 See ( key description above.
+
+       {      speeds up navigation to closest previous entry of	 the  opposite
+	      type  by	moving to the first file backwards when cursor is on a
+	      directory and to the first directory backwards when cursor is on
+	      a	 file.	This is essentially a special case of ( that is locked
+	      on "dirs".
+
+       }      same as {, but in forward direction.
+
+       [c     go to previous mismatched entry in directory comparison view  or
+	      do nothing.
+
+       ]c     go  to  next mismatched entry in directory comparison view or do
+	      nothing.
+
+       [d     go to previous directory entry or do nothing.
+
+       ]d     go to next directory entry or do nothing.
+
+       [r     same as :siblprev.
+
+       ]r     same as :siblnext.
+
+       [R     same as :siblprev!.
+
+       ]R     same as :siblnext!.
+
+       [s     go to previous selected entry or do nothing.
+
+       ]s     go to next selected entry or do nothing.
+
+       [z     go to first sibling of current entry.
+
+       ]z     go to last sibling of current entry.
+
+       zj     go to next directory sibling of current entry or do nothing.
+
+       zk     go to previous directory sibling of current entry or do nothing.
+
+Using Count
+       You can use count with commands like yy.
+
+       [count]yy
+	      yank count files starting from current cursor position downward.
+
+       Or you can use count with motions passed to y, d or D.
+
+       d[count]j
+	      delete (count + 1) files starting from current  cursor  position
+	      upward.
+
+Registers
+       vifm  supports  multiple registers for temporary storing list of yanked
+       or deleted files.
+
+       Registers should be specified by hitting double quote key followed by a
+       register	 name.	 Count	is  specified after register name.  By default
+       commands use unnamed register, which has double quote as its name.
+
+       Though all commands accept registers, most  of  commands	 ignores  them
+       (for  example H or Ctrl-U).  Other commands can fill register or append
+       new files to it.
+
+       Presently vifm supports ", _, a-z and A-Z characters as register names.
+
+       As mentioned above " is unnamed register and has special meaning of the
+       default	register.  Every time when you use named registers (a-z and A-
+       Z) unnamed register is updated to contain same list  of	files  as  the
+       last used register.
+
+       _  is black hole register.  It can be used for writing, but its list is
+       always empty.
+
+       Registers with names from a to z and from A to Z are named ones.	  Low-
+       ercase  registers  are cleared before adding new files, while uppercase
+       aren't and should be used to append new files to the existing file list
+       of appropriate lowercase register (A for a, B for b, ...).
+
+       Registers  can be changed on :empty command if they contain files under
+       trash directory (see "Trash directory" section below).
+
+       Registers do not contain one file more than once.
+
+       Example:
+
+	 "a2yy
+
+       puts names of two files to register a (and to the unnamed register),
+
+	 "Ad
+
+       removes one file and append its name to register a (and to the  unnamed
+       register),
+
+	 p or "ap or "Ap
+
+       inserts previously yanked and deleted files into current directory.
+
+Selectors
+       y,  d, D, !, gu and gU commands accept selectors.  You can combine them
+       with any of selectors below to quickly remove or yank several files.
+
+       Most of selectors are like vi motions: j, k, gg, G, H, L, M, %,	f,  F,
+       ;, comma, ', ^, 0 and $.	 But there are some additional ones.
+
+       a      all files in current view.
+
+       s      selected files.
+
+       S      all files except selected.
+
+       Examples:
+
+	 - dj - delete file under cursor and one below;
+
+	 - d2j - delete file under cursor and two below;
+
+	 - y6gg - yank all files from cursor position to 6th file in the list.
+
+       When you pass a count to whole command and its selector they are multi-
+       plied. So:
+
+	 - 2d2j - delete file under cursor and four below;
+
+	 - 2dj - delete file under cursor and two below;
+
+	 - 2y6gg - yank all files from cursor position to  12th	 file  in  the
+	   list.
+
+Visual Mode
+       Visual mode has to generic operating submodes:
+
+	 - plain selection as it is in Vim;
+
+	 - selection editing submode.
+
+       Both  modes  select files in range from cursor position at which visual
+       mode was entered to current cursor position (let's call	it  "selection
+       region").  Each of two borders can be adjusted by swapping them via "o"
+       or "O" keys and updating cursor position	 with  regular	cursor	motion
+       keys.   Obviously,  once	 initial  cursor position is altered this way,
+       real start position becomes unavailable.
+
+       Plain Vim-like visual mode starts with cleared selection, which is  not
+       restored	 on  rejecting selection ("Escape", "Ctrl-C", "v", "V").  Con-
+       trary to it, selection editing doesn't clear previously selected	 files
+       and  restores  them after reject.  Accepting selection by performing an
+       operation on selected items (e.g. yanking them via "y") moves cursor to
+       the  top of current selection region (not to the top most selected file
+       of the view).
+
+       In turn, selection editing supports three types	of  editing  (look  at
+       statusbar to know which one is currently active):
+
+	 - append - amend selection by selecting elements in selection region;
+
+	 - remove  -  amend  selection	by  deselecting	 elements in selection
+	   region;
+
+	 - invert - amend selection by	inverting  selection  of  elements  in
+	   selection region.
+
+       No  matter  how	you  activate selection editing it starts in "append".
+       One can switch type of operation (in the order given above) via	"Ctrl-
+       G" key.
+
+       Almost all normal mode keys work in visual mode, but instead of accept-
+       ing selectors they operate on selected items.
+
+       Enter  save selection and go back to normal mode not moving cursor.
+
+       av     leave visual mode if in amending mode (restores previous	selec-
+	      tion), otherwise switch to amending selection mode.
+
+       gv     restore previous visual selection.
+
+       v, V, Ctrl-C or Escape
+	      leave  visual  mode if not in amending mode, otherwise switch to
+	      normal visual selection.
+
+       Ctrl-G switch type of amending by round robin scheme: append ->	remove
+	      -> invert.
+
+       :      enter  command  line  mode.  Selection is cleared on leaving the
+	      mode.
+
+       o      switch active selection bound.
+
+       O      switch active selection bound.
+
+       gu, u  make names of selected files lowercase.
+
+       gU, U  make names of selected files uppercase.
+
+View Mode
+       This mode tries to imitate the less program.  List of builtin shortcuts
+       can be found below.  Shortcuts can be customized using :qmap, :qnoremap
+       and :qunmap command-line commands.
+
+       Shift-Tab, Tab, q, Q, ZZ
+	      return to normal mode.
+
+       [count]e, [count]Ctrl-E, [count]j, [count]Ctrl-N, [count]Enter
+	      scroll forward one line (or [count] lines).
+
+       [count]y, [count]Ctrl-Y, [count]k, [count]Ctrl-K, [count]Ctrl-P
+	      scroll backward one line (or [count] lines).
+
+       [count]f, [count]Ctrl-F, [count]Ctrl-V, [count]Space
+	      scroll forward one window (or [count] lines).
+
+       [count]b, [count]Ctrl-B, [count]Alt-V
+	      scroll backward one window (or [count] lines).
+
+       [count]z
+	      scroll forward one window (and set window to [count]).
+
+       [count]w
+	      scroll backward one window (and set window to [count]).
+
+       [count]Alt-Space
+	      scroll forward one window, but don't stop at end-of-file.
+
+       [count]d, [count]Ctrl-D
+	      scroll forward one half-window (and set half-window to [count]).
+
+       [count]u, [count]Ctrl-U
+	      scroll  backward	one  half-window  (and	set   half-window   to
+	      [count]).
+
+       r, Ctrl-R, Ctrl-L
+	      repaint screen.
+
+       R      reload view preserving scroll position.
+
+       F      toggle  automatic	 forwarding.   Roughly	equivalent to periodic
+	      file reload and scrolling to the bottom.	The behaviour is simi-
+	      lar to `tail -F` or F key in less.
+
+       [count]/pattern
+	      search forward for ([count]-th) matching line.
+
+       [count]?pattern
+	      search backward for ([count]-th) matching line.
+
+       [count]n
+	      repeat previous search (for [count]-th occurrence).
+
+       [count]N
+	      repeat  previous	search	in  reverse  direction (for [count]-th
+	      occurrence).
+
+       [count]g, [count]<, [count]Alt-<
+	      scroll to the first line of the file (or line [count]).
+
+       [count]G, [count]>, [count]Alt->
+	      scroll to the last line of the file (or line [count]).
+
+       [count]p, [count]%
+	      scroll to the beginning of the file (or N percent into file).
+
+       v      invoke an editor to edit the current  file  being	 viewed.   The
+	      command  for  editing  is taken from the 'vicmd'/'vixcmd' option
+	      value and extended with middle line number prepended by  a  plus
+	      sign and name of the current file.
+
+       All  "Ctrl-W  x" keys work the same was as in Normal mode.  Active mode
+       is automatically changed on navigating among windows.   When  less-like
+       mode  activated	on  file preview is left using one by "Ctrl-W x" keys,
+       its state is stored until another file is displayed using preview (it's
+       possible	 to leave the mode, hide preview pane, do something else, then
+       get back to the file and show preview pane again with previously stored
+       state in it).
+
+Command line Mode
+       These keys are available in all submodes of the command line mode: com-
+       mand, search, prompt and filtering.
+
+       Down, Up, Left, Right, Home, End and Delete are extended keys and  they
+       are  not	 available  if	vifm  is compiled with --disable-extended-keys
+       option.
+
+       Esc, Ctrl-C
+	      leave command line mode,	cancels	 input.	  Cancelled  input  is
+	      saved into appropriate history and can be recalled later.
+
+       Ctrl-M, Enter
+	      execute command and leave command line mode.
+
+       Ctrl-I, Tab
+	      complete command or its argument.
+
+       Shift-Tab
+	      complete in reverse order.
+
+       Ctrl-_ stop completion and return original input.
+
+       Ctrl-B, Left
+	      move cursor to the left.
+
+       Ctrl-F, Right
+	      move cursor to the right.
+
+       Ctrl-A, Home
+	      go to line beginning.
+
+       Ctrl-E, End
+	      go to line end.
+
+       Alt-B  go to the beginning of previous word.
+
+       Alt-F  go to the end of next word.
+
+       Ctrl-U remove  characters  from	cursor	position till the beginning of
+	      line.
+
+       Ctrl-K remove characters from cursor position till the end of line.
+
+       Ctrl-H, Backspace
+	      remove character before the cursor.
+
+       Ctrl-D, Delete
+	      remove character under the cursor.
+
+       Ctrl-W remove characters from cursor position  till  the	 beginning  of
+	      previous word.
+
+       Alt-D  remove  characters  from	cursor	position till the beginning of
+	      next word.
+
+       Ctrl-T swap the order of current and previous character and move cursor
+	      forward  or,  if	cursor past the end of line, swap the order of
+	      two last characters in the line.
+
+       Alt-.  insert last part of previous command to current cursor position.
+	      Each next call will insert last part of older command.
+
+       Ctrl-G edit command-line content in external editor.  See "Command line
+	      editing" section for details.
+
+       Ctrl-N recall more recent command-line from history.
+
+       Ctrl-P recall older command-line from history.
+
+       Up     recall more recent command-line from history, that begins as the
+	      current command-line.
+
+       Down   recall  older command-line from history, that begins as the cur-
+	      rent command-line.
+
+       Ctrl-] trigger abbreviation expansion.
+
+Pasting special values
+       The shortcuts listed below insert specified values into current	cursor
+       position.  Last key of every shortcut references value that it inserts:
+	 - c - [c]urrent file
+	 - d - [d]irectory path
+	 - e - [e]xtension of a file name
+	 - r - [r]oot part of a file name
+	 - t - [t]ail part of directory path
+
+	 - a - [a]utomatic filter
+	 - m - [m]anual filter
+	 - = - local filter, which is bound to "=" in normal mode
+
+       Values related to filelist in current pane are available through Ctrl-X
+       prefix, while values from the other pane have  doubled  Ctrl-X  key  as
+       their  prefix  (doubled Ctrl-X is presumably easier to type than upper-
+       case letters; it's still easy to remap the keys to correspond to	 names
+       of similar macros).
+
+       Ctrl-X c
+	      name of the current file of the active pane.
+
+       Ctrl-X d
+	      path to the current directory of the active pane.
+
+       Ctrl-X e
+	      extension of the current file of the active pane.
+
+       Ctrl-X r
+	      name root of current file of the active pane.
+
+       Ctrl-X t
+	      the  last	 component  of	path  to  the current directory of the
+	      active pane.
+
+       Ctrl-X Ctrl-X c
+	      name of the current file of the inactive pane.
+
+       Ctrl-X Ctrl-X d
+	      path to the current directory of the inactive pane.
+
+       Ctrl-X Ctrl-X e
+	      extension of the current file of the inactive pane.
+
+       Ctrl-X Ctrl-X r
+	      name root of current file of the inactive pane.
+
+       Ctrl-X Ctrl-X t
+	      the last component of path to the current directory of the inac-
+	      tive pane.
+
+
+       Ctrl-X a
+	      value of automatic filter of the active pane.
+
+       Ctrl-X m
+	      value of manual filter of the active pane.
+
+       Ctrl-X =
+	      value of local filter of the active pane.
+
+
+       Ctrl-X /
+	      last pattern from search history.
+
+Command line editing
+       vifm provides a facility to edit several kinds of data, that is usually
+       edited in command-line mode, in external editor (using  command	speci-
+       fied  by 'vicmd' or 'vixcmd' option).  This has at least two advantages
+       over built-in command-line mode:
+	 - one can use full power of Vim to edit text;
+	 - finding and reusing history entries becomes possible.
+
+       The facility is supported by four input submodes of the command-line:
+	 - command;
+	 - forward search;
+	 - backward search;
+	 - file rename (see description of cw and cW normal mode keys).
+
+       Editing command-line using external editor is activated by  the	Ctrl-G
+       shortcut.   It's	 also  possible	 to do almost the same from Normal and
+       Visual modes using q:, q/ and q? commands.
+
+       Temporary file created for the purpose of editing the line has the fol-
+       lowing structure:
+
+	 1. First line, which is either empty or contains text already entered
+	    in command-line.
+
+	 2. 2nd and all other lines with history items starting with the  most
+	    recent  one.   Altering this lines in any way won't change history
+	    items stored by vifm.
+
+       After editing application is finished the first line  of	 the  file  is
+       taken  as  the  result  of operation, when the application returns zero
+       exit code.  If the application returns an error (see :cquit command  in
+       Vim), all the edits made to the file are ignored, but the initial value
+       of the first line is saved in appropriate history.
+
+More Mode
+       This is the mode that appears when status bar content is so big that it
+       doesn't	fit  on the screen.  One can identify the mode by "-- More --"
+       message at the bottom.
+
+       The following keys are handled in this mode:
+
+
+       Enter, Ctrl-J, j or Down
+	      scroll one line down.
+
+       Backspace, k or Up
+	      scroll one line up.
+
+
+       d      scroll one page (half of a screen) down.
+
+       u      scroll one page (half of a screen) up.
+
+
+       Space, f or PageDown
+	      scroll down a screen.
+
+       b or PageUp
+	      scroll up a screen.
+
+
+       G      scroll to the bottom.
+
+       g      scroll to the top.
+
+
+       q, Escape or Ctrl-C
+	      quit the mode.
+
+       :      switch to command-line mode.
+
+Commands
+       Commands are executed with :command_name<Enter>
+
+       Commented out lines should start with  the  double  quote  symbol  ("),
+       which  may be preceded by whitespace characters intermixed with colons.
+       Inline comments can be added at the end of the line after double	 quote
+       symbol,	only  last  line of a multi-line command can contain such com-
+       ment.  Not all commands support inline comments as  their  syntax  con-
+       flicts  with  names  of	registers  and	fields where double quotes are
+       allowed.
+
+       Most of the commands have two forms: complete and the short one.	 Exam-
+       ple:
+
+	 :noh[lsearch]
+
+       This  means  the	 complete  command is nohlsearch, and the short one is
+       noh.
+
+       Most of command-line commands completely reset selection in the current
+       view.  However, there are several exceptions:
+
+	 - `:invert s` most likely leaves some files selected;
+
+	 - :normal command (when it doesn't leave command-line mode);
+
+	 - :if	and :else commands don't affect selection on successful execu-
+	   tion.
+
+       '|' can be used to separate commands, so you can give multiple commands
+       in  one	line.	If you want to use '|' in an argument, precede it with
+       '\'.
+
+       These commands see '|' as  part	of  their  arguments  even  when  it's
+       escaped:
+
+	   :[range]!
+	   :autocmd
+	   :cabbrev
+	   :cmap
+	   :cnoreabbrev
+	   :cnoremap
+	   :command
+	   :dmap
+	   :dnoremap
+	   :filetype
+	   :fileviewer
+	   :filextype
+	   :map
+	   :mmap
+	   :mnoremap
+	   :nmap
+	   :nnoremap
+	   :noremap
+	   :normal
+	   :qmap
+	   :qnoremap
+	   :vmap
+	   :vnoremap
+	   :wincmd
+	   :windo
+	   :winrun
+
+       To  be able to use another command after one of these, wrap it with the
+       :execute command.  An example:
+
+	 if filetype('.') == 'reg' | execute '!!echo regular file' | endif
+
+       :[count]
+
+       :number
+	      move to the file number.
+	      :12 would move to the 12th file in the list.
+	      :0 move to the top of the list.
+	      :$ move to the bottom of the list.
+
+       :[count]command
+	      The  only	 builtin  :[count]command  are	:[count]d[elete]   and
+	      :[count]y[ank].
+
+       :d3    would  delete  three files starting at the current file position
+	      moving down.
+
+       :3d    would delete one file at the third line in the list.
+
+       :command [args]
+
+       :[range]!program
+	      execute command via shell.  Accepts macros.
+
+       :[range]!command &
+
+       same as above, but the command is run in the  background	 using	vifm's
+       means.
+
+       Programs that write to stdout like "ls" create an error message showing
+       partial output of the command.
+
+       Note the space before ampersand symbol, if you omit it, command will be
+       run in the background using job control of your shell.
+
+       Accepts macros.
+
+						:!!
+
+       :[range]!!command
+	      same as :!, but pauses before returning.
+
+       :!!    repeat the last command.
+
+						:alink
+
+       :[range]alink[!?]
+	      create absolute symbolic links to files in directory of inactive
+	      view.  With "?"  prompts for destination file names in  an  edi-
+	      tor.  "!" forces overwrite.
+
+       :[range]alink[!] path
+	      create  absolute	symbolic links to files in directory specified
+	      by the path (absolute  or	 relative  to  directory  of  inactive
+	      view).
+
+       :[range]alink[!] name1 name2...
+	      create  absolute	symbolic  links of files in directory of other
+	      view giving each next link a corresponding name from  the	 argu-
+	      ment list.
+
+						:apropos
+
+       :apropos keyword...
+	      create a menu of items returned by the apropos command.  Select-
+	      ing an item in  the  menu	 opens	corresponding  man  page.   By
+	      default  the  command  relies on the external "apropos" utility,
+	      which can be customized by altering value	 of  the  'aproposprg'
+	      option.
+
+						:autocmd
+
+       :au[tocmd] {event} {pat} {cmd}
+	      register autocommand for the {event}, which can be:
+		- DirEnter - performed on entering a directory
+	      Event name is case insensitive.
+
+	      {pat}  is	 a  comma-separated  list  of modified globs patterns,
+	      which can contain tilde or environment variables.	 All paths use
+	      slash  ('/') as directory separator.  The pattern can start with
+	      a '!', which negates it.	Patterns that do not  contain  slashes
+	      are  matched  against the last item of the path only (e.g. "dir"
+	      in "/path/dir").	Literal comma can be entered by	 doubling  it.
+	      Two modifications to globs matching are as follows:
+		-  *  - never matches a slash (i.e., can signify single direc-
+	      tory level)
+		- ** - matches any character (i.e., can match  path  of	 arbi-
+	      trary depth)
+
+	      {cmd} is a :command or several of them separated with '|'.
+
+	      Examples of patterns:
+		- conf.d      - matches conf.d directory anywhere
+		- *.d	      - matches directories ending with ".d" anywhere
+		- **.git      - matches something.git, but not .git anywhere
+		- **/.git/**  - matches /path/.git/objects, but not /path/.git
+		-  **/.git/**/ - matches /path/.git/ only (because of trailing
+	      slash)
+		-  /etc/*	-  matches  /etc/conf.d/,  /etc/X11,  but  not
+	      /etc/X11/fs
+		- /etc/**/*.d - matches /etc/conf.d, /etc/X11/conf.d, etc.
+		- /etc/**/*   - matches /etc/ itself and any file below it
+		- /etc/**/**  - matches /etc/ itself and any file below it
+
+       :au[tocmd] [{event}] [{pat}]
+	      list  those autocommands that match given event-pattern combina-
+	      tion.
+	      {event} and {pat} can be omitted to list all  autocommands.   To
+	      list  any autocommands for specific pattern one can use * place-
+	      holder in place of {event}.
+
+       :au[tocmd]! [{event}] [{pat}]
+	      remove autocommands that match given event-pattern  combination.
+	      Syntax is the same as for listing above.
+
+       :apropos
+	      repeat last :apropos command.
+
+						:bmark
+
+       :bmark tag1 [tag2 [tag3...]]
+	      bookmark current directory with specified tags.
+
+       :bmark! path tag1 [tag2 [tag3...]]
+	      same  as :bmark, but allows bookmarking specific path instead of
+	      current directory.  This is for use in vifmrc and for  bookmark-
+	      ing files.
+
+	      Path  can contain macros that expand to single path (%c, %C, %d,
+	      %D) or those that can expand to multiple paths, but contain only
+	      one  (%f, %F, %rx).  The latter is done for convenience on using
+	      the command interactively.  Complex macros that  include	spaces
+	      (e.g. "%c:gs/ /_") should be escaped.
+
+						:bmarks
+
+       :bmarks
+	      display all bookmarks in a menu.
+
+       :bmarks [tag1 [tag2...]]
+	      display  menu  of	 bookmarks  that  include all of the specified
+	      tags.
+
+						:bmgo
+
+       :bmgo [tag1 [tag2...]]
+	      when there are more than one match acts  exactly	like  :bmarks,
+	      otherwise	 navigates  to	single match immediately (and fails if
+	      there is no match).
+
+						:cabbrev
+
+       :ca[bbrev]
+	      display menu of command-line mode abbreviations.
+
+       :ca[bbrev] lhs-prefix
+	      display command-line mode	 abbreviations	which  left-hand  side
+	      starts with specified prefix.
+
+       :ca[bbrev] lhs rhs
+	      register	new  or	 overwrites existing abbreviation for command-
+	      line mode.  rhs can contain spaces  and  any  special  sequences
+	      accepted	in  rhs	 of  mappings  (see "Mappings" section below).
+	      Abbreviations are expanded non-recursively.
+
+						:cnoreabbrev
+
+       :cnorea[bbrev]
+	      display menu of command-line mode abbreviations.
+
+       :cnorea[bbrev] lhs-prefix
+	      display command-line mode	 abbreviations	which  left-hand  side
+	      starts with specified prefix.
+
+       :cnorea[bbrev] lhs rhs
+	      same  as :cabbrev, but mappings in rhs are ignored during expan-
+	      sion.
+
+						:cd
+
+       :cd or :cd ~ or :cd $HOME
+	      change to home directory.
+
+       :cd -  go to the last visited directory.
+
+       :cd ~/dir
+	      change directory to ~/dir.
+
+       :cd /curr/dir /other/dir
+	      change directory of the current pane to /curr/dir and  directory
+	      of  the other pane to /other/dir.	 Relative paths are assumed to
+	      be relative to directory of current view.	 Command won't fail if
+	      one  of directories is invalid.  All forms of the command accept
+	      macros.
+
+       :cd! /dir
+	      same as :cd /dir /dir.
+
+						:change
+
+       :c[hange]
+	      create a menu window to alter a files properties.
+
+						:chmod
+
+       :[range]chmod
+	      display file attributes (permission on *nix  and	properties  on
+	      Windows) change dialog.
+
+       :[range]chmod[!] arg...
+	      only for *nix
+	      change permissions for files.  See `man 1 chmod` for arg format.
+	      "!" means set permissions recursively.
+
+						:chown
+
+       :[range]chown
+	      only for *nix
+	      same as co key in normal mode.
+
+       :[range]chown [user][:][group]
+	      only for *nix
+	      change owner and/or group of  files.   Operates  on  directories
+	      recursively.
+
+						:clone
+
+       :[range]clone[!?]
+	      clones  files  in current directory.  With "?" vifm will open vi
+	      to edit file names.  "!" forces overwrite.  Macros are expanded.
+
+       :[range]clone[!] path
+	      clones files to directory specified with the path	 (absolute  or
+	      relative	to  current directory).	 "!" forces overwrite.	Macros
+	      are expanded.
+
+       :[range]clone[!] name1 name2...
+	      clones files in current directory giving each next clone a  cor-
+	      responding  name	from the argument list.	 "!" forces overwrite.
+	      Macros are expanded.
+
+						:colorscheme
+
+       :colo[rscheme]?
+	      print current color scheme name on the status bar.
+
+       :colo[rscheme]
+	      display a menu with a list of available color schemes.  You  can
+	      choose  primary  color  scheme  here.  It is used for view if no
+	      directory specific colorscheme fits  current  path.   It's  also
+	      used  to	set  border  color  (except view titles) and colors in
+	      menus and dialogs.
+
+       :colo[rscheme] color_scheme_name
+	      change primary color scheme to color_scheme_name.	  In  case  of
+	      errors  (e.g.  some colors are not supported by terminal) either
+	      nothing is changed or color scheme is reset to builtin colors to
+	      ensure that TUI is left in a usable state.
+
+       :colo[rscheme] color_scheme_name directory
+	      associate	 directory with the color scheme.  The directory argu-
+	      ment can be either absolute or relative path  when  :colorscheme
+	      command  is  executed from command line, but mandatory should be
+	      an absolute path when the command is executed in scripts	loaded
+	      at startup (until vifm is completely loaded).
+
+						:comclear
+
+       :comc[lear]
+	      remove all user defined commands.
+
+						:command
+
+       :com[mand]
+	      display a menu of user commands.
+
+       :com[mand] beginning
+	      display user defined commands that start with the beginning.
+
+       :com[mand] name action
+	      set a new user command.
+	      Trying  to  use  a reserved command name will result in an error
+	      message.
+	      Use :com[mand]! to overwrite a previously set command.
+	      Unlike vim user commands do not have to  start  with  a  capital
+	      letter.	User commands are run in a shell by default.  To run a
+	      command in the background you must set it as a  background  com-
+	      mand with & at the end of the commands action (:com rm rm %f &).
+	      Command name cannot contain numbers or special  symbols  (except
+	      '?' and '!').
+
+       :com[mand] name /pattern
+	      set search pattern.
+
+       :com[mand] name =pattern
+	      set local filter value.
+
+       :com[mand] name filter{:filter args}
+	      set  file	 name  filter  (see :filter command description).  For
+	      example:
+
+		" display only audio files
+		:command onlyaudio filter/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
+		" display everything except audio files
+		:command noaudio filter!/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
+
+       :com[mand] cmd :commands
+	      set kind of an alias for internal command	 (like	in  a  shell).
+	      Passes  range  given  to alias to an aliased command, so running
+	      :%cp after
+		:command cp :copy %a
+	      equals
+		:%copy
+
+						:compare
+
+       :compare [byname |  bysize  |  bycontents  |  listall  |	 listunique  |
+       listdups | ofboth | ofone | groupids | grouppaths | skipempty]...
+	      compare  files in one or two views according the arguments.  The
+	      default is "bycontents listall ofboth grouppaths".  See "Compare
+	      views"  section below for details.  Tree structure is incompati-
+	      ble with alternative representations, so values of 'lsview'  and
+	      'millerview' options are ignored.
+
+						:copen
+
+       :cope[n]
+	      opens menu with contents of the last displayed menu with naviga-
+	      tion to files by default, if any.
+
+						:copy
+
+       :[range]co[py][!?][ &]
+	      copy files to directory of other view.   With  "?"  prompts  for
+	      destination file names in an editor.  "!" forces overwrite.
+
+       :[range]co[py][!] path[ &]
+	      copy  files  to  directory  specified with the path (absolute or
+	      relative to directory of other view).  "!" forces overwrite.
+
+       :[range]co[py][!] name1 name2...[ &]
+	      copy files to directory of other view giving each	 next  file  a
+	      corresponding  name  from	 the  argument list.  "!" forces over-
+	      write.
+
+						:cquit
+
+       :cq[uit][!]
+	      same  as	:quit,	but  also  aborts   directory	choosing   via
+	      --choose-dir  (empties  output  file)  and returns non-zero exit
+	      code.
+
+						:cunabbrev
+
+       :cuna[bbrev] lhs
+	      unregister command-line mode abbreviation by its lhs.
+
+       :cuna[bbrev] rhs
+	      unregister command-line mode abbreviation by its	rhs,  so  that
+	      abbreviation could be removed even after expansion.
+
+						:delbmarks
+
+       :delbmarks
+	      remove bookmarks from current directory.
+
+       :delbmarks tag1 [tag2 [tag3...]]
+	      remove set of bookmarks that include all of the specified tags.
+
+       :delbmarks!
+	      remove all bookmarks.
+
+       :delbmarks! path1 [path2 [path3...]]
+	      remove bookmarks of listed paths.
+
+						:delcommand
+
+       :delc[ommand] user_command
+	      remove user defined command named user_command.
+
+						:delete
+
+       :[range]d[elete][!][ &]
+	      delete  selected	file  or  files.   "!"	means complete removal
+	      (omitting trash).
+
+       :[range]d[elete][!] [reg] [count][ &]
+	      delete selected or [count] files to the reg register.  "!" means
+	      complete removal (omitting trash).
+
+						:delmarks
+
+       :delm[arks]!
+	      delete all marks.
+
+       :delm[arks] marks ...
+	      delete  specified	 marks,	 each  argument is treated as a set of
+	      marks.
+
+						:display
+
+       :di[splay]
+	      display menu with registers content.
+
+       :di[splay] list ...
+	      display the contents of the numbered and	named  registers  that
+	      are  mentioned in list (for example "az to display "", "a and "z
+	      content).
+
+						:dirs
+
+       :dirs  display directory stack.
+
+						:echo
+
+       :ec[ho] [<expr>...]
+	      evaluate each argument as an expression and  output  them	 sepa-
+	      rated  with  a space.  See help on :let command for a definition
+	      of <expr>.
+
+						:edit
+
+       :[range]e[dit] [file...]
+	      open selected or passed file(s) in editor.  Macros and  environ-
+	      ment variables are expanded.
+
+						:else
+
+       :el[se]
+	      execute  commands until next matching :endif if all other condi-
+	      tions didn't match.  See also help on :if and :endif commands.
+
+						:elseif
+
+       :elsei[f] {expr1}
+	      execute commands until next matching :elseif, :else or :endif if
+	      conditions  of  previous :if and :elseif branches were evaluated
+	      to zero.	See also help on :if and :endif commands.
+
+						:empty
+
+       :empty permanently remove  files	 from  all  existing  non-empty	 trash
+	      directories (see "Trash directory" section below).  Trash direc-
+	      tories which are specified via %r and/or	%u  also  get  deleted
+	      completely.   Also remove all operations from undolist that have
+	      no sense after :empty and remove all records about files located
+	      inside  directories from all registers.  Removal is performed as
+	      background task with undetermined amount	of  work  and  can  be
+	      checked via :jobs menu.
+
+						:endif
+
+       :en[dif]
+	      end conditional block.  See also help on :if and :else commands.
+
+						:execute
+
+       :exe[cute] [<expr>...]
+	      evaluate	each  argument as an expression and join results sepa-
+	      rated by a space to get a single string which is	then  executed
+	      as a command-line command.  See help on :let command for a defi-
+	      nition of <expr>.
+
+						:exit
+
+       :exi[t][!]
+	      same as :quit.
+
+						:file
+
+       :f[ile][ &]
+	      display menu of programs set for the file type  of  the  current
+	      file.  " &" forces running associated program in background.
+
+       :f[ile] arg[ &]
+	      run associated command that begins with the arg skipping opening
+	      menu.  " &" forces running associated program in background.
+
+						:filetype
+
+       :filet[ype] pattern-list [{descr}]def_prog[ &],[{descr}]prog2[ &],...
+	      associate given program list to each of the  patterns.   Associ-
+	      ated  program  (command) is used by handlers of l and Enter keys
+	      (and also in the :file menu).  If you need to insert comma  into
+	      command  just  double it (",,").	Space followed by an ampersand
+	      as two last characters of a command means running of the command
+	      in  the  background.   Optional description can be given to each
+	      command to ease understanding of what command  will  do  in  the
+	      :file menu.  Vifm will try the rest of the programs for an asso-
+	      ciation when  the	 default  isn't	 found.	  When	program	 entry
+	      doesn't  contain	any  of	 vifm  macros, name of current file is
+	      appended as if program entry ended with %c macro on *nix and %"c
+	      on  Windows.   On	 Windows path to executables containing spaces
+	      can (and should be for correct work with such paths)  be	double
+	      quoted.	See  "Patterns"	 section below for pattern definition.
+	      See also "Automatic FUSE mounts" section below.  Example for zip
+	      archives and several actions:
+
+		filetype *.zip,*.jar,*.war,*.ear
+		       \ {Mount with fuse-zip}
+		       \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
+		       \ {View contents}
+		       \ zip -sf %c | less,
+		       \ {Extract here}
+		       \ tar -xf %c,
+
+	      Note  that  on  OS X when `open` is used to call an app, vifm is
+	      unable to check whether that app is actually available.	So  if
+	      automatic	 skipping  of programs that aren't there is desirable,
+	      `open` should be replaced with an actual command.
+
+       :filet[ype] filename
+	      list (in menu mode) currently  registered	 patterns  that	 match
+	      specified file name.  Same as ":filextype filename".
+
+						:filextype
+
+       :filex[type] pattern-list [{ description }] def_program,program2,...
+	      same as :filetype, but this command is ignored if not running in
+	      X.  In X :filextype is equal to :filetype.  See "Patterns"  sec-
+	      tion  below  for	pattern	 definition.  See also "Automatic FUSE
+	      mounts" section below.
+
+	      For example, consider the following settings  (the  order	 might
+	      seem strange, but it's for the demonstration purpose):
+
+		filetype *.html,*.htm
+			\ {View in lynx}
+			\ lynx
+		filextype *.html,*.htm
+			\ {Open with dwb}
+			\ dwb %f %i &,
+		filetype *.html,*.htm
+			\ {View in links}
+			\ links
+		filextype *.html,*.htm
+			\ {Open with firefox}
+			\ firefox %f &,
+			\ {Open with uzbl}
+			\ uzbl-browser %f %i &,
+
+	      If  you're using vifm inside a terminal emulator that is running
+	      in graphical environment (when X is used on *nix; always on Win-
+	      dows), vifm attempts to run application in this order:
+
+	      1. lynx
+	      2. dwb
+	      3. links
+	      4. firefox
+	      5. uzbl
+
+	      If  there is no graphical environment (checked presence of $DIS-
+	      PLAY environment variable on *nix; never	happens	 on  Windows),
+	      the list will look like:
+
+	      1. lynx
+	      2. links
+
+	      Just as if all :filextype commands were not there.
+
+	      The  purpose of such differentiation is to allow comfortable use
+	      of vifm with same settings in desktop environment/through remote
+	      connection (SSH)/in native console.
+
+	      Note  that  on OS X $DISPLAY isn't defined unless you define it,
+	      so :filextype should be used only if you set  $DISPLAY  in  some
+	      way.
+
+       :filext[ype] filename
+	      list  (in	 menu  mode)  currently registered patterns that match
+	      specified file name.  Same as ":filetype filename".
+
+						:fileviewer
+
+       :filev[iewer] pattern-list command1,command2,...
+	      register specified list of commands as viewers for each  of  the
+	      patterns.	 Viewer is a command which output is captured and dis-
+	      played in one of the panes of vifm after pressing "e" or running
+	      :view  command.	When  the  command doesn't contain any of vifm
+	      macros, name of current file is appended	as  if	command	 ended
+	      with  %c	macro.	Comma escaping and missing commands processing
+	      rules as for :filetype apply to this  command.   See  "Patterns"
+	      section below for pattern definition.
+
+	      Example for zip archives:
+
+		fileviewer *.zip,*.jar,*.war,*.ear zip -sf %c, echo "No zip to preview:"
+
+       :filev[iewer] filename
+	      list  (in	 menu  mode)  currently registered patterns that match
+	      specified filename.
+
+						:filter
+
+       :filter[!] {pattern}
+	      filter files matching the pattern	 out  of  directory  listings.
+	      '!'  controls  state  of	filter inversion after updating filter
+	      value (see also 'cpoptions'  description).   Filter  is  matched
+	      case sensitively on *nix and case insensitively on Windows.  See
+	      "File Filters" and "Patterns" sections.
+
+	      Example:
+
+		" filter all files ending in .o from the filelist.
+		:filter /.o$/
+
+
+       :filter[!] {empty-pattern}
+	      same as above, but use last search pattern as pattern value.
+
+	      Example:
+
+		:filter //I
+
+
+       :filter
+	      reset filter (set it to an empty string) and show all files.
+
+       :filter!
+	      same as :invert.
+
+       :filter?
+	      show information on local, name and auto filters.
+
+						:find
+
+       :[range]fin[d] pattern
+	      display results of find command in  the  menu.   Searches	 among
+	      selected	files if any.  Accepts macros.	By default the command
+	      relies on the external "find" utility, which can	be  customized
+	      by altering value of the 'findprg' option.
+
+       :[range]fin[d] -opt...
+	      same  as	:find  above,  but  user  defines  all find arguments.
+	      Searches among selected files if any.
+
+       :[range]fin[d] path -opt...
+	      same as :find  above,  but  user	defines	 all  find  arguments.
+	      Ignores selection and range.
+
+       :[range]fin[d]
+	      repeat last :find command.
+
+						:finish
+
+       :fini[sh]
+	      stop  sourcing a script. Can only be used in a vifm script file.
+	      This is a quick way to skip the rest of the file.
+
+						:goto
+
+       :go[to]
+	      change directory if necessary and put specified path  under  the
+	      cursor.	The path should be existing non-root path.  Macros and
+	      environment variables are expanded.
+
+						:grep
+
+       :[range]gr[ep][!] pattern
+	      will show results of grep command	 in  the  menu.	  Add  "!"  to
+	      request  inversion  of  search (look for lines that do not match
+	      pattern).	 Searches among selected files if  any	and  no	 range
+	      given.  Ignores binary files by default.	By default the command
+	      relies on the external "grep" utility, which can	be  customized
+	      by altering value of the 'grepprg' option.
+
+       :[range]gr[ep][!] -opt...
+	      same  as :grep above, but user defines all grep arguments, which
+	      are not escaped.	Searches among selected files if any.
+
+       :[range]gr[ep][!]
+	      repeats last :grep command.  "!" of this command inverts "!"  in
+	      repeated command.
+
+						:help
+
+       :h[elp]
+	      show the help file.
+
+       :h[elp] argument
+	      is the same as using ':h argument' in vim.  Use vifm-<something>
+	      to get help on vifm (tab completion works).  This	 form  of  the
+	      command doesn't work when 'vimhelp' option is off.
+
+						:highlight
+
+       :hi[ghlight]
+	      display  information  about  all	highlight groups active at the
+	      moment.
+
+       :hi[ghlight] clear
+	      reset all highlighting to builtin defaults and removed all file-
+	      name-specific rules.
+
+       :hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )
+	      removes specified rule.
+
+       :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/ )
+	      display  information  on given highlight group or file name pat-
+	      tern of color scheme used in the active view.
+
+       :hi[ghlight]  (	group-name  |	{pat1,pat2,...}	  |   /regexp/[iI]   )
+       cterm=style | ctermfg=color | ctermbg=color
+	      set   style  (cterm),  foreground	 (ctermfg)  or/and  background
+	      (ctermbg) parameters of highlight group or file name pattern for
+	      color scheme used in the active view.
+
+       All style values as well as color names are case insensitive.
+
+       Available style values (some of them can be combined):
+	- bold
+	- underline
+	- reverse or inverse
+	- standout
+	- italic (on unsupported systems becomes reverse)
+	- none
+
+       Available group-name values:
+	- Win - color of all windows (views, dialogs, menus) and default color
+       for their content (e.g. regular files in views)
+	- AuxWin - color of auxiliary areas of windows
+	- Border - color of vertical parts of the border
+	- TabLine - tab line color
+	- TabLineSel - color of the tip of selected tab
+	- TopLineSel - top line color of the current pane
+	- TopLine - top line color of the other pane
+	- CmdLine - the command line/status bar color
+	- ErrorMsg - color of error messages in the status bar
+	- StatusLine - color of the line above the status bar
+	- JobLine - color of job line that appears above the status line
+	- WildMenu - color of the wild menu items
+	- SuggestBox - color of key suggestion box
+	- CurrLine - line at cursor position in active view
+	- OtherLine - line at cursor position in inactive view
+	- Selected - color of selected files
+	- Directory - color of directories
+	- Link - color of symbolic links in the views
+	- BrokenLink - color of broken symbolic links
+	- Socket - color of sockets
+	- Device - color of block and character devices
+	- Executable - color of executable files
+	- Fifo - color of fifo pipes
+	- CmpMismatch - color of mismatched files in  side-by-side  comparison
+       by path
+	- User1..User9 - 9 colors which can be used via %* 'statusline' macro
+
+       Available colors:
+	- -1 or default or none - default or transparent
+	- black	  and lightblack
+	- red	  and lightred
+	- green	  and lightgreen
+	- yellow  and lightyellow
+	- blue	  and lightblue
+	- magenta and lightmagenta
+	- cyan	  and lightcyan
+	- white	  and lightwhite
+	- 0-255 - corresponding colors from 256-color palette
+
+       Light  versions	of  colors are regular colors with bold attribute set.
+       So order of arguments of :highlight command is important and it's  bet-
+       ter  to	put  "cterm" in front of others to prevent it from overwriting
+       attributes set by "ctermfg" or "ctermbg" arguments.
+
+       For convenience of color scheme authors xterm-like names for 256	 color
+       palette	  is	also   supported.    The   mapping   is	  taken	  from
+       http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim	Dupli-
+       cated  entries were altered by adding an underscore followed by numeri-
+       cal suffix.
+
+	 0 Black		  86 Aquamarine1	   172 Orange3
+	 1 Red			  87 DarkSlateGray2	   173 LightSalmon3_2
+	 2 Green		  88 DarkRed_2		   174 LightPink3
+	 3 Yellow		  89 DeepPink4_2	   175 Pink3
+	 4 Blue			  90 DarkMagenta	   176 Plum3
+	 5 Magenta		  91 DarkMagenta_2	   177 Violet
+	 6 Cyan			  92 DarkViolet		   178 Gold3_2
+	 7 White		  93 Purple		   179 LightGoldenrod3
+	 8 LightBlack		  94 Orange4_2		   180 Tan
+	 9 LightRed		  95 LightPink4		   181 MistyRose3
+	10 LightGreen		  96 Plum4		   182 Thistle3
+	11 LightYellow		  97 MediumPurple3	   183 Plum2
+	12 LightBlue		  98 MediumPurple3_2	   184 Yellow3_2
+	13 LightMagenta		  99 SlateBlue1		   185 Khaki3
+	14 LightCyan		 100 Yellow4		   186 LightGoldenrod2
+	15 LightWhite		 101 Wheat4		   187 LightYellow3
+	16 Grey0		 102 Grey53		   188 Grey84
+	17 NavyBlue		 103 LightSlateGrey	   189 LightSteelBlue1
+	18 DarkBlue		 104 MediumPurple	   190 Yellow2
+	19 Blue3		 105 LightSlateBlue	   191 DarkOliveGreen1
+	20 Blue3_2		  106  Yellow4_2	      192  DarkOliveG-
+       reen1_2
+	21 Blue1		 107 DarkOliveGreen3	   193 DarkSeaGreen1_2
+	22 DarkGreen		 108 DarkSeaGreen	   194 Honeydew2
+	23 DeepSkyBlue4		 109 LightSkyBlue3	   195 LightCyan1
+	24 DeepSkyBlue4_2	 110 LightSkyBlue3_2	   196 Red1
+	25 DeepSkyBlue4_3	 111 SkyBlue2		   197 DeepPink2
+	26 DodgerBlue3		 112 Chartreuse2_2	   198 DeepPink1
+	27 DodgerBlue2		 113 DarkOliveGreen3_2	   199 DeepPink1_2
+	28 Green4		 114 PaleGreen3_2	   200 Magenta2_2
+	29 SpringGreen4		 115 DarkSeaGreen3	   201 Magenta1
+	30 Turquoise4		 116 DarkSlateGray3	   202 OrangeRed1
+	31 DeepSkyBlue3		 117 SkyBlue1		   203 IndianRed1
+	32 DeepSkyBlue3_2	 118 Chartreuse1	   204 IndianRed1_2
+	33 DodgerBlue1		 119 LightGreen_2	   205 HotPink
+	34 Green3		 120 LightGreen_3	   206 HotPink_2
+	35 SpringGreen3		 121 PaleGreen1		   207 MediumOrchid1_2
+	36 DarkCyan		 122 Aquamarine1_2	   208 DarkOrange
+	37 LightSeaGreen	 123 DarkSlateGray1	   209 Salmon1
+	38 DeepSkyBlue2		 124 Red3		   210 LightCoral
+	39 DeepSkyBlue1		 125 DeepPink4_3	   211 PaleVioletRed1
+	40 Green3_2		 126 MediumVioletRed	   212 Orchid2
+	41 SpringGreen3_2	 127 Magenta3		   213 Orchid1
+	42 SpringGreen2		 128 DarkViolet_2	   214 Orange1
+	43 Cyan3		 129 Purple_2		   215 SandyBrown
+	44 DarkTurquoise	 130 DarkOrange3	   216 LightSalmon1
+	45 Turquoise2		 131 IndianRed		   217 LightPink1
+	46 Green1		 132 HotPink3		   218 Pink1
+	47 SpringGreen2_2	 133 MediumOrchid3	   219 Plum1
+	48 SpringGreen1		 134 MediumOrchid	   220 Gold1
+	49  MediumSpringGreen	   135	MediumPurple2	      221 LightGolden-
+       rod2_2
+	50 Cyan2		 136  DarkGoldenrod	     222  LightGolden-
+       rod2_3
+	51 Cyan1		 137 LightSalmon3	   223 NavajoWhite1
+	52 DarkRed		 138 RosyBrown		   224 MistyRose1
+	53 DeepPink4		 139 Grey63		   225 Thistle1
+	54 Purple4		 140 MediumPurple2_2	   226 Yellow1
+	55 Purple4_2		 141 MediumPurple1	   227 LightGoldenrod1
+	56 Purple3		 142 Gold3		   228 Khaki1
+	57 BlueViolet		 143 DarkKhaki		   229 Wheat1
+	58 Orange4		 144 NavajoWhite3	   230 Cornsilk1
+	59 Grey37		 145 Grey69		   231 Grey100
+	60 MediumPurple4	 146 LightSteelBlue3	   232 Grey3
+	61 SlateBlue3		 147 LightSteelBlue	   233 Grey7
+	62 SlateBlue3_2		 148 Yellow3		   234 Grey11
+	63 RoyalBlue1		 149 DarkOliveGreen3_3	   235 Grey15
+	64 Chartreuse4		 150 DarkSeaGreen3_2	   236 Grey19
+	65 DarkSeaGreen4	 151 DarkSeaGreen2	   237 Grey23
+	66 PaleTurquoise4	 152 LightCyan3		   238 Grey27
+	67 SteelBlue		 153 LightSkyBlue1	   239 Grey30
+	68 SteelBlue3		 154 GreenYellow	   240 Grey35
+	69 CornflowerBlue	 155 DarkOliveGreen2	   241 Grey39
+	70 Chartreuse3		 156 PaleGreen1_2	   242 Grey42
+	71 DarkSeaGreen4_2	 157 DarkSeaGreen2_2	   243 Grey46
+	72 CadetBlue		 158 DarkSeaGreen1	   244 Grey50
+	73 CadetBlue_2		 159 PaleTurquoise1	   245 Grey54
+	74 SkyBlue3		 160 Red3_2		   246 Grey58
+	75 SteelBlue1		 161 DeepPink3		   247 Grey62
+	76 Chartreuse3_2	 162 DeepPink3_2	   248 Grey66
+	77 PaleGreen3		 163 Magenta3_2		   249 Grey70
+	78 SeaGreen3		 164 Magenta3_3		   250 Grey74
+	79 Aquamarine3		 165 Magenta2		   251 Grey78
+	80 MediumTurquoise	 166 DarkOrange3_2	   252 Grey82
+	81 SteelBlue1_2		 167 IndianRed_2	   253 Grey85
+	82 Chartreuse2		 168 HotPink3_2		   254 Grey89
+	83 SeaGreen2		 169 HotPink2		   255 Grey93
+	84 SeaGreen1		 170 Orchid
+	85 SeaGreen1_2		 171 MediumOrchid1
+
+       There  are  two	colors	(foreground  and background) and only one bold
+       attribute.   Thus  single  bold	attribute  affects  both  colors  when
+       "reverse"  attribute  is used in vifm run inside terminal emulator.  At
+       the same time linux native console can handle  boldness	of  foreground
+       and  background colors independently, but for consistency with terminal
+       emulators this is available only implicitly by using light versions  of
+       colors.	This behaviour might be changed in the future.
+
+       Although	 vifm  supports 256 colors in a sense they are supported by UI
+       drawing library, whether you will be able to use	 all  of  them	highly
+       depends	on your terminal.  To set up terminal properly, make sure that
+       $TERM in the environment you run vifm is set to name of 256-color  ter-
+       minal   (on   *nixes  it	 can  also  be	set  via  X  resources),  e.g.
+       xterm-256color.	One can find list of available terminal names by list-
+       ing  /usr/lib/terminfo/.	  Number  of colors supported by terminal with
+       current settings can be checked via "tput colors" command.
+
+       Here is the hierarchy of highlight groups, which you need to  know  for
+       using transparency:
+	 JobLine
+	 SuggestBox
+	 StatusLine
+	   WildMenu
+	   User1..User9
+	 Border
+	 CmdLine
+	   ErrorMsg
+	 Win
+	   AuxWin
+	     File name specific highlights
+	       Directory
+	       Link
+	       BrokenLink
+	       Socket
+	       Device
+	       Fifo
+	       Executable
+		 Selected
+		   CurrLine
+		   OtherLine
+	 TopLine
+	   TopLineSel
+	 TabLine
+	   TabLineSel
+
+       "none"  means  default terminal color for highlight groups at the first
+       level of the hierarchy and transparency for all others.
+
+       Here file name specific highlights mean those configured via globs ({})
+       or  regular  expressions (//).  At most one of them is applied per file
+       entry, namely the first that matches file name, hence order  of	:high-
+       light commands might be important in certain cases.
+
+						:history
+
+       :his[tory]
+	      creates a pop-up menu of directories visited.
+
+       :his[tory] x
+	      x can be:
+	      d[ir]	or . show directory history.
+	      c[md]	or : show command line history.
+	      s[earch]	or / show search history and search forward on l key.
+	      f[search] or / show search history and search forward on l key.
+	      b[search] or ? show search history and search backward on l key.
+	      i[nput]	or @ show prompt history (e.g. on one file renaming).
+	      fi[lter]	 or  = show filter history (see description of the "="
+	      normal mode command).
+
+						:histnext
+
+       :histnext
+	      same as <c-i>.  The main use case for this command  is  to  work
+	      around  the  common pain point of <tab> and <c-i> being the same
+	      ASCII character: one could alter the terminal emulator  settings
+	      to  emit,	 for example, the `F1` keycode when Ctrl-I is pressed,
+	      then `:noremap <f1> :histnext<cr>` in vifm, add "t" flag to  the
+	      'cpoptions',  and	 thus  have  both  <c-i>  and <tab> working as
+	      expected.
+
+						:histprev
+
+       :histprev
+	      same as <c-o>.
+
+						:if
+
+       :if {expr1}
+	      starts conditional block.	  Commands  are	 executed  until  next
+	      matching	:elseif,  :else or :endif command if {expr1} evaluates
+	      to non-zero, otherwise they are ignored.	See also help on :else
+	      and :endif commands.
+
+	      Example:
+
+		if $TERM == 'screen.linux'
+		    highlight CurrLine ctermfg=lightwhite ctermbg=lightblack
+		elseif $TERM == 'tmux'
+		    highlight CurrLine cterm=reverse ctermfg=black ctermbg=white
+		else
+		    highlight CurrLine cterm=bold,reverse ctermfg=black ctermbg=white
+		endif
+
+						:invert
+
+       :invert [f]
+	      invert file name filter.
+
+       :invert? [f]
+	      show current filter state.
+
+       :invert s
+	      invert selection.
+
+       :invert o
+	      invert sorting order of the primary sorting key.
+
+       :invert? o
+	      show sorting order of the primary sorting key.
+
+						:jobs
+
+       :jobs  shows menu of current backgrounded processes.
+
+						:let
+
+       :let $ENV_VAR = <expr>
+	      sets  environment	 variable.  Warning: setting environment vari-
+	      able to an empty string on Windows removes it.
+
+       :let $ENV_VAR .= <expr>
+	      append value to environment variable.
+
+       :let &[l:|g:]opt = <expr>
+	      sets option value.
+
+       :let &[l:|g:]opt .= <expr>
+	      append value to string option.
+
+       :let &[l:|g:]opt += <expr>
+	      increasing option value, adding sub-values.
+
+       :let &[l:|g:]opt -= <expr>
+	      decreasing option value, removing sub-values.
+
+       Where <expr> could be a single-quoted string, double-quoted string,  an
+       environment  variable,  function call or a concatanation of any of them
+       in any order using the '.' operator.  Any whitespace is ignored.
+
+						:locate
+
+       :locate filename
+	      use "locate" command to create a menu of filenames.  Selecting a
+	      file  from the menu will reload the current file list in vifm to
+	      show the selected file.  By default the command  relies  on  the
+	      external	"locate"  utility  (it's  assumed that its database is
+	      already built), which can be customized by altering value of the
+	      'locateprg' option.
+
+       :locate
+	      repeats last :locate command.
+
+						:ls
+
+       :ls    lists windows of active terminal multiplexer (only when terminal
+	      multiplexer is used).  This is achieved by issuing  proper  com-
+	      mand  for active terminal multiplexer, thus the list is not han-
+	      dled by vifm.
+
+						:lstrash
+
+       :lstrash
+	      displays a menu with list of files in trash.   Each  element  of
+	      the  list	 is original path of a deleted file, thus the list can
+	      contain duplicates.
+
+						:mark
+
+       :[range]ma[rk][?] x [/full/path] [filename]
+	      Set mark x (a-zA-Z0-9) at /full/path and filename.   By  default
+	      current  directory  is being used.  If no filename was given and
+	      /full/path is current directory then last	 file  in  [range]  is
+	      used.  Using of macros is allowed.  Question mark will stop com-
+	      mand from overwriting existing marks.
+
+						:marks
+
+       :marks create a pop-up menu of marks.
+
+       :marks list ...
+	      display the contents of the marks that are mentioned in list.
+
+						:media
+
+       :media only for *nix
+	      display media management menu.  See also 'mediaprg' option.
+
+						:messages
+
+       :mes[sages]
+	      shows previously given messages (up to 50).
+
+						:mkdir
+
+       :[line]mkdir[!] dir ...
+	      create directories at specified paths.  The [line] can  be  used
+	      to  pick node in a tree-view.  "!" means make parent directories
+	      as needed.  Macros are expanded.
+
+						:move
+
+       :[range]m[ove][!?][ &]
+	      move files to directory of other view.   With  "?"  prompts  for
+	      destination file names in an editor.  "!" forces overwrite.
+
+       :[range]m[ove][!] path[ &]
+	      move  files  to  directory  specified with the path (absolute or
+	      relative to directory of other view).  "!" forces overwrite.
+
+       :[range]m[ove][!] name1 name2...[ &]
+	      move files to directory of other view giving each	 next  file  a
+	      corresponding  name  from	 the  argument list.  "!" forces over-
+	      write.
+
+						:nohlsearch
+
+       :noh[lsearch]
+	      clear selection in current pane.
+
+						:normal
+
+       :norm[al][!] commands
+	      execute normal mode commands.  If "!" is used, user defined map-
+	      pings  are  ignored.   Unfinished	 last command is aborted as if
+	      <esc> or <c-c> was typed.	 A ":" should be  completed  as	 well.
+	      Commands	can't  start  with  a space, so put a count of 1 (one)
+	      before it.
+
+						:only
+
+       :on[ly]
+	      switch to a one window view.
+
+						:popd
+
+       :popd  remove pane directories from stack.
+
+						:pushd
+
+       :pushd[!] /curr/dir [/other/dir]
+	      add pane directories to stack and	 process  arguments  like  :cd
+	      command.
+
+       :pushd exchange the top two items of the directory stack.
+
+						:put
+
+       :[line]pu[t][!] [reg] [ &]
+	      puts  files  from specified register (" by default) into current
+	      directory.  The [line] can be used to pick node in a  tree-view.
+	      "!"  moves  files	 "!"  moves files from their original location
+	      instead of copying them.	During this operation no  confirmation
+	      dialogs will be shown, all checks are performed beforehand.
+
+						:pwd
+
+       :pw[d] show the present working directory.
+
+						:qall
+
+       :qa[ll][!]
+	      exit  vifm (add ! to skip saving changes and checking for active
+	      backgrounded commands).
+
+						:quit
+
+       :q[uit][!]
+	      if there is more than one tab, close the current one,  otherwise
+	      exit  vifm (add ! to skip saving changes and checking for active
+	      backgrounded commands).
+
+						:redraw
+
+       :redr[aw]
+	      redraw the screen immediately.
+
+						:registers
+
+       :reg[isters]
+	      display menu with registers content.
+
+       :reg[isters] list ...
+	      display the contents of the numbered and	named  registers  that
+	      are  mentioned in list (for example "az to display "", "a and "z
+	      content).
+
+						:regular
+
+       :regular
+
+       switch to regular view leaving custom view.
+						       :rename
+
+       :[range]rename[!]
+	      rename files using vi to edit  names.  !	means  go  recursively
+	      through directories.
+
+       :[range]rename name1 name2...
+	      rename each of selected files to a corresponding name.
+
+						:restart
+
+       :restart
+	      free  a  lot  of	things	(histories,  commands,	etc.),	reread
+	      vifminfo and vifmrc files and run startup commands passed in the
+	      argument list, thus losing all unsaved changes (e.g. recent his-
+	      tory or keys mapped in current session).
+
+						:restore
+
+       :[range]restore
+	      restore file from trash directory, doesn't work outside  one  of
+	      trash directories.  See "Trash directory" section below.
+
+						:rlink
+
+       :[range]rlink[!?]
+	      create  relative	symbolic  links to files in directory of other
+	      view.  With "?" prompts for destination file names in an editor.
+	      "!" forces overwrite.
+
+       :[range]rlink[!] path
+	      create  relative	symbolic links of files in directory specified
+	      with the path (absolute or relative to directory of other view).
+	      "!" forces overwrite.
+
+       :[range]rlink[!] name1 name2...
+	      create  relative	symbolic  links of files in directory of other
+	      view giving each next link a corresponding name from  the	 argu-
+	      ment list.  "!" forces overwrite.
+
+						:screen
+
+       :screen
+	      toggle whether to use the terminal multiplexer or not.
+	      A	 terminal  multiplexer uses pseudo terminals to allow multiple
+	      windows to be used in the console or in a single xterm.	Start-
+	      ing  vifm	 from  terminal	 multiplexer  with appropriate support
+	      turned on will cause vifm to open	 a  new	 terminal  multiplexer
+	      window for each new file edited or program launched from vifm.
+	      This  requires  screen  version 3.9.9 or newer for the screen -X
+	      argument or tmux (1.8 version or newer is recommended).
+
+       :screen!
+	      enable integration with terminal multiplexers.
+
+       :screen?
+	      display  whether	integration  with  terminal  multiplexers   is
+	      enabled.
+
+       Note:  the  command  is called screen for historical reasons (when tmux
+       wasn't yet supported) and might be changed in future releases,  or  get
+       an alias.
+
+						:select
+
+       :[range]select
+	      select  files  in	 the  given range (current file if no range is
+	      given).
+
+       :select {pattern}
+	      select files that match specified pattern.   Possible  {pattern}
+	      forms are described in "Patterns" section below.	Trailing slash
+	      for directories is taken into account, so `:select! */ |	invert
+	      s` selects only files.
+
+       :select //[iI]
+	      same as item above, but reuses last search pattern.
+
+       :select !{external command}
+	      select  files from the list supplied by external command.	 Files
+	      are matched by full paths, relative paths are converted to abso-
+	      lute ones beforehand.
+
+       :[range]select! [{pattern}]
+	      same  as above, but resets previously selected items before pro-
+	      ceeding.
+
+						:set
+
+       :se[t] display all options that differ from their default value.
+
+       :se[t] all
+	      display all options.
+
+       :se[t] opt1=val1 opt2='val2' opt3="val3" ...
+	      sets given options.  For local options both values are set.
+	      You can use following syntax:
+	       - for all options - option, option? and option&
+	       - for boolean options - nooption, invoption and option!
+	       - for integer options - option=x, option+=x and option-=x
+	       - for string options - option=x and option+=x
+	       - for string list options - option=x, option+=x and option-=x
+	       - for enumeration options - option=x, option+=x and option-=x
+	       - for set options - option=x, option+=x and option-=x
+	       - for charset options  -	 option=x,  option+=x,	option-=x  and
+	      option^=x
+
+	      the meaning:
+	       - option - turn option on (for boolean) or print its value (for
+	      all others)
+	       - nooption - turn option off
+	       - invoption - invert option state
+	       - option! - invert option state
+	       - option? - print option value
+	       - option& - reset option to its default value
+	       - option=x or option:x - set option to x
+	       - option+=x - add/append x to option
+	       - option-=x - remove (or subtract) x from option
+	       - option^=x - toggle x presence among values of the option
+
+	      Option name can be prepended  and	 appended  by  any  number  of
+	      whitespace characters.
+
+						:setglobal
+
+       :setg[lobal]
+	      display all global options that differ from their default value.
+
+       :setg[lobal] all
+	      display all global options.
+
+       :setg[lobal] opt1=val1 opt2='val2' opt3="val3" ...
+	      same  as	:set, but changes/prints only global options or global
+	      values of local options.	Changes to the	latter	might  be  not
+	      visible until directory is changed.
+
+						:setlocal
+
+       :setl[ocal]
+	      display all local options that differ from their default value.
+
+       :setl[ocal] all
+	      display all local options.
+
+       :setl[ocal] opt1=val1 opt2='val2' opt3="val3" ...
+	      same  as	:set,  but  changes/prints  only local values of local
+	      options.
+
+						:shell
+
+       :sh[ell][!]
+	      start a shell in current	directory.   "!"  suppresses  spawning
+	      dedicated	 window	 of terminal multiplexer for a shell.  To make
+	      vifm adaptive to environment it uses  $SHELL  if	it's  defined,
+	      otherwise 'shell' value is used.
+
+
+						:siblnext
+
+       :[count]siblnext[!]
+
+	      change  directory to [count]th next sibling directory after cur-
+	      rent path using value of global sort  option  of	current	 pane.
+	      "!" enables wrapping.
+
+	      For  example,  say, you're at /boot and root listing starts like
+	      this:
+
+		  bin/
+		  boot/
+		  dev/
+		  ...
+
+	      Issuing :siblnext will navigate to /dev.
+
+
+						:siblprev
+
+       :[count]siblprev[!]
+	      same as :siblnext, but in the opposite direction.
+
+						:sort
+
+       :sor[t]
+	      display dialog with different  sorting  methods,	when  one  can
+	      select primary sorting key.  When 'viewcolumns' options is empty
+	      and 'lsview' is off, changing  primary  sorting  key  will  also
+	      affect  view  look  (in particular the second column of the view
+	      will be changed).
+
+						:source
+
+       :so[urce] file
+	      read command-line commands from the file.
+
+						:split
+
+       :sp[lit]
+	      switch to a two window horizontal view.
+
+       :sp[lit]!
+	      toggle horizontal window splitting.
+
+       :sp[lit] path
+	      splits the window horizontally to show  both  file  directories.
+	      Also changes other pane to path (absolute or relative to current
+	      directory of active pane).
+
+						:substitute
+
+       :[range]s[ubstitute]/pattern/string/[flags]
+	      for each file in range replace a match of pattern with string.
+
+       String can contain \0...\9 to link to capture groups (\0 -  all	match,
+       \1 - first group, etc.).
+
+       Pattern is stored in search history.
+
+       Available flags:
+
+	 - i  -	 ignore case (the 'ignorecase' and 'smartcase' options are not
+	   used)
+
+	 - I - don't ignore case (the 'ignorecase' and 'smartcase' options are
+	   not used)
+
+	 - g - substitute all matches in each file name (each g toggles this)
+
+       :[range]s[ubstitute]/pattern
+	      substitute pattern with an empty string.
+
+       :[range]s[ubstitute]//string/[flags]
+	      use last pattern from search history.
+
+       :[range]s[ubstitute]
+	      repeat previous substitution command.
+
+						:sync
+
+       :sync [relative path]
+	      change  the  other pane to the current pane directory or to some
+	      path  relative  to  the  current	directory.   Using  macros  is
+	      allowed.
+
+       :sync! change the other pane to the current pane directory and synchro-
+	      nize cursor position.  If current pane displays custom  list  of
+	      files,  position	before	entering it is used (current one might
+	      not make any sense).
+
+
+       :sync! [location | cursorpos | localopts | filters | filelist | tree  |
+       all]...
+	      change  enumerated  properties of the other pane to match corre-
+	      sponding properties of the current  pane.	  Arguments  have  the
+	      following meanings:
+
+		- location - current directory of the pane;
+
+		- cursorpos  -	cursor	position  (doesn't  make sense without
+		  "location");
+
+		- localopts - all local options;
+
+		- filters - all filters;
+
+		- filelist - list of files for	custom	view  (implies	"loca-
+		  tion");
+
+		- tree - tree structure for tree view (implies "location");
+
+		- all - all of the above.
+
+						:tabclose
+
+       :tabc[lose]
+	      close  current  tab,  unless  it's  the only one open at current
+	      scope.
+
+						:tabmove
+
+       :tabm[ove] [N]
+	      without the argument or with `$` as the  argument,  current  tab
+	      becomes  the  last tab.  With the argument, current tab is moved
+	      after the tab with the specified number.	Argument of `0`	 moves
+	      current tab to the first position.
+
+						:tabname
+
+       :tabname [name]
+	      set,  update or reset (when no argument is provided) name of the
+	      current tab.
+
+						:tabnew
+
+       :tabnew [path]
+	      create new tab.  Accepts optional path for the new tab.	Macros
+	      and environment variables are expanded.
+
+						:tabnext
+
+       :tabn[ext]
+	      switch to the next tab (wrapping around).
+
+       :tabn[ext] {n}
+	      go to the tab number {n}.	 Tab numeration starts with 1.
+
+						:tabprevious
+
+       :tabp[revious]
+	      switch to the previous tab (wrapping around).
+
+       :tabp[revious] {n}
+	      go  to  the {n}-th previous tab.	Note that :tabnext handles its
+	      argument differently.
+
+						:touch
+
+       :[line]touch file...
+	      create files at specified paths.	 Aborts	 on  errors.   Doesn't
+	      update  time  of existing files.	The [line] can be used to pick
+	      node in a tree-view.  Macros are expanded.
+
+						:tr
+
+       :[range]tr/pattern/string/
+	      for each file in range transliterate the characters which appear
+	      in  pattern  to  the  corresponding  character  in string.  When
+	      string is shorter than pattern, it's padded with its last	 char-
+	      acter.
+
+						:trashes
+
+       :trashes
+	      lists all valid trash directories in a menu.  Only non-empty and
+	      writable trash directories are shown.  This is exactly the  list
+	      of directories that are cleared when :empty command is executed.
+
+       :trashes?
+	      same  as	:trashes,  but also displays size of each trash direc-
+	      tory.
+
+						:tree
+
+       :tree  turn pane into tree view with current  directory	as  its	 root.
+	      The  tree	 view  is  implemented on top of a custom view, but is
+	      automatically kept in sync with file system state and  considers
+	      all  the	filters.   Thus	 the structure corresponds to what one
+	      would see on visiting the directories manually.	As  a  special
+	      case  for	 trees	built  out of custom view file-system tracking
+	      isn't performed.
+
+	      To leave tree view go up from its root or use gh at any level of
+	      the  tree.   Any command that changes directory will also do, in
+	      particular, `:cd ..`.
+
+	      Tree structure is incompatible with alternative representations,
+	      so values of 'lsview' and 'millerview' options are ignored.
+
+       :tree! toggle current view in and out of tree mode.
+
+						:undolist
+
+       :undol[ist]
+	      display list of latest changes.  Use "!" to see actual commands.
+
+						:unlet
+
+       :unl[et][!] $ENV_VAR1 $ENV_VAR2 ...
+	      remove  environment variables. Add ! to omit displaying of warn-
+	      ings about nonexistent variables.
+
+						:unselect
+
+       :[range]unselect
+	      unselect files in the given range (current file if no  range  is
+	      given).
+
+       :unselect {pattern}
+	      unselect files that match specified pattern.  Possible {pattern}
+	      forms are described in "Patterns" section below.	Trailing slash
+	      for  directories	is taken into account, so `:unselect */` unse-
+	      lects directories.
+
+       :unselect !{external command}
+	      unselect files from  the	list  supplied	by  external  command.
+	      Files are matched by full paths, relative paths are converted to
+	      absolute ones beforehand.
+
+       :unselect //[iI]
+	      same as item above, but reuses last search pattern.
+
+						:version
+
+       :ve[rsion]
+	      show menu with version information.
+
+						:vifm
+
+       :vifm  same as :version.
+
+						:view
+
+       :vie[w]
+	      toggle on and off the quick file	view.	See  also  'quickview'
+	      option.
+
+       :vie[w]!
+	      turn on quick file view if it's off.
+
+						:volumes
+
+       :volumes
+	      only for MS-Windows
+	      display  menu  with volume list.	Hitting l (or Enter) key opens
+	      appropriate volume in the current pane.
+
+						:vsplit
+
+       :vs[plit]
+	      switch to a two window vertical view.
+
+       :vs[plit]!
+	      toggle window vertical splitting.
+
+       :vs[plit] path
+	      split the window vertically to show both file directories.   And
+	      changes  other  pane  to	path  (absolute or relative to current
+	      directory of active pane).
+
+						:wincmd
+
+       :[count]winc[md] {arg}
+	      same as running Ctrl-W [count] {arg}.
+
+						:windo
+
+       :windo [command...]
+	      execute command for each pane (same as :winrun % command).
+
+						:winrun
+
+       :winrun type [command...]
+	      execute command for pane(s), which is determined by  type	 argu-
+	      ment:
+		- ^ - top-left pane
+		- $ - bottom-right pane
+		- % - all panes
+		- . - current pane
+		- , - other pane
+
+						:write
+
+       :w[rite]
+	      write vifminfo file.
+
+						:wq
+
+       :wq[!] same  as	:quit,	but ! only disables check of backgrounded com-
+	      mands.					       :wqall
+
+       :wqa[ll][!]
+	      same as :qall, but ! only disables check	of  backgrounded  com-
+	      mands.
+
+						:xall
+
+       :xa[ll][!]
+	      same as :qall.
+
+						:xit
+
+       :x[it][!]
+	      same as :quit.
+
+						:yank
+
+       :[range]y[ank] [reg] [count]
+	      will yank files to the reg register.
+
+						:map lhs rhs
+
+       :map lhs rhs
+	      map lhs key sequence to rhs in normal and visual modes.
+
+       :map! lhs rhs
+	      map lhs key sequence to rhs in command line mode.
+
+
+					       :cmap  :dmap  :mmap :nmap :qmap
+       :vmap
+
+       :cm[ap] lhs rhs
+	      map lhs to rhs in command line mode.
+
+       :dm[ap] lhs rhs
+	      map lhs to rhs in dialog modes.
+
+       :mm[ap] lhs rhs
+	      map lhs to rhs in menu mode.
+
+       :nm[ap] lhs rhs
+	      map lhs to rhs in normal mode.
+
+       :qm[ap] lhs rhs
+	      map lhs to rhs in view mode.
+
+       :vm[ap] lhs rhs
+	      map lhs to rhs in visual mode.
+
+
+						:*map
+
+       :cm[ap]
+	      list all maps in command line mode.
+
+       :dm[ap]
+	      list all maps in dialog modes.
+
+       :mm[ap]
+	      list all maps in menu mode.
+
+       :nm[ap]
+	      list all maps in normal mode.
+
+       :qm[ap]
+	      list all maps in view mode.
+
+       :vm[ap]
+	      list all maps in visual mode.
+
+						:*map beginning
+
+       :cm[ap] beginning
+	      list all maps in command line mode that start  with  the	begin-
+	      ning.
+
+       :dm[ap] beginning
+	      list all maps in dialog modes that start with the beginning.
+
+       :mm[ap] beginning
+	      list all maps in menu mode that start with the beginning.
+
+       :nm[ap] beginning
+	      list all maps in normal mode that start with the beginning.
+
+       :qm[ap] beginning
+	      list all maps in view mode that start with the beginning.
+
+       :vm[ap] beginning
+	      list all maps in visual mode that start with the beginning.
+
+						:noremap
+
+       :no[remap] lhs rhs
+	      map the key sequence lhs to rhs for normal and visual modes, but
+	      disallow mapping of rhs.
+
+       :no[remap]! lhs rhs
+	      map the key sequence lhs to rhs for command line mode, but  dis-
+	      allow mapping of rhs.
+
+			:cnoremap   :dnoremap  :mnoremap  :nnoremap  :qnoremap
+       :vnoremap
+
+       :cno[remap] lhs rhs
+	      map the key sequence lhs to rhs for command line mode, but  dis-
+	      allow mapping of rhs.
+
+       :dn[oremap] lhs rhs
+	      map  the	key sequence lhs to rhs for dialog modes, but disallow
+	      mapping of rhs.
+
+       :mn[oremap] lhs rhs
+	      map the key sequence lhs to rhs for menu mode, but disallow map-
+	      ping of rhs.
+
+       :nn[oremap] lhs rhs
+	      map  the	key  sequence lhs to rhs for normal mode, but disallow
+	      mapping of rhs.
+
+       :qn[oremap] lhs rhs
+	      map the key sequence lhs to rhs for view mode, but disallow map-
+	      ping of rhs.
+
+       :vn[oremap] lhs rhs
+	      map  the	key  sequence lhs to rhs for visual mode, but disallow
+	      mapping of rhs.
+
+						:unmap
+
+       :unm[ap] lhs
+	      remove the mapping of lhs from normal and visual modes.
+
+       :unm[ap]! lhs
+	      remove the mapping of lhs from command line mode.
+
+				   :cunmap  :dunmap  :munmap  :nunmap  :qunmap
+       :vunmap
+
+       :cu[nmap] lhs
+	      remove the mapping of lhs from command line mode.
+
+       :du[nmap] lhs
+	      remove the mapping of lhs from dialog modes.
+
+       :mu[nmap] lhs
+	      remove the mapping of lhs from menu mode.
+
+       :nun[map] lhs
+	      remove the mapping of lhs from normal mode.
+
+       :qun[map] lhs
+	      remove the mapping of lhs from view mode.
+
+       :vu[nmap] lhs
+	      remove the mapping of lhs from visual mode.
+
+Ranges
+       The ranges implemented include:
+	 2,3 - from second to third file in the list (including it)
+	 % - the entire directory.
+	 . - the current position in the filelist.
+	 $ - the end of the filelist.
+	 't - the mark position t.
+
+       Examples:
+
+	 :%delete
+
+       would delete all files in the directory.
+
+	 :2,4delete
+
+       would delete the files in the list positions 2 through 4.
+
+	 :.,$delete
+
+       would  delete  the  files  from	the current position to the end of the
+       filelist.
+
+	 :3delete4
+
+       would delete the files in the list positions 3, 4, 5, 6.
+
+       If a backward range is given :4,2delete - an query message is given and
+       user can chose what to do next.
+
+       The builtin commands that accept a range are :d[elete] and :y[ank].
+
+Command macros
+       The command macros may be used in user commands.
+
+       %a     User  arguments.	 When  user arguments contain macros, they are
+	      expanded before preforming substitution of %a.
+
+       %c %"c The current file under the cursor.
+
+       %C %"C The current file under the cursor in the other directory.
+
+       %f %"f All of the selected files.
+
+       %F %"F All of the selected files in the other directory list.
+
+       %b %"b Same as %f %F.
+
+       %d %"d Full path to current directory.
+
+       %D %"D Full path to other file list directory.
+
+       %rx %"rx
+	      Full paths to files in the register {x}.	 In  case  of  invalid
+	      symbol in place of {x}, it's processed with the rest of the line
+	      and default register is used.
+
+       %m     Show command output in a menu.
+
+       %M     Same as %m, but l (or Enter) key is handled like for :locate and
+	      :find commands.
+
+       %u     Process  command output as list of paths and compose custom view
+	      out of it.
+
+       %U     Same as %u, but implies less list updates inside vifm, which  is
+	      absence of sorting at the moment.
+
+       %Iu    same  as	%u, but gives up terminal before running external com-
+	      mand.
+
+       %IU    same as %U, but gives up terminal before running	external  com-
+	      mand.
+
+       %S     Show command output in the status bar.
+
+       %q     redirect	command	 output	 to  quick view, which is activated if
+	      disabled.
+
+       %s     Execute command in split window of active	 terminal  multiplexer
+	      (ignored if not running inside one).
+
+       %n     Forbid using of terminal multiplexer to run the command.
+
+       %i     Completely ignore command output.
+
+
+       %pc    Marks end of the main command and beginning of the clear command
+	      for graphical preview, which is invoked on closing preview of  a
+	      file.
+
+       The following dimensions and coordinates are in characters:
+
+       %px    x coordinate of top-left corner of preview area.
+
+       %py    y coordinate of top-left corner of preview area.
+
+       %pw    width of preview area.
+
+       %ph    height of preview area.
+
+
+       Use %% if you need to put a percent sign in your command.
+
+       Note  that %m, %M, %s, %S, %i, %u and %U macros are mutually exclusive.
+       Only the last one of them on the command will take effect.
+
+       You can use file name modifiers after %c, %C, %f, %F,  %b,  %d  and  %D
+       macros.	Supported modifiers are:
+
+	 - :p		- full path
+
+	 - :u		  -   UNC   name   of	path   (e.g.   "\\server"   in
+	   "\\server\share"), Windows only.  Expands to current computer  name
+	   for not UNC paths.
+
+	 - :~		- relative to the home directory
+
+	 - :.		- relative to current directory
+
+	 - :h		- head of the file name
+
+	 - :t		- tail of the file name
+
+	 - :r		- root of the file name (without last extension)
+
+	 - :e		- extension of the file name (last one)
+
+	 - :s?pat?sub?	 -  substitute	the  first occurrence of pat with sub.
+	   You can use any character for '?', but it must not occur in pat  or
+	   sub.
+
+	 - :gs?pat?sub? - like :s, but substitutes all occurrences of pat with
+	   sub.
+
+       See ':h filename-modifiers' in Vim's  documentation  for	 the  detailed
+       description.
+
+       Using  %x means expand corresponding macro escaping all characters that
+       have special meaning.  And %"x means using of double quotes and	escape
+       only  backslash	and  double  quote characters, which is more useful on
+       Windows systems.
+
+       Position and quantity (if there is any) of %m, %M, %S or %s  macros  in
+       the command is unimportant.  All their occurrences are removed from the
+       resulting command.
+
+       %c and %f macros are expanded to file names only, when %C  and  %F  are
+       expanded to full paths.	%f and %F follow this in %b too.
+
+       :com move mv %f %D
+	      set  the	:move command to move all of the files selected in the
+	      current directory to the other directory.
+
+       The %a macro is replaced with any arguments given to an alias  command.
+       All arguments are considered optional.
+	      :com  lsl !!ls -l %a - set the lsl command to execute ls -l with
+	      or without an argument.
+
+       :lsl<Enter>
+	      will list the directory contents of the current directory.
+
+       :lsl filename<Enter>
+	      will list only the given filename.
+
+       The macros can also be used in directly executing commands.   ":!mv  %f
+       %D" would move the current directory selected files to the other direc-
+       tory.
+
+       Appending & to the end of a command causes it to	 be  executed  in  the
+       background.   Typically	you want to run two kinds of external commands
+       in the background:
+
+	 - GUI applications that doesn't fork thus block vifm (:!sxiv %f &);
+
+	 - console tools that do not work with terminal (:!mv %f %D &).
+
+       You don't want to run terminal commands, which require  terminal	 input
+       or output something in background because they will mess up vifm's TUI.
+       Anyway, if you did run such a command, you can use Ctrl-L key to update
+       vifm's TUI.
+
+       Rewriting  the example command with macros given above with background-
+       ing:
+
+       %m, %M, %s, %S, %u and %U macros cannot	be  combined  with  background
+       mark (" &") as it doesn't make much sense.
+
+Command backgrounding
+       Copy  and move operation can take a lot of time to proceed.  That's why
+       vifm supports backgrounding of this  two	 operations.   To  run	:copy,
+       :move  or :delete command in the background just add " &" at the end of
+       a command.
+
+       For each background operation a new thread is created.	Currently  job
+       cannot be stopped or paused.
+
+       You  can	 see  if  command  is  still running in the :jobs menu.	 Back-
+       grounded commands have progress instead	of  process  id	 at  the  line
+       beginning.
+
+       Background operations cannot be undone.
+
+Cancellation
+       Note that cancellation works somewhat different on Windows platform due
+       to different mechanism of break signal  propagation.   One  also	 might
+       need to use Ctrl-Break shortcut instead of Ctrl-C.
+
+       There are two types of operations that can be cancelled:
+
+	 - file system operations;
+
+	 - mounting  with  FUSE	 (but  not  unmounting as it can cause loss of
+	   data);
+
+	 - calls of external applications.
+
+       Note that vifm never terminates applications, it	 sends	SIGINT	signal
+       and lets the application quit normally.
+
+       When one of set of operations is cancelled (e.g. copying of 5th file of
+       10 files), further operations are cancelled too.	  In  this  case  undo
+       history will contain only actually performed operations.
+
+       Cancelled  operations are indicated by "(cancelled)" suffix appended to
+       information message on statusbar.
+
+       File system operations
+
+       Currently the following commands	 can  be  cancelled:  :alink,  :chmod,
+       :chown,	:clone,	 :copy,	 :delete,  :mkdir,  :move,  :restore,  :rlink,
+       :touch.	File putting (on p/P key) can be cancelled as well.  It's  not
+       hard to see that these are mainly long-running operations.
+
+       Cancelling  commands when they are repeated for undo/redo operations is
+       allowed for convenience, but is not recommended	as  further  undo/redo
+       operations  might  get  blocked	by side-effects of partially cancelled
+       group of operations.
+
+       These commands can't be cancelled: :empty, :rename, :substitute, :tr.
+
+       Mounting with FUSE
+
+       It's not considered to be an error, so only notification on the	status
+       bar is shown.
+
+       External application calls
+
+       Each  of	 this  operations  can	be  cancelled: :apropos, :find, :grep,
+       :locate.
+
+Patterns
+       :highlight, :filetype, :filextype, :fileviewer commands and  'classify'
+       option  support globs, regular expressions and mime types to match file
+       names or their paths.
+
+       There are six possible ways to write a single pattern:
+
+	 1. [!]{comma-separated-name-globs}
+
+	 2. [!]{{comma-separated-path-globs}}
+
+	 3. [!]/name-regular-expression/[iI]
+
+	 4. [!]//path-regular-expression//[iI]
+
+	 5. [!]<comma-separated-mime-type-globs>
+
+	 6. undecorated-pattern
+
+       Flags of regular expressions mean the following:
+	 - "i" makes filter case insensitive;
+	 - "I" makes filter case sensitive.  They  can	be  repeated  multiple
+       times,  but  the later one takes precedence (e.g.  "iiiI" is equivalent
+       to "I" and "IiIi" is the same as "i").
+
+       To combine several patterns (AND them), make sure you're using  one  of
+       the first five forms and write patterns one after another, like this:
+	 <text/plain>{*.vifm}
+       Mind that if you make a mistake the whole string will be treated as the
+       sixth form.
+
+       :filetype, :filextype and :fileviewer commands  accept  comma-separated
+       list of patterns instead of a single pattern, thus effectively handling
+       OR operation on them:
+	 <text/plain>{*.vifm},<application/pdf>{*.pdf}
+
+       Five first forms can include leading exclamation mark that negates pat-
+       tern matching.
+
+       The  last  form is implicitly refers to one of others.  :highlight does
+       not accept undecorated form, while :filetype, :filextype,  :fileviewer,
+       :select, :unselect and 'classify' treat it as list of name globs.
+
+       Regular	expression  patterns  are  case	 insensitive  by  default, see
+       description of commands, which might override default behaviour.
+
+       "Globs" section below provides short overview of globs and some	impor-
+       tant points that one needs to know about them.
+
+       Mime  type  matching is essentially globs matching applied to mime type
+       of a file instead of its name/path.  Note: mime types  aren't  detected
+       on Windows.
+
+Globs
+       Globs are always case insensitive as it makes sense in general case.
+
+       *, ?, [ and ] are treated as special symbols in the pattern.  E.g.
+
+	 :filetype * less %c
+
+       matches all files.  One can use character classes for escaping, so
+
+	 :filetype [*] less %c
+
+       matches	only  one file name, the one which contains only asterisk sym-
+       bol.
+
+       * means any number of any characters  (possibly	an  empty  substring),
+       with one exception: asterisk at the pattern beginning doesn't match dot
+       in the first position.  E.g.
+
+	 :fileviewer *.zip,*.jar zip -sf %c
+
+       associates using of zip program to preview all files with  zip  or  jar
+       extensions as listing of their content.
+
+       ? means any character at this position.	E.g.
+
+	 :fileviewer ?.out file %c
+
+       calls  file  tool  for all files which has exactly one character before
+       their extension (e.g. a.out, b.out).
+
+       Square brackets designate character class, which means that whole char-
+       acter  class matches against any of characters listed in it.  For exam-
+       ple
+
+	 :fileviewer *.[ch] highlight -O xterm256 -s dante --syntax c %c
+
+       makes vifm call highlight program to colorize source and	 header	 files
+       in C language for a 256-color terminal.	Equal command would be
+
+	 :fileviewer *.c,*.h highlight -O xterm256 -s dante --syntax c %c
+
+
+       Inside  square brackets ^ or ! can be used for symbol class negotiation
+       and the - symbol to set a range. ^ and ! should appear right after  the
+       opening square bracket.	For example
+
+	 :filetype *.[!d]/ inspect_dir
+
+       associates  inspect_dir	as additional handler for all directories that
+       have one character extension unless it's "d" letter.  And
+
+	 :filetype [0-9].jpg sxiv
+
+       associates sxiv picture viewer only for JPEG-files that contain	single
+       digit in their name.
+
+:set options
+       Local options
+	      These are kind of options that are local to a specific view.  So
+	      you can set ascending sorting order for left pane and descending
+	      order for right pane.
+
+	      In  addition  to being local to views, each such option also has
+	      two values:
+
+		- local to current directory (value  associated	 with  current
+		  location);
+
+		- global  to  current  directory  (value  associated  with the
+		  pane).
+
+	      The idea is that current	directory  can	be  made  a  temporary
+	      exception	 to regular configuration of the view, until directory
+	      change.  Use :setlocal for that.	:setglobal changes view	 value
+	      not  affecting  settings	until  directory change.  :set applies
+	      changes immediately to all values.
+
+
+       'aproposprg'
+	      type: string
+	      default: "apropos %a"
+	      Specifies format for an external command to be  invoked  by  the
+	      :apropos command.	 The format supports expanding of macros, spe-
+	      cific for a particular *prg option, and %% sequence for  insert-
+	      ing  percent  sign literally.  This option should include the %a
+	      macro to specify placement of arguments passed to	 the  :apropos
+	      command.	 If the macro is not used, it will be implicitly added
+	      after a space to the value of this option.
+
+       'autochpos'
+	      type: boolean
+	      default: true
+	      When disabled vifm will set cursor to the first line in the view
+	      after  :cd and :pushd commands instead of saved cursor position.
+	      Disabling this will also make vifm clear information about  cur-
+	      sor position in the view history on :cd and :pushd commands (and
+	      on startup if 'autochpos' is disabled in the vifmrc).  l key  in
+	      the  ":history ." and ":trashes" menus are treated like :cd com-
+	      mand.  This option also affects marks so that  navigating	 to  a
+	      mark doesn't restore cursor position.
+
+	      When this option is enabled, more fine grained control over cur-
+	      sor position is available via 'histcursor' option.
+
+       'columns' 'co'
+	      type: integer
+	      default: terminal width on startup
+	      Terminal width in characters.
+
+       'caseoptions'
+	      type: charset
+	      default: ""
+	      This option gives additional control over	 case  sensitivity  by
+	      allowing	overriding  default behaviour to either always be case
+	      sensitive or always be case insensitive.	Possible  values  form
+	      pairs  of	 lower	and upper case letters that configure specific
+	      aspect of behaviour:
+		p - always ignore case of paths during completion.
+		P - always match case of paths during completion.
+		g - always ignore case of characters for f/F/;/,.
+		G - always match case of characters for f/F/;/,.
+
+	      At most one item of each pair takes affect, if both or more  are
+	      present,	only  the  last one matters.  When none of pair's ele-
+	      ments are present, the behaviour is default (depends on  operat-
+	      ing system for path completion and on values of 'ignorecase' and
+	      'smartcase' options for file navigation).
+
+       'cdpath' 'cd'
+	      type: string list
+	      default: value of $CDPATH with commas instead of colons
+	      Specifies locations to check on changing directory with relative
+	      path  that  doesn't  start  with "./" or "../".  When non-empty,
+	      current directory is examined after directories  listed  in  the
+	      option.
+
+	      This option doesn't affect completion of :cd command.
+
+	      Example:
+
+		set cdpath=~
+
+	      This  way	 ":cd  bin"  will  switch to "~/bin" even if directory
+	      named "bin" exists in current directory, while ":cd ./bin"  com-
+	      mand will ignore value of 'cdpath'.
+
+       'chaselinks'
+	      type: boolean
+	      default: false
+	      When  enabled path of view is always resolved to real path (with
+	      all symbolic links expanded).
+
+       'classify'
+	      type: string list
+	      default: ":dir:/"
+	      Specifies file name prefixes and suffixes depending on file type
+	      or name.	The format is either of:
+		- [{prefix}]:{filetype}:[{suffix}]
+		- [{prefix}]::{pattern}::[{suffix}]
+	      Possible	{pattern}  forms  are  described in "Patterns" section
+	      above.
+
+	      Priority rules:
+		- file name patterns have priority over type patterns
+		- file name patterns are matched  in  left-to-right  order  of
+	      their appearance in this option
+
+	      Either {prefix} or {suffix} or both can be omitted (which is the
+	      default for all unspecified file types), this means empty	 {pre-
+	      fix}  and/or  {suffix}.  {prefix} and {suffix} should consist of
+	      at most eight characters.	 Elements  are	separated  by  commas.
+	      Neither  prefixes	 nor  suffixes are part of file names, so they
+	      don't affect commands which operate on file names	 in  any  way.
+	      Comma  (',')  character can be inserted by doubling it.  List of
+	      file type names can be found in the  description	of  filetype()
+	      function.
+
+       'confirm' 'cf'
+	      type: set
+	      default: delete,permdelete
+	      Defines which operations require confirmation:
+	       - delete	    - moving files to trash (on d or :delete);
+	       -  permdelete  -	 permanent deletion of files (on D or :delete!
+	      command or on undo/redo operation).
+
+       'cpoptions' 'cpo'
+	      type: charset
+	      default: "fst"
+	      Contains	a  sequence  of	 single-character  flags.   Each  flag
+	      enables behaviour of older versions of vifm.  Flags:
+	       -  f  -	when  included, running :filter command results in not
+	      inverted (matching files	are  filtered  out)  and  :filter!  in
+	      inverted (matching files are left) filter, when omitted, meaning
+	      of the exclamation mark changes to the opposite;
+	       - s - when included, yy, dd and DD normal mode commands act  on
+	      selection, otherwise they operate on current file only;
+	       -  t  - when included, <tab> (thus <c-i>) behave as <space> and
+	      switches active pane, otherwise <tab> and <c-i>  go  forward  in
+	      the view history.	 It's possible to make both <tab> and <c-i> to
+	      work as expected by setting up the terminal  to  emit  a	custom
+	      sequence when <c-i> is pressed; see :histnext for details.
+
+       'cvoptions'
+	      type: set
+	      default:
+	      Specifies	 whether entering/leaving custom views triggers events
+	      that normally happen on entering/leaving directories:
+	       - autocmds    - trigger autocommands on entering/leaving custom
+	      views;
+	       -  localopts   - reset local options on entering/leaving custom
+	      views;
+	       - localfilter - reset local filter on  entering/leaving	custom
+	      views.
+
+       'deleteprg'
+	      type: string
+	      default: ""
+	      Specifies	 program to run on files that are permanently removed.
+	      When empty, files are removed as usual, otherwise	 this  command
+	      is  invoked  on each file by appending its name.	If the command
+	      doesn't remove files, they will remain on the file system.
+
+       'dirsize'
+	      type: enumeration
+	      default: size
+	      Controls how size of directories is  displayed  in  file	views.
+	      The following values are possible:
+	       -  size	 - size of directory (i.e., size used to store list of
+	      files)
+	       - nitems - number of entries in the directory (excluding .  and
+	      ..)
+
+	      Size  obtained via ga/gA overwrites this setting so seeing count
+	      of files and occasionally size of directories is possible.
+
+       'dotdirs'
+	      type: set
+	      default: nonrootparent
+	      Controls displaying of dot directories.	The  following	values
+	      are possible:
+	       - rootparent    - show "../" in root directory of file system
+	       -  nonrootparent	 -  show "../" in non-root directories of file
+	      system
+
+	      Note that empty directories always contain "../"	entry  regard-
+	      less of value of this option.  "../" disappears at the moment at
+	      least one file is created.
+
+       'dotfiles'
+	      type: boolean
+	      default: false
+	      Whether dot files are shown in the view.	Can be controlled with
+	      z* bindings.
+
+       'fastrun'
+	      type: boolean
+	      default: false
+	      With  this  option  turned on you can run partially entered com-
+	      mands with unambiguous beginning using :! (e.g. :!Te instead  of
+	      :!Terminal or :!Te<tab>).
+
+       'fillchars' 'fcs'
+	      type: string list
+	      default: ""
+	      Sets characters used to fill borders.
+
+		item	     default	used for
+		vborder:c     '	 '	  left, middle and right vertical bor-
+	      ders
+
+	      If value is omitted, its default value is used.  Example:
+
+		set fillchars=vborder:.
+
+       'findprg'
+	      type: string
+	      default: "find %s %a -print , -type d \( ! -readable -o !	 -exe-
+	      cutable \) -prune"
+	      Specifies	 format	 for  an external command to be invoked by the
+	      :find command.  The format supports expanding  of	 macros,  spe-
+	      cific  for a particular *prg option, and %% sequence for insert-
+	      ing percent sign literally.  This option should include  the  %s
+	      macro  to specify placement of list of paths to search in and %a
+	      or %A macro to specify placement	of  arguments  passed  to  the
+	      :find command.  If some of the macros are not used, they will be
+	      implicitly added after a space to the value of the option in the
+	      following	 order:	 %s, %a.  Note that when neither %a nor %A are
+	      specified, it's %a which is added implicitly.
+
+	      The macros can slightly change their meaning depending on	 :find
+	      command  arguments.  When the first argument points to an exist-
+	      ing directory, %s is assigned all arguments and %a/%A  are  left
+	      empty.   Otherwise,  %s  is assigned a dot (".") meaning current
+	      directory or list of selected file names,	 if  any.   %a/%A  are
+	      assigned arguments when first argument starts with a dash ("-"),
+	      otherwise %a gets an escaped version of arguments, prepended  by
+	      "-name" (on *nix) or "-iname" (on Windows) predicate.
+
+	      %a  and  %A macros contain almost the same value, the difference
+	      is that %a can be escaped and %A is never escaped.  %A is to  be
+	      used  mainly  on Windows, where shell escaping is a mess and can
+	      break command execution.
+
+	      Optional %u or %U macro could be used (if both specified	%U  is
+	      chosen)  to  force redirection to custom or unsorted custom view
+	      respectively.
+
+	      Starting from Windows Server 2003 a where command is  available,
+	      one can configure vifm to use it in the following way:
+
+		set findprg="where /R %s %A"
+
+	      As  the  syntax of this command is rather limited, one can't use
+	      :find command with selection of more than one item in this case.
+	      The  command  looks  for files only completely ignoring directo-
+	      ries.
+
+	      When using find port on Windows,	another	 option	 is  to	 setup
+	      'findprg' like this:
+
+		set findprg="find %s %a"
+
+       'followlinks'
+	      type: boolean
+	      default: true
+	      Follow  links  on	 l  or Enter.  That is navigate to destination
+	      file instead of treating the link as if  it  were	 target	 file.
+	      Doesn't  affects	links to directories, which are always entered
+	      (use gf key for directories).
+
+       'fusehome'
+	      type: string
+	      default: "($XDG_DATA_HOME/.local/share | $VIFM)/fuse/"
+	      Directory to be used as a root dir for FUSE  mounts.   Value  of
+	      the   option   can   contain   environment  variables  (in  form
+	      "$envname"), which will be expanded (prepend it with a slash  to
+	      prevent  expansion).   The  value	 should	 expand to an absolute
+	      path.
+
+	      If you change this option,  vifm	won't  remount	anything.   It
+	      affects future mounts only.  See "Automatic FUSE mounts" section
+	      below for more information.
+
+       'gdefault' 'gd'
+	      type: boolean
+	      default: false
+	      When on, 'g' flag is on for :substitute by default.
+
+       'grepprg'
+	      type: string
+	      default: "grep -n -H -I -r %i %a %s"
+	      Specifies format for an external command to be  invoked  by  the
+	      :grep  command.	The  format supports expanding of macros, spe-
+	      cific for a particular *prg option, and %% sequence for  insert-
+	      ing  percent  sign literally.  This option should include the %i
+	      macro to specify placement of  "-v"  string  when	 inversion  of
+	      results  is  requested,  %a  or %A macro to specify placement of
+	      arguments passed to the :grep command and the %s macro to	 spec-
+	      ify  placement  of  list	of files to search in.	If some of the
+	      macros are not used, they will be implicitly added after a space
+	      to the value of the 'grepprg' option in the following order: %i,
+	      %a, %s.  Note that when neither %a nor %A are specified, it's %a
+	      which is added implicitly.
+
+	      Optional	%u  or %U macro could be used (if both specified %U is
+	      chosen) to force redirection to custom or unsorted  custom  view
+	      respectively.
+
+	      See  'findprg'  option  for description of difference between %a
+	      and %A.
+
+	      Example of setup to use ack (http://beyondgrep.com/) instead  of
+	      grep:
+
+		set grepprg='ack -H -r %i %a %s'
+
+	      or   The	 Silver	 Searcher  (https://github.com/ggreer/the_sil-
+	      ver_searcher):
+
+		set grepprg='ag --line-numbers %i %a %s'
+
+
+
+       'histcursor'
+	      type: set
+	      default: startup,dirmark,direnter
+	      Defines situations when cursor  should  be  moved	 according  to
+	      directory history:
+	       - startup  - on loading file lists during startup
+	       -  dirmark   -  after navigating to a mark that doesn't specify
+	      file
+	       - direnter - on opening directory from a file list
+
+	      This option has no effect when 'autochpos' is disabled.
+
+	      Note that the list is not exhaustive and there are other	situa-
+	      tions when cursor is positioned automatically.
+
+       'history' 'hi'
+	      type: integer
+	      default: 15
+	      Maximum number of stored items in all histories.
+
+       'hlsearch' 'hls'
+	      type: boolean
+	      default: true
+	      Highlight all matches of search pattern.
+
+       'iec'  type: boolean
+	      default: false
+	      Use  KiB,	 MiB,  ... suffixes instead of K, M, ... when printing
+	      size in human-friendly format.
+
+       'ignorecase' 'ic'
+	      type: boolean
+	      default: false
+	      Ignore case in search patterns (:substitute, / and  ?  commands)
+	      and  characters  after f and F commands.	It doesn't affect file
+	      filtering.
+
+       'incsearch' 'is'
+	      type: boolean
+	      default: false
+	      When this option is set, search and view update for local filter
+	      is  be performed starting from initial cursor position each time
+	      search pattern is changed.
+
+       'iooptions'
+	      type: set
+	      default:
+	      Controls details of file operations.  The following  values  are
+	      available:
+	       -  fastfilecloning - perform fast file cloning (copy-on-write),
+	      when available
+				   (available on Linux and btrfs file system).
+
+       'laststatus' 'ls'
+	      type: boolean
+	      default: true
+	      Controls if status bar is visible.
+
+       'lines'
+	      type: integer
+	      default: terminal height on startup
+	      Terminal height in lines.
+
+       'locateprg'
+	      type: string
+	      default: "locate %a"
+	      Specifies format for an external command to be  invoked  by  the
+	      :locate  command.	 The format supports expanding of macros, spe-
+	      cific for a particular *prg option, and %% sequence for  insert-
+	      ing  percent  sign literally.  This option should include the %a
+	      macro to specify placement of arguments passed  to  the  :locate
+	      command.	 If the macro is not used, it will be implicitly added
+	      after a space to the value of this option.
+
+	      Optional %u or %U macro could be used (if both specified	%U  is
+	      chosen)  to  force redirection to custom or unsorted custom view
+	      respectively.
+
+       'mediaprg'
+	      type: string
+	      default: path to bundled script that supports udevil and udisks
+	      {only for *nix}
+	      Specifies command to be used to manage media devices.   Used  by
+	      :media command.
+
+	      The command can be passed the following parameters:
+	       - list		-- list media
+	       - mount {device} -- mount a device
+	       - unmount {path} -- unmount given mount point
+
+	      The  output  of  `list`  subcommand is parsed in search of lines
+	      that start with one of the following prefixes:
+	       - device=      - specifies device path (e.g., "/dev/sde")
+	       - label=	      - specifies optional device label (e.g., "Memory
+	      card")
+	       -  mount-point=	-  specifies  a	 mount point (can be absent or
+	      appear more than once)
+
+	      All other lines are ignored.  Each `device=` starts a  new  sec-
+	      tion describing a device which should include two other possible
+	      prefixes.
+
+	      `list` subcommand is assumed  to	always	succeed,  while	 error
+	      stream  and  exit	 code  of  `mount` and `unmount` is taken into
+	      account to determine whether operation  was  performed  success-
+	      fully.
+
+       'lsoptions'
+	      type: string list
+	      default: ""
+	      scope: local
+
+	      Configures ls-like view.
+
+		item	      used for
+		transposed     filling	view  grid  by	columns rather than by
+	      lines
+
+
+       'lsview'
+	      type: boolean
+	      default: false
+	      scope: local
+	      When this option is set, directory view  will  be	 displayed  in
+	      multiple	columns	 with  file names similar to output of `ls -x`
+	      command.	See "ls-like view" section below for  format  descrip-
+	      tion.  This option has no effect if 'millerview' is on.
+
+       'milleroptions'
+	      type: string list
+	      default: "lsize:1,csize:1,rsize:1"
+	      scope: local
+
+	      Configures miller view.
+
+		item	      default  used for
+		lsize:num     0	       left column
+		csize:num     1	       center column (can't be disabled)
+		rsize:num     0	       right column
+
+	      *size  specifies	ratios of columns.  Each ratio is in the range
+	      from 0 to 100 and values are adjusted to fit the	limits.	  Zero
+	      disables a column, but central (main) column can't be disabled.
+
+	      Example  of  two-column mode which is useful in combination with
+	      :view command:
+
+		set milleroptions=lsize:1,csize:2
+
+
+       'millerview'
+	      type: boolean
+	      default: false
+	      scope: local
+	      When this option is set, directory view  will  be	 displayed  in
+	      multiple cascading columns.  Ignores 'lsview'.
+
+       'mintimeoutlen'
+	      type: integer
+	      default: 150
+	      The  fracture  of	 'timeoutlen'  in  milliseconds that is waited
+	      between subsequent input polls, which affects various  asynchro-
+	      nous  operations	(detecting  changes  made by external applica-
+	      tions, monitoring background jobs, redrawing UI).	 There are  no
+	      strict guarantees, however the higher this value is, the less is
+	      CPU load in idle mode.
+
+       'number' 'nu'
+	      type: boolean
+	      default: false
+	      scope: local
+	      Print line number in front  of  each  file  name	when  'lsview'
+	      option  is  turned  off.	 Use 'numberwidth' to control width of
+	      line number.  Also see 'relativenumber'.
+
+       'numberwidth' 'nuw'
+	      type: integer
+	      default: 4
+	      scope: local
+	      Minimal number of characters for line number field.
+
+       'previewprg'
+	      type: string
+	      default: ""
+	      scope: local
+
+	      External command to be used instead of preview programs  config-
+	      ured via :fileviewer command.
+
+	      Example:
+
+		" always show git log in preview of files inside some repository
+		au DirEnter '~/git-repo/**/*' setl previewprg='git log --color -- %c 2>&1'
+
+       'quickview'
+	      type: boolean
+	      default: false
+	      Whether quick view (:view) is currently active or not.
+
+       'relativenumber' 'rnu'
+	      type: boolean
+	      default: false
+	      scope: local
+	      Print  relative  line  number  in	 front	of each file name when
+	      'lsview' option is turned off.   Use  'numberwidth'  to  control
+	      width  of	 line  number.	 Various  combinations of 'number' and
+	      'relativenumber' lead to such results:
+
+				      nonumber		     number
+
+		  norelativenumber   | first		    |	1 first
+				     | second		    |	2 second
+				     | third		    |	3 third
+
+		    relativenumber   |	 1 first	    |	1 first
+				     |	 0 second	    |2	  second
+				     |	 1 third	    |	1 third
+
+
+       'rulerformat' 'ruf'
+	      type: string
+	      default: "%l/%S "
+	      Determines the content of the ruler.  Its minimal	 width	is  13
+	      characters  and  it's  right aligned.  Following macros are sup-
+	      ported:
+	       %=  - separation point between left and right aligned halves of
+	      the line
+	       %l  - file number
+	       %L   -  total  number  of files in view (including filtered out
+	      ones)
+	       %x  - number of files excluded by filters
+	       %0- - old name for %x macro
+	       %S  - number of displayed files
+	       %=  - separation point between left and right align items
+	       %%  - percent sign
+	       %[  - designates beginning of an optional block
+	       %]  - designates end of an optional block
+
+	      Percent sign can be followed by optional	minimum	 field	width.
+	      Add '-' before minimum field width if you want field to be right
+	      aligned.
+
+	      Example:
+
+		set rulerformat='%2l-%S%[ +%x%]'
+
+       'runexec'
+	      type: boolean
+	      default: false
+	      Run executable file on Enter or l.
+
+       'scrollbind' 'scb'
+	      type: boolean
+	      default: false
+	      When this option is set, vifm will try  to  keep	difference  of
+	      scrolling positions of two windows constant.
+
+       'scrolloff' 'so'
+	      type: integer
+	      default: 0
+	      Minimal  number of screen lines to keep above and below the cur-
+	      sor.  If you want cursor line to always be in the middle of  the
+	      view (except at the beginning or end of the file list), set this
+	      option to some large value (e.g. 999).
+
+       'shell' 'sh'
+	      type: string
+	      default: $SHELL or "/bin/sh" or "cmd" (on MS-Windows)
+	      Full path to the shell to use to run external commands.  On *nix
+	      a shell argument can be supplied.
+
+       'shortmess' 'shm'
+	      type: charset
+	      default: "p"
+	      Contains	a  sequence  of	 single-character  flags.   Each  flag
+	      enables shortening of some message displayed by vifm in the TUI.
+	      Flags:
+	       -  M  - shorten titles in windows of terminal multiplexers cre-
+	      ated by vifm down to file name instead of using full path.
+	       - T - truncate status-bar messages in the middle	 if  they  are
+	      too  long	 to fit on the command line.  "..." will appear in the
+	      middle.
+	       - p - use tilde shortening in view titles.
+
+
+       'showtabline' 'stal'
+	      type: enumeration
+	      default: multiple
+	      Specifies when tab line should be displayed.  Possible values:
+	       - never	  - never display tab line
+	       - multiple - show tab line only when there  are	at  least  two
+	      tabs
+	       - always	  - display tab line always
+
+	      Alternatively  0, 1 and 2 Vim-like values	 are also accepted and
+	      correspond to "never", "multiple" and "always" respectively.
+
+
+       'sizefmt'
+	      type: string list
+	      default: "units:iec"
+	      Configures the way size is formatted in human-friendly way.
+
+		  item		value	      meaning
+		  units:	iec	      Use 1024 byte units (K  or  KiB,
+	      etc.).
+					      See 'iec' option.
+				si	      Use 1000 byte units (KB, etc.).
+		  precision:	i > 0	      How many fraction digits to con-
+	      sider.
+				{not set}     Precision of 1 for integer  part
+	      < 10,
+					      0 otherwise (provides old behav-
+	      iour).
+
+	      Numbers are rounded from zero.  Trailing zeros are dropped.
+
+	      Example:
+
+		set sizefmt=units:iec,precision:2
+
+
+       'slowfs'
+	      type: string list
+	      default: ""
+	      only for *nix
+	      A list of mounter fs name beginnings (first column in  /etc/mtab
+	      or  /proc/mounts) or paths prefixes for fs/directories that work
+	      too slow for you.	 This option can be used  to  stop  vifm  from
+	      making  some  requests  to particular kinds of file systems that
+	      can slow down file browsing.  Currently this means  don't	 check
+	      if directory has changed, skip check if target of symbolic links
+	      exists, assume that link target located  on  slow	 fs  to	 be  a
+	      directory	 (allows  entering directories and navigating to files
+	      via gf).	If you set the option to "*", it means all the systems
+	      are  considered  slow  (useful  for cygwin, where all the checks
+	      might render vifm very slow if there are network mounts).
+
+	      Example for autofs root /mnt/autofs:
+
+		set slowfs+=/mnt/autofs
+
+       'smartcase' 'scs'
+	      type: boolean
+	      default: false
+	      Overrides the ignorecase option if the search  pattern  contains
+	      at  least	 one  upper case character.  Only used when ignorecase
+	      option is enabled.  It doesn't affect file filtering.
+
+       'sort' type: string list
+	      default: +name on *nix and +iname on Windows
+	      scope: local
+	      Sets list of sorting keys (first item is primary key, second  is
+	      secondary key, etc.):
+		 [+-]ext     - extension of files and directories
+		 [+-]fileext - extension of files only
+		 [+-]name    - name (including extension)
+		 [+-]iname   - name (including extension, ignores case)
+		 [+-]type		  -		 file		  type
+	      (dir/reg/exe/link/char/block/sock/fifo)
+		 [+-]dir     - directory grouping (directory < file)
+		 [+-]gid     - group id (*nix only)
+		 [+-]gname   - group name (*nix only)
+		 [+-]mode    - file type derived from its mode (*nix only)
+		 [+-]perms   - permissions string (*nix only)
+		 [+-]uid     - owner id (*nix only)
+		 [+-]uname   - owner name (*nix only)
+		 [+-]nlinks  - number of hard links (*nix only)
+		 [+-]inode   - inode number (*nix only)
+		 [+-]size    - size
+		 [+-]nitems  - number of items in a directory (zero for files)
+		 [+-]groups  - groups extracted via regexps from 'sortgroups'
+		 [+-]target  - symbolic link  target  (empty  for  other  file
+	      types)
+		 [+-]atime   - time accessed (e.g. read, executed)
+		 [+-]ctime   - time changed (changes in metadata, e.g. mode)
+		 [+-]mtime   - time modified (when file contents is changed)
+
+	      Note:  look  for st_atime, st_ctime and st_mtime in "man 2 stat"
+	      for more information on time keys.
+
+	      '+' means ascending sort for this key, and '-' means  descending
+	      sort.
+
+	      "dir"  key  is  somewhat	similar	 in this regard but it's added
+	      implicitly: when "dir" is not specified, sorting behaves	as  if
+	      it was the first key in the list.	 That's why if one wants sort-
+	      ing algorithm to mix directories	and  files,  "dir"  should  be
+	      appended to sorting option, for example like this:
+
+		set sort+=dir
+
+	      or
+
+		set sort=-size,dir
+
+	      Value  of	 the  option is checked to include dir key and default
+	      sorting key (name on *nix, iname on Windows).  Here is what hap-
+	      pens if one of them is missing:
+
+		- type key is added at the beginning;
+
+		- default key is added at the end;
+
+	      all other keys are left untouched (at most they are moved).
+
+	      This option also changes view columns according to primary sort-
+	      ing key set, unless 'viewcolumns' option is not empty.
+
+       'sortnumbers'
+	      type: boolean
+	      default: false
+	      scope: local
+	      Natural sort of (version) numbers within text.
+
+       'sortgroups'
+	      type: string
+	      default: ""
+	      scope: local
+	      Sets comma-separated list of  regular  expressions  to  use  for
+	      group  sorting,  double comma is literal comma.  Each expression
+	      should contain at least one group or its value will  be  consid-
+	      ered  to	be  always  empty.   Only  first match of each regular
+	      expression is considered.	 Groups are considered from  right  to
+	      first  similar to 'sort', first group divides list of files into
+	      sub-groups, each of which is sorted by the second group  and  so
+	      on.
+
+	      Example:
+		set sortgroups=-(done|todo).*
+	      this would put files with "-done" in their names above all files
+	      with "-todo".
+
+       'sortorder'
+	      type: enumeration
+	      default: ascending
+	      Sets sort order for primary key: ascending, descending.
+
+       'statusline' 'stl'
+	      type: string
+	      default: ""
+	      Determines the content of the status line (the line right	 above
+	      command-line).   Empty string means use same format like in pre-
+	      vious versions.  Following macros are supported:
+
+	      - %t - file name (considering value of the 'classify' option)
+
+	      - %T - symbolic link target (empty for other filetypes)
+
+	      - %f - file name relative to current directory (considers 'clas-
+		sify')
+
+	      - %A  -  file  attributes	 (permissions on *nix or properties on
+		Windows) %u - user name or uid (if it cannot be resolved)
+
+	      - %g - group name or gid (if it cannot be resolved)
+
+	      - %s - file size in human readable format
+
+	      - %E - size of selected files in human readable format, same  as
+		%s  when no files are selected, except that it will never show
+		size of ../ in visual mode, since it cannot be selected
+
+	      - %d - file modification date (uses 'timefmt' option)
+
+	      - %D - path of the other pane for single-pane layout
+
+	      - %a - amount of free space available at current partition
+
+	      - %z - short tips/tricks/hints that chosen  randomly  after  one
+		minute period
+
+	      - %{<expr>}  - evaluate arbitrary vifm expression '<expr>', e.g.
+		'&sort'
+
+	      - %* - resets or applies one of User1..User9  highlight  groups;
+		reset  happens	when width field is 0 or not specified, one of
+		groups gets picked when width field is in the range from 1  to
+		9
+
+	      - all 'rulerformat' macros
+
+	      Percent  sign  can  be followed by optional minimum field width.
+	      Add '-' before minimum field width if you want field to be right
+	      aligned.
+
+	      On  Windows  file	 properties include the following flags (upper
+	      case means flag is on):
+	       A - archive
+	       H - hidden
+	       I - content isn't indexed
+	       R - readonly
+	       S - system
+	       C - compressed
+	       D - directory
+	       E - encrypted
+	       P - reparse point (e.g. symbolic link)
+	       Z - sparse file
+
+	      Example without colors:
+
+		set statusline="  %t%= %A %10u:%-7g %15s %20d %{&sort} "
+
+	      Example with colors:
+
+	       highlight User1 ctermbg=yellow
+	       highlight User2 ctermbg=blue ctermfg=white cterm=bold
+	       set statusline="%1* %-26t %2* %= %1* %A %2* %7u:%-7g %1* %-5s %2* %d "
+
+
+       'suggestoptions'
+	      type: string list
+	      default:
+	      Controls when, for what and how suggestions are displayed.   The
+	      following values are available:
+	       - normal		 - in normal mode;
+	       - visual		 - in visual mode;
+	       - view		 - in view mode;
+	       - otherpane	 - use other pane to display suggestions, when
+	      available;
+	       - delay[:num]	 - display suggestions after a small delay (to
+	      do not annoy if you just want to type a fast shortcut consisting
+	      of multiple keys),  num  specifies  the  delay  in  ms  (500  by
+	      default), 'timeoutlen' at most;
+	       - keys		 - include shortcuts (commands and selectors);
+	       - foldsubkeys	 - fold multiple keys with common prefix;
+	       - marks		 - include marks;
+	       -  registers[:num] - include registers, at most num files (5 by
+	      default).
+
+       'syncregs'
+	      type: string
+	      default:
+	      Specifies identifier of group of instances that share  registers
+	      between  each  other.   When several instances of vifm have this
+	      option set to identical value,  they  automatically  synchronize
+	      contents of their registers on operations which use them.
+
+       'syscalls'
+	      type: boolean
+	      default: false
+	      When  disabled,  vifm will rely on external applications to per-
+	      form file-system operations, otherwise  system  calls  are  used
+	      instead  (much  faster  and  supports  progress  tracking).  The
+	      option should eventually be removed.  Mostly  *nix-like  systems
+	      are affected.
+
+       'tabscope'
+	      type: enumeration
+	      default: global
+	      Picks  style  of tabs, which defines what a single tab contains.
+	      Possible values:
+	       - global - tab describes complete UI of two views and how  they
+	      are arranged
+	       -  pane	  -  tab is located "inside" a pane and manages it and
+	      quick view
+
+       'tabstop' 'ts'
+	      type: integer
+	      default: value from curses library
+	      Number of spaces that a Tab in the file counts for.
+
+       'timefmt'
+	      type: string
+	      default: "%m/%d %H:%M"
+	      Format of time in file list.  See "man 1 date" or "man  3	 strf-
+	      time" for details.
+
+       'timeoutlen' 'tm'
+	      type: integer
+	      default: 1000
+	      The time in milliseconds that is waited for a mapped key in case
+	      of already typed key sequence is ambiguous.
+
+       'title'
+	      type: boolean
+	      default: true when title can be restored, false otherwise
+	      When enabled title of the	 terminal  or  terminal	 multiplexer's
+	      window is updated according to current location.
+
+       'trash'
+	      type: boolean
+	      default: true
+	      Use trash directory.  See "Trash directory" section below.
+
+       'trashdir'
+	      type: string
+	      default: on *nix:
+		 "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash"
+		 or if $VIFM/Trash doesn't exist
+		 "%r/.vifm-Trash-%u,$XDG_DATA_HOME/vifm/Trash,%r/.vifm-Trash"
+		       on Windows:
+		 "%r/.vifm-Trash,$XDG_DATA_HOME/vifm/Trash"
+	      List of trash directory path specifications, separated with com-
+	      mas.  Each list item either defines an absolute  path  to	 trash
+	      directory	 or  a	path  relative to a mount point root when list
+	      element starts with "%r/".  Value	 of  the  option  can  contain
+	      environment  variables  (of  form	 "$envname"),  which  will  be
+	      expanded (prepend $ with a slash to prevent  expansion).	 Envi-
+	      ronment variables are expanded when the option is set.
+
+	      On  *nix,	 if  element ends with "%u", the mark is replaced with
+	      real user ID and permissions are set  so	that  only  that  only
+	      owner is able to use it.
+	      Note that even this setup is not completely secure when combined
+	      with "%r/" and it's overall safer to keep files in  home	direc-
+	      tory, but that implies cost of copying files between partitions.
+
+	      When  new file gets cut (deleted) vifm traverses each element of
+	      the option in the order of their appearance and uses first trash
+	      directory	 that  it  was	able  to  create  or  that  is already
+	      writable.
+
+	      Default value tries to use trash directory per mount  point  and
+	      falls back to ~/.vifm/Trash on failure.
+
+	      Will  attempt to create the directory if it does not exist.  See
+	      "Trash directory" section below.
+
+       'tuioptions' 'to'
+	      type: charset
+	      default: "ps"
+	      Each flag configures some aspect of TUI appearance.   The	 flags
+	      are:
+	      p - when included:
+		*  file	 list  inside  a pane gets additional single character
+	      padding on left and right sides;
+		* quick view and view mode get single character padding.
+	      s - when included, left and right borders (side  borders,	 hence
+	      "s" character) are visible.
+	      u	 - use Unicode characters in the TUI (Unicode ellipsis instead
+	      of "...").
+
+       'undolevels' 'ul'
+	      type: integer
+	      default: 100
+	      Maximum number of changes that can be undone.   Note  that  here
+	      single  file  operation  is  used as a unit, not operation, i.e.
+	      deletion of 101 files will exceed default limit.
+
+       'vicmd'
+	      type: string
+	      default: "vim"
+	      The actual command used to start vi.  Ampersand sign at the  end
+	      (regardless  whether  it's preceded by space or not) means back-
+	      grounding of command.
+
+	      Background flag is ignored in certain context where  vifm	 waits
+	      for  the	editor	to  finish.  Such contexts include any command
+	      that spawns editor to change list of file names  or  a  command,
+	      with  :rename  being one example.	 `-f` is also appended to pre-
+	      vent forking in such cases, so the command needs to  handle  the
+	      flag.
+
+	      Additionally  `+{num}` and `+'call cursor()'` arguments are used
+	      to position cursor when location is known.
+
+       'viewcolumns'
+	      type: string
+	      default: ""
+	      scope: local
+	      Format string containing list of columns in the view.  When this
+	      option  is  empty, view columns to show are chosen automatically
+	      using sorting keys (see 'sort') as a base.  Value of this option
+	      is  ignored if 'lsview' is set.  See "Column view" section below
+	      for format description.
+
+	      An example of setting the options for both  panes	 (note	:windo
+	      command):
+
+		windo set viewcolumns=-{name}..,6{size},11{perms}
+
+       'vixcmd'
+	      type: string
+	      default: value of 'vicmd'
+	      Same as 'vicmd', but takes precedence over it when running in X.
+
+       'vifminfo'
+	      type: set
+	      default: bookmarks,bmarks
+	      Controls what will be saved in the $VIFM/vifminfo file.
+
+		 bmarks	   - named bookmarks
+		 bookmarks - marks, except special ones like '< and '>
+		 tui	    -  state of the user interface (sorting, number of
+	      windows, quick
+			     view state, active view)
+		 dhistory  - directory history
+		 state	   - file name and dot filters and terminal multiplex-
+	      ers integration
+			     state
+		 cs	   - primary color scheme
+		 savedirs  - save last visited directory (requires dhistory)
+		 chistory  - command line history
+		 shistory  - search history (/ and ? commands)
+		 phistory  - prompt history
+		 fhistory   -  history of local filter (see description of the
+	      "=" normal mode
+			     command)
+		 dirstack  - directory stack overwrites previous stack, unless
+	      stack of
+			     current session is empty
+		 registers - registers content
+		 options   - all options that can be set with the :set command
+	      (obsolete)
+		 filetypes - associated programs and viewers (obsolete)
+		 commands  - user defined commands (see :command  description)
+	      (obsolete)
+
+       'vimhelp'
+	      type: boolean
+	      default: false
+	      Use vim help format.
+
+       'wildmenu' 'wmnu'
+	      type: boolean
+	      default: false
+	      Controls	whether	 possible  matches of completion will be shown
+	      above the command line.
+
+       'wildstyle'
+	      type: enumeration
+	      default: bar
+	      Picks presentation style of wild menu.  Possible values:
+	       - bar   - one-line with left-to-right cursor
+	       - popup - multi-line with top-to-bottom cursor
+
+       'wordchars'
+	      type: string list
+	      default: "1-8,14-31,33-255" (that is all non-whitespace  charac-
+	      ters)
+	      Specifies	 which	characters in command-line mode should be con-
+	      sidered as part of a word.  Value of the option  is  comma-sepa-
+	      rated  list of ranges.  If both endpoints of a range match, sin-
+	      gle endpoint is enough (e.g. "a" = "a-a").  Both	endpoints  are
+	      inclusive.  There are two accepted forms: character representing
+	      itself or number encoding character according  to	 ASCII	table.
+	      In case of ambiguous characters (dash, comma, digit) use numeric
+	      form.  Accepted characters are in the range from 0 to 255.   Any
+	      Unicode character with code greater than 255 is considered to be
+	      part of a word.
+
+	      The option affects Alt-D, Alt-B and Alt-F, but not Ctrl-W.  This
+	      is intentionally to allow two use cases:
+
+	       - Moving by WORDS and deletion by words.
+	       - Moving by words and deletion by WORDS.
+
+	      To get the latter use the following mapping:
+
+		cnoremap <c-w> <a-b><a-d>
+
+	      Also used for abbreviations.
+
+       'wrap' type: boolean
+	      default: true
+	      Controls whether to wrap text in quick view.
+
+       'wrapscan' 'ws'
+	      type: boolean
+	      default: true
+	      Searches wrap around end of the list.
+
+Mappings
+       Map arguments
+
+       LHS  of	mappings  can  be preceded by arguments which take the form of
+       special sequences:
+
+       <silent>
+	      Postpone UI updates until RHS is completely processed.
+
+       <wait> In case of builtin mapping causing conflict for  a  user-defined
+	      mapping  (e.g.,  `t`  builtin  to	 a  partially typed `ta` user-
+	      defined mapping), ignore the builtin mapping and wait for	 input
+	      indefinitely  as	opposed to default behaviour of triggering the
+	      builtin mapping after a delay defined by 'timeoutlen'.  Example:
+
+		nnoremap <wait> tw :set wrap!<cr>
+		nnoremap <wait> tn :set number!<cr>
+		nnoremap <wait> tr :set relativenumber!<cr>
+
+       Special sequences
+
+       Since it's not easy to enter special characters there are several  spe-
+       cial sequences that can be used in place of them.  They are:
+
+       <cr>   Enter key.
+
+       <esc>  Escape key.
+
+       <space>
+	      Space key.
+
+       <lt>   Less-than character (<).
+
+       <nop>  provides a way to disable a mapping (by mapping it to <nop>).
+
+       <bs>   Backspace key (see key conflict description below).
+
+       <tab> <s-tab>
+	      Tabulation and Shift+Tabulation keys.
+
+       <home> <end>
+	      Home/End.
+
+       <left> <right> <up> <down>
+	      Arrow keys.
+
+       <pageup> <pagedown>
+	      PageUp/PageDown.
+
+       <del> <delete>
+	      Delete  key.   <del>  and	 <delete>  mean	 different  codes, but
+	      <delete> is more common.
+
+       <insert>
+	      Insert key.
+
+       <c-a>,<c-b>,...,<c-z>,<c-[>,<c->,<c-]>,<c-^>,<c-_>
+	      Control + some key (see key conflict description below).
+
+       <c-@>  only for *nix
+	      Control + Space.
+
+       <a-a>,<a-b>,...,<a-z>
+	      <m-a>,<m-b>,...,<m-z> Alt + some key.
+
+       <a-c-a>,<a-c-b>,...,<a-c-z>
+	      <m-c-a>,<m-c-b>,...,<m-c-z> only for *nix
+	      Alt + Ctrl + some key.
+
+       <f0> - <f63>
+	      Functional keys.
+
+       <c-f1> - <c-f12>
+	      only for MS-Windows
+	      functional keys with Control key pressed.
+
+       <a-f1> - <a-f12>
+	      only for MS-Windows
+	      functional keys with Alt key pressed.
+
+       <s-f1> - <s-f12>
+	      only for MS-Windows
+	      functional keys with Shift key pressed.
+
+       Note that due to the way terminals process their	 input,	 several  key-
+       board keys might be mapped to single key code, for example:
+
+	 - <cr> and <c-m>;
+
+	 - <tab> and <c-i>;
+
+	 - <c-h> and <bs>;
+
+	 - etc.
+
+       Most  of	 the  time  they are defined consistently and don't cause sur-
+       prises, but <c-h> and <bs> are treated differently in  different	 envi-
+       ronments (although they match each other all the time), that's why they
+       correspond to different keys in vifm.  As a consequence, if you map <c-
+       h>  or <bs> be sure to repeat the mapping with the other one so that it
+       works in all environments.  Alternatively, provide your mapping in  one
+       form and add one of the following:
+
+	 " if mappings with <c-h> in the LHS work
+	 map <c-h> <bs>
+	 " if mappings with <bs> in the LHS work
+	 map <bs> <c-h>
+
+       Whitespace
+
+       vifm  removes  whitespace  characters  at the beginning and end of com-
+       mands.  That's why you may want to use <space> at the  end  of  rhs  in
+       mappings.  For example:
+
+	 cmap <f1> man<space>
+
+       will  put  "man " in line when you hit the <f1> key in the command line
+       mode.
+
+Expression syntax
+       Supported expressions is a subset of what VimL provides.
+
+       Expression syntax summary, from least to most significant:
+
+       expr1	  expr2
+		  expr2 || expr2 ..	  logical OR
+
+       expr2	  expr3
+		  expr3 && expr3 ..	  logical AND
+
+       expr3	  expr4
+		  expr4 == expr4	  equal
+		  expr4 != expr4	  not equal
+		  expr4 >  expr4	  greater than
+		  expr4 >= expr4	  greater than or equal
+		  expr4 <  expr4	  smaller than
+		  expr4 <= expr4	  smaller than or equal
+
+       expr4	  expr5
+		  expr5 + expr5 ..	  number addition
+		  expr5 - expr5 ..	  number subtraction
+
+       expr5	  expr6
+		  expr6 . expr6 ..	  string concatenation
+
+       expr6	  expr7
+		  - expr6		  unary minus
+		  + expr6		  unary plus
+		  ! expr6		  logical NOT
+
+       expr7	  number		  number constant
+		  "string"		  string constant, \ is special
+		  'string'		  string constant, ' is doubled
+		  &option		  option value
+		  $VAR			  environment variable
+		  v:var			  builtin variable
+		  function(expr1, ...)	  function call
+		  (expr1)		  nested expression
+
+       ".." indicates that the operations in this level can be concatenated.
+
+       expr1
+       -----
+       expr2 || expr2
+
+       Arguments are converted to numbers before evaluation.
+
+       Result is non-zero if at least one of arguments is non-zero.
+
+       It's right associative and with	short-circuiting,  so  sub-expressions
+       are  evaluated  from  left to right until result of whole expression is
+       determined (i.e., until first non-zero) or end of the expression.
+
+       expr2
+       -----
+       expr3 && expr3
+
+       Arguments are converted to numbers before evaluation.
+
+       Result is non-zero only if both arguments are non-zero.
+
+       It's right associative and with	short-circuiting,  so  sub-expressions
+       are  evaluated  from  left to right until result of whole expression is
+       determined (i.e., until first zero) or end of the expression.
+
+       expr3
+       -----
+       expr4 {cmp} expr4
+
+       Compare two expr4 expressions, resulting in a  0	 if  it	 evaluates  to
+       false or 1 if it evaluates to true.
+
+       equal		       ==
+       not equal	       !=
+       greater than	       >
+       greater than or equal   >=
+       smaller than	       <
+       smaller than or equal   <=
+
+       Examples:
+
+	 'a' ==	 'a'	     == 1
+	 'a' >	 'b'	     == 1
+	 'a' ==	 'b'	     == 0
+	 '2' >	 'b'	     == 0
+	  2  >	 'b'	     == 1
+	  2  >	 '1b'	     == 1
+	  2  >	 '9b'	     == 0
+	 -1  == -'1'	     == 1
+	  0  ==	 '--1'	     == 1
+
+       expr4
+       -----
+       expr5  +	 expr5 ..     number addition expr5 - expr5 ..	   number sub-
+       traction
+
+       Examples:
+
+	 1 + 3 - 3	    == 1
+	 1 + '2'	    == 3
+
+       expr5
+       -----
+       expr6 . expr6 ..	    string concatenation
+
+       Examples:
+
+	 'a' . 'b'	     == 'ab'
+	 'aaa' . '' . 'c'    == 'aaac'
+
+       expr6
+       -----
+
+       - expr6		    unary minus
+       + expr6		    unary plus
+       ! expr6		    logical NOT
+
+       For '-' the sign of the number is changed.
+       For '+' the number is unchanged.
+       For '!' non-zero becomes zero, zero becomes one.
+
+       A String will be converted to a Number first.
+
+       These operations can be repeated and mixed.  Examples:
+
+	  --9		     == 9
+	 ---9		     == -9
+	  -+9		     == 9
+	  !-9		     == 0
+	  !''		     == 1
+	 !'x'		     == 0
+	  !!9		     == 1
+
+       expr7
+       -----
+
+       number		    number constant
+       -----
+
+       Decimal number.	Examples:
+
+	 0		     == 0
+	 0000		     == 0
+	 01		     == 1
+	 123		     == 123
+	 10000		     == 10000
+
+       string
+       ------
+       "string"		    string constant
+
+       Note that double quotes are used.
+
+       A string constant accepts these special characters:
+	 \b	 backspace <bs>
+	 \e	 escape <esc>
+	 \n	 newline
+	 \r	 return <cr>
+	 \t	 tab <tab>
+	 \\	 backslash
+	 \"	 double quote
+
+       Examples:
+
+	 "\"Hello,\tWorld!\""
+	 "Hi,\nthere!"
+
+       literal-string
+       --------------
+       'string'		    string constant
+
+       Note that single quotes are used.
+
+       This string is taken as it is.  No backslashes are removed  or  have  a
+       special	meaning.   The only exception is that two quotes stand for one
+       quote.
+
+       Examples:
+
+	 'All\slashes\are\saved.'
+	 'This string contains doubled single quotes ''here'''
+
+       option
+       ------
+       &option		     option value (local one is preferred, if  exists)
+       &g:option	      global  option value &l:option		 local
+       option value
+
+       Examples:
+
+	 echo 'Terminal size: '.&columns.'x'.&lines
+	 if &columns > 100
+
+       Any valid option name can be used here (note that "all" in  ":set  all"
+       is a pseudo option).  See ":set options" section above.
+
+       environment variable
+       --------------------
+       $VAR		     environment variable
+
+       The  String value of any environment variable.  When it is not defined,
+       the result is an empty string.
+
+       Examples:
+
+	 'This is my $PATH env: ' . $PATH
+	 'vifmrc at ' . $MYVIFMRC . ' is used.'
+
+       builtin variable
+       --------------------
+       v:var		     builtin variable
+
+       Information exposed by vifm for use in scripting.
+
+       v:count
+	 count passed to : command, 0 by default.  Can be used in mappings  to
+       pass
+	 count to a different command.
+       v:count1
+	 same as v:count, but 1 by default.
+       v:servername
+	 See below.
+
+       function call
+       -------------
+       function(expr1, ...)  function call
+
+       See "Functions" section below.
+
+       Examples:
+
+	 "'" . filetype('.') . "'"
+	 filetype('.') == 'reg'
+
+       expression nesting
+       ------------------
+       (expr1)		     nested expression
+
+       Groups  any other expression of arbitrary complexity enforcing order in
+       which operators are applied.
+
+
+Functions
+       USAGE		     RESULT	 DESCRIPTION
+
+       chooseopt({opt})	     String	 Queries choose parameters  passed  on
+       startup.
+       executable({expr})     Integer	  Checks whether {expr} command avail-
+       able.
+       expand({expr})	     String	 Expands special keywords in {expr}.
+       filetype({fnum} [, {resolve}])
+			     String	 Returns file type from position.
+       fnameescape({expr})   String	 Escapes {expr} for use in a :command.
+       getpanetype()	     String	 Returns type of current pane.
+       has({property})	     Integer	 Checks whether	 instance  has	{prop-
+       erty}.
+       layoutis({type})	      Integer	   Checks  whether  layout  is of type
+       {type}.
+       paneisat({loc})	     Integer	 Checks whether	 current  pane	is  at
+       {loc}.
+       system({command})      String	   Executes  shell command and returns
+       its output.
+       tabpagenr([{arg}])    Integer	 Returns number	 of  current  or  last
+       tab.
+       term({command})	      String	   Like	 system(), but for interactive
+       commands.
+
+       chooseopt({opt})
+
+       Retrieves values of options related to file choosing.  {opt} can be one
+       of:
+	   files      returns argument of --choose-files or empty string
+	   dir	      returns argument of --choose-dir or empty string
+	   cmd	      returns argument of --on-choose or empty string
+	   delimiter  returns argument of --delimiter or the default one (\n)
+
+       executable({expr})
+
+       If {expr} is absolute or relative path, checks whether path destination
+       exists and refers to an executable, otherwise  checks  whether  command
+       named  {expr}  is  present  in directories listed in $PATH.  Checks for
+       various	executable  extensions	on  Windows.   Returns	boolean	 value
+       describing result of the check.
+
+       Example:
+
+	 " use custom default viewer script if it's available and installed
+	 " in predefined system directory, otherwise try to find it elsewhere
+	 if executable('/usr/local/bin/defviewer')
+	     fileview * /usr/local/bin/defviewer %c
+	 else
+	     if executable('defviewer')
+		 fileview * defviewer %c
+	     endif
+	 endif
+
+       expand({expr})
+
+       Expands	environment variables and macros in {expr} just like it's done
+       for command-line commands.  Returns a  string.	See  "Command  macros"
+       section above.
+
+       Examples:
+
+	 " percent sign
+	 :echo expand('%%')
+	 " the last part of directory name of the other pane
+	 :echo expand('%D:t')
+	 " $PATH environment variable (same as `:echo $PATH`)
+	 :echo expand('$PATH')
+
+       filetype({fnum}[,{resolve}])
+
+       The  result  is	a string, which represents file type and is one of the
+       list:
+	   exe	   executables
+	   reg	   regular files
+	   link	   symbolic links
+	   broken  broken symbolic links (appears only when resolving)
+	   dir	   directories
+	   char	   character devices
+	   block   block devices
+	   fifo	   pipes
+	   sock	   *nix domain sockets
+	   ?	   unknown file type (should not normally appear)
+
+       The result can also be an empty string in case of invalid argument.
+
+       Parameter {fnum} can have following values:
+	   - '.' to get type of file under the cursor in the active pane
+	   - numerical value base 1 to get type of file on specified line num-
+       ber
+
+       Optional	 parameter  {resolve}  is  treated  as a boolean and specifies
+       whether symbolic links should be resolved.
+
+       fnameescape({expr})
+
+       Escapes parameter to make it suitable for use as an argument of a :com-
+       mand.  List of escaped characters includes %, which is doubled.
+
+       Usage example:
+
+	 " navigate to most recently modified file in current directory
+	 execute 'goto' fnameescape(system('ls -t | head -1'))
+
+       getpanetype()
+
+       Retrieves string describing type of current pane.  Possible return val-
+       ues:
+	   regular	regular file listing of some directory
+	   custom	custom file list (%u)
+	   very-custom	very custom file list (%U)
+	   tree		tree view
+
+       has({property})
+
+       Allows examining internal parameters from scripts to  e.g.  figure  out
+       environment  in which application is running.  Returns 1 if property is
+       true/present, otherwise 0 is returned.  Currently the following proper-
+       ties are supported (anything else will yield 0):
+	   unix	 runs in *nix-like environment (including Cygwin)
+	   win	 runs on Windows
+
+       Usage example:
+
+	 " skip user/group on Windows
+	 if !has('win')
+	     let $RIGHTS = '%10u:%-7g '
+	 endif
+
+	 execute 'set' 'statusline="  %t%= %A '.$RIGHTS.'%15E %20d  "'
+
+       layoutis({type})
+
+       Checks  whether current interface layout is {type} or not, where {type}
+       can be:
+	   only	   single-pane mode
+	   split   double-pane mode (either vertical or horizon split)
+	   vsplit  vertical split (left and right panes)
+	   hsplit  horizontal split (top and bottom panes)
+
+       Usage example:
+
+	 " automatically split vertically before enabling preview
+	 :nnoremap w :if layoutis('only') | vsplit | endif | view!<cr>
+
+       paneisat({loc})
+
+       Checks whether position of active pane in current layout matches one of
+       the following locations:
+	   top	   pane reaches top border
+	   bottom  pane reaches bottom border
+	   left	   pane reaches left border
+	   right   pane reaches right border
+
+       system({command})
+
+       Runs  the command in shell and returns its output (joined standard out-
+       put and standard error streams).	 All trailing newline  characters  are
+       stripped	 to  allow  easy  appending  to command output.	 Ctrl-C should
+       interrupt the command.
+
+       Use this function to consume output of  external	 commands  that	 don't
+       require	user interaction and term() for interactive commands that make
+       use of terminal and are capable of handling stream redirection.
+
+       Usage example:
+
+	 " command to enter .git/ directory of git-repository (when ran inside one)
+	 command! cdgit :execute 'cd' system('git rev-parse --git-dir')
+
+       tabpagenr([{arg}])
+
+       When called without arguments returns number of current tab  page  base
+       one.
+
+       When called with "$" as an argument returns number of the last tab page
+       base one, which is the same as number of tabs.
+
+       term({command})
+
+       Same as system() function, but user interface is	 shutdown  during  the
+       execution  of  the  command, which makes sure that external interactive
+       applications won't affect the way terminal is used by vifm.
+
+       Usage example:
+
+	 " command to change directory by picking it via fzf
+	 command! fzfcd :execute 'cd' "'".term('find -type d | fzf 2> /dev/tty')."'"
+
+Menus and dialogs
+       When navigating to some path from a menu there is a difference  in  end
+       location	 depending  on	whether path has trailing slash or not.	 Files
+       normally don't have trailing slashes so "file/" won't work and one  can
+       only  navigate  to  a  file anyway.  On the other hand with directories
+       there are two options: navigate to a directory or  inside  of  it.   To
+       allow both use cases, the first one is used on paths like "dir" and the
+       second one for "dir/".
+
+       Commands
+
+       :range navigate to a menu line.
+
+       :exi[t][!] :q[uit][!] :x[it][!]
+	      leave menu mode.
+
+       :noh[lsearch]
+	      reset search match highlighting.
+
+       :w[rite] {dest}
+	      write all menu lines into file specified by {dest}.
+
+       General
+
+       j, Ctrl-N - move down.
+       k, Ctrl-P - move up.
+       Enter, l - select and exit the menu.
+       Ctrl-L - redraw the menu.
+
+       Escape, Ctrl-C, ZZ, ZQ, q - quit.
+
+       In all menus
+
+       The following set of keys has the same meaning as in normal mode.
+
+       Ctrl-B, Ctrl-F
+       Ctrl-D, Ctrl-U
+       Ctrl-E, Ctrl-Y
+       /, ?
+       n, N
+       [count]G, [count]gg
+       H, M, L
+       zb, zt, zz
+
+       zh - scroll menu items [count] characters to the right.
+       zl - scroll menu items [count] characters to the left.
+       zH - scroll menu items half of screen width characters to the right.
+       zL - scroll menu items half of screen width characters to the left.
+
+       : - enter command line mode for menus (currently only :exi[t], :q[uit],
+       :x[it] and :{range} are supported).
+
+       b - interpret content of the menu as list of paths and use it to create
+       custom view in place of previously active  pane.	  See  "Custom	views"
+       section below.
+       B - same as above, but creates unsorted view.
+
+       v  - load menu content into quickfix list of the editor (Vim compatible
+       by assumption) or if list doesn't  have	separators  after  file	 names
+       (colons) open each line as a file name.
+
+
+       Below  is  description of additional commands and reaction on selection
+       in some menus and dialogs.
+
+       Apropos menu
+
+       Selecting menu item runs man on a given topic.  Menu  won't  be	closed
+       automatically to allow view several pages one by one.
+
+       Command-line mode abbreviations menu
+
+       Type dd on an abbreviation to remove it.
+
+       c  leaves menu preserving file selection and inserts right-hand side of
+       selected command into command-line.
+
+       Color scheme menu
+
+       Selecting name of a color scheme applies it the same way as  if	":col-
+       orscheme <name>" was executed on the command-line.
+
+       Commands menu
+
+       Selecting command executes it with empty arguments (%a).
+
+       dd on a command to remove.
+
+       Marks menu
+
+       Selecting mark navigates to it.
+
+       dd on a mark to remove it.
+
+       Bookmarks menu
+
+       Selecting a bookmark navigates to it.
+
+       Type dd on a bookmark to remove it.
+
+       gf and e also work to make it more convenient to bookmark files.
+
+       Trash (:lstrash) menu
+
+       r on a file name to restore it from trash.
+
+       dd deletes file under the cursor.
+
+       Trashes menu
+
+       dd empties selected trash in background.
+
+       Directory history and Trashes menus
+
+       Selecting  directory  name will change directory of the current view as
+       if :cd command was used.
+
+       Directory stack menu
+
+       Selecting directory name will rotate stack to  put  selected  directory
+       pair at the top of the stack.
+
+       Filetype menu
+
+       Commands from vifmrc or typed in command-line are displayed above empty
+       line.  All commands below empty line are from .desktop files.
+
+       c leaves menu preserving file selection and inserts command after :! in
+       command-line mode.
+
+       Grep, find, locate, bookmarks and user menu with navigation (%M macro)
+
+       gf  -  navigate	previously  active  view  to  currently selected item.
+       Leaves menu mode except for grep menu.  Pressing Enter key has the same
+       effect.
+
+       e - open selected path in the editor, stays in menu mode.
+
+       c  - leave menu preserving file selection and insert file name after :!
+       in command-line mode.
+
+       User menu without navigation (%m macro)
+
+       c leaves menu preserving file selection and inserts whole line after :!
+       in command-line mode.
+
+       Grep menu
+
+       Selecting  file	(via Enter or l key) opens it in editor set by 'vicmd'
+       at given line number.  Menu won't  be  closed  automatically  to	 allow
+       viewing more than one result.
+
+       See above for "gf" and "e" keys description.
+
+       Command-line history menu
+
+       Selecting  an item executes it as command-line command, search query or
+       local filter.
+
+       c leaves menu preserving file selection and inserts line into  command-
+       line of appropriate kind.
+
+       Volumes menu
+
+       Selecting  a drive navigates previously active pane to the root of that
+       drive.
+
+       Fileinfo dialog
+
+       Enter, q - close dialog
+
+       Sort dialog
+
+       h, Space - switch ascending/descending.
+       q - close dialog
+
+       One shortcut per sorting key (see the dialog).
+
+       Attributes (permissions or properties) dialog
+
+       h, Space - check/uncheck.
+       q - close dialog
+
+       Item states:
+
+       - * - checked flag.
+
+       - X - means that it has different value for files in selection.
+
+       - d (*nix only) - (only for execute flags) means u-x+X, g-x+X or	 o-x+X
+	 argument  for	the  chmod program.  If you're not on OS X and want to
+	 remove execute permission bit from all files,	but  preserve  it  for
+	 directories, set all execute flags to 'd' and check 'Set Recursively'
+	 flag.
+
+       Jobs menu
+
+       dd requests cancellation of job under cursor.  The job won't be removed
+       from  the list, but marked as being cancelled (if cancellation was suc-
+       cessfully requested).  A message will pop up if	the  job  has  already
+       stopped.	  Note	that on Windows cancelling external programs like this
+       might not work, because their parent shell doesn't have any windows.
+
+       e key displays errors of selected job if any were collected.  They  are
+       displayed  in a new menu, but you can get back to jobs menu by pressing
+       h.
+
+
+       Undolist menu
+
+       r - reset undo position to group under the cursor.
+
+
+       Media menu
+
+       r - reload the list.
+
+       m - mount/unmount device (cursor should be positioned  on  lines	 under
+       device information).
+
+
+Custom views
+       Definition
+
+       Normally	 file views contain list of files from a single directory, but
+       sometimes it's useful to populate them with list of files that  do  not
+       belong to the same directory, which is what custom views are for.
+
+       Presentation
+
+       Custom  views are still related to directory they were in before custom
+       list was loaded.	 Path to that directory (original  directory)  can  be
+       seen in the title of a custom view.
+
+       Files in same directory have to be named differently, this doesn't hold
+       for custom views thus seeing just file names might be rather confusing.
+       In order to give an idea where files come from and when possible, rela-
+       tive paths to original directory of the view  is	 displayed,  otherwise
+       full path is used instead.
+
+       Custom views normally don't contain any inexistent files.
+
+       Navigation
+
+       Custom  views  have  some  differences related to navigation in regular
+       views.
+
+       gf - acts similar to gf on symbolic links and navigates to the file  at
+       its real
+	    location.
+
+       h  -  go	 to  closes  parent node in tree view, otherwise return to the
+       original directory.
+
+       gh - return to the original directory.
+
+       Opening ".." entry also causes return to the original directory.
+
+       History
+
+       Custom list exists only while it's visible, once left one can't	return
+       to it, so there is no appearances of it in any history.
+
+       Filters
+
+       Only  local  filter  affects content of the view.  This is intentional,
+       presumably if one loads list, precisely that list should	 be  displayed
+       (except for inexistent paths, which are ignored).
+
+       Search
+
+       Although	 directory  names are visible in listing, they are not search-
+       able.  Only file names are taken into  account  (might  be  changed  in
+       future, searching whole lines seems quite reasonable).
+
+       Sorting
+
+       Contrary	 to search sorting by name works on whole visible part of file
+       path.
+
+       Highlight
+
+       Whole file name is highlighted as one entity, even if there are	direc-
+       tory elements.
+
+       Updates
+
+       Reloads	can  occur,  though  they are not automatic due to files being
+       scattered among different places.  On a reload,	inexistent  files  are
+       removed and meta-data of all other files is updated.
+
+       Once  custom  view forgets about the file, it won't add it back even if
+       it's created again.  So not seeing file previously affected by an oper-
+       ation, which was undone is normal.
+
+       Operations
+
+       All  operations	that  add  files  are forbidden for custom views.  For
+       example, moving/copying/putting files into a custom view doesn't	 work,
+       because it doesn't make much sense.
+
+       On  the	other  hand,  operations  that use files of a custom view as a
+       source (e.g. yanking, copying, moving file from custom view,  deletion)
+       and operations that modify names are all allowed.
+
+Compare views
+       Kinds
+
+       :compare can produce four different results depending on arguments:
+	- single compare view (ofone and either listall or listdups);
+	- single custom view (ofone and listunique);
+	- two compare views (ofboth and either listall or listdups);
+	- two custom views (ofboth and listunique).
+
+       The  first  two display files of one file system tree.  Here duplicates
+       are files that have at least one copy in the same tree.	The other  two
+       kinds  of  operation  compare  two trees, in which duplicates are files
+       that are found in both trees.
+
+       Lists of unique files are presented in custom views because there is no
+       file  grouping  to  preserve  as all file ids are guaranteed to be dis-
+       tinct.
+
+       Creation
+
+       Arguments passed to :compare form four categories  each	with  its  own
+       prefix and is responsible for particular property of operation.
+
+       Which files to compare:
+	- ofboth - compares files of two panes against each other;
+	- ofone	 - compares files of the same directory.
+
+       How files are compared:
+	- byname     - by their name only;
+	- bysize     - only by their size;
+	- bycontents - by combination of size and hash of file contents.
+
+       Which files to display:
+	- listall    - all files;
+	- listunique - unique files only;
+	- listdups   - only duplicated files.
+
+       How results are grouped (has no effect if "ofone" specified):
+	-  groupids   - files considered identical are always adjacent in out-
+       put;
+	- grouppaths - file system ordering is preferred  (this	 also  enables
+       displaying identically named files as mismatches).
+
+       Which files to omit:
+	- skipempty - ignore empty files.
+
+       Each argument can appear multiple times, the rightmost one of the group
+       is considered.  Arguments alter default behaviour instead of substitut-
+       ing it.
+
+       Examples
+
+       The  defaults  corresponds to probably the most common use case of com-
+       paring files in two trees with grouping by paths, so the following  are
+       equivalent:
+
+	 :compare
+	 :compare bycontents grouppaths
+	 :compare bycontents listall ofboth grouppaths
+
+       Another use case is to find duplicates in the current sub-tree:
+
+	 :compare listdups ofone
+
+       The following command lists files that are unique to each pane:
+
+	 :compare listunique
+
+       Look
+
+       The  view  can't switch to ls-like view as it's unable to display diff-
+       like data.
+
+       Comparison views have second column displaying id of  the  file,	 files
+       with  same  id are considered to be equal.  The view columns configura-
+       tion is predefined.
+
+       Behaviour
+
+       When two views are being compared  against  each	 other	the  following
+       changes to the regular behaviour apply:
+	- views are scrolled synchronously (as if 'scrollbind' was set);
+	- views' cursors are synchronized;
+	- local filtering is disabled (its results wouldn't be meaningful);
+	-  zd excludes groups of adjacent identical files, 1zd gives usual be-
+       haviour;
+	- sorting is permanently disabled (ordering is fixed);
+	- removed files hide their counter pairs;
+	- exiting one of the views terminates the other immediately;
+	- renaming files isn't blocked, but isn't taken into account and might
+       require regeneration of comparison;
+	-  entries  which indicate absence of equivalent file have empty names
+       and can be matched as such;
+	- when unique files of both views  are	listed	custom	views  can  be
+       empty, this absence of unique files is stated clearly.
+
+       One  compare view has similar properties (those that are applicable for
+       single pane).
+
+       Files are gathered in this way:
+	- recursively starting at current location of the view;
+	- dot files are excluded if view hides them at the moment of  compari-
+       son;
+	- directories are not taken into account;
+	- symbolic links to directories are ignored.
+
+Startup
+       On  startup  vifm determines several variables that are used during the
+       session.	 They are determined in the order they appear below.
+
+       On *nix systems $HOME is normally present and used as is.   On  Windows
+       systems	vifm  tries  to	 find  correct home directory in the following
+       order:
+	- $HOME variable;
+	- $USERPROFILE variable (on Windows only);
+	- a combination of $HOMEDRIVE  and  $HOMEPATH  variables  (on  Windows
+       only).
+
+       vifm tries to find correct configuration directory by checking the fol-
+       lowing places:
+	- $VIFM variable;
+	- parent directory of the executable file (on Windows only);
+	- $HOME/.vifm directory;
+	- $APPDATA/Vifm directory (on Windows only);
+	- $XDG_CONFIG_HOME/vifm directory;
+	- $HOME/.config/vifm directory.
+
+       vifm tries to find correct configuration file by checking the following
+       places:
+	- $MYVIFMRC variable;
+	- vifmrc in parent directory of the executable file (on Windows only);
+	- $VIFM/vifmrc file.
+
+Configure
+       See  "Startup"  section	above  for the explanations on $VIFM and $MYV-
+       IFMRC.
+
+       The vifmrc file	contains  commands  that  will	be  executed  on  vifm
+       startup.	 There are two such files: global and local.  Global one is at
+       {prefix}/etc/vifm/vifmrc, see $MYVIFMRC variable	 description  for  the
+       search  algorithm  used	to find local vifmrc.  Global vifmrc is loaded
+       before the local one, so that the later one can redefine anything  con-
+       figured globally.
+
+       Use vifmrc to set settings, mappings, filetypes etc.  To use multi line
+       commands precede each next line with a slash (whitespace	 before	 slash
+       is  ignored,  but  all  spaces at the end of the lines are saved).  For
+       example:
+
+	 set
+	     \smartcase
+
+       equals "setsmartcase".  When
+
+	 set<space here>
+	     \ smartcase
+
+       equals "set  smartcase".
+
+       The $VIFM/vifminfo file contains session settings.  You may edit it  by
+       hand  to change the settings, but it's not recommended to do that, edit
+       vifmrc instead.	You  can  control  what	 settings  will	 be  saved  in
+       vifminfo by setting 'vifminfo' option.  Vifm always writes this file on
+       exit unless 'vifminfo' option is empty.	 Marks,	 bookmarks,  commands,
+       histories,  filetypes, fileviewers and registers in the file are merged
+       with vifm configuration (which has bigger priority).
+
+       Generally, runtime configuration has bigger  priority  during  merging,
+       but there are some exceptions:
+
+	 - directory  stack stored in the file is not overwritten unless some-
+	   thing is changed in vifm session that performs merge;
+
+	 - each mark or bookmark is marked with a  timestamp,  so  that	 newer
+	   value is not overwritten by older one, thus no matter from where it
+	   comes, the newer one wins.
+
+       The $VIFM/scripts directory can contain shell scripts.	vifm  modifies
+       its  PATH  environment  variable	 to let user run those scripts without
+       specifying full path.  All subdirectories of the $VIFM/scripts will  be
+       added  to  PATH too.  Script in a subdirectory overlaps script with the
+       same name in all its parent directories.
+
+       The $VIFM/colors/  and  {prefix}/etc/vifm/colors/  directories  contain
+       color  schemes.	Available color schemes are searched in that order, so
+       on name conflict the one in $VIFM/colors/ wins.
+
+       Each color scheme should have ".vifm" extension.	 This wasn't the  case
+       before and for this reason the following rules apply during lookup:
+
+	 - if  there  is  no  file with .vifm extension, all regular files are
+	   listed;
+
+	 - otherwise only files with .vifm  extension  are  listed  (with  the
+	   extension being truncated).
+
+Automatic FUSE mounts
+       vifm has a builtin support of automated FUSE file system mounts.	 It is
+       implemented using file associations  mechanism.	 To  enable  automated
+       mounts, one needs to use a specially formatted program line in filetype
+       or filextype commands.  Currently two formats are supported:
+
+       1) FUSE_MOUNT This format should be used in case when  all  information
+       needed  for  mounting all files of a particular type is the same.  E.g.
+       mounting of tar files don't require any file specific options.
+
+       Format line:
+	 FUSE_MOUNT|mounter %SOURCE_FILE %DESTINATION_DIR [%FOREGROUND]
+
+       Example filetype command:
+
+	 :filetype FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
+
+       2) FUSE_MOUNT2 This format allows one to use specially formatted	 files
+       to  perform  mounting  and  is useful for mounting remotes, for example
+       remote file systems over ftp or ssh.
+
+       Format line:
+	 FUSE_MOUNT2|mounter %PARAM %DESTINATION_DIR [%FOREGROUND]
+
+       Example filetype command:
+
+	 :filetype FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
+
+       Example file content:
+
+	 root@127.0.0.1:/
+
+       All % macros are expanded by vifm at runtime  and  have	the  following
+       meaning:
+	 - %SOURCE_FILE is replaced by full path to selected file;
+	 - %DESTINATION_DIR is replaced by full path to mount directory, which
+       is created by vifm basing on the value of 'fusehome' option;
+	 - %PARAM value is filled from the first line of  file	(whole	line),
+       though in the future it can be changed to whole file content;
+	 -  %FOREGROUND	 means that you want to run mount command as a regular
+       command (required to be able to provide input  for  communication  with
+       mounter in interactive way).
+
+       %FOREGROUND  is an optional macro.  Other macros are not mandatory, but
+       mount commands likely won't work without them.
+
+       %CLEAR is obsolete name of %FOREGROUND, which is still  supported,  but
+       might be removed in future.  Its use is discouraged.
+
+       The  mounted  FUSE  file systems will be automatically unmounted in two
+       cases:
+
+	 - when vifm quits (with ZZ, :q, etc. or when killed by signal);
+
+	 - when you explicitly leave mount point going up to its parent direc-
+	   tory	 (with h, Enter on "../" or ":cd ..") and other pane is not in
+	   the same directory or its child directories.
+
+View look
+       vifm supports displaying of file list view in two different ways:
+
+	 - in a table mode, when multiple columns  can	be  set	 using	'view-
+	   columns' option (see "Column view" section below for details);
+
+	 - in  a  multicolumn list manner which looks almost like `ls -x` com-
+	   mand output (see "ls-like view" section below for details).
+
+       The look is local for each view and can be chosen by changing value  of
+       the 'lsview' boolean option.
+
+       Depending  on view look some of keys change their meaning to allow more
+       natural cursor moving.  This concerns mainly h, j, k, l and other simi-
+       lar navigation keys.
+
+       Also  some of options can be ignored if they don't affect view display-
+       ing in selected look.  For example value of 'viewcolumns' when 'lsview'
+       is set.
+
+ls-like view
+       When this view look is enabled by setting 'lsview' option on, vifm will
+       display files in multiple columns.  Number of columns  depends  on  the
+       length  of  the	longest	 file name present in current directory of the
+       view.  Whole file list is automatically reflowed on  directory  change,
+       terminal or view resize.
+
+       View looks close to output of `ls -x` command, so files are listed left
+       to right in rows.
+
+       In this mode file manipulation commands (e.g. d) don't  work  line-wise
+       like  they  do in Vim, since such operations would be uncommon for file
+       manipulation tasks.  Thus, for example, dd  will	 remove	 only  current
+       file.
+
+       By  default the view is filled by lines, 'lsoptions' can be used to get
+       filling by columns.
+
+       Note that tree-view and compare view inhibit ls-like view.
+
+Column view
+       View columns are described by a comma-separated list of column descrip-
+       tions, each of which has the following format
+	   [ '-' ] [ fw ( [ '.' tw ] | '%' ) ] '{' type '}' '.'{0,3}
+       where fw stands for full width and tw stands for text width.
+
+       So it basically consists of four parts:
+	1. Optional alignment specifier
+	2. Optional width specifier
+	3. Mandatory column name
+	4. Optional cropping specifier
+
+       Alignment specifier
+
+       It's  an	 optional  minus  or  asterisk sign as the first symbol of the
+       string.
+
+       Specifies type of text alignment within a column.  Three types are sup-
+       ported:
+
+       - left align
+
+	   set viewcolumns=-{name}
+
+       - right align (default)
+
+	   set viewcolumns={name}
+
+       - dynamic align
+
+	 It's  like  left alignment, but when the text is bigger than the col-
+	 umn, the alignment is made at the right (so the part of the field  is
+	 always visible).
+
+	   set viewcolumns=*{name}
+
+       Width specifier
+
+       It's  a	number	followed  by  a	 percent sign, two numbers (second one
+       should be less than or equal to the first one) separated with a dot  or
+       a single number.
+
+       Specifies column width and its units. There are three size types:
+
+       - absolute size - column width is specified in characters
+
+	   set viewcolumns=-100{name},20.15{ext}
+
+	 results  in  two  columns  with  lengths of 100 and 20 and a reserved
+	 space of five characters on the left of second column.
+
+       - relative (percent) size - column width is specified  in  percents  of
+	 view width
+
+	   set viewcolumns=-80%{name},15%{ext},5%{mtime}
+
+	 results  in three columns with lengths of 80/100, 15/100 and 5/100 of
+	 view width.
+
+       - auto size (default) - column width is automatically determined
+
+	   set viewcolumns=-{name},{ext},{mtime}
+
+	 results in three columns with length of  one  third  of  view	width.
+	 There	is no size adjustment to content, since it will slow down ren-
+	 dering.
+
+       Columns of different sizing types can be	 freely	 mixed	in  one	 view.
+       Though  sometimes  some	of columns can be seen partly or be completely
+       invisible if there is not enough space to display them.
+
+       Column name
+
+       This is just a sort key surrounded with curly braces or {root}, e.g.
+
+	 {name},{ext},{mtime}
+
+       {name} and {iname} keys are the same and present both  for  consistency
+       with 'sort' option.
+
+       Following keys don't have corresponding sorting keys:
+
+	 - {root} - display name without extension (as a complement for {ext})
+
+       Empty  curly braces ({}) are replaced with the default secondary column
+       for primary sort key. So after the next command view will be  displayed
+       almost  as if 'viewcolumns' is empty, but adding ellipsis for long file
+       names:
+
+	 set viewcolumns=-{name}..,6{}.
+
+       Cropping specifier
+
+       It's from one to three dots after closing curly brace in column format.
+
+       Specifies type of text truncation if it	doesn't	 fit  in  the  column.
+       Currently three types are supported:
+
+	 - truncation - text is truncated
+
+	     set viewcolumns=-{name}.
+
+	   results  in	truncation  of	names that are too long too fit in the
+	   view.
+
+	 - adding of ellipsis - ellipsis on the left or right are  added  when
+	   needed
+
+	     set viewcolumns=-{name}..
+
+	   results  in	that  ellipsis	are  added at the end of too long file
+	   names.
+
+	 - none (default) - text can pass column boundaries
+
+	     set viewcolumns=-{name}...,{ext}
+
+	   results in that long file names can partially be written on the ext
+	   column.
+
+Color schemes
+       The color schemes in vifm can be applied in two different ways:
+
+	 - as the primary color scheme;
+
+	 - as local to a pane color scheme.
+
+       Both types are set using :colorscheme command, but of different forms:
+
+	 - :colorscheme color_scheme_name - for the primary color scheme;
+
+	 - :colorscheme color_scheme_name directory - for local color schemes.
+
+       Look  of different parts of the TUI (Text User Interface) is determined
+       in this way:
+
+	 - Border,  TabLine,   TabLineSel,   TopLineSel,   TopLine,   CmdLine,
+	   ErrorMsg,  StatusLine,  JobLine, SuggestBox and WildMenu are always
+	   determined by the primary color scheme;
+
+	 - CurrLine, Selected, Directory, Link,	 BrokenLink,  Socket,  Device,
+	   Executable,	Fifo,  CmpMismatch,  Win  and AuxWin are determined by
+	   primary color scheme and a set of local color schemes, which can be
+	   empty.
+
+       There might be a set of local color schemes because they are structured
+       hierarchically according to file system structure. For example,	having
+       the following piece of file system:
+
+	 ~
+	 `-- bin
+	    |
+	    `-- my
+
+       Two color schemes:
+
+	 # ~/.vifm/colors/for_bin
+	 highlight Win cterm=none ctermfg=white ctermbg=red
+	 highlight CurrLine cterm=none ctermfg=red ctermbg=black
+
+	 # ~/.vifm/colors/for_bin_my
+	 highlight CurrLine cterm=none ctermfg=green ctermbg=black
+
+       And these three commands in the vifmrc file:
+
+	 colorscheme Default
+	 colorscheme for_bin ~/bin
+	 colorscheme for_bin_my ~/bin/my
+
+       File list will look in the following way for each level:
+
+       - ~/ - Default color scheme
+	 black background
+	 cursor with blue background
+
+       - ~/bin/ - mix of Default and for_bin color schemes
+	 red background
+	 cursor with black background and red foreground
+
+       - ~/bin/my/ - mix of Default, for_bin and for_bin_my color schemes
+	 red background
+	 cursor with black background and green foreground
+
+Trash directory
+       vifm has support of trash directory, which is used as temporary storage
+       for deleted files or files that were cut.  Using trash is controlled by
+       the  'trash'  option,  and  exact  path	to  the	 trash can be set with
+       'trashdir' option.  Trash directory in vifm differs  from  the  system-
+       wide  one  by default, because of possible incompatibilities of storing
+       deleted	files  among  different	 file  managers.   But	one  can   set
+       'trashdir'  to  "~/.local/share/Trash" to use a "standard" trash direc-
+       tory.
+
+       There are two scenarios of using trash in vifm:
+
+	 1. As a place for storing files that were  cut	 by  "d"  and  may  be
+	    inserted to some other place in file system.
+
+	 2. As a storage of files, that are deleted but not purged yet.
+
+       The first scenario uses deletion ("d") operations to put files to trash
+       and put ("p") operations to restore files from trash  directory.	  Note
+       that  such operations move files to and from trash directory, which can
+       be long term operations in  case	 of  different	partitions  or	remote
+       drives mounted locally.
+
+       The  second scenario uses deletion ("d") operations for moving files to
+       trash directory and :empty command-line command to purge all previously
+       deleted files.
+
+       Deletion	 and  put  operations  depend on registers, which can point to
+       files in trash directory.  Normally, there are no nonexistent files  in
+       registers,  but	vifm  doesn't  keep track of modifications under trash
+       directory, so one shouldn't expect value of registers to be  absolutely
+       correct if trash directory was modified not by operation that are meant
+       for it.	But this won't lead to any issues with operations, since  they
+       ignore nonexistent files.
+
+Client-Server
+       vifm  supports  remote  execution of command-line mode commands, remote
+       changing of directories and expression evaluation.   This  is  possible
+       using --remote and --remote-expr command-line arguments.
+
+       To  execute  a command remotely combine --remote argument with -c <com-
+       mand> or +<command>.  For example:
+
+	 vifm --remote -c 'cd /'
+	 vifm --remote '+cd /'
+
+       To change directory not using command-line mode commands one can	 spec-
+       ify paths right after --remote argument, like this:
+
+	 vifm --remote /
+	 vifm --remote ~
+	 vifm --remote /usr/bin /tmp
+
+       Evaluating  expression  remotely	 might	be useful to query information
+       about an instance, for example its location:
+
+	 vifm --remote-expr 'expand("%d")'
+
+       If there are several running instances, the  target  can	 be  specified
+       with  --server-name  option (otherwise, the first one lexicographically
+       is used):
+
+	 vifm --server-name work --remote ~/work/project
+
+       List of names of running instances can be  obtained  via	 --server-list
+       option.	Name of the current one is available via v:servername.
+
+
+       v:servername
+	      server  name  of	the  running  vifm instance.  Empty if client-
+	      server feature is disabled.
+
+Plugin
+       Plugin for using vifm in vim as a file selector.
+
+       Commands:
+
+	 :EditVifm   select a file or files to open in the current buffer.
+	 :SplitVifm  split buffer and select a file or files to open.
+	 :VsplitVifm vertically split buffer and select a  file	 or  files  to
+       open.
+	 :DiffVifm    select  a	 file  or files to compare to the current file
+       with
+		     :vert diffsplit.
+	 :TabVifm    select a file or files to open in tabs.
+
+       Each command accepts up to two arguments: left pane directory and right
+       pane  directory.	  After arguments are checked, vifm process is spawned
+       in a special "file-picker" mode.	 To pick files just open  them	either
+       by  pressing  l,	 i  or Enter keys, or by running :edit command.	 If no
+       files are selected, file under the cursor is  opened,  otherwise	 whole
+       selection is passed to the plugin and opened in vim.
+
+       The  plugin  have  only	two  settings.	 It's  a string variable named
+       g:vifm_term to let user	specify	 command  to  run  GUI	terminal.   By
+       default	it's  equal  to 'xterm -e'.  And another string variable named
+       g:vifm_exec, which equals "vifm"	 by  default  and  specifies  path  to
+       vifm's  executable.   To	 pass  arguments to vifm use g:vifm_exec_args,
+       which is empty by default.
+
+       To use the plugin copy the vifm.vim file	 to  either  the  system  wide
+       vim/plugin directory or into ~/.vim/plugin.
+
+       If  you would prefer not to use the plugin and it is in the system wide
+       plugin directory add
+
+       let loaded_vifm=1
+
+       to your ~/.vimrc file.
+
+Reserved
+       The following command names are reserved and shouldn't be used for user
+       commands.
+
+	 g[lobal]
+	 v[global]
+
+ENVIRONMENT
+       VIFM   Points to main configuration directory (usually ~/.vifm/).
+
+       MYVIFMRC
+	      Points to main configuration file (usually ~/.vifm/vifmrc).
+
+       These  environment variables are valid inside vifm and also can be used
+       to configure it by setting some of them before running vifm.
+
+       When $MYVIFMRC isn't set, it's made as $VIFM/vifmrc (exception for Win-
+       dows: vifmrc in the same directory as vifm.exe has higher priority than
+       $VIFM/vifmrc).
+
+       See "Startup" section above for more details.
+
+       VIFM_FUSE_FILE
+	      On execution of external commands this variable is  set  to  the
+	      full  path  of  file  used  to initiate FUSE mount of the closes
+	      mount point from current pane directory up.  It's not  set  when
+	      outside  FUSE  mount  point.   When vifm is used inside terminal
+	      multiplexer, it tries to set this variable as well  (it  doesn't
+	      work this way on its own).
+
+SEE ALSO
+       vifm-convert-dircolors(1), vifm-pause(1)
+
+       Website: https://vifm.info/
+       Wiki: https://wiki.vifm.info/
+
+       Esperanto translation of the documentation by Sebastian Cyprych:
+       http://cyprych.neostrada.pl/tekstoj/komputiloj/vifm-help.eo.html
+
+AUTHOR
+       Vifm was written by ksteen <ksteen@users.sourceforge.net>
+       And currently is developed by xaizek <xaizek@posteo.net>
+
+
+
+vifm 0.10		       November 11, 2018		       VIFM(1)
diff --git a/.config/vifm/vifminfo b/.config/vifm/vifminfo
@@ -0,0 +1,456 @@
+# You can edit this file by hand, but it's recommended not to do that.
+
+# Marks:
+'h
+	/home/anders/
+	..
+1556806737
+
+# Bookmarks:
+
+# TUI:
+al
+q0
+v2
+ov
+m-1
+l2
+r2
+
+# Left window history (oldest to newest):
+d/usr/share/icons/hicolor/48x48
+	apps
+3
+d/usr/share/icons/hicolor
+	48x48
+6
+d/usr/share/icons
+	Adwaita
+1
+d/usr/share/icons/Adwaita
+	48x48
+6
+d/usr/share/icons/Adwaita/48x48
+	categories
+3
+d/usr/share/icons/Adwaita
+	16x16
+2
+d/usr/share/icons/Adwaita/16x16
+	devices
+4
+d/usr/share/icons/Adwaita/16x16/devices
+	auth-smartcard-symbolic.symbolic.png
+11
+d/usr/share/icons/Adwaita/16x16
+	devices
+4
+d/usr/share/icons/Adwaita
+	22x22
+3
+d/usr/share/icons/Adwaita/22x22
+	..
+0
+d/usr/share/icons/Adwaita
+	22x22
+3
+d/usr/share/icons/Adwaita/22x22
+	devices
+1
+d/usr/share/icons/Adwaita/22x22/devices
+	audio-headset.png
+2
+d/usr/share/icons/Adwaita/22x22
+	devices
+1
+d/usr/share/icons/Adwaita
+	48x48
+6
+d/usr/share/icons/Adwaita/48x48
+	devices
+4
+d/usr/share/icons/Adwaita/48x48/devices
+	audio-headphones.png
+4
+d/usr/share/icons/Adwaita/48x48
+	devices
+4
+d/usr/share/icons/Adwaita
+	48x48
+6
+d/usr/share/icons
+	hicolor
+4
+d/usr/share/icons/hicolor
+	48x48
+6
+d/usr/share/icons/hicolor/48x48
+	apps
+3
+d/usr/share/icons/hicolor/48x48/apps
+	keepassxc.png
+17
+d/usr/share/icons/hicolor/48x48
+	apps
+3
+d/usr/share/icons/hicolor
+	48x48
+6
+d/usr/share/icons
+	hicolor
+4
+d/usr/share
+	icons
+33
+d/usr
+	share
+8
+d/
+	keybase
+5
+d/keybase
+	public
+2
+d/keybase/public
+	scienta
+2
+d/keybase/public/scienta
+	
+2
+d/keybase
+	..
+0
+d/
+	home
+4
+d/home
+	anders
+1
+d/home/anders
+	.config
+2
+d/home/anders/Wallpapers
+	matrix.jpg
+13
+d/
+	home
+4
+d/home
+	anders
+1
+d/home/anders
+	.config
+2
+d/home
+	anders
+1
+d/
+	home
+4
+d/home
+	anders
+1
+d/home/anders
+	.config
+2
+d/home/anders/.config
+	Keybase
+1
+d/home/anders/.config/Keybase
+	..
+0
+d/home/anders
+	Repos
+15
+d/
+	tmp
+17
+d/tmp
+	..
+0
+d/
+	home
+4
+d/home
+	anders
+1
+d/home/anders
+	Repos
+15
+d/home
+	anders
+1
+d/
+	home
+4
+d/home
+	anders
+1
+d/home/anders
+	Downloads
+13
+d/home/anders/Downloads
+	hq-pfSense-UDP4-1194-config.ovpn
+7
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	..
+0
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	..
+0
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	..
+0
+d/home/anders
+	Documents
+12
+d/home
+	anders
+1
+d/
+	home
+4
+d/home/anders
+	Documents
+12
+d/home
+	anders
+1
+d/
+	home
+4
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	..
+0
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	..
+0
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	..
+0
+d/home/anders
+	Scripts
+16
+d/home
+	anders
+1
+d/home/anders
+	Scripts
+16
+d/home/anders/Scripts
+	.scriptmenu
+1
+d/home/anders
+	Documents
+12
+d/home/anders/Scripts
+	.scriptmenu
+1
+d/home/anders
+	Documents
+12
+d/home/anders/Scripts
+	.scriptmenu
+1
+d/home/anders
+	Downloads
+13
+d/home/anders/Downloads
+	dunstrc1
+6
+d/home/anders
+	.config
+2
+d/home/anders/.config
+	chromium
+4
+d/usr/share
+	doc
+4
+d/usr/share/doc
+	polybar
+36
+d/usr/share/doc/polybar
+	config
+1
+d/home/anders
+	Documents
+12
+d/home
+	anders
+1
+d/
+	keybase
+5
+d/keybase
+	private
+1
+d/keybase/private
+	andersuno
+1
+d/keybase/private/andersuno
+	test
+1
+d/keybase/private
+	andersuno
+1
+d/keybase
+	private
+1
+d/home/anders
+	Documents
+12
+d
+
+# Right window history (oldest to newest):
+D/home/anders/tmp
+	keybase
+3
+D/home/anders/.config/vifm/scripts
+	..
+0
+D/home/anders/.config/vifm
+	..
+0
+D/home/anders/.config
+	vifm
+13
+D/home/anders
+	..
+0
+D/home/anders/tmp
+	anders
+1
+D/home/anders
+	Downloads
+13
+D/home/anders/Downloads
+	..
+0
+D/home/anders
+	Documents
+12
+D/home/anders/Documents
+	iptelefoni
+1
+D/home/anders/Documents/iptelefoni
+	linl_2018-09-11_10-02-19_28.pdf
+5
+D/home/anders/Documents
+	iptelefoni
+1
+D/home/anders
+	Documents
+12
+D/home/anders/Documents
+	netsec
+2
+D/home/anders/Documents/netsec
+	linl_2018-06-20_15-47-17_31.pdf
+3
+D/home/anders/Documents
+	netsec
+2
+D/home/anders/Documents/netsec
+	linl_2018-06-20_15-47-17_31.pdf
+3
+D/home/anders
+	.config
+2
+D/home/anders/.config
+	vifm
+23
+D/home/anders
+	.config
+2
+D/home/anders/.config
+	polybar
+16
+D/home/anders/.config/polybar
+	..
+0
+D
+
+# Command line history (oldest to newest):
+:screen
+:goto ~
+:goto ~/
+:goto ~/.
+:g
+:rename Projekt
+:rename Projekt projekt
+:rename projekt
+:echo
+:/home
+:goto /home/
+: 2h
+:2h
+:goto /tmp
+:goto /home
+:goto /home/anders/
+:goto /
+:goto /home/anders/Documents/
+:goto /usr/share/doc/
+:q
+
+# Search history (oldest to newest):
+/W
+/ico
+/doc
+/pol
+
+# Prompt history (oldest to newest):
+pnetsece
+pnetsec
+
+# Local filter history (oldest to newest):
+
+# Registers:
+""/home/anders/.local/share/vifm/Trash/000_linl_2017-09-18_08-27-06_10.pdf
+""/home/anders/.local/share/vifm/Trash/000_linl_2018-06-20_15-47-17_31.pdf
+""/home/anders/.local/share/vifm/Trash/000_linl_2018-09-11_10-02-19_14.pdf
+
+# Directory stack (oldest to newest):
+
+# Trash content:
+t/home/anders/.local/share/vifm/Trash/000_linl_2017-09-11_13-39-43_1.pdf
+	/home/anders/Downloads/linl_2017-09-11_13-39-43_1.pdf
+t/home/anders/.local/share/vifm/Trash/000_linl_2018-06-20_15-47-17_15.pdf
+	/home/anders/Downloads/linl_2018-06-20_15-47-17_15.pdf
+t/home/anders/.local/share/vifm/Trash/000_linl_2018-09-11_10-02-19_28.pdf
+	/home/anders/Downloads/linl_2018-09-11_10-02-19_28.pdf
+t/home/anders/.local/share/vifm/Trash/000_linl_2017-09-18_08-27-06_10.pdf
+	/home/anders/Downloads/linl_2017-09-18_08-27-06_10.pdf
+t/home/anders/.local/share/vifm/Trash/000_linl_2018-06-20_15-47-17_31.pdf
+	/home/anders/Downloads/linl_2018-06-20_15-47-17_31.pdf
+t/home/anders/.local/share/vifm/Trash/000_linl_2018-09-11_10-02-19_14.pdf
+	/home/anders/Downloads/linl_2018-09-11_10-02-19_14.pdf
+
+# State:
+f
+i1
+[.0
+[F
+F
+I1
+].0
+]F
+s0
diff --git a/.config/vifm/vifmrc b/.config/vifm/vifmrc
@@ -0,0 +1,527 @@
+"  ____ _____
+" |  _ \_   _|  Derek Taylor (DistroTube)
+" | | | || |    http://www.youtube.com/c/DistroTube
+" | |_| || |    http://www.gitlab.com/dwt1/
+" |____/ |_|
+
+" vim: filetype=vifm :
+" Sample configuration file for vifm (last updated: 20 July, 2018)
+" You can edit this file by hand.
+" The " character at the beginning of a line comments out the line.
+" Blank lines are ignored.
+" The basic format for each item is shown with an example.
+
+" ------------------------------------------------------------------------------
+
+" This is the actual command used to start vi.  The default is vim.
+" If you would like to use another vi clone such as Elvis or Vile
+" you will need to change this setting.
+
+set vicmd=vim
+" set vicmd=elvis\ -G\ termcap
+" set vicmd=vile
+
+" This makes vifm perform file operations on its own instead of relying on
+" standard utilities like `cp`.  While using `cp` and alike is a more universal
+" solution, it's also much slower when processing large amounts of files and
+" doesn't support progress measuring.
+
+set syscalls
+
+" Trash Directory
+" The default is to move files that are deleted with dd or :d to
+" the trash directory.  If you change this you will not be able to move
+" files by deleting them and then using p to put the file in the new location.
+" I recommend not changing this until you are familiar with vifm.
+" This probably shouldn't be an option.
+
+set trash
+
+" This is how many directories to store in the directory history.
+
+set history=100
+
+" Automatically resolve symbolic links on l or Enter.
+
+set nofollowlinks
+
+" With this option turned on you can run partially entered commands with
+" unambiguous beginning using :! (e.g. :!Te instead of :!Terminal or :!Te<tab>).
+
+" set fastrun
+
+" Natural sort of (version) numbers within text.
+
+set sortnumbers
+
+" Maximum number of changes that can be undone.
+
+set undolevels=100
+
+" If you installed the vim.txt help file set vimhelp.
+" If would rather use a plain text help file set novimhelp.
+
+set novimhelp
+
+" If you would like to run an executable file when you
+" press return on the file name set this.
+
+set norunexec
+
+" Selected color scheme
+
+colorscheme Default
+
+" Format for displaying time in file list. For example:
+" TIME_STAMP_FORMAT=%m/%d-%H:%M
+" See man date or man strftime for details.
+
+set timefmt=%m/%d\ %H:%M
+
+" Show list of matches on tab completion in command-line mode
+
+set wildmenu
+
+" Display completions in a form of popup with descriptions of the matches
+
+set wildstyle=popup
+
+" Display suggestions in normal, visual and view modes for keys, marks and
+" registers (at most 5 files).  In other view, when available.
+
+set suggestoptions=normal,visual,view,otherpane,keys,marks,registers
+
+" Ignore case in search patterns unless it contains at least one uppercase
+" letter
+
+set ignorecase
+set smartcase
+
+" Don't highlight search results automatically
+
+set nohlsearch
+
+" Use increment searching (search while typing)
+set incsearch
+
+" Try to leave some space from cursor to upper/lower border in lists
+
+set scrolloff=4
+
+" Don't do too many requests to slow file systems
+
+if !has('win')
+    set slowfs=curlftpfs
+endif
+
+" Set custom status line look
+
+set statusline="  Hint: %z%= %A %10u:%-7g %15s %20d  "
+
+" Set line numbers to show
+
+" ------------------------------------------------------------------------------
+
+" :mark mark /full/directory/path [filename]
+
+mark h ~/
+
+" ------------------------------------------------------------------------------
+
+" :com[mand][!] command_name action
+" The following macros can be used in a command
+" %a is replaced with the user arguments.
+" %c the current file under the cursor.
+" %C the current file under the cursor in the other directory.
+" %f the current selected file, or files.
+" %F the current selected file, or files in the other directory.
+" %b same as %f %F.
+" %d the current directory name.
+" %D the other window directory name.
+" %m run the command in a menu window
+
+command! df df -h %m 2> /dev/null
+command! diff vim -d %f %F
+command! zip zip -r %f.zip %f
+command! run !! ./%f
+command! make !!make %a
+command! mkcd :mkdir %a | cd %a
+command! vgrep vim "+grep %a"
+command! reload :write | restart
+
+" ------------------------------------------------------------------------------
+
+" The file type is for the default programs to be used with
+" a file extension.
+" :filetype pattern1,pattern2 defaultprogram,program2
+" :fileviewer pattern1,pattern2 consoleviewer
+" The other programs for the file type can be accessed with the :file command
+" The command macros %f, %F, %d, %F may be used in the commands.
+" The %a macro is ignored.  To use a % you must put %%.
+
+" For automated FUSE mounts, you must register an extension with :file[x]type
+" in one of following formats:
+"
+" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables
+" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime.
+" A sample line might look like this:
+" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
+"
+" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables
+" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime.
+" A sample line might look like this:
+" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
+" %PARAM value is filled from the first line of file (whole line).
+" Example first line for SshMount filetype: root@127.0.0.1:/
+"
+" You can also add %CLEAR if you want to clear screen before running FUSE
+" program.
+
+" Pdf
+filextype *.pdf zathura %c %i &, apvlv %c, xpdf %c
+fileviewer *.pdf
+        \ vifmimg pdfpreview %px %py %pw %ph %c
+        \ %pc
+        \ vifmimg clear
+        " \ pdftotext -nopgbrk %c -
+
+" PostScript
+filextype *.ps,*.eps,*.ps.gz
+        \ {View in zathura}
+        \ zathura %f,
+        \ {View in gv}
+        \ gv %c %i &,
+
+" Djvu
+filextype *.djvu
+        \ {View in zathura}
+        \ zathura %f,
+        \ {View in apvlv}
+        \ apvlv %f,
+
+" Audio
+filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus
+       \ {Play using ffplay}
+       \ ffplay -nodisp -autoexit %c,
+       \ {Play using MPlayer}
+       \ mplayer %f,
+fileviewer *.mp3 mp3info
+fileviewer *.flac soxi
+
+" Video
+filextype *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
+         \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
+         \*.as[fx]
+        \ {View using ffplay}
+        \ ffplay -fs -autoexit %f,
+        \ {View using Dragon}
+        \ dragon %f:p,
+        \ {View using mplayer}
+        \ mplayer %f,
+fileviewer *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
+          \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
+          \*.as[fx]
+        \ vifmimg videopreview %px %py %pw %ph %c
+        \ %pc
+        \ vifmimg clear
+        " \ ffprobe -pretty %c 2>&1
+
+" Web
+filextype *.html,*.htm
+        \ {Open with dwb}
+        \ dwb %f %i &,
+        \ {Open with firefox}
+        \ firefox %f &,
+        \ {Open with uzbl}
+        \ uzbl-browser %f %i &,
+filetype *.html,*.htm links, lynx
+
+" Object
+filetype *.o nm %f | less
+
+" Man page
+filetype *.[1-8] man ./%c
+fileviewer *.[1-8] man ./%c | col -b
+
+" Images
+filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
+        \ {View in sxiv}
+        \ sxiv -ia %c %d &,
+        \ {View in imv}
+        \ imv -b 1D2330 -d %d &,
+        \ {View in feh}
+        \ feh %d &,
+        \ {View in cacaview}
+        \ cacaview %c &,
+fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.xpm
+        \ vifmimg draw %px %py %pw %ph %c
+        \ %pc
+        \ vifmimg clear
+        " Get w3m image previews inside vifm
+		" \ imgt %px %py %pw %ph %c
+        " \ %pc
+        " \ imgc %px %py %pw %ph   NOT NEEDED IN XTERM
+fileviewer *.gif
+        \ vifmimg gifpreview %px %py %pw %ph %c
+        \ %pc
+        \ vifmimg clear
+
+" OpenRaster
+filextype *.ora
+        \ {Edit in MyPaint}
+        \ mypaint %f,
+
+" Mindmap
+filextype *.vym
+        \ {Open with VYM}
+        \ vym %f &,
+
+" MD5
+filetype *.md5
+       \ {Check MD5 hash sum}
+       \ md5sum -c %f %S,
+
+" SHA1
+filetype *.sha1
+       \ {Check SHA1 hash sum}
+       \ sha1sum -c %f %S,
+
+" SHA256
+filetype *.sha256
+       \ {Check SHA256 hash sum}
+       \ sha256sum -c %f %S,
+
+" SHA512
+filetype *.sha512
+       \ {Check SHA512 hash sum}
+       \ sha512sum -c %f %S,
+
+" GPG signature
+filetype *.asc
+       \ {Check signature}
+       \ !!gpg --verify %c,
+
+" Torrent
+filetype *.torrent ktorrent %f &
+fileviewer *.torrent dumptorrent -v %c
+
+" FuseZipMount
+filetype *.zip,*.jar,*.war,*.ear,*.oxt,*.apkg
+       \ {Mount with fuse-zip}
+       \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
+       \ {View contents}
+       \ zip -sf %c | less,
+       \ {Extract here}
+       \ tar -xf %c,
+fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c
+
+" ArchiveMount
+filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz
+       \ {Mount with archivemount}
+       \ FUSE_MOUNT|archivemount %SOURCE_FILE %DESTINATION_DIR,
+fileviewer *.tgz,*.tar.gz tar -tzf %c
+fileviewer *.tar.bz2,*.tbz2 tar -tjf %c
+fileviewer *.tar.txz,*.txz xz --list %c
+fileviewer *.tar tar -tf %c
+
+" Rar2FsMount and rar archives
+filetype *.rar
+       \ {Mount with rar2fs}
+       \ FUSE_MOUNT|rar2fs %SOURCE_FILE %DESTINATION_DIR,
+fileviewer *.rar unrar v %c
+
+" IsoMount
+filetype *.iso
+       \ {Mount with fuseiso}
+       \ FUSE_MOUNT|fuseiso %SOURCE_FILE %DESTINATION_DIR,
+
+" SshMount
+filetype *.ssh
+       \ {Mount with sshfs}
+       \ FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR %FOREGROUND,
+
+" FtpMount
+filetype *.ftp
+       \ {Mount with curlftpfs}
+       \ FUSE_MOUNT2|curlftpfs -o ftp_port=-,,disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND,
+
+" Fuse7z and 7z archives
+filetype *.7z
+       \ {Mount with fuse-7z}
+       \ FUSE_MOUNT|fuse-7z %SOURCE_FILE %DESTINATION_DIR,
+fileviewer *.7z 7z l %c
+
+" Office files
+filextype *.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx libreoffice %f &
+fileviewer *.doc catdoc %c
+fileviewer *.docx docx2txt.pl %f -
+
+" TuDu files
+filetype *.tudu tudu -f %c
+
+" Qt projects
+filextype *.pro qtcreator %f &
+
+" Directories
+filextype */
+        \ {View in thunar}
+        \ Thunar %f &,
+
+" Syntax highlighting in preview
+"
+" Explicitly set highlight type for some extensions
+"
+" 256-color terminal
+" fileviewer *.[ch],*.[ch]pp highlight -O xterm256 -s dante --syntax c %c
+" fileviewer Makefile,Makefile.* highlight -O xterm256 -s dante --syntax make %c
+"
+" 16-color terminal
+" fileviewer *.c,*.h highlight -O ansi -s dante %c
+"
+" Or leave it for automatic detection
+"
+" fileviewer *[^/] pygmentize -O style=monokai -f console256 -g
+
+" Displaying pictures in terminal
+"
+" fileviewer *.jpg,*.png shellpic %c
+
+" Open all other files with default system programs (you can also remove all
+" :file[x]type commands above to ensure they don't interfere with system-wide
+" settings).  By default all unknown files are opened with 'vi[x]cmd'
+" uncommenting one of lines below will result in ignoring 'vi[x]cmd' option
+" for unknown file types.
+" For *nix:
+" filetype * xdg-open
+" For OS X:
+" filetype * open
+" For Windows:
+" filetype * start, explorer
+
+" GETTING ICONS TO DISPLAY IN VIFM
+" You need the next 14 lines!
+
+"   ::*.sh::, ::*.[hc]pp::, ::*.[hc]::,
+
+" file types
+set classify=' :dir:/, :exe:, :reg:, :link:'
+" various file names
+set classify+=' ::../::, ::/^copying|license$/::, ::.git/,,*.git/::, ::*.epub,,*.fb2,,*.djvu::, ::*.pdf::, ::*.htm,,*.html,,**.[sx]html,,*.xml::'
+" archives
+set classify+=' ::*.7z,,*.ace,,*.arj,,*.bz2,,*.cpio,,*.deb,,*.dz,,*.gz,,*.jar,,*.lzh,,*.lzma,,*.rar,,*.rpm,,*.rz,,*.tar,,*.taz,,*.tb2,,*.tbz,,*.tbz2,,*.tgz,,*.tlz,,*.trz,,*.txz,,*.tz,,*.tz2,,*.xz,,*.z,,*.zip,,*.zoo::'
+" images
+set classify+=' ::*.bmp,,*.gif,,*.jpeg,,*.jpg,,*.ico,,*.png,,*.ppm,,*.svg,,*.svgz,,*.tga,,*.tif,,*.tiff,,*.xbm,,*.xcf,,*.xpm,,*.xspf,,*.xwd::'
+" audio
+set classify+=' ::*.aac,,*.anx,,*.asf,,*.au,,*.axa,,*.flac,,*.m2a,,*.m4a,,*.mid,,*.midi,,*.mp3,,*.mpc,,*.oga,,*.ogg,,*.ogx,,*.ra,,*.ram,,*.rm,,*.spx,,*.wav,,*.wma,,*.ac3::'
+" media
+set classify+=' ::*.avi,,*.ts,,*.axv,,*.divx,,*.m2v,,*.m4p,,*.m4v,,.mka,,*.mkv,,*.mov,,*.mp4,,*.flv,,*.mp4v,,*.mpeg,,*.mpg,,*.nuv,,*.ogv,,*.pbm,,*.pgm,,*.qt,,*.vob,,*.wmv,,*.xvid::'
+" office files
+set classify+=' ::*.doc,,*.docx::, ::*.xls,,*.xls[mx]::, ::*.pptx,,*.ppt::'
+
+" ------------------------------------------------------------------------------
+
+" What should be saved automatically between vifm runs
+" Like in previous versions of vifm
+" set vifminfo=options,filetypes,commands,bookmarks,dhistory,state,cs
+" Like in vi
+set vifminfo=dhistory,savedirs,chistory,state,tui,shistory,
+    \phistory,fhistory,dirstack,registers,bookmarks,bmarks
+
+" ------------------------------------------------------------------------------
+
+" Examples of configuring both panels
+
+" Customize view columns a bit (enable ellipsis for truncated file names)
+"
+" set viewcolumns=-{name}..,6{}.
+
+" Filter-out build and temporary files
+"
+" filter! /^.*\.(lo|o|d|class|py[co])$|.*~$/
+
+" ------------------------------------------------------------------------------
+
+" Sample mappings
+
+" Start shell in current directory
+nnoremap s :shell<cr>
+
+" Display sorting dialog
+nnoremap S :sort<cr>
+
+" Toggle visibility of preview window
+nnoremap w :view<cr>
+vnoremap w :view<cr>gv
+
+" Open file in existing instance of gvim
+nnoremap o :!gvim --remote-tab-silent %f<cr>
+" Open file in new instance of gvim
+nnoremap O :!gvim %f<cr>
+
+" Open file in the background using its default program
+nnoremap gb :file &<cr>l
+
+" Goto home
+nnoremap gh :goto /home/anders/Documents/<cr>
+nnoremap gs :goto /home/anders/Scripts/.scriptmenu<cr>
+
+" Yank current directory path into the clipboard
+nnoremap yd :!echo %d | xclip %i<cr>
+
+" Yank current file path into the clipboard
+nnoremap yf :!echo %c:p | xclip %i<cr>
+
+" Mappings for faster renaming
+nnoremap I cw<c-a>
+nnoremap cc cw<c-u>
+nnoremap A cw
+
+" Open console in current directory
+nnoremap ,t :!xterm &<cr>
+
+" Open editor to edit vifmrc and apply settings after returning to vifm
+nnoremap ,c :write | edit $MYVIFMRC | restart<cr>
+" Open gvim to edit vifmrc
+nnoremap ,C :!gvim --remote-tab-silent $MYVIFMRC &<cr>
+
+" Toggle wrap setting on ,w key
+nnoremap ,w :set wrap!<cr>
+
+" Example of standard two-panel file managers mappings
+nnoremap <f3> :!less %f<cr>
+nnoremap <f4> :edit<cr>
+nnoremap <f5> :copy<cr>
+nnoremap <f6> :move<cr>
+nnoremap <f7> :mkdir<space>
+nnoremap <f8> :delete<cr>
+
+" Faster jk movement
+nnoremap J 3j
+nnoremap K 3k
+vnoremap J 3j
+vnoremap K 3k
+
+" ------------------------------------------------------------------------------
+
+" Various customization examples
+
+" Use ag (the silver searcher) instead of grep
+"
+" set grepprg='ag --line-numbers %i %a %s'
+
+" Add additional place to look for executables
+"
+" let $PATH = $HOME.'/bin/fuse:'.$PATH
+
+" Block particular shortcut
+"
+" nnoremap <left> <nop>
+
+" Export IPC name of current instance as environment variable and use it to
+" communicate with the instance later.
+"
+" It can be used in some shell script that gets run from inside vifm, for
+" example, like this:
+"     vifm --server-name "$VIFM_SERVER_NAME" --remote +"cd '$PWD'"
+"
+" let $VIFM_SERVER_NAME = v:servername
diff --git a/.config/vifm/vifmrc.orig b/.config/vifm/vifmrc.orig
@@ -0,0 +1,471 @@
+" vim: filetype=vifm :
+" Sample configuration file for vifm (last updated: 20 July, 2018)
+" You can edit this file by hand.
+" The " character at the beginning of a line comments out the line.
+" Blank lines are ignored.
+" The basic format for each item is shown with an example.
+
+" ------------------------------------------------------------------------------
+
+" This is the actual command used to start vi.  The default is vim.
+" If you would like to use another vi clone such as Elvis or Vile
+" you will need to change this setting.
+
+set vicmd=vim
+" set vicmd=elvis\ -G\ termcap
+" set vicmd=vile
+
+" This makes vifm perform file operations on its own instead of relying on
+" standard utilities like `cp`.  While using `cp` and alike is a more universal
+" solution, it's also much slower when processing large amounts of files and
+" doesn't support progress measuring.
+
+set syscalls
+
+" Trash Directory
+" The default is to move files that are deleted with dd or :d to
+" the trash directory.  If you change this you will not be able to move
+" files by deleting them and then using p to put the file in the new location.
+" I recommend not changing this until you are familiar with vifm.
+" This probably shouldn't be an option.
+
+set trash
+
+" This is how many directories to store in the directory history.
+
+set history=100
+
+" Automatically resolve symbolic links on l or Enter.
+
+set nofollowlinks
+
+" With this option turned on you can run partially entered commands with
+" unambiguous beginning using :! (e.g. :!Te instead of :!Terminal or :!Te<tab>).
+
+" set fastrun
+
+" Natural sort of (version) numbers within text.
+
+set sortnumbers
+
+" Maximum number of changes that can be undone.
+
+set undolevels=100
+
+" If you installed the vim.txt help file set vimhelp.
+" If would rather use a plain text help file set novimhelp.
+
+set novimhelp
+
+" If you would like to run an executable file when you
+" press return on the file name set this.
+
+set norunexec
+
+" Selected color scheme
+
+colorscheme Default
+
+" Format for displaying time in file list. For example:
+" TIME_STAMP_FORMAT=%m/%d-%H:%M
+" See man date or man strftime for details.
+
+set timefmt=%m/%d\ %H:%M
+
+" Show list of matches on tab completion in command-line mode
+
+set wildmenu
+
+" Display completions in a form of popup with descriptions of the matches
+
+set wildstyle=popup
+
+" Display suggestions in normal, visual and view modes for keys, marks and
+" registers (at most 5 files).  In other view, when available.
+
+set suggestoptions=normal,visual,view,otherpane,keys,marks,registers
+
+" Ignore case in search patterns unless it contains at least one uppercase
+" letter
+
+set ignorecase
+set smartcase
+
+" Don't highlight search results automatically
+
+set nohlsearch
+
+" Use increment searching (search while typing)
+set incsearch
+
+" Try to leave some space from cursor to upper/lower border in lists
+
+set scrolloff=4
+
+" Don't do too many requests to slow file systems
+
+if !has('win')
+    set slowfs=curlftpfs
+endif
+
+" Set custom status line look
+
+set statusline="  Hint: %z%= %A %10u:%-7g %15s %20d  "
+
+" ------------------------------------------------------------------------------
+
+" :mark mark /full/directory/path [filename]
+
+mark b ~/bin/
+mark h ~/
+
+" ------------------------------------------------------------------------------
+
+" :com[mand][!] command_name action
+" The following macros can be used in a command
+" %a is replaced with the user arguments.
+" %c the current file under the cursor.
+" %C the current file under the cursor in the other directory.
+" %f the current selected file, or files.
+" %F the current selected file, or files in the other directory.
+" %b same as %f %F.
+" %d the current directory name.
+" %D the other window directory name.
+" %m run the command in a menu window
+
+command! df df -h %m 2> /dev/null
+command! diff vim -d %f %F
+command! zip zip -r %f.zip %f
+command! run !! ./%f
+command! make !!make %a
+command! mkcd :mkdir %a | cd %a
+command! vgrep vim "+grep %a"
+command! reload :write | restart
+
+" ------------------------------------------------------------------------------
+
+" The file type is for the default programs to be used with
+" a file extension.
+" :filetype pattern1,pattern2 defaultprogram,program2
+" :fileviewer pattern1,pattern2 consoleviewer
+" The other programs for the file type can be accessed with the :file command
+" The command macros %f, %F, %d, %F may be used in the commands.
+" The %a macro is ignored.  To use a % you must put %%.
+
+" For automated FUSE mounts, you must register an extension with :file[x]type
+" in one of following formats:
+"
+" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables
+" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime.
+" A sample line might look like this:
+" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
+"
+" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables
+" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime.
+" A sample line might look like this:
+" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
+" %PARAM value is filled from the first line of file (whole line).
+" Example first line for SshMount filetype: root@127.0.0.1:/
+"
+" You can also add %CLEAR if you want to clear screen before running FUSE
+" program.
+
+" Pdf
+filextype *.pdf zathura %c %i &, apvlv %c, xpdf %c
+fileviewer *.pdf pdftotext -nopgbrk %c -
+
+" PostScript
+filextype *.ps,*.eps,*.ps.gz
+        \ {View in zathura}
+        \ zathura %f,
+        \ {View in gv}
+        \ gv %c %i &,
+
+" Djvu
+filextype *.djvu
+        \ {View in zathura}
+        \ zathura %f,
+        \ {View in apvlv}
+        \ apvlv %f,
+
+" Audio
+filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus
+       \ {Play using ffplay}
+       \ ffplay -nodisp -autoexit %c,
+       \ {Play using MPlayer}
+       \ mplayer %f,
+fileviewer *.mp3 mp3info
+fileviewer *.flac soxi
+
+" Video
+filextype *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
+         \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
+         \*.as[fx]
+        \ {View using ffplay}
+        \ ffplay -fs -autoexit %f,
+        \ {View using Dragon}
+        \ dragon %f:p,
+        \ {View using mplayer}
+        \ mplayer %f,
+fileviewer *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
+          \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
+          \*.as[fx]
+         \ ffprobe -pretty %c 2>&1
+
+" Web
+filextype *.html,*.htm
+        \ {Open with dwb}
+        \ dwb %f %i &,
+        \ {Open with firefox}
+        \ firefox %f &,
+        \ {Open with uzbl}
+        \ uzbl-browser %f %i &,
+filetype *.html,*.htm links, lynx
+
+" Object
+filetype *.o nm %f | less
+
+" Man page
+filetype *.[1-8] man ./%c
+fileviewer *.[1-8] man ./%c | col -b
+
+" Images
+filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
+        \ {View in sxiv}
+        \ sxiv %f,
+        \ {View in gpicview}
+        \ gpicview %c,
+        \ {View in shotwell}
+        \ shotwell,
+fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
+         \ convert -identify %f -verbose /dev/null
+
+" OpenRaster
+filextype *.ora
+        \ {Edit in MyPaint}
+        \ mypaint %f,
+
+" Mindmap
+filextype *.vym
+        \ {Open with VYM}
+        \ vym %f &,
+
+" MD5
+filetype *.md5
+       \ {Check MD5 hash sum}
+       \ md5sum -c %f %S,
+
+" SHA1
+filetype *.sha1
+       \ {Check SHA1 hash sum}
+       \ sha1sum -c %f %S,
+
+" SHA256
+filetype *.sha256
+       \ {Check SHA256 hash sum}
+       \ sha256sum -c %f %S,
+
+" SHA512
+filetype *.sha512
+       \ {Check SHA512 hash sum}
+       \ sha512sum -c %f %S,
+
+" GPG signature
+filetype *.asc
+       \ {Check signature}
+       \ !!gpg --verify %c,
+
+" Torrent
+filetype *.torrent ktorrent %f &
+fileviewer *.torrent dumptorrent -v %c
+
+" FuseZipMount
+filetype *.zip,*.jar,*.war,*.ear,*.oxt,*.apkg
+       \ {Mount with fuse-zip}
+       \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
+       \ {View contents}
+       \ zip -sf %c | less,
+       \ {Extract here}
+       \ tar -xf %c,
+fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c
+
+" ArchiveMount
+filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz
+       \ {Mount with archivemount}
+       \ FUSE_MOUNT|archivemount %SOURCE_FILE %DESTINATION_DIR,
+fileviewer *.tgz,*.tar.gz tar -tzf %c
+fileviewer *.tar.bz2,*.tbz2 tar -tjf %c
+fileviewer *.tar.txz,*.txz xz --list %c
+fileviewer *.tar tar -tf %c
+
+" Rar2FsMount and rar archives
+filetype *.rar
+       \ {Mount with rar2fs}
+       \ FUSE_MOUNT|rar2fs %SOURCE_FILE %DESTINATION_DIR,
+fileviewer *.rar unrar v %c
+
+" IsoMount
+filetype *.iso
+       \ {Mount with fuseiso}
+       \ FUSE_MOUNT|fuseiso %SOURCE_FILE %DESTINATION_DIR,
+
+" SshMount
+filetype *.ssh
+       \ {Mount with sshfs}
+       \ FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR %FOREGROUND,
+
+" FtpMount
+filetype *.ftp
+       \ {Mount with curlftpfs}
+       \ FUSE_MOUNT2|curlftpfs -o ftp_port=-,,disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND,
+
+" Fuse7z and 7z archives
+filetype *.7z
+       \ {Mount with fuse-7z}
+       \ FUSE_MOUNT|fuse-7z %SOURCE_FILE %DESTINATION_DIR,
+fileviewer *.7z 7z l %c
+
+" Office files
+filextype *.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx libreoffice %f &
+fileviewer *.doc catdoc %c
+fileviewer *.docx docx2txt.pl %f -
+
+" TuDu files
+filetype *.tudu tudu -f %c
+
+" Qt projects
+filextype *.pro qtcreator %f &
+
+" Directories
+filextype */
+        \ {View in thunar}
+        \ Thunar %f &,
+
+" Syntax highlighting in preview
+"
+" Explicitly set highlight type for some extensions
+"
+" 256-color terminal
+" fileviewer *.[ch],*.[ch]pp highlight -O xterm256 -s dante --syntax c %c
+" fileviewer Makefile,Makefile.* highlight -O xterm256 -s dante --syntax make %c
+"
+" 16-color terminal
+" fileviewer *.c,*.h highlight -O ansi -s dante %c
+"
+" Or leave it for automatic detection
+"
+" fileviewer *[^/] pygmentize -O style=monokai -f console256 -g
+
+" Displaying pictures in terminal
+"
+" fileviewer *.jpg,*.png shellpic %c
+
+" Open all other files with default system programs (you can also remove all
+" :file[x]type commands above to ensure they don't interfere with system-wide
+" settings).  By default all unknown files are opened with 'vi[x]cmd'
+" uncommenting one of lines below will result in ignoring 'vi[x]cmd' option
+" for unknown file types.
+" For *nix:
+" filetype * xdg-open
+" For OS X:
+" filetype * open
+" For Windows:
+" filetype * start, explorer
+
+" ------------------------------------------------------------------------------
+
+" What should be saved automatically between vifm runs
+" Like in previous versions of vifm
+" set vifminfo=options,filetypes,commands,bookmarks,dhistory,state,cs
+" Like in vi
+set vifminfo=dhistory,savedirs,chistory,state,tui,shistory,
+    \phistory,fhistory,dirstack,registers,bookmarks,bmarks
+
+" ------------------------------------------------------------------------------
+
+" Examples of configuring both panels
+
+" Customize view columns a bit (enable ellipsis for truncated file names)
+"
+" set viewcolumns=-{name}..,6{}.
+
+" Filter-out build and temporary files
+"
+" filter! /^.*\.(lo|o|d|class|py[co])$|.*~$/
+
+" ------------------------------------------------------------------------------
+
+" Sample mappings
+
+" Start shell in current directory
+nnoremap s :shell<cr>
+
+" Display sorting dialog
+nnoremap S :sort<cr>
+
+" Toggle visibility of preview window
+nnoremap w :view<cr>
+vnoremap w :view<cr>gv
+
+" Open file in existing instance of gvim
+nnoremap o :!gvim --remote-tab-silent %f<cr>
+" Open file in new instance of gvim
+nnoremap O :!gvim %f<cr>
+
+" Open file in the background using its default program
+nnoremap gb :file &<cr>l
+
+" Yank current directory path into the clipboard
+nnoremap yd :!echo %d | xclip %i<cr>
+
+" Yank current file path into the clipboard
+nnoremap yf :!echo %c:p | xclip %i<cr>
+
+" Mappings for faster renaming
+nnoremap I cw<c-a>
+nnoremap cc cw<c-u>
+nnoremap A cw
+
+" Open console in current directory
+nnoremap ,t :!xterm &<cr>
+
+" Open editor to edit vifmrc and apply settings after returning to vifm
+nnoremap ,c :write | edit $MYVIFMRC | restart<cr>
+" Open gvim to edit vifmrc
+nnoremap ,C :!gvim --remote-tab-silent $MYVIFMRC &<cr>
+
+" Toggle wrap setting on ,w key
+nnoremap ,w :set wrap!<cr>
+
+" Example of standard two-panel file managers mappings
+nnoremap <f3> :!less %f<cr>
+nnoremap <f4> :edit<cr>
+nnoremap <f5> :copy<cr>
+nnoremap <f6> :move<cr>
+nnoremap <f7> :mkdir<space>
+nnoremap <f8> :delete<cr>
+
+" ------------------------------------------------------------------------------
+
+" Various customization examples
+
+" Use ag (the silver searcher) instead of grep
+"
+" set grepprg='ag --line-numbers %i %a %s'
+
+" Add additional place to look for executables
+"
+" let $PATH = $HOME.'/bin/fuse:'.$PATH
+
+" Block particular shortcut
+"
+" nnoremap <left> <nop>
+
+" Export IPC name of current instance as environment variable and use it to
+" communicate with the instance later.
+"
+" It can be used in some shell script that gets run from inside vifm, for
+" example, like this:
+"     vifm --server-name "$VIFM_SERVER_NAME" --remote +"cd '$PWD'"
+"
+" let $VIFM_SERVER_NAME = v:servername