Jido is a lightweight Unix TUI file explorer designed for speed and simplicity.
The name 地圖 (지도) translates to "map" in English, reflecting Jido's purpose: helping you navigate and explore your file system with ease. With Vim-like bindings and a minimalist interface, Jido focuses on speed and simplicity.
Jido used Zig 0.14.0
.
To install Jido, check the "Releases" page or build locally
via zig build --release=safe
.
pdftotext
to view PDF text previews.- A terminal supporting the
kitty image protocol
to view images.
Below are the default keybinds. Keybinds can be overwritten via the Keybinds
config option. Some keybinds are unbound by default, see Configuration
for more information.
Global:
<CTRL-c> :Exit.
<CTRL-r> :Reload config.
Normal mode:
j / <Down> :Go down.
k / <Up> :Go up.
h / <Left> / - :Go to the parent directory.
l / <Right> :Open item or change directory.
g :Go to the top.
G :Go to the bottom.
c :Change directory via path. Will enter input mode.
R :Rename item. Will enter input mode.
D :Delete item.
u :Undo delete/rename.
d :Create directory. Will enter input mode.
% :Create file. Will enter input mode.
/ :Fuzzy search directory. Will enter input mode.
. :Toggle hidden files.
: :Allows for Jido commands to be entered. Please refer to the
"Command mode" section for available commands. Will enter
input mode.
v :Verbose mode. Provides more information about selected entry.
y :Yank selected item.
p :Past yanked item.
Input mode:
<Esc> :Cancel input.
<CR> :Confirm input.
Command mode:
<Up> / <Down> :Cycle previous commands.
:q :Exit.
:h :View available keybinds. 'q' to return to app.
:config :Navigate to config directory if it exists.
:trash :Navigate to trash directory if it exists.
:empty_trash :Empty trash if it exists. This action cannot be undone.
:cd <path> :Change directory via path. Will enter input mode.
Configure jido
by editing the external configuration file located at either:
$HOME/.jido/config.json
$XDG_CONFIG_HOME/jido/config.json
.
Jido will look for these env variables specifically. If they are not set, Jido will not be able to find the config file.
An example config file can be found here.
Config schema:
Config = struct {
.show_hidden: bool = true,
.sort_dirs: bool = true,
.show_images: bool = true, -- Images are only supported in a terminal
supporting the `kitty image protocol`.
.preview_file: bool = true,
.empty_trash_on_exit: bool = false, -- Emptying the trash permanently deletes
all files within the trash. These
files are not recoverable past this
point.
.true_dir_size: bool = false, -- Display size of directory including
all its children. This can and will
cause lag on deeply nested directories.
.keybinds: Keybinds,
.styles: Styles
}
Keybinds = struct {
.toggle_hidden_files: ?Char = '.',
.delete: ?Char = 'D',
.rename: ?Char = 'R',
.create_dir: ?Char = 'd',
.create_file: ?Char = '%',
.fuzzy_find: ?Char = '/',
.change_dir: ?Char = 'c',
.enter_command_mode: ?Char = ':',
.jump_top: ?Char = 'g',
.jump_bottom: ?Char = 'G',
.toggle_verbose_file_information: ?Char = 'v',
.force_delete: ?Char = null -- Files deleted this way are
not recoverable
.yank: ?Char = 'y'
.paste: ?Char = 'p'
}
NotificationStyles = struct {
.box: vaxis.Style,
.err: vaxis.Style,
.warn: vaxis.Style,
.info: vaxis.Style
}
Styles = struct {
.selected_list_item: Style,
.list_item: Style,
.file_name: Style,
.file_information: Style
.notification: NotificationStyles,
.git_branch: Style
}
Style = struct {
.fg: Color,
.bg: Color,
.ul: Color,
.ul_style = .{
off,
single,
double,
curly,
dotted,
dashed
}
.bold: bool,
.dim: bool,
.italic: bool,
.blink: bool,
.reverse: bool,
.invisible: bool,
.strikethrough: bool
}
Color = enum{
default,
index: u8,
rgb: [3]u8
}
Char = enum(u21)
Contributions, issues, and feature requests are always welcome via GitHub or tangled.