76 lines
3.4 KiB
Markdown
76 lines
3.4 KiB
Markdown
# CLIDE
|
|
|
|
CLIDE is a barebones but extendable IDE written in Rust using the Qt UI framework that supports both full and headless Linux environments.
|
|
The core application will provide you with a text editor that can be extended with plugins written in Rust.
|
|
|
|
The UI is written in QML and compiled to C++ using `cxx`, which is then linked into the Rust application.
|
|
|
|
It's up to you to build your own development environment for your tools.
|
|
This project is intended to be a light-weight core application with no language-specific tools or features.
|
|
To add tools for your purposes, create a plugin that implements the `ClidePlugin` trait. (This is currently under development and not yet available.)
|
|
Once you've created your plugin, you can submit a pull request to add your plugin to the final section in this README if you'd like to contribute.
|
|
If this section becomes too large, we may explore other options to distribute plugins.
|
|
|
|
The following packages must be installed before the application will build.
|
|
In the future, we may provide a minimal installation option that only includes dependencies for the headless TUI.
|
|
|
|
```bash
|
|
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
|
|
```
|
|
|
|
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/`.
|
|
|
|
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.
|
|
|
|
```bash
|
|
nohup $HOME/Qt/6.8.3/gcc_64/bin/assistant > /dev/null 2>&1 &
|
|
```
|
|
|
|
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.
|
|
|
|
### Resources
|
|
|
|
Some helpful links for reading up on QML if you're just getting started.
|
|
|
|
* [Rust Crates - cxx-qt](https://docs.rs/releases/search?query=cxx_qt)
|
|
* [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)
|
|
* [KDAB CXX-Qt Book](https://kdab.github.io/cxx-qt/book/)
|
|
* [github.com/KDAB/cxx-qt](https://github.com/KDAB/cxx-qt)
|
|
|
|
|
|
### Plugins
|
|
|
|
TODO: Add a list of plugins here. The first example will be C++ with CMake functionality.
|