diff --git a/.config/ranger/plugins/__init__.py b/.config/ranger/plugins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/.config/ranger/plugins/__pycache__/__init__.cpython-310.pyc b/.config/ranger/plugins/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..534bca0 Binary files /dev/null and b/.config/ranger/plugins/__pycache__/__init__.cpython-310.pyc differ diff --git a/.config/ranger/plugins/__pycache__/__init__.cpython-311.pyc b/.config/ranger/plugins/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..a6a06bf Binary files /dev/null and b/.config/ranger/plugins/__pycache__/__init__.cpython-311.pyc differ diff --git a/.config/ranger/plugins/ranger_devicons b/.config/ranger/plugins/ranger_devicons new file mode 160000 index 0000000..1b57801 --- /dev/null +++ b/.config/ranger/plugins/ranger_devicons @@ -0,0 +1 @@ +Subproject commit 1b5780117eeebdfcd221ce45823a1ddef8399848 diff --git a/.config/ranger/rc.conf b/.config/ranger/rc.conf new file mode 100644 index 0000000..b2f780b --- /dev/null +++ b/.config/ranger/rc.conf @@ -0,0 +1,764 @@ +# =================================================================== +# This file contains the default startup commands for ranger. +# To change them, it is recommended to create either /etc/ranger/rc.conf +# (system-wide) or ~/.config/ranger/rc.conf (per user) 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 +# =================================================================== + +# Which viewmode should be used? Possible values are: +# miller: Use miller columns which show multiple levels of the hierarchy +# multipane: Midnight-commander like multipane view showing all tabs next +# to each other +set viewmode miller +#set viewmode multipane + +# 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 + +# Use non-default path for file preview script? +# 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 four backends git, hg, bzr, svn. 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 +set vcs_backend_svn disabled + +# Truncate the long commit messages to this length when shown in the statusbar. +set vcs_msg_length 50 + +# 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. +# +# This feature relies on the dimensions of the terminal's font. By default, a +# width of 8 and height of 11 are used. To use other values, set the options +# iterm2_font_width and iterm2_font_height to the desired values. +# +# * terminology: +# Previews images in full color in the terminology terminal emulator. +# Supports a wide variety of formats, even vector graphics like svg. +# +# * urxvt: +# Preview images in full color using urxvt image backgrounds. This +# requires using urxvt compiled with pixbuf support. +# +# * urxvt-full: +# The same as urxvt but utilizing not only the preview pane but the +# whole terminal window. +# +# * kitty: +# Preview images in full color using kitty image protocol. +# Requires python PIL or pillow library. +# If ranger does not share the local filesystem with kitty +# the transfer method is changed to encode the whole image; +# while slower, this allows remote previews, +# for example during an ssh session. +# Tmux is unsupported. +# +# * ueberzug: +# Preview images in full color with the external command "ueberzug". +# Images are shown by using a child window. +# Only for users who run X11 in GNU/Linux. +set preview_images_method ueberzug + +# Delay in seconds before displaying an image with the w3m method. +# Increase it in case of experiencing display corruption. +set w3m_delay 0.02 + +# Manually adjust the w3mimg offset when using a terminal which needs this +set w3m_offset 20 + +# Default iTerm2 font size (see: preview_images_method: iterm2) +set iterm2_font_width 8 +set iterm2_font_height 11 + +# Use a unicode "..." character to mark cut-off filenames? +set unicode_ellipsis false + +# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic). +# Requires the python-bidi pip package +set bidi_support 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 + +# Wrap long lines in plain text previews? +set wrap_plaintext_previews false + +# Save the console history on exit? +set save_console_history false + +# 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? (separators, outline, both, or none) +# Separators are vertical lines between columns. +# Outline draws a box around all the columns. +# Both combines the two. +set draw_borders both + +# Display the directory name in tabs? +set dirname_in_tabs false + +# Enable the mouse support? +set mouse_enabled false + +# 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 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? Updates both `WM_NAME` and `WM_ICON_NAME` +set update_title true + +# Set the tmux/screen window-name to "ranger"? +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 0 + +# Show hostname in titlebar? +set hostname_in_titlebar true + +# 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 8 + +# 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 false + +# 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 + +# Avoid previewing files larger than this size, in bytes. Use a value of 0 to +# disable this feature. +set preview_max_size 0 + +# The key hint lists up to this size have their sublists expanded. +# Otherwise the submaps are replaced with "...". +set hint_collapse_threshold 10 + +# 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 + +# Clear all existing filters when leaving a directory +set clear_filters_on_dir_change false + +# Disable displaying line numbers in main column. +# Possible values: false, absolute, relative. +set line_numbers relative + +# When line_numbers=relative show the absolute line number in the +# current line. +set relative_current_zero false + +# Start line numbers from 1 instead of 0 +set one_indexed false + +# Save tabs on exit +set save_tabs_on_exit false + +# Enable scroll wrapping - moving down while on the last item will wrap around to +# the top and vice versa. +set wrap_scroll false + +# Set the global_inode_type_filter to nothing. Possible options: d, f and l for +# directories, files and symlinks respectively. +set global_inode_type_filter + +# This setting allows to freeze the list of files to save I/O bandwidth. It +# should be 'false' during start-up, but you can toggle it by pressing F. +set freeze_files false + +# Print file sizes in bytes instead of the default human-readable format. +## set size_in_bytes false + +# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words +# give a warning when you nest ranger in a subshell started by ranger. +# Special value "error" makes the warning more visible. +set nested_ranger_warning true + +# Enable Icons +default_linemode devicons + +# =================================================================== +# == 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 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 scroll_preview 1 +## map scroll_preview -1 +## 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 Mh linemode humanreadablemtime +## map Mp linemode permissions +## map Ms linemode sizemtime +## map MH linemode sizehumanreadablemtime +## map Mt linemode metatitle + +# Tagging / Marking +## map t tag_toggle +## map ut tag_remove +## map " tag_toggle tag=%any +## map mark_files toggle=True +## map v mark_files all=True toggle=True +## map uv mark_files all=True val=False +## map V toggle_visual_mode +## map uV toggle_visual_mode reverse=True + +# For the nostalgics: Midnight Commander bindings +## map help +## map rename_append +## map display_file +## map edit +## map copy +## map cut +## map console mkdir%space +## map console delete +#map console trash +## 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 o +## copymap e +## copymap a +## copymap i +## copymap gg +## copymap G +## copymap +## copymap + +## map E move down=0.5 pages=True +## map O move up=0.5 pages=True +## copymap E +## copymap O + +# Jumping around +## map A history_go -1 +## map I history_go 1 +## map ] move_parent 1 +## map [ move_parent -1 +## map } traverse +## map { traverse_backwards +## map ) jump_non + +## 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 eval fm.cd('/media/' + os.getenv('USER')) +## map gi eval fm.cd('/run/media/' + os.getenv('USER')) +## map gM cd /mnt +## map gs cd /srv +## map gp cd /tmp +## map gr cd / +## map gR eval fm.cd(ranger.RANGERDIR) +## map g/ cd / +## map g? cd /usr/share/doc/ranger + +# External Programs +map ΓΌ 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 r rename_append +## map R 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 pd console paste dest= +## map pk paste dest=%any_path +## map p' paste dest=%any_path + +# map dD console delete +# map dT console trash +## map DD console trash + +## 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 j 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 gt tab_move 1 +## map gT tab_move -1 +## map gn tab_new +## map gc tab_close +## map uq tab_restore +## map tab_open 1 +## map tab_open 2 +## map tab_open 3 +## map tab_open 4 +## map tab_open 5 +## map tab_open 6 +## map tab_open 7 +## map tab_open 8 +## map tab_open 9 +## map tab_shift 1 +## map tab_shift -1 + +# Sorting +## map sr set sort_reverse! +## map sz set sort=random +## map ss chain set sort=size; set sort_reverse=False +## map sb chain set sort=basename; set sort_reverse=False +## map sn chain set sort=natural; set sort_reverse=False +## map sm chain set sort=mtime; set sort_reverse=False +## map sc chain set sort=ctime; set sort_reverse=False +## map sa chain set sort=atime; set sort_reverse=False +## map st chain set sort=type; set sort_reverse=False +## map se chain set sort=extension; set sort_reverse=False + +## map sS chain set sort=size; set sort_reverse=True +## map sB chain set sort=basename; set sort_reverse=True +## map sN chain set sort=natural; set sort_reverse=True +## map sM chain set sort=mtime; set sort_reverse=True +## map sC chain set sort=ctime; set sort_reverse=True +## map sA chain set sort=atime; set sort_reverse=True +## map sT chain set sort=type; set sort_reverse=True +## map sE 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 .d filter_stack add type d +## map .f filter_stack add type f +## map .l filter_stack add type l +## map .m console filter_stack add mime%space +## map .n console filter_stack add name%space +## map .# console filter_stack add hash%space +## map ." filter_stack add duplicate +## map .' filter_stack add unique +## map .| filter_stack add or +## map .& filter_stack add and +## map .! filter_stack add not +## map .r 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 k enter_bookmark %any +## map m set_bookmark %any +## map um unset_bookmark %any + +## map m draw_bookmarks +## copymap m um ` k +## map kk enter_bookmark %a + +# 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 o +## copypmap e +## copypmap a +## copypmap i +## 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 o +## copytmap e +## 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/.config/ranger/rifle.conf b/.config/ranger/rifle.conf new file mode 100644 index 0000000..eed8f44 --- /dev/null +++ b/.config/ranger/rifle.conf @@ -0,0 +1,288 @@ +# vim: ft=cfg +# +# This is the configuration file of "rifle", ranger's file executor/opener. +# Each line consists of conditions and a command. For each line the conditions +# are checked and if they are met, the respective command is run. +# +# Syntax: +# , , ... = command +# +# The command can contain these environment variables: +# $1-$9 | The n-th selected file +# $@ | All selected files +# +# If you use the special command "ask", rifle will ask you what program to run. +# +# Prefixing a condition with "!" will negate its result. +# These conditions are currently supported: +# match | The regexp matches $1 +# ext | The regexp matches the extension of $1 +# mime | The regexp matches the mime type of $1 +# name | The regexp matches the basename of $1 +# path | The regexp matches the absolute path of $1 +# has | The program is installed (i.e. located in $PATH) +# env | The environment variable "variable" is non-empty +# file | $1 is a file +# directory | $1 is a directory +# number | change the number of this command to n +# terminal | stdin, stderr and stdout are connected to a terminal +# X | A graphical environment is available (darwin, Xorg, or Wayland) +# +# There are also pseudo-conditions which have a "side effect": +# flag | Change how the program is run. See below. +# label