{"id":13539528,"url":"https://github.com/kyoheiu/felix","last_synced_at":"2025-04-29T18:52:02.408Z","repository":{"id":37830471,"uuid":"405872309","full_name":"kyoheiu/felix","owner":"kyoheiu","description":"tui file manager with vim-like key mapping","archived":false,"fork":false,"pushed_at":"2025-04-12T07:00:12.000Z","size":41923,"stargazers_count":776,"open_issues_count":19,"forks_count":26,"subscribers_count":7,"default_branch":"develop","last_synced_at":"2025-04-12T12:46:48.503Z","etag":null,"topics":["file-manager","rust","termion","tui"],"latest_commit_sha":null,"homepage":"https://kyoheiu.dev/felix/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kyoheiu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"kyoheiu","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-09-13T07:20:05.000Z","updated_at":"2025-04-12T07:00:15.000Z","dependencies_parsed_at":"2022-06-22T19:55:09.991Z","dependency_job_id":"80a6eec3-1056-4678-9229-8abf4690016f","html_url":"https://github.com/kyoheiu/felix","commit_stats":{"total_commits":1421,"total_committers":18,"mean_commits":78.94444444444444,"dds":0.3201970443349754,"last_synced_commit":"c35aecac014464a9e92d21414cc37987cec24433"},"previous_names":[],"tags_count":83,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoheiu%2Ffelix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoheiu%2Ffelix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoheiu%2Ffelix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyoheiu%2Ffelix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kyoheiu","download_url":"https://codeload.github.com/kyoheiu/felix/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251564990,"owners_count":21609970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-manager","rust","termion","tui"],"created_at":"2024-08-01T09:01:27.244Z","updated_at":"2025-04-29T18:52:02.402Z","avatar_url":"https://github.com/kyoheiu.png","language":"Rust","funding_links":["https://ko-fi.com/kyoheiu"],"categories":["FileSystem","Rust","File Management","\u003ca name=\"file-manager\"\u003e\u003c/a\u003eFile manager","\u003ca name=\"file_managers\"\u003e\u003c/a\u003efile_managers"],"sub_categories":[],"readme":"[![crates.io](https://img.shields.io/crates/v/felix)](https://crates.io/crates/felix)\n![arch linux](https://img.shields.io/archlinux/v/extra/x86_64/felix-rs)\n\n# _felix_\n\n![screenshot](screenshots/screenshot.png)\n\nA tui file manager with Vim-like key mapping, written in Rust.\\\nFast, simple, and easy to configure \u0026 use.\n\nFor the overview of this app, take a look at this README, especially\n[key manual](#key-manual).\\\nFor more detailed document, visit https://kyoheiu.dev/felix.\n\n- [New release](#new-release)\n- [Status](#status)\n- [Installation](#installation)\n- [Integrations](#integrations)\n- [Usage](#usage)\n  - [Key manual](#key-manual)\n- [Preview feature](#preview)\n- [Configuration](#configuration)\n\n\u003ca id=\"new-release\"\u003e\u003c/a\u003e\n\n## New release\n\n## v2.16.1 (2025-04-13)\n\n### Fixed\n\n- Add type annotation to u16 -\u003e usize conversion to avoid build error.\n\n## v2.16.0 (2025-01-12)\n\n### Added\n\n- `c` in visual mode to rename selected items by your default editor at once.\n- Add `ImageSignature::Bigtiff` to recognize BigTIFF.\n\n### Changed\n\n- MSRV is now v1.78.0\n\n## v2.15.0 (2024-12-30)\n\n### Added\n\n- `\u003cC-d\u003e` and `\u003cC-u\u003e` to go up/down 1/2 page in both normal mode and visual mode.\n\n### Changed\n\n- Avoid displaying big text in preview area by adding `PreviewType::TooLargeText` (over 1MB).\n\n### Fixed\n\n- Rewrite `test_has_write_permission` test by `set_readonly`.\n\nFor more details, see `CHANGELOG.md`.\n\n\u003ca id=\"status\"\u003e\u003c/a\u003e\n\n## Status\n\n| OS      | Status               |\n| ------- | -------------------- |\n| Linux   | works                |\n| NetBSD  | works                |\n| MacOS   | works                |\n| Windows | not fully tested yet |\n\n_For Windows users: From v1.3.0, it can be at least compiled on Windows (see\n`.github/workflows/install_test.yml`.) If you're interested, please try and\nreport any problems._\n\n\u003ca id=\"installation\"\u003e\u003c/a\u003e\n\n## Installation\n\n| package    | installation command  | notes                                                                                                                                       |\n| ---------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |\n| crates.io  | `cargo install felix` | Minimum Supported rustc Version: **1.78.0**                                                                                                 |\n| Arch Linux | `pacman -S felix-rs`  | The binary name is `felix` if you install via pacman. Alias `fx='felix'` if you want, as this document (and other installations) uses `fx`. |\n| NetBSD     | `pkgin install felix` |                                                                                                                                             |\n\n### From this repository\n\n- Make sure that `gcc` is installed.\n- MSRV(Minimum Supported rustc Version): **1.78.0**\n\nUpdate Rust if rustc \u003c 1.78.0:\n\n```\nrustup update\n```\n\n```\ngit clone https://github.com/kyoheiu/felix.git\ncd felix\ncargo install --path .\n```\n\n\u003ca id=\"integrations\"\u003e\u003c/a\u003e\n\n## Integrations\n\n### Exit to last working directory (LWD)\nTo export your LWD to the calling shell after exiting from `fx`,\nadd the following to your `.bashrc` or\n`.zshrc` or an equivalent depending on your (POSIX) shell.  \n***Assuming the `fx` binary can be found in your `PATH`.***\n\n```sh\nsource \u003c(command fx --init)\n```\n\n*If this is not set, exiting to LWD will fail and show the error message.*\n\n### Others\nIn addition, you can use felix more conveniently by installing these apps:\n\n- [zoxide](https://github.com/ajeetdsouza/zoxide): A smarter `cd` command, which\n  enables you to jump to a directory that matches the keyword in felix.\n- [chafa](https://hpjansson.org/chafa/): Terminal graphics for the 21st century,\n  by which you can preview images in felix. _**chafa must be v1.10.0 or\n  later.**_\n- [bat](https://github.com/sharkdp/bat): A *cat(1)* clone. Add syntax highlighting to the text preview with bat.\n\nThese apps do not need any configuration to use with felix!\n\n\u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n## Usage\n\n_If you install this app via pacman, the default binary name is `felix`._\n\n```\n`fx` =\u003e Show items in the current directory.\n`fx \u003cdirectory path\u003e` =\u003e Show items in the directory.\nBoth relative and absolute path available.\n```\n\n### Options\n\n```\n`--help` | `-h` =\u003e Print help.\n`--log`  | `-l` =\u003e Launch the app, automatically generating a log file in `{data_local_dir}/felix/log`.\n`--init`        =\u003e Returns a shell script that can be sourced for shell integration.\n```\n\n\u003ca id=\"key-manual\"\u003e\u003c/a\u003e\n\n### Key manual\n\n```\nj / \u003cDown\u003e         :Go down.\nk / \u003cUp\u003e           :Go up.\n\u003cC-d\u003e              :Go down 1/2 page.\n\u003cC-u\u003e\u003e             :Go up 1/2 page.\nh / \u003cLeft\u003e         :Go to the parent directory if exists.\nl / \u003cRight\u003e / \u003cCR\u003e :Open item or change directory.\ngg                 :Go to the top.\nG                  :Go to the bottom.\nz\u003cCR\u003e              :Go to the home directory.\nz {keyword}\u003cCR\u003e    :Jump to a directory that matches the keyword.\n                    (zoxide required)\n\u003cC-o\u003e              :Jump backward.\n\u003cC-i\u003e              :Jump forward.\ni{file name}\u003cCR\u003e   :Create a new empty file.\nI{dir name}\u003cCR\u003e    :Create a new empty directory.\no                  :Open item in a new window.\ne                  :Unpack archive/compressed file.\ndd                 :Delete and yank item.\nyy                 :Yank item.\np                  :Put yanked item(s) from register zero\n                    in the current directory.\n:reg               :Show registers. To hide it, press v.\n\"ayy               :Yank item to register a.\n\"add               :Delete and yank item to register a.\n\"Ayy               :Append item to register a.\n\"Add               :Delete and append item to register a.\n\"ap                :Put item(s) from register a.\nV (uppercase)      :Switch to the linewise visual mode.\n  - y              :In the visual mode, yank selected item(s).\n  - d              :In the visual mode, delete and yank selected item(s).\n  - \"ay            :In the visual mode, yank items to register a.\n  - \"ad            :In the visual mode, delete and yank items to register a.\n  - \"Ay            :In the visual mode, append items to register a.\n  - \"Ad            :In the visual mode, delete and append items to register a.\n  - c              :Rename multiple items in default editor.\nu                  :Undo put/delete/rename.\n\u003cC-r\u003e              :Redo put/delete/rename.\nv (lowercase)      :Toggle whether to show the preview.\ns                  :Toggle between vertical / horizontal split in the preview mode.\n\u003cAlt-j\u003e\n / \u003cAlt-\u003cDown\u003e\u003e    :Scroll down the preview text.\n\u003cAlt-k\u003e \n / \u003cAlt-\u003cUp\u003e\u003e      :Scroll up the preview text.\n\u003cBS\u003e               :Toggle whether to show hidden items.\nt                  :Toggle the sort order (name \u003c-\u003e modified time).\nc                  :Switch to the rename mode.\n/{keyword}         :Search items by a keyword.\nn                  :Go forward to the item that matches the keyword.\nN                  :Go backward to the item that matches the keyword.\n:                  :Switch to the command line.\n  - \u003cC-r\u003ea         :In the command line, paste item name in register a.\n:cd\u003cCR\u003e            :Go to the home directory.\n:cd {path}\u003cCR\u003e     :Go to the path.\n:e\u003cCR\u003e             :Reload the current directory.\n:config\u003cCR\u003e        :Go to the dirctory that contains the config file if exists.\n:trash\u003cCR\u003e         :Go to the trash directory.\n:empty\u003cCR\u003e         :Empty the trash directory.\n:h\u003cCR\u003e             :Show help.\n:q\u003cCR\u003e             :Exit.\n:{command}         :Execute a command e.g. :zip test *.md\n\u003cEsc\u003e              :Return to the normal mode.\nZZ                 :Exit without cd to last working directory\n                    (if `match_vim_exit_behavior` is `false`).\nZQ                 :cd into the last working directory and exit\n                    (if shell setting is ready and `match_vim_exit_behavior is `false`).\n```\n\n\u003ca id=\"preview\"\u003e\u003c/a\u003e\n\n## Preview feature\n\nBy default, text files and directories can be previewed by pressing `v`.\\\nInstall `chafa` and you can preview images as well.\n\n\u003ca id=\"configuration\"\u003e\u003c/a\u003e\n\n## Configuration\n\n### Config file\n\nIf any config file is not found, or found one is broken, felix launches with the default configuration, without creating new one.\nNote that the default editor is `$EDITOR`, so if you've not set it, opening a file will fail.\nYou can find default config file (`config.yaml`) in this repository.\n\n*Both `config.yaml` and `config.yml` work from v2.7.0*\n\n### Trash directory and log file\n\nContrary to the config file, these directory and file will be automatically created.\n\n### Linux\n\n```\nconfig file     : $XDG_CONFIG_HOME/felix/config.yaml(config.yml)\ntrash directory : $XDG_DATA_HOME/felix/Trash\nlog files       : $XDG_DATA_HOME/felix/log\n```\n\n### macOS\n\nOn macOS, felix looks for the config file in the following locations:\n\n1. `$HOME/Library/Application Support/felix/config.yaml(config.yml)`\n2. `$HOME/.config/felix/config.yaml(config.yml)`\n\n```\ntrash directory : $HOME/Library/Application Support/felix/Trash\nlog files       : $HOME/Library/Application Support/felix/log\n```\n\n### Windows\n\n```\nconfig file     : $PROFILE\\AppData\\Roaming\\felix\\config.yaml(config.yml)\ntrash directory : $PROFILE\\AppData\\Local\\felix\\Trash\nlog files       : $PROFILE\\AppData\\Local\\felix\\log\n```\n\n### About `Rgb` and `AnsiValue`\nYou can configure these colors like this:\n```\ncolor:\n  dir_fg: LightCyan\n  file_fg: !AnsiValue 120\n  symlink_fg: LightYellow\n  dirty_fg: !Rgb [124, 30, 40]\n```\ncf: https://docs.rs/serde_yaml/latest/serde_yaml/#using-serde-derive\n\nFor more details, visit https://kyoheiu.dev/felix.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyoheiu%2Ffelix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyoheiu%2Ffelix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyoheiu%2Ffelix/lists"}