{"id":23222737,"url":"https://github.com/pmunch/termfm","last_synced_at":"2025-08-22T07:17:33.199Z","repository":{"id":76831517,"uuid":"314246876","full_name":"PMunch/termfm","owner":"PMunch","description":null,"archived":false,"fork":false,"pushed_at":"2020-11-21T00:27:59.000Z","size":10,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-13T20:50:07.507Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PMunch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-11-19T12:51:05.000Z","updated_at":"2020-11-21T00:28:01.000Z","dependencies_parsed_at":"2023-03-01T06:45:47.386Z","dependency_job_id":null,"html_url":"https://github.com/PMunch/termfm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PMunch/termfm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMunch%2Ftermfm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMunch%2Ftermfm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMunch%2Ftermfm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMunch%2Ftermfm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PMunch","download_url":"https://codeload.github.com/PMunch/termfm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMunch%2Ftermfm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271601986,"owners_count":24788165,"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","status":"online","status_checked_at":"2025-08-22T02:00:08.480Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-12-18T23:14:10.140Z","updated_at":"2025-08-22T07:17:33.115Z","avatar_url":"https://github.com/PMunch.png","language":"Nim","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TermFM\n\nTo many people [eDEX-UI](https://github.com/GitSquared/edex-ui) was simply seen\nas a joke UI, an experiment, or interactive art. But after watching a\ndemonstration of it I saw something that piqued my interest. Namely the file\nmanager that follows the terminal. It's one of the things that has sometimes\nirked me while looking for a file. The `cd/ls/cd/ls/cd/ls` loop quickly gets\ntedious. And opening my file manager, navigating to the folder I'm in, find the\nthing I was looking for, and then copying the path back is even worse. So I\ncreated this thing, TermFM, short for \"Terminal File Manager\". This is\ncurrently in a PoC state, and only supports the basic premise of the idea. Here\nis a YouTube video I recorded of how it works:\n\n[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/KoSbxQ_UlyA/0.jpg)](https://www.youtube.com/watch?v=KoSbxQ_UlyA)\n\n## Setup\nTo make this work you need to add a little thing to you PS1:\n\n``` bash\nstore_dir() {\n  xprop -id $WINDOWID -f _CUSTOM_FOLDER 8s -set _CUSTOM_FOLDER $(pwd)\n}\n\nPS1='$(store_dir)' # For bash, you probably want to append/prepend it to what you have already\nPROMPT='$(store_dir)' # For zsh, same as above\n```\n\nThen you can simply run TermFM whenever you want:\n```\ntermfm $WINDOWID \u0026\n```\n\nAs you can see the program takes in the X11 window ID to read the property of\nand direct the `xdotool type` command at. This obviously doesn't have to be the\nterminal that launches TermFM, so you could easily have a keyboard shortcut that\njust grabbed the current window (but maybe double check that it's actually a\nterminal).\n\n## TODO\nPretty much everything. Things that could be implemented, in no particular\norder:\n\n- Scrolling\n- Options for fonts/icons\n- Support the various file type colours\n- Some kind of check if the terminal is ready for input\n- Clear whatever is on the terminal input line before typing\n- Different icons for different files\n- Image previews\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmunch%2Ftermfm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmunch%2Ftermfm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmunch%2Ftermfm/lists"}