{"id":26512961,"url":"https://github.com/theflash2k/fsh","last_synced_at":"2026-04-15T08:36:44.799Z","repository":{"id":283391346,"uuid":"951613613","full_name":"TheFlash2k/fsh","owner":"TheFlash2k","description":"A small shell that I created as a side project.","archived":false,"fork":false,"pushed_at":"2025-03-20T01:09:04.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T02:24:35.654Z","etag":null,"topics":["bash","fsh","shell","zsh"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheFlash2k.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2025-03-20T00:50:38.000Z","updated_at":"2025-03-20T01:09:36.000Z","dependencies_parsed_at":"2025-03-20T02:24:37.697Z","dependency_job_id":"9be73926-2c08-44d6-a8ad-3b3d2b55d522","html_url":"https://github.com/TheFlash2k/fsh","commit_stats":null,"previous_names":["theflash2k/fsh"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFlash2k%2Ffsh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFlash2k%2Ffsh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFlash2k%2Ffsh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFlash2k%2Ffsh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheFlash2k","download_url":"https://codeload.github.com/TheFlash2k/fsh/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244734196,"owners_count":20501018,"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":["bash","fsh","shell","zsh"],"created_at":"2025-03-21T04:19:13.816Z","updated_at":"2026-04-15T08:36:44.745Z","avatar_url":"https://github.com/TheFlash2k.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FSH\n\nFlash-Shell - A small utility I created as a side project.\n\n## Compile and Run\n\nTo compile and run, just type:\n\n```bash\nmake\n```\n\nThis will automatically create a new `bin/` folder that will have the `fsh` and it will also compile all the existing plugins\nand put them inside the `bin/plugins` folder.\n\nTo run it, just simply run:\n\n```bash\ncd bin \u0026\u0026 ./fsh\n```\n\nand you'll drop inside fsh.\n\n## Customizations\n\nCurrently, the only customizations I have added are modifications to prompt using the `config.hxx` file and creating your own custom\nplugins.\n\n### Prompt and other modifications\n\nLooking at [./src/config.hxx](./src/config.hxx), you can see that all the variables are modifiable. Currently, I have not added the integration with `.fshrc` file but in the near future, I will surely do that and then we'll have much more control over everything using files rather than recompiling the project every single time.\n\n### Create Custom Plugins\n\nEach plugin is basically a program that can be integrated directly with fsh.\n\nTo create custom plugins, you can get the `[_template].cxx` from the `src/plugins/` directory. Then, all you really need to do is just modify the variables accordingly and inside the `_impl` method, you need to write the actual implementation of the command you're trying to implement.\n\nMake sure to also modify the `plugin_create` export methods because those will be invoked to fetch the class itself when dynamically loading.\n\nTo build, just run the `make plugins` command and you'll have your plugin built.\n\nIf you want to just build this plugin, you can use the following g++ command:\n\n```bash\ng++ -o lib\u003ccmd\u003e.so -fPIC -shared \u003ccmd\u003e.cxx\n```\n\nThen just move the `.so` file to the plugins folder and it will be implemented automatically.\n\nDuring runtime, you can also use the `load-plugin` command to dynamically load a plugin.\n\n## Bugs and other things\n\nThis is just a side project and there may be some bugs here and there. If you find any, just open an issue and I'll try and fix them. But, I'm fairly certain I won't be looking after this project that much but whenever I'm bored and want to do something different.\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheflash2k%2Ffsh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheflash2k%2Ffsh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheflash2k%2Ffsh/lists"}