Add Hello Plugin with settings pane and metadata

This commit is contained in:
stoorps 2026-04-25 00:17:31 +01:00
commit ec1456fe72
Signed by: stoorps
SSH key fingerprint: SHA256:AZlPfu9hTu042EGtZElmDQoy+KvMOeShLDan/fYLoNI
4 changed files with 115 additions and 0 deletions

View file

@ -0,0 +1,13 @@
[package]
name = "ohn-plugin-hello"
version = "0.1.0"
edition = "2024"
[package.metadata.hotplug.api_versions]
OhnUiPlugin = "1.0"
[dependencies]
ohn-ui-plugin = { workspace = true }
hotplug-meta = { workspace = true }
inventory = { workspace = true }
gpui = { workspace = true }

View file

@ -0,0 +1,74 @@
use gpui::prelude::*;
use gpui::*;
use ohn_ui_plugin::{OhnUiPlugin, PluginSettingsPane, PluginSidePanel};
/// Hello Plugin — a minimal demo of contributing a settings pane via OhnUiPlugin.
#[derive(Default)]
pub struct HelloPlugin;
impl hotplug_meta::PluginMeta for HelloPlugin {
fn id() -> &'static str {
"org.devism.hello-plugin"
}
fn name() -> &'static str {
"Hello Plugin"
}
fn version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
}
impl OhnUiPlugin for HelloPlugin {
fn settings_pane(&self) -> Option<PluginSettingsPane> {
Some(PluginSettingsPane {
label: "Hello",
icon_name: "star",
build: std::sync::Arc::new(|_window, cx| cx.new(|_cx| HelloView).into()),
})
}
fn side_panel(&self) -> Option<PluginSidePanel> {
None
}
}
ohn_ui_plugin::register_ohn_ui_plugin!(HelloPlugin);
// ---------------------------------------------------------------------------
// Settings pane view
// ---------------------------------------------------------------------------
struct HelloView;
impl Render for HelloView {
fn render(
&mut self,
_window: &mut Window,
_cx: &mut Context<Self>,
) -> impl IntoElement {
div()
.flex()
.flex_col()
.items_center()
.justify_center()
.gap(px(16.0))
.p(px(40.0))
.child(
div()
.text_size(px(28.0))
.child("👋"),
)
.child(
div()
.text_size(px(18.0))
.font_weight(FontWeight::SEMIBOLD)
.child("Hello from the Hello Plugin!"),
)
.child(
div()
.text_size(px(13.0))
.text_color(gpui::rgb(0x888888))
.child("This demo plugin was installed via the hotplug registry."),
)
}
}