2025-03-29 08:01:13 -04:00
# CLIDE
2026-01-25 14:57:34 -05:00
CLIDE is an extendable command-line driven development environment written in Rust using the Qt UI framework that supports both full and headless Linux environments.
The GUI is written in QML compiled through Rust using the cxx-qt crate, while the TUI was implemented using the ratatui crate.
2026-01-17 14:04:02 -05:00
It's up to you to build your own development environment for your tools.
To add tools for your purposes, create a plugin that implements the `ClidePlugin` trait. (This is currently under development and not yet available.)
2026-01-25 14:57:34 -05:00
Once you've created your plugin, you can submit a pull request to add a link to the git repository for your plugin to the final section in this README if you'd like to contribute.
2025-03-29 08:01:13 -04:00
The following packages must be installed before the application will build.
2026-01-17 14:04:02 -05:00
In the future, we may provide a minimal installation option that only includes dependencies for the headless TUI.
2025-03-29 08:01:13 -04:00
```bash
2025-03-30 21:38:57 -04:00
sudo apt install qt6-base-dev qt6-declarative-dev qt6-tools-dev qml6-module-qtquick-controls qml6-module-qtquick-layouts qml6-module-qtquick-window qml6-module-qtqml-workerscript qml6-module-qtquick-templates qml6-module-qtquick qml6-module-qtquick-dialogs qt6-svg-dev
2025-03-29 08:01:13 -04:00
```
And of course, [Rust ](https://www.rust-lang.org/tools/install ).
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
## Development
It's recommended to use RustRover or Qt Creator for development.
The [Qt Installer ](https://www.qt.io/download-qt-installer ) will provide the latest Qt6 LTS and Qt Creator.
If using RustRover be sure to set your QML binaries path in the settings menu.
If Qt was installed to its default directory this will be `$HOME/Qt/6.8.3/gcc_64/bin/` .
2026-01-17 14:04:02 -05:00
Viewing documentation in the web browser is possible, but using Qt Assistant is recommended.
It comes with Qt6 when installed. Run the following command to start it.
2025-03-30 11:47:16 -04:00
```bash
nohup $HOME/Qt/6.8.3/gcc_64/bin/assistant > /dev/null 2>& 1 &
```
2025-03-30 16:14:58 -04:00
If you are looking for an include path from Qt
```bash
find /usr/include/x86_64-linux-gnu/qt6/ -name QFile*
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QFileIconProvider
/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QFileDialog
/usr/include/x86_64-linux-gnu/qt6/QtGui/QFileSystemModel
/usr/include/x86_64-linux-gnu/qt6/QtGui/QFileOpenEvent
/usr/include/x86_64-linux-gnu/qt6/QtCore/QFile
/usr/include/x86_64-linux-gnu/qt6/QtCore/QFileDevice
/usr/include/x86_64-linux-gnu/qt6/QtCore/QFileSystemWatcher
/usr/include/x86_64-linux-gnu/qt6/QtCore/QFileInfoList
/usr/include/x86_64-linux-gnu/qt6/QtCore/QFileInfo
/usr/include/x86_64-linux-gnu/qt6/QtCore/QFileSelector
```
This helped find that QFileSystemModel is in QtGui and not QtCore.
2025-03-29 08:01:13 -04:00
### Resources
Some helpful links for reading up on QML if you're just getting started.
2025-03-30 11:58:44 -04:00
* [Rust Crates - cxx-qt ](https://docs.rs/releases/search?query=cxx_qt )
2025-03-29 08:01:13 -04:00
* [QML Reference ](https://doc.qt.io/qt-6/qmlreference.html )
* [QML Coding Conventions ](https://doc.qt.io/qt-6/qml-codingconventions.html )
* [All QML Controls Types ](https://doc.qt.io/qt-6/qtquick-controls-qmlmodule.html )
2025-03-30 11:58:44 -04:00
* [KDAB CXX-Qt Book ](https://kdab.github.io/cxx-qt/book/ )
* [github.com/KDAB/cxx-qt ](https://github.com/KDAB/cxx-qt )
2026-01-17 14:04:02 -05:00
### Plugins
TODO: Add a list of plugins here. The first example will be C++ with CMake functionality.