72 Commits

Author SHA1 Message Date
shaunrd0 439d3af7d3 [tui] Open application with no editor tab.
The explorer can be used to open the first tab.
2026-01-25 15:22:47 -05:00
shaunrd0 ae9f787c81 [tui] Add About page within Help MenuBar. 2026-01-25 14:57:34 -05:00
shaunrd0 76fe09f39b [tui] Implement View MenuBar actions.
You can show / hide the Logger and the Explorer now.
2026-01-25 12:45:52 -05:00
shaunrd0 fa36a633ee [tui] Add File MenuBar options Reload and Close. 2026-01-25 12:04:31 -05:00
shaunrd0 6c2f3f9005 [tui] Highlight border of active widget. 2026-01-25 10:16:08 -05:00
shaunrd0 a3d850acd9 [tui] Clean up logger and editor.
Filter some noisy system logs in the Logger by default.
Use LLD for linking to silence warning for deprecated gold linker.
2026-01-25 10:16:03 -05:00
shaunrd0 01eeb9f0ac [tui] Add more logging. 2026-01-25 09:07:41 -05:00
shaunrd0 711f92b7dd [tui] Add EditorTab widget.
+ This adds support for tabbed editors wrapped by EditorTab widgets.
+ The Explorer widget now opens new EditorTabs when a file is selected
  with Enter.
+ The same file may not be opened multiple times.
+ Tabs can be switched with ALT+h or ALT+l (or ALT+ arrow keys)
+ Tabs cannot yet be closed :)

Fixes #9
2026-01-25 01:32:46 -05:00
shaunrd0 5d2a7fa0a1 [tui] Rename title_bar.rs 2026-01-24 16:31:36 -05:00
shaunrd0 45d665f8f6 [tui] Implement Widget for Explorer and MenuBar. 2026-01-24 16:30:22 -05:00
shaunrd0 f531886255 [tui] Handle MenuBar actions.
Fixes #7.
2026-01-24 16:06:50 -05:00
shaunrd0 4e9aedd34c [tui] Renames. 2026-01-24 15:40:19 -05:00
shaunrd0 78c13f5766 [tui] Add TitleBar popups for drop-down menus. 2026-01-24 15:33:48 -05:00
shaunrd0 82ad3ab29f [tui] Add TitleBar struct to handle rendering.
This will support adding drop-down menus.
For now, the widget just highlights which item you selected in the title
bar with left / right keys.
2026-01-24 14:22:42 -05:00
shaunrd0 dd55d7fc5f [tui] Handle mouse input for all widgets.
This way you can still click to interact with the file explorer while
editing a file, for example, without changing widget focus.
2026-01-24 12:49:33 -05:00
shaunrd0 aa4bf8aea6 [tui] Add help text for last focused widget.
+ Fill in TODO help text for all widgets.
2026-01-24 12:32:08 -05:00
shaunrd0 029e0b2952 [tui] Remove AppComponent data.
It just seems to be simpler this way.
2026-01-24 11:46:00 -05:00
shaunrd0 a3c1065f96 [tui] Add bottom status bar with help text.
Fixes #3
2026-01-22 20:36:26 -05:00
shaunrd0 0c87fda795 [tui] Add basic support for focusing widgets.
It's pretty bad but it allows to control which widget accepts input.
2026-01-22 19:47:59 -05:00
shaunrd0 a4413cd052 [tui] Clean up logging. 2026-01-21 20:28:24 -05:00
shaunrd0 4d81cd51a6 [tui] Add ComponentOf trait.
I think it will help with fetching a component by type from the
Components vector attached to App?
2026-01-20 20:50:36 -05:00
shaunrd0 7149ad0118 [tui] Add debug console.
The input will not be handled correctly until #8 is complete, but the
input logic is there and was tested.

Fixes #5.
2026-01-20 20:50:27 -05:00
shaunrd0 1e635ee059 [tui] Use anyhow::bail!() macro. 2026-01-20 19:14:34 -05:00
shaunrd0 42a40fe7f3 [tui] Remove most usage of expect().
Still not quite sure what to do about some pieces in QML bindings for
the GUI.
2026-01-20 17:20:37 -05:00
shaunrd0 ce2949159c [tui] Add AppComponent enum for storing all components. 2026-01-20 16:03:38 -05:00
shaunrd0 3ffdcc2865 [gui] Update cxx-qt dependencies to 0.8.0. 2026-01-20 12:44:13 -05:00
shaunrd0 ecd94a2621 Update to use clap.
Structopt is deprecated.
Also removed some unused dependencies.
2026-01-20 12:24:20 -05:00
shaunrd0 2713d29285 [tui] Store SyntaxSet in the Editor. 2026-01-20 12:06:06 -05:00
shaunrd0 d2846e1e4e [tui] Set tab title to file name.
Also update to use anyhow::Result in some places.
2026-01-20 12:00:24 -05:00
shaunrd0 bccc5a35e2 [tui] Add function for refreshing editor contents.
It's still temporary, but at least it isn't done ad-hoc.
2026-01-19 18:37:45 -05:00
shaunrd0 e65eb20048 [tui] File explorer controls editor contents. 2026-01-19 17:41:46 -05:00
shaunrd0 f10d4cd41d [tui] Allow saving file with CTRL+S.
+ Improved event handling in general.
2026-01-19 15:03:50 -05:00
shaunrd0 507a4d8651 [tui] Cleanup and renames. 2026-01-19 10:27:06 -05:00
shaunrd0 ce6c12f068 [tui] Move default input logic into ClideComponent. 2026-01-18 11:02:41 -05:00
shaunrd0 fe6390c1cd [tui] Add edtui editor for basic vim emulation. 2026-01-18 10:09:28 -05:00
shaunrd0 a8de77f370 [tui] WIP neovim editor. 2026-01-17 19:21:14 -05:00
shaunrd0 b35b98743b [tui] Clean up Border titles. 2026-01-17 17:39:13 -05:00
shaunrd0 733a43ccde [tui] Add basic component trait. 2026-01-17 17:18:34 -05:00
shaunrd0 b65565adfa [tui] Add Explorer widget for left panel. 2026-01-17 15:07:26 -05:00
shaunrd0 fac6ea6bcd Create App struct for TUI. 2026-01-17 14:04:02 -05:00
shaunrd0 7fe3e3e14d WIP ratatui. 2026-01-17 11:41:48 -05:00
shaunrd0 cf59fdfcca Embed SVG icons. 2025-04-19 13:49:29 -04:00
shaunrd0 6a4957588d Pass root path to GUI process. 2025-04-13 13:47:12 -04:00
shaunrd0 f4242f7749 Factor out TUI code. 2025-04-13 12:17:11 -04:00
shaunrd0 fd3c8fb204 Factor out GUI code. 2025-04-13 12:15:31 -04:00
shaunrd0 fd9d47f0c0 Clean up. 2025-04-13 12:09:18 -04:00
shaunrd0 d53ef9aa1b Launch clide in separate process by default.
Improve CLI to support tui and gui modes.
Also supports attaching the GUI to the current terminal via -g
2025-04-13 11:58:28 -04:00
shaunrd0 a29ae43e84 Use CWD if no directory is provided. 2025-04-13 11:01:37 -04:00
shaunrd0 41a9a2a3bf Use structopt. 2025-04-13 10:21:02 -04:00
shaunrd0 7bf6c3299c Add basic CLI for launching head(less) mode. 2025-04-13 09:35:55 -04:00
shaunrd0 90c10d2a16 Debug missing console placeholder text.
It appears on resizing horizontally
2025-04-13 08:31:41 -04:00
shaunrd0 2dcf0529d1 Custom highlighting to fix UI bugs.
+ Selecting text caused blurry editor view.
+ Now prefers syntect theme background color over QML background color.
2025-04-12 13:33:39 -04:00
shaunrd0 f740ff347b Fix file loading. 2025-03-31 22:56:57 -04:00
shaunrd0 9b86553513 Add syntax highlighting with syntect. 2025-03-31 22:32:17 -04:00
shaunrd0 365940267f Add some checks before reading file. 2025-03-31 19:26:04 -04:00
shaunrd0 b426b88b79 Fix colors. 2025-03-30 21:58:38 -04:00
shaunrd0 bdf942371c Add basic FileSystem view. 2025-03-30 21:38:57 -04:00
shaunrd0 b62dce631f Add ClideTreeView. 2025-03-30 16:14:58 -04:00
shaunrd0 1546eb1028 Add FileSystem Rust module. 2025-03-30 13:50:23 -04:00
shaunrd0 4f3aebe64f Add basic stub for filesystem. 2025-03-30 13:14:58 -04:00
shaunrd0 413500dad3 Add an about window. 2025-03-30 12:52:44 -04:00
shaunrd0 b0064c2f69 Update README. 2025-03-30 12:00:27 -04:00
shaunrd0 0f055603a2 Remove unused LineCount. 2025-03-30 11:51:23 -04:00
shaunrd0 094ac92fe4 Reorganize qml files. 2025-03-30 11:49:00 -04:00
shaunrd0 3b8e407632 Consolidate source files. 2025-03-30 11:47:16 -04:00
shaunrd0 d2f5823594 Add RustColors singleton helper. 2025-03-30 11:20:21 -04:00
shaunrd0 be9981291c Speed up animation for dock handles. 2025-03-29 20:20:28 -04:00
shaunrd0 500a329dea Separate LineCount from main. 2025-03-29 20:14:42 -04:00
shaunrd0 70e9f79c8a Separate ProjectView and Editor. 2025-03-29 18:00:16 -04:00
shaunrd0 13a405a801 Add LineCount module. 2025-03-29 16:55:26 -04:00
shaunrd0 a6d2fb9e31 Change colors. 2025-03-29 10:26:39 -04:00
shaunrd0 8b71af06a8 Add placeholders for side panel and console. 2025-03-29 09:55:09 -04:00
3 changed files with 3 additions and 64 deletions
+2 -63
View File
@@ -3,7 +3,8 @@
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.
It's up to you to build your own development environment for your tools. Plugins are planned to be supported in the future for bringing your own language-specific tools or features.
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.)
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.
The following packages must be installed before the application will build.
@@ -19,68 +20,6 @@ And of course, [Rust](https://www.rust-lang.org/tools/install).
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
## Usage
To install and run clide
```bash
git clone https://git.shaunreed.com/shaunrd0/clide
cd clide
cargo install --path .
```
After installation `clide` can be used directly
```bash
clide --help
Extendable command-line driven development environment written in Rust using the Qt UI framework.
If no flags are provided, the GUI editor is launched in a separate process.
If no path is provided, the current directory is used.
Usage: clide [OPTIONS] [PATH]
Arguments:
[PATH] The root directory for the project to open with the clide editor
Options:
-t, --tui Run clide in headless mode
-g, --gui Run the clide GUI in the current process, blocking the terminal and showing all output streams
-h, --help Print help
```
### TUI
The TUI is implemented using the ratatui crate and has the typical features you would expect from a text editor.
You can browse your project tree, open / close new editor tabs, and save / reload files.
Controls for the TUI are listed at the bottom of the window, and update depending on which widget you have focused.
For now, there are no language-specific features or plugins available for the TUI it is only a text editor.
To run the TUI, pass the `-t` or `--tui` flags.
```bash
# With cargo from the project root
cargo run -- -t
# Or via clide directly after installation
clide -t
```
![image](./resources/tui.png)
### GUI
The GUI is still in development. It is at this point a text viewer, instead of a text editor.
There are many placeholder buttons and features in the GUI that do nothing when used.
The GUI is run by default when executing the `clide` application.
```bash
# With cargo from the project root
cargo run
# Or via clide directly after installation
clide
```
## Development
It's recommended to use RustRover or Qt Creator for development.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 KiB

+1 -1
View File
@@ -6,7 +6,7 @@ use std::process::{Command, Stdio};
pub mod gui;
pub mod tui;
/// Extendable command-line driven development environment written in Rust using the Qt UI framework.
/// Command line interface IDE with full GUI and headless modes.
/// If no flags are provided, the GUI editor is launched in a separate process.
/// If no path is provided, the current directory is used.
#[derive(Parser, Debug)]