diff --git a/Makefile b/Makefile
index d7acc01..de784d7 100644
--- a/Makefile
+++ b/Makefile
@@ -51,6 +51,11 @@ install: all
@sed "s/VERSION/${VERSION}/g" < dwm.1 > ${DESTDIR}${MANPREFIX}/man1/dwm.1
@chmod 644 ${DESTDIR}${MANPREFIX}/man1/dwm.1
+config:
+ @mkdir -p ${HOME}/.config/dunst
+ @cp -rv dunstrc ${HOME}/.config/dunst/dunstrc
+ @cp -rv Xinitrc ${HOME}/.xinitrc
+
uninstall:
@echo removing executable file from ${DESTDIR}${PREFIX}/bin
@rm -f ${DESTDIR}${PREFIX}/bin/dwm
diff --git a/Wallpaper.jpg b/Wallpaper.jpg
index bdcff62..1c1b3ed 100644
Binary files a/Wallpaper.jpg and b/Wallpaper.jpg differ
diff --git a/config.h b/config.h
index fd7116f..e6109ff 100644
--- a/config.h
+++ b/config.h
@@ -1,3 +1,4 @@
+/* Last Update: 25-01-2020 */
static const unsigned int borderpx = 0; /* border pixel of windows */
static const unsigned int gappx = 0; /* gaps between windows */
static const unsigned int snap = 32; /* snap pixel */
@@ -23,8 +24,8 @@ static const char *colors[][3] = {
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static const Rule rules[] = {
- { "Opera", NULL, NULL, 1 << 1, False, 0 },
- { "firefox", NULL, NULL, 1 << 1, False, 0 },
+ { "Vivaldi", NULL, NULL, 1 << 1, False, 0 },
+ { "Firefox", NULL, NULL, 1 << 1, False, 0 },
{ "Thunderbird", NULL, NULL, 1 << 2, False, 0 },
{ "Steam", NULL, NULL, 1 << 3, False, 0 },
{ "Lutris", NULL, NULL, 1 << 3, False, 0 },
@@ -58,23 +59,19 @@ static const Layout layouts[] = {
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", NULL };
static const char *termcmd[] = { "st","-ce", "/bin/zsh" , NULL };
-/*static const char *print_screen_cmd[] = { "scrot", "%Y-%m-%d-%H%M%S.png", "-e", "mv $f ~/Screenshots", NULL };*/
-/*static const char *print_screen_cmd[] = { "gnome-screenshot", "-f", "/home/yorune/Screenshots/`date +%Y%m%d-%H.%M.%S.png`", NULL };
-static const char *print_screen_cmd_area[] = { "gnome-screenshot", "--area", "-f", "/home/yorune/Screenshots/`date +%Y%m%d-%H.%M.%S.png`", NULL };
-*/
static const char *print_screen_cmd[] = { "screenshot", NULL };
static const char *print_screen_cmd_area[] = { "screenshot-area", NULL };
static const char *cmdlock[] = { "slock", NULL };
static const char *dwmkill[] = { "dwm-kill", NULL };
static const char *cmusshell[] = { "st", "-ce", "cmus-shell", NULL };
static const char *ranger[] = { "st", "-ce", "ranger", NULL };
+static const char *mixer[] = { "st", "-ce", "pulsemixer", NULL };
static const char *dmenumount[] = { "dmenumount", NULL };
static const char *dmenuumount[] = { "dmenuumount", NULL };
static const char *cmusplay[] = { "cmus-remote", "-u", NULL };
static const char *cmusnext[] = { "cmus-remote", "-n", NULL };
static const char *cmusprev[] = { "cmus-remote", "-r", NULL };
static const char *shutdownpress[] = {"shut-sup-rest", "NULL" };
-static const char *pavucontrol[] = {"pavucontrol", "NULL" };
static const char *screenswitcher[] = { "screen-switcher", "NULL" };
static Key keys[] = {
@@ -98,7 +95,7 @@ static Key keys[] = {
{ MODKEY, XK_Left, focusstack, {.i = +1 } },
{ MODKEY, XK_Right, focusstack, {.i = -1 } },
{ MODKEY|ShiftMask, XK_e, spawn, {.v = shutdownpress } },
- { MODKEY, XK_o, spawn, {.v = pavucontrol } },
+ { MODKEY, XK_o, spawn, {.v = mixer } },
{ MODKEY|ShiftMask, XK_Left, setmfact, {.f = -0.05} },
{ MODKEY|ShiftMask, XK_Right, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
diff --git a/copy b/copy
index a0c474f..e3ff8d2 100755
--- a/copy
+++ b/copy
@@ -1,14 +1,6 @@
#!/bin/bash
mkdir -p ~/.config/ranger/
-mkdir -p ~/.config/fish
cp rangerrc.conf ~/.config/ranger/rc.conf
cp rifle.conf ~/.config/ranger/rifle.conf
cp tmux.conf ~/.tmux.conf
cp Xinitrc ~/.xinitrc
-#cp scope.sh ~/.config/ranger/scope.sh
-#ln -s /home/yorune/MEGA/Systems/Gentoo/configs/config.fish ~/.config.fish
-#ln -s /home/yorune/MEGA/Systems/Gentoo/configs/config.fish /home/yorune/.config/fish/config.fish
-#curl -L https://get.oh-my.fish | fish
-#curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
-#fish
-#fisher add jethrokuan/fzf
diff --git a/dunstrc b/dunstrc
index 04ff276..cae1e56 100644
--- a/dunstrc
+++ b/dunstrc
@@ -1,206 +1,196 @@
[global]
-#font = Iosevka Term 12
-font = Monospace 13
+ font = Mono 14
-# Allow a small subset of html markup:
-# bold
-# italic
-# strikethrough
-# underline
-#
-# For a complete reference see
-# .
-# If markup is not allowed, those tags will be stripped out of the
-# message.
-markup = yes
-plain_text = no
+ # Allow a small subset of html markup:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ # If markup is not allowed, those tags will be stripped out of the
+ # message.
+ allow_markup = yes
-# 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 = "%s\n%b"
+ # 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 = "%s\n%b"
-# Sort messages by urgency.
-sort = no
+ # Sort messages by urgency.
+ sort = no #yes
-# Show how many messages are currently hidden (because of geometry).
-indicate_hidden = yes
+ # Show how many messages are currently hidden (because of geometry).
+ indicate_hidden = no
-# Alignment of message text.
-# Possible values are "left", "center" and "right".
-alignment = center
+ # Alignment of message text.
+ # Possible values are "left", "center" and "right".
+ alignment = left
-# 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
+ # The frequency with which 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 = -1
+ # Show age of message if message is older than show_age_threshold
+ # seconds.
+ # Set to -1 to disable.
+ show_age_threshold = -1 #60
-# Split notifications into multiple lines if they don't fit into
-# geometry.
-word_wrap = yes
+ # 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
+ # Ignore newlines '\n' in notifications.
+ ignore_newline = no
-# 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"
+ # 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 respectively.
+ # 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 = "400x10-40+30"
-# Shrink window if it's smaller than the width. Will be ignored if
-# width is 0.
-shrink = no
+ # 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
+ # The transparency of the window. Range: [0; 100].
+ # This option will only work if a compositing window manager is
+ # present (e.g. xcompmgr, compiz, etc.).
+ transparency = 0
-# 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 = 0
+ # 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 = 120
-# Which monitor should the notifications be displayed on.
-monitor = 0
+ # 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
+ # 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 window manager that exports the
+ # _NET_ACTIVE_WINDOW property.
+ # This should be the case for almost all modern window managers.
+ #
+ # If this option is set to mouse or keyboard, the monitor option
+ # will be ignored.
+ follow = mouse
-# Should a notification popped up from history be sticky or timeout
-# as if it would normally do.
-sticky_history = yes
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = no # yes
-# Maximum amount of notifications kept in history
-history_length = 15
+ # Maximum amount of notifications kept in history
+ history_length = 20
-# Display indicators for URLs (U) and actions (A).
-show_indicators = no
+ # 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
+ # 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 = 0
-# Draw a line of "separatpr_height" pixel height between two
-# notifications.
-# Set to 0 to disable.
-separator_height = 2
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ separator_height = 2
-# Padding between text and separator.
-padding = 6
+ # Padding between text and separator.
+ padding = 8
-# Horizontal padding.
-horizontal_padding = 6
+ # Horizontal padding.
+ horizontal_padding = 8
-# 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
+ # 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
+ # 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:
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
-# Browser for opening urls in context menu.
-browser = /usr/bin/firefox -new-tab
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/firefox -new-tab
-# Align icons left/right/off
-icon_position = off
-max_icon_size = 80
+ # Align icons left/right/off
+ icon_position = off
-# Paths to default icons.
-icon_folders = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/
+ # Paths to default icons.
+ icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
-frame_width = 3
-frame_color = "#8EC07C"
+[frame]
+ width = 1
+ color = "#424242"
[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.
+ # 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 notification.
+ close = ctrl+space
-# Close all notifications.
-close_all = ctrl+shift+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
+ # 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
+ # 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 = 4
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#222222"
+ #foreground = ${xrdb:color6}
+ foreground = "#dfdfdf"
+ timeout = 5
[urgency_normal]
-frame_color = "#5B8234"
-foreground = "#5B8234"
-background = "#191311"
-#background = "#2B313C"
-timeout = 6
+ background = "#222222"
+ #foreground = "${xrdb:color6}
+ foreground = "#dfdfdf"
+ timeout = 5
[urgency_critical]
-frame_color = "#B7472A"
-foreground = "#B7472A"
-background = "#191311"
-#background = "#2B313C"
-timeout = 8
+ background = "#222222"
+ #foreground = ${xrdb:color6}
+ foreground = "#dfdfdf"
+ timeout = 5
# Every section that isn't one of the above is interpreted as a rules to
diff --git a/dwm_status b/dwm_status
index 8fa6385..000e484 100755
--- a/dwm_status
+++ b/dwm_status
@@ -1,4 +1,9 @@
#!/bin/bash
+
+#
+# Last update: 19-01-2020
+#
+
feh --bg-fill $HOME/.wall.jpg &
xset s off -dpms&
xset b off&
@@ -6,19 +11,19 @@ xset s off&
xset -dpms&
redshift -l 52.2327:18.3036 -t 6500:3200&
nm-applet --sm-disable&
-/usr/local/bin/st -e /bin/sh -c "tmux new-session -s BASE -n HOME '/bin/zsh'\; new-window -n HTOP 'htop'\; new-window -n MUSIC 'cmus'"&
-firefox&
-thunderbird&
-keepassxc&
-#"/mnt/mega/Systems/Linux/apps/KeePass.AppImage"&
-megasync&
+/usr/local/bin/st -e /bin/sh -c "tmux new-session -s BASE -n HOME '/bin/zsh'\; split-window -h \; split-window 'htop'\; new-window -n IRC 'irssi'\; new-window -n MUSIC 'cmus'"&
+firefox-bin&
+thunderbird-bin&
+sudo keepassxc&
+#megasync&
dunst -config&
/usr/bin/ibus-daemon -d&
transmission-daemon&
-teamviewer&
+#teamviewer&
#pl&
-#(sleep 30 && getforecast)&
-
+(sleep 30 && getforecast)&
+sudo /usr/bin/rdate -s -l ntp.task.gda.pl && sudo /sbin/hwclock --systohc
+/opt/MEGAcmd/mega-cmd-server --debug-full > /var/log/megacmd/megacmd.log&
print_torrent(){
transmission-remote -l | grep % |
@@ -39,9 +44,9 @@ print_torrent(){
}
testweather() {
-[ "$(stat -c %y "/home/yorune/.weatherreport" 2>/dev/null | cut -d' ' -f1)" != "$(date '+%Y-%m-%d')" ] && ping -q -c 1 1.1.1.1 >/dev/null && curl -s "wttr.in/$location" > "/home/yorune/.weatherreport" && notify-send "🌞 Weather" "New weather forecast for today."
+[ "$(stat -c %y "/home/yorune/.weatherreport" 2>/dev/null | cut -d' ' -f1)" != "$(date '+%Y-%m-%d')" ] && curl -s "wttr.in/$location" > "/home/yorune/.weatherreport" && notify-send " Weather" "New weather forecast for today."
-printf "%s " "$(sed '16q;d' "/home/yorune/.weatherreport" | grep -wo "[0-9]*%" | sort -n | sed -e '$!d' | sed -e "s/^/☔ /g" | tr -d '\n')" && sed '13q;d' "/home/yorune/.weatherreport" | grep -o "m\\(-\\)*[0-9]\\+" | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print "❄️",$1 "°","",$2 "°"}'
+printf "%s " "$(sed '16q;d' "/home/yorune/.weatherreport" | grep -wo "[0-9]*%" | sort -n | sed -e '$!d' | sed -e "s/^/ /g" | tr -d '\n')" && sed '13q;d' "/home/yorune/.weatherreport" | grep -o "m\\(-\\)*[0-9]\\+" | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print " ",$1 "°","",$2 "°"}'
}
@@ -152,7 +157,7 @@ esac
while true
do
- #xsetroot -name "$(print_torrent)$(print_temp) | $(usageData) | $(testweather) | $(print_wifi) | $(batLevel) | $(print_volume) | $(print_date)"
- xsetroot -name "$(print_wifi) | $(batLevel) | $(print_volume) | $(print_date)"
+ xsetroot -name "$(print_temp) | $(usageData) | $(print_wifi) | $(testweather) | $(batLevel) | $(print_volume) | $(print_date)"
+ #xsetroot -name "$(print_wifi) | $(batLevel) | $(print_volume) | $(print_date)"
sleep 2
done
diff --git a/rangerrc.conf b/rangerrc.conf
new file mode 100644
index 0000000..ca4fc2c
--- /dev/null
+++ b/rangerrc.conf
@@ -0,0 +1,567 @@
+#set viewmode miller
+set viewmode multipane
+set column_ratios 1,3,4
+set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
+set show_hidden false
+
+# 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
+set confirm_on_delete never
+set use_preview_script true
+set automatically_count_files true
+set open_all_images true
+set vcs_aware false
+set vcs_backend_git enabled
+set vcs_backend_hg disabled
+set vcs_backend_bzr disabled
+set vcs_backend_svn disabled
+set preview_images true
+set preview_images_method urxvt
+set w3m_delay 0.02
+set iterm2_font_width 8
+set iterm2_font_height 11
+set unicode_ellipsis false
+set bidi_support false
+set show_hidden_bookmarks true
+set colorscheme default
+set preview_files true
+set preview_directories true
+set collapse_preview true
+set save_console_history true
+set status_bar_on_top false
+set draw_progress_bar_in_status_bar true
+set draw_borders true
+set respect draw_borders
+set dirname_in_tabs false
+set mouse_enabled true
+set display_size_in_main_column true
+set display_size_in_status_bar true
+
+# Display the free disk space in the status bar?
+set display_free_space_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 true
+
+# 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
+
+# Show hostname in titlebar?
+set hostname_in_titlebar false
+
+# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
+set tilde_in_titlebar true
+
+# 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 10
+
+# Flush the input after each key hit? (Noticeable 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
+
+# Save the "`" bookmark to disk. This can be used to switch to the last
+# directory by typing "``".
+set save_backtick_bookmark 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
+
+# Changes case sensitivity for the cd command tab completion
+set cd_tab_case sensitive
+
+# Use fuzzy tab completion with the "cd" command. For example,
+# ":cd /u/lo/b" expands to ":cd /usr/local/bin".
+set cd_tab_fuzzy false
+set preview_max_size 0
+set hint_collapse_threshold 10
+set show_selection_in_titlebar true
+set idle_delay 2000
+set metadata_deep_search false
+set clear_filters_on_dir_change false
+set line_numbers false
+set relative_current_zero false
+set one_indexed false
+set save_tabs_on_exit false
+set wrap_scroll false
+set global_inode_type_filter
+set freeze_files false
+
+# ===================================================================
+# == My settings
+# ===================================================================
+
+setlocal path=~/Screenshots sort mtime
+setlocal path=~/Screenshots sort_reverse 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! quit!
+alias qa quitall
+alias qa! quitall!
+alias qall quitall
+alias qall! quitall!
+alias setl setlocal
+
+alias filter scout -prts
+alias find scout -aets
+alias mark scout -mr
+alias unmark scout -Mr
+alias search scout -rs
+alias search_inc scout -rts
+alias travel scout -aefklst
+
+# ===================================================================
+# == Define keys for the browser
+# ===================================================================
+
+# Basic
+map bg shell set-wallpaper %f
+map bc shell wall -i %f
+map bh cd ~
+
+map Q quitall
+map q quit
+copymap q ZZ ZQ
+
+map R reload_cwd
+map F set freeze_files!
+map reset
+map redraw_window
+map abort
+map change_mode normal
+map ~ set viewmode!
+
+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
+
+map chain console; eval fm.ui.console.history_move(-1)
+
+# Change the line mode
+map Mf linemode filename
+map Mi linemode fileinfo
+map Mm linemode mtime
+map Mp linemode permissions
+map Ms linemode sizemtime
+map Mt linemode metatitle
+
+# Tagging / Marking
+map t tag_toggle
+map ut tag_remove
+map mark_files toggle=True
+map v mark_files all=True toggle=True
+map uv mark_files all=True val=False
+map V toggle_visual_mode
+map uV toggle_visual_mode reverse=True
+
+# For the nostalgics: Midnight Commander bindings
+map help
+map rename_append
+map display_file
+map edit
+map copy
+map cut
+map console mkdir%space
+map console delete
+map exit
+
+# In case you work on a keyboard with dvorak layout
+map move up=1
+map move down=1
+map move left=1
+map move right=1
+map move to=0
+map move to=-1
+map move down=1 pages=True
+map move up=1 pages=True
+map move right=1
+#map console delete
+map console touch%space
+
+# VIM-like
+copymap k
+copymap j
+copymap h
+copymap l
+copymap gg
+copymap G
+copymap
+copymap
+
+map J move down=0.5 pages=True
+map K move up=0.5 pages=True
+copymap J
+copymap K
+
+# Jumping around
+map H history_go -1
+map L history_go 1
+map ] move_parent 1
+map [ move_parent -1
+map } traverse
+map { traverse_backwards
+map ) jump_non
+
+#DEFAULT MOVEMENT
+map ge cd /etc
+map gh cd ~
+map gu cd /usr
+#map gl cd -r .
+map gL cd -r %f
+#map gv cd /var
+map gM cd /mnt
+map gr cd /
+map gR eval fm.cd(ranger.RANGERDIR)
+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 yank path
+map yd yank dir
+map yn yank name
+map y. yank name_without_extension
+
+# Filesystem Operations
+map = chmod
+
+map cw console rename%space
+map a rename_append
+map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
+map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
+
+map pp paste
+map po paste overwrite=True
+map pP paste append=True
+map pO paste overwrite=True append=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 dt cut mode=toggle
+
+map yy copy
+map uy uncut
+map ya copy mode=add
+map yr copy mode=remove
+map yt copy mode=toggle
+
+# 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 tab_new
+map tab_close
+map tab_move 1
+map tab_move -1
+map tab_move 1
+map tab_move -1
+map uq tab_restore
+map tab_open 1
+map tab_open 2
+map tab_open 3
+map tab_open 4
+map tab_open 5
+map tab_open 6
+map tab_open 7
+map tab_open 8
+map tab_open 9
+map tab_shift 1
+map tab_shift -1
+
+# Sorting
+map or set 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 set collapse_preview!
+map zd set sort_directories_first!
+map zh set show_hidden!
+map set show_hidden!
+copymap
+copymap
+map zI set flushinput!
+map zi set preview_images!
+map zm set mouse_enabled!
+map zp set preview_files!
+map zP set preview_directories!
+map zs set sort_case_insensitive!
+map zu set autoupdate_cumulative_size!
+map zv set use_preview_script!
+map zf console filter%space
+copymap zf zz
+
+# Filter stack
+map .n console filter_stack add name%space
+map .m console filter_stack add mime%space
+map .d filter_stack add type d
+map .f filter_stack add type f
+map .l filter_stack add type l
+map .| filter_stack add or
+map .& filter_stack add and
+map .! filter_stack add not
+map .r console filter_stack rotate
+map .c filter_stack clear
+map .* filter_stack decompose
+map .p filter_stack pop
+map .. filter_stack show
+
+# Bookmarks
+map ` enter_bookmark %any
+map ' enter_bookmark %any
+map m set_bookmark %any
+map um unset_bookmark %any
+
+map m draw_bookmarks
+copymap m um ` '
+
+# Generate all the chmod bindings with some python help:
+eval for arg in "rwxXst": cmd("map +u{0} shell -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 eval fm.ui.console.tab()
+cmap eval fm.ui.console.tab(-1)
+cmap eval fm.ui.console.close()
+cmap eval fm.ui.console.execute()
+cmap redraw_window
+
+copycmap
+copycmap
+
+# Move around
+cmap eval fm.ui.console.history_move(-1)
+cmap eval fm.ui.console.history_move(1)
+cmap eval fm.ui.console.move(left=1)
+cmap eval fm.ui.console.move(right=1)
+cmap eval fm.ui.console.move(right=0, absolute=True)
+cmap eval fm.ui.console.move(right=-1, absolute=True)
+cmap eval fm.ui.console.move_word(left=1)
+cmap eval fm.ui.console.move_word(right=1)
+
+copycmap
+copycmap
+
+# Line Editing
+cmap eval fm.ui.console.delete(-1)
+cmap eval fm.ui.console.delete(0)
+cmap eval fm.ui.console.delete_word()
+cmap eval fm.ui.console.delete_word(backward=False)
+cmap eval fm.ui.console.delete_rest(1)
+cmap eval fm.ui.console.delete_rest(-1)
+cmap eval fm.ui.console.paste()
+
+# And of course the emacs way
+copycmap
+copycmap
+copycmap
+copycmap
+copycmap
+copycmap
+copycmap
+copycmap
+copycmap
+
+# Note: There are multiple ways to express backspaces. (code 263)
+# and (code 127). To be sure, use both.
+copycmap
+
+# This special expression allows typing in numerals:
+cmap false
+
+# ===================================================================
+# == Pager Keybindings
+# ===================================================================
+
+# Movement
+pmap pager_move down=1
+pmap pager_move up=1
+pmap pager_move left=4
+pmap pager_move right=4
+pmap pager_move to=0
+pmap pager_move to=-1
+pmap pager_move down=1.0 pages=True
+pmap pager_move up=1.0 pages=True
+pmap pager_move down=0.5 pages=True
+pmap pager_move up=0.5 pages=True
+
+copypmap k
+copypmap j
+copypmap h
+copypmap l
+copypmap g
+copypmap G
+copypmap d
+copypmap u
+copypmap n f
+copypmap p b
+
+# Basic
+pmap redraw_window
+pmap pager_close
+copypmap q Q i
+pmap E edit_file
+
+# ===================================================================
+# == Taskview Keybindings
+# ===================================================================
+
+# Movement
+tmap taskview_move up=1
+tmap taskview_move down=1
+tmap taskview_move to=0
+tmap taskview_move to=-1
+tmap taskview_move down=1.0 pages=True
+tmap taskview_move up=1.0 pages=True
+tmap taskview_move down=0.5 pages=True
+tmap taskview_move up=0.5 pages=True
+
+copytmap k
+copytmap j
+copytmap g
+copytmap G
+copytmap u
+copytmap n f
+copytmap p b
+
+# Changing priority and deleting tasks
+tmap J eval -q fm.ui.taskview.task_move(-1)
+tmap K eval -q fm.ui.taskview.task_move(0)
+tmap dd eval -q fm.ui.taskview.task_remove()
+tmap eval -q fm.ui.taskview.task_move(-1)
+tmap eval -q fm.ui.taskview.task_move(0)
+tmap eval -q fm.ui.taskview.task_remove()
+
+# Basic
+tmap redraw_window
+tmap taskview_close
+copytmap q Q w
+
diff --git a/rifle.conf b/rifle.conf
new file mode 100644
index 0000000..c524a9c
--- /dev/null
+++ b/rifle.conf
@@ -0,0 +1,210 @@
+ext jpg = feh --scale-down "$@"
+#ext doc = openoffice4 "$@"
+#ext odt = openoffice4 "$@"
+
+#-------------------------------------------
+# 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 qutebrowser, X, flag f = qutebrowser -- "$@"
+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-tabbed, X, flag f = uzbl-tabbed -- "$@"
+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-browser, X, flag f = chromium-browser -- "$@"
+ext x?html?, has chromium, X, flag f = chromium -- "$@"
+ext x?html?, has google-chrome, X, flag f = google-chrome -- "$@"
+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 = ${VISUAL:-$EDITOR} -- "$@"
+mime ^text, label pager = "$PAGER" -- "$@"
+!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
+!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
+
+ext 1 = man "$1"
+ext s[wmf]c, has zsnes, X = zsnes "$1"
+ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
+ext nes, has fceux, X = fceux "$1"
+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 mpv = mpv -- "$@"
+mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
+mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@"
+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 mupdf-x11,X, flag f = mupdf-x11 "$@"
+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 pdf, has open, X, flag f = open "$@"
+
+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 zathura,X, flag f = zathura -- "$@"
+ext djvu, has evince, X, flag f = evince -- "$@"
+ext djvu, has atril, X, flag f = atril -- "$@"
+ext djvu, has djview, X, flag f = djview -- "$@"
+
+ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
+ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
+
+#-------------------------------------------
+# Image Viewing:
+#-------------------------------------------
+mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
+mime ^image/svg, has display, X, flag f = display -- "$@"
+
+mime ^image, has pqiv, X, flag f = pqiv -- "$@"
+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 nomacs, X, flag f = nomacs -- "$@"
+mime ^image, has geeqie, X, flag f = geeqie -- "$@"
+mime ^image, has gwenview, X, flag f = gwenview -- "$@"
+mime ^image, has gimp, X, flag f = gimp -- "$@"
+ext xcf, X, flag f = gimp -- "$@"
+
+#-------------------------------------------
+# Archives
+#-------------------------------------------
+
+# avoid password prompt by providing empty password
+ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
+# This requires atool
+ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --list --each -- "$@" | "$PAGER"
+ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
+ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --extract --each -- "$@"
+ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"
+
+# Listing and extracting archives without atool:
+ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
+ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
+ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
+ext zip, has unzip = unzip -l "$1" | less
+ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
+ext ace, has unace = unace l "$1" | less
+ext ace, has unace = for file in "$@"; do unace e "$file"; done
+ext rar, has unrar = unrar l "$1" | less
+ext rar, has unrar = for file in "$@"; do unrar x "$file"; done
+
+#-------------------------------------------
+# Flag t fallback terminals
+#-------------------------------------------
+# Rarely installed terminal emulators get higher priority; It is assumed that
+# if you install a rare terminal emulator, you probably use it.
+# gnome-terminal/konsole/xterm on the other hand are often installed as part of
+# a desktop environment or as fallback terminal emulators.
+mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@"
+mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
+mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@"
+mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
+mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@"
+#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@"
+mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"'
+#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@"
+mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@"
+mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@"
+mime ^ranger/x-terminal-emulator, has st = st -e "$@"
+mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@"
+mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
+mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@"
+mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@"
+mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@"
+mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@"
+mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@"
+mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@"
+mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"
+
+#-------------------------------------------
+# Misc
+#-------------------------------------------
+label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
+label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
+label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
+label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
+
+# Define the editor for non-text files + pager as last action
+ !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
+label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
+label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
+
+# The very last action, so that it's never triggered accidentally, is to execute a program:
+mime application/x-executable = "$1"
diff --git a/tmux.conf b/tmux.conf
new file mode 100644
index 0000000..05f4ad1
--- /dev/null
+++ b/tmux.conf
@@ -0,0 +1,103 @@
+set -g prefix C-a
+set-option -g default-shell /bin/zsh
+unbind C-b
+bind-key C-a send-prefix
+unbind q
+bind q confirm kill-window
+set -g exit-unattached on
+set -g destroy-unattached on
+set -g status on
+bind-key -n C-f copy-mode \; send-key ?
+set -g default-terminal "st-256color"
+set -g history-limit 20000
+set-option -sg escape-time 0
+set -g base-index 1 # start windows numbering at 1
+setw -g pane-base-index 1 # make pane numbering consistent with windows
+setw -g automatic-rename on # rename window to reflect current program
+set -g renumber-windows on # renumber windows when a window is closed
+set -g set-titles on # set terminal title
+set -g display-panes-time 800 # slightly longer pane indicators display time
+set -g display-time 1000 # slightly longer status messages display time
+set -g status-interval 10 # redraw status line every 10 seconds
+set -g status-style bg=black
+set -g status-style fg=white
+# clear both screen and history
+bind -n C-l send-keys C-l \; run 'sleep 0.1' \; clear-history
+
+# activity
+set -g monitor-activity on
+set -g visual-activity off
+
+# create session
+bind C-c new-session
+
+# find session
+bind C-f command-prompt -p find-session 'switch-client -t %%'
+
+# split current window horizontally
+bind - split-window -v
+# split current window vertically
+bind _ split-window -h
+
+# pane navigation
+bind -r h select-pane -L # move left
+bind -r j select-pane -D # move down
+bind -r k select-pane -U # move up
+bind -r l select-pane -R # move right
+bind > swap-pane -D # swap current pane with the next one
+bind < swap-pane -U # swap current pane with the previous one
+
+# maximize current pane
+bind + run 'cut -c3- ~/.tmux.conf | sh -s _maximize_pane "#{session_name}" #D'
+
+# pane resizing
+bind -r H resize-pane -L 2
+bind -r J resize-pane -D 2
+bind -r K resize-pane -U 3
+bind -r L resize-pane -R 2
+
+# window navigation
+unbind n
+unbind p
+bind -r C-h previous-window # select previous window
+bind -r C-l next-window # select next window
+bind Tab last-window # move to last active window
+
+# toggle mouse
+bind m run "cut -c3- ~/.tmux.conf | sh -s _toggle_mouse"
+
+
+# -- urlview -------------------------------------------------------------------
+
+bind U run "cut -c3- ~/.tmux.conf | sh -s _urlview #{pane_id}"
+
+# -- copy mode -----------------------------------------------------------------
+
+bind Enter copy-mode # enter copy mode
+
+run -b 'tmux bind -t vi-copy v begin-selection 2> /dev/null || true'
+run -b 'tmux bind -T copy-mode-vi v send -X begin-selection 2> /dev/null || true'
+run -b 'tmux bind -t vi-copy C-v rectangle-toggle 2> /dev/null || true'
+run -b 'tmux bind -T copy-mode-vi C-v send -X rectangle-toggle 2> /dev/null || true'
+run -b 'tmux bind -t vi-copy y copy-selection 2> /dev/null || true'
+run -b 'tmux bind -T copy-mode-vi y send -X copy-selection-and-cancel 2> /dev/null || true'
+run -b 'tmux bind -t vi-copy Escape cancel 2> /dev/null || true'
+run -b 'tmux bind -T copy-mode-vi Escape send -X cancel 2> /dev/null || true'
+run -b 'tmux bind -t vi-copy H start-of-line 2> /dev/null || true'
+run -b 'tmux bind -T copy-mode-vi H send -X start-of-line 2> /dev/null || true'
+run -b 'tmux bind -t vi-copy L end-of-line 2> /dev/null || true'
+run -b 'tmux bind -T copy-mode-vi L send -X end-of-line 2> /dev/null || true'
+
+# copy to X11 clipboard
+if -b 'command -v xsel > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | xsel -i -b"'
+if -b '! command -v xsel > /dev/null 2>&1 && command -v xclip > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | xclip -i -selection clipboard >/dev/null 2>&1"'
+
+# -- buffers -------------------------------------------------------------------
+
+bind b list-buffers # list paste buffers
+bind p paste-buffer # paste from the top paste buffer
+bind P choose-buffer # choose which buffer to paste from
+
+# -- user defined overrides ----------------------------------------------------
+
+if '[ -f ~/.tmux.conf.local ]' 'source ~/.tmux.conf.local'