This file is for mapping keyboard keys to commands.
# keymapping for default view
[default_view]
keymap = [
{ keys = [ "T" ], command = "new_tab" },
# ...
]
# keymapping for task view
[task_view]
keymap = [
# ...
]
# keymapping for help view
[help_view]
keymap = [
# ...
]
For more examples, take a look at config/keymap.toml
To combine keys with Ctrl and Alt, simply have ctrl+key
/alt+key
where key
is a valid key.
In addition to the standard alphabet, Joshuto currently also support the following keys.
backspace
backtab # this is shift+tab
arrow_left
arrow_right
arrow_up
arrow_down
home
end
page_up
page_down
delete
insert
escape
f1
f2
f3
f4
f5
f6
f7
f8
f9
f10
f11
f12
- will not quit if there are pending IO work (paste jobs)
quit
- exit code 0
quit --force
: does NOT wait for pending IO work- exit code 100
quit --output-current-directory
: if--output-file
argument is set, output the current directory to it- exit code 101
quit --output-selected-files
: if--output-file
argument is set, output the selected files to it- exit code 102
The following is a bash snippet on how to integrate with quit
function joshuto() {
ID="$$"
mkdir -p /tmp/$USER
OUTPUT_FILE="/tmp/$USER/joshuto-cwd-$ID"
env joshuto --output-file "$OUTPUT_FILE" $@
exit_code=$?
case "$exit_code" in
# regular exit
0)
;;
# output contains current directory
101)
JOSHUTO_CWD=$(cat "$OUTPUT_FILE")
cd "$JOSHUTO_CWD"
;;
# output selected files
102)
;;
*)
echo "Exit code: $exit_code"
;;
esac
}
- this does not execute the command, but merely sets the text to it
- Example:
:cd /
will open up the command prompt withcd /
already written
%s
is substituted by a list of all selected files or by the file under the cursor, if none is selected- When running the external program, the directory shown in Joshuto is set as “working directory”,
the file names substituded for
%s
are given without path. - Example:
:shell touch file.txt
will create a file calledfile.txt
- Example for
keymap.toml
: To open all selected files withnvim
, one can add a keybinding like this:keymap = [ //.. { keys = [ "e", "v" ], command = "shell nvim %s" } ]
- Supports
%s
, just like theshell
command. - Example for
keymap.toml
: To open all selected files or directories withsxiv
, one can add a keybinding like this:keymap = [ //.. { keys = [ "i" ], command = "spawn sxiv -t %s" } ]
sort lexical
: sort lexically (10.txt
comes before2.txt
)sort natural
: sort naturally (2.txt
comes before10.txt
)sort mtime
: sort via last modified timesort reverse
: reverse the sorting
linemode
: change the line-mode (textual representation of files and directories in the “current view”)
linemode size
: show the entry’s size (bytes for files, number of entries for directories) (default) ✻linemode mtime
: show the entry’s modified time (aka. “mtime”) ✻linemode sizemtime
: show the entry’s size and modified time ✻
✻: file- or directory-name is shown on left, the respective meta-data is shown on the right, preceeded by a symlink indicator
- press
escape
to exit view
toggle_hidden
: toggle hidden files
line_nums 0
orline_nums none
: disable displayingline_nums 1
orline_nums absolute
: enable absolute numbers for each entryline_nums 2
orline_nums relative
: enable numbers relative to selected entry
flat 3
: flatten directory up to 3 directories deep. depth of 0 corresponds to the current directory. its direct descendents have depth 1, and their descendents have depth 2, and so on.
cursor_move_up
: moves the cursor up by 1cursor_move_up x
: moves the cursor up byx
wherex
is a non-negative number
cursor_move_down
: moves the cursor down by 1cursor_move_down x
: moves the cursor down byx
wherex
is a non-negative number
- where
x
is the number of items that can be seen on the screen
- where
x
is the number of items that can be seen on the screen
cd ..
: go to parent directorycd ~
: go to home directorycd -
: go to previous directory in history (If it exists)
- if joshuto does not know how to open the file format (via extension currently),
it will prompt
:open_with
to open with a specific command - if
xdg_open
istrue
in joshuto.toml, joshuto will try to open it via xdg settings
numbered_command
: opens a new mode where user can input numbers and jump to the specified location via hard-coded keybindings
numbered_command 3
: initial input is 3
new_tab
, without any argument, opens a new tab with the default directory.
(Note: the default directory for new tabs is specified in joshuto.toml
in the tab
section.)
new_tab some-dir
opens new tab with directorysome-dir
new_tab --current
opens new tab with the same directory as the current tabnew_tab --cursor
opens new tab with the directory which is currently marked by the cursor
- where
x
is an integer tab_switch 1
: go to next tabtab_switch -1
: go to previous tab
tab_switch_index 3
: go to third tab if it exists, create one if it does not exist and there is already 3 - 1 = 2 tabs open
--relative=true
: relative symlink paths--relative=false
: absolute symlink paths
--foreground=true
: will delete files in the foreground--permanently
: force permanent deletion regardless ofuse_trash
value.- will permanently delete files if
use_trash
isfalse
in joshuto.toml/wiki/Configuration#joshutotoml) - if
use_trash
istrue
, this might cause issues with deleting files on mounted filesystems such as on an external hard drive or tmpfs
:rename new_name
rename_append
: opens the command prompt with the rename command and the current file name filled in.
- cursor will be set right before the extension of the file (end of file name if no extension)
rename_prepend
: opens the command prompt with the rename command and the current file name filled in.
- cursor will be set to the beginning of the file name
rename_keep_ext
: opens the command prompt with the rename command and the extension of the current file filled in.
- cursor will be set right before the extension of the file
- clipboard support requires xsel, xclip, or wl-copy
- case insensitive
:search_glob *.png
--toggle=true
: toggle the selected state rather than selecting the entry (default)--toggle=false
: select the current file (doesn't change anything if the current file is already selected)--deselect=true
: deselect rather than select the entry--all=true
: select/deselect/toggle all visible files in the current view. (Files not visible due to a set filter are not affected.)glob
: select files based on glob (just likesearch_glob
)select *.png
This example keybinding can be used for deselecting all files:
keymap = [ //..
{keys = [ "x" ], command = "select --all=true --deselect=true"}
]
:filter ca
: filter the current directory and show only items withca
in the name
When disabling, the current “visual mode selection” is turned into normal selection. (See also Visual Mode.)
(See also Visual Mode.)
- this will create a file inside
$TMP_DIR
(or/tmp
if$TMP_DIR
is not set) and open up your text editor of choice via$EDITOR
environment variable - once you've made your changes to the file, saved and quit, it will use the
mv
command to rename everything