Shelix does intent to maximize the hidden power of tmux as an IDE, paliate to some young age deficiencies of the very cool and incredibly efficient Helix editor, around an interactive menu that performs IDE related actions.
Since the Helix editor does not provide an API, controls are automated via keystrokes.
This toolsuite is made to allow the developer to keep full control over all aspects of his development environement, allowing further customisations without third party configurations, in the most straightforward way: shell scripts.
The goal is to obtain the most of our keyboard with a symbiosis of tools that work well together.
Contributions and suggestions are welcome!
### System dependencies
Generic infos are given for the Debian family, it is higly recommended to install packages from the sources, in particular to get the last versions.
There is high chance that shelix runs out of the box on proprietary OS, if the blackbox has a shell and understand hashbang scripting, it's a good start.
The system require tmux (tested 3.2, 3.3, 3.4, 3.4 next), PHP8+, and the Helix editor.
`sudo apt install tmux php helix`
Some user-level tools do use ripgrep, fzf, inotify, wmctrl, git, cowsay, unimatrix
`sudo apt install ripgrep fzf wmctrl git`
Files explorer (any of): lf, ranger, fzf (Adapting another one should be straightforward)
We do not have to associate complex keyboard shortcuts in some configuration files, overthink them so that they come in symbiosis together, instead those comes naturally with the name of the element.
Shortcuts are then derived by how we name our tools, or are named files.
To work on the same project on multiple screens and multiple terminal, first create a session within your project dir, then open again the same one, you will be asked if you want to extend on the Left or Right.
By then, the focus key shortcut Shift + arrows will dispatch the focus on all screens, enabling, if all goes well for you, an amazing multi screens workfloW!
By marking panes, we could dispatch actions from any terminal, for example opening a file on the right screen from the menu on the left screen
To create a new tool, we just add to the "scripts" directory.
That directory is already populated with scripts that performs tiny actions.
We could build a tool using any language, using the hashbang mechanism.
A script may return a simple JSON array, to create a menu list, and the selection is ran again as $1.
This mechansim may allow to build complex utilities on a single file.
By passing a rocket a 🚀 in the last element in the array, we dispatch selection immediatly.
The content of the "scripts" directory could be fully erased, so we may start fresh anew to build our own dedicated toolbox.
See "libs" dir for a list of built-in tools that makes the core. Those tools are sourced in the environnement and are available by their namme from any shell within shelix.
Further customisations could be obtained with external utilities like powerline or nerd fonts.
Optimisation of ressources, could be improved by removing elements of the status line or the status line itself.