From 3cff9b3ef619755308829d8accbeed0d4fae9dc4 Mon Sep 17 00:00:00 2001 From: h1romas4 Date: Mon, 28 Aug 2023 20:35:28 +0900 Subject: [PATCH] add support plugin config and permission system on zellij 0.38 --- .github/workflows/build-release.yml | 2 +- .vscode/tasks.json | 58 +++++++++++++ .zellij-datetime.kdl | 9 -- Cargo.lock | 129 ++++++++++++++++++++++++++-- Cargo.toml | 7 +- README.md | 86 +++++++++---------- docs/images/zellij-05.png | Bin 0 -> 103228 bytes plugin.kdl | 16 +++- rust-toolchain | 2 +- src/config.rs | 125 +++++++++++++++++---------- src/line.rs | 51 +++++++---- src/main.rs | 63 ++++++++------ 12 files changed, 389 insertions(+), 159 deletions(-) create mode 100644 .vscode/tasks.json delete mode 100644 .zellij-datetime.kdl create mode 100644 docs/images/zellij-05.png diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index c15b074..85afc22 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -23,7 +23,7 @@ jobs: path: | ~/.rustup ~/.cargo - key: ${{ runner.os }}-rust-1.69-opt + key: ${{ runner.os }}-rust-1.71-opt - name: Rust Toolchain Setup if: steps.cache-toolchaine.outputs.cache-hit != 'true' diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..8441e7b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,58 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Build zellij-datetime", + "type": "shell", + "command": "cargo build", + "presentation": { + "reveal": "always", + "panel": "shared" + } + }, + { + "label": "Run zellij-datetime", + "dependsOn": ["Build zellij-datetime"], + "type": "shell", + "command": "podman", + "args": [ + "run", + "--name", + "zellij-datetime", + "--env", + "SHELL=/usr/bin/bash", + "-v", + "${workspaceRoot}/../zellij/target/release/:/opt/zellij", + "-v", + "${workspaceRoot}:/opt/zellij-datetime", + "-w", + "/opt/zellij-datetime", + "-it", + "--rm", + "ubuntu:22.04", + "/opt/zellij/zellij", + "-l", + "plugin.kbl" + ], + "presentation": { + "reveal": "always", + "panel": "shared" + } + }, + { + "label": "Stop zellij-datetime", + "type": "shell", + "command": "podman", + "args": [ + "stop", + "zellij-datetime" + ], + "presentation": { + "reveal": "always", + "panel": "shared" + } + } + ] +} diff --git a/.zellij-datetime.kdl b/.zellij-datetime.kdl deleted file mode 100644 index 77e4bd6..0000000 --- a/.zellij-datetime.kdl +++ /dev/null @@ -1,9 +0,0 @@ -timezone { - define "UTC" 0 - define "PDT" -7 - define "JST" +9 -} - -defalut_timezone "JST" - -background_color "#202020" diff --git a/Cargo.lock b/Cargo.lock index 28deb86..5aeef3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -300,6 +300,12 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + [[package]] name = "cc" version = "1.0.79" @@ -665,6 +671,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + [[package]] name = "errno" version = "0.3.1" @@ -1042,6 +1054,15 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.6" @@ -1287,6 +1308,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + [[package]] name = "nix" version = "0.23.2" @@ -1529,6 +1556,16 @@ dependencies = [ "sha2 0.10.6", ] +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "phf" version = "0.10.1" @@ -1627,6 +1664,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1660,6 +1707,60 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck 0.4.1", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 1.0.109", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost", +] + [[package]] name = "quote" version = "1.0.26" @@ -2564,6 +2665,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "which" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +dependencies = [ + "either", + "libc", + "once_cell", +] + [[package]] name = "winapi" version = "0.3.9" @@ -2747,12 +2859,11 @@ dependencies = [ [[package]] name = "zellij-datetime" -version = "0.16.0" +version = "0.17.0" dependencies = [ "ansi_term", "chrono-wasi", "csscolorparser", - "kdl", "linked-hash-map", "zellij-tile", "zellij-tile-utils", @@ -2760,9 +2871,9 @@ dependencies = [ [[package]] name = "zellij-tile" -version = "0.37.2" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7c93e10683f2a81cfbbcfd005765c68eadc2b8d9aa24e091e71e03ce2a40d0" +checksum = "077ea8d82d4d6f9dc24b672999004c32a72a5350d50f0f37397594f3d168bca1" dependencies = [ "clap", "serde", @@ -2774,18 +2885,18 @@ dependencies = [ [[package]] name = "zellij-tile-utils" -version = "0.37.2" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95fe4b6b00f2e6082cdaf44196a7d9e7ae7bbd2184ccbbc00a09bfa41a72b60" +checksum = "fe4262cd639250b356f809ae295ba73d5aaaec1e31d392d056d106fc3c64c3ae" dependencies = [ "ansi_term", ] [[package]] name = "zellij-utils" -version = "0.37.2" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c043465af8187811927bb5f4c2863aece71081a355e8616fa6d00892eedba2" +checksum = "46d5d4651c2f87e59795582339eb5acaebe164cb5ec984a5702e1577657b5142" dependencies = [ "anyhow", "async-channel", @@ -2809,6 +2920,8 @@ dependencies = [ "notify-debouncer-full", "once_cell", "percent-encoding", + "prost", + "prost-build", "regex", "rmp-serde", "serde", diff --git a/Cargo.toml b/Cargo.toml index 46e6d26..affb0bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,15 +1,14 @@ [package] name = "zellij-datetime" -version = "0.16.0" +version = "0.17.0" authors = ["h1romas4 "] edition = "2021" [dependencies] -zellij-tile = "0.37.2" -zellij-tile-utils = "0.37.2" +zellij-tile = "0.38.0" +zellij-tile-utils = "0.38.0" ansi_term = "^0.12" chrono-wasi = "^0.4" -kdl = { version = "^4.5" } linked-hash-map = "^0.5" csscolorparser = "^0.6" diff --git a/README.md b/README.md index 55d5ed1..ba5c359 100644 --- a/README.md +++ b/README.md @@ -4,42 +4,19 @@ This plugin adds a date and time pane to [Zellij](https://zellij.dev/), a terminal workspace. -![zellij-04.png](https://raw.githubusercontent.com/h1romas4/zellij-datetime/main/docs/images/zellij-04.png) +![zellij-05.png](https://raw.githubusercontent.com/h1romas4/zellij-datetime/main/docs/images/zellij-05.png) Zellij's plugin system leverages WebAssembly/WASI, and this plugin will also work with both amd64 and Arm in the same binary. -## WIP - -- [x] Support for changing timezone by click or scroll on a pane. -- [x] Support for timezone definition files. -- [x] Binary size reduction. -- [ ] Improved parsing of configuration files. -- [x] Support for background color specification. -- [ ] When a Zellij session is detached and reattached, the plugin stops without getting drawing and timer events. -- [ ] Unnecessary borderlines appear when this plugin is placed at the bottom of the workspace with borderless=true. - ## Require -* Zellij `0.37.2` +* Zellij `0.38.0` or later ``` $ zellij -V -zellij 0.37.2 +zellij 0.38.0 ``` -``` -$ cat Cargo.toml | grep -A 2 dependencies -[dependencies] -zellij-tile = "0.37.2" -zellij-tile-utils = "0.37.2" -``` - -> https://zellij.dev/documentation/plugin-upgrading.html -> -> Upgrading a Plugin -> -> Since Zellij plugins using zellij-tile rely on shared data structures, currently one would need to compile a plugin against the corresponding zellij-tile package of the zellij version it is installed on. - ## Setup Preparation of Plug-in deployment destination: @@ -85,33 +62,40 @@ layout { ## Usage - Timezone can be selected by left mouse click or scrolling. -- Insert a date/time string into current pane with a right mouse click. +- Insert a date/time string into current pane with a right mouse click. (Require `enable_right_click true` plugin setting) https://github.com/h1romas4/zellij-datetime/assets/4337664/6ba30ce8-f1c5-4c32-9d00-18e2224b4c37 -## Settings - -Place the configuration file [`.zellij-datetime.kdl`](https://github.com/h1romas4/zellij-datetime/blob/main/.zellij-datetime.kdl) in the Zellij startup directory. - -If you are running Zellij from `.bashrc`, it will be `~/.zellij-datetime.kdl`. - -**Timezone** +## Plugin settings ``` -timezone { - define "UTC" 0 - define "PDT" -7 - define "JST" +9 +layout { + pane size=1 borderless=true { + plugin location="file:./target/wasm32-wasi/debug/zellij-datetime.wasm" { + timezone1 "PDT/-9" + timezone2 "UTC/0" + timezone3 "CEST/+2" + timezone4 "JST/+9" + default_timezone "JST" + background_color "#0080a0" + foreground_color "#ffffff" + pane_color "#1e1e1e" + enable_right_click false + } + } + pane } - -defalut_timezone "JST" ``` -**Color** - -``` -background_color "#202020" -``` +| Key | Format | Default | Note | +| -------------------- | --------------- | -------------- | ---- | +| `timezone1` | `"name/offset"` | `"UTF/0"` | | +| `timezone[2-9]` | `"name/offset"` | - | | +| `default_timezone` | `"name"` | `"UTF"` | | +| `background_color` | `"#color"` | `"#0080a0"` | | +| `foreground_color` | `"#color"` | `"#ffffff"` | It may be adjusted automatically depending on the `background_color` | +| `pane_color` | `"#color"` | `"#1e1e1e"` | | +| `enable_right_click` | bool | `false` | Right-clicking on the clock outputs the string format to stdin; Allow `PermissionType::WriteToStdin` permission when starting the plugin. | ## Build @@ -148,11 +132,21 @@ zellij MIT License +## WIP + +- [x] Support for changing timezone by click or scroll on a pane. +- [x] Support for timezone definition files. +- [x] Binary size reduction. +- [x] Improved parsing of configuration files. +- [x] Support for background color specification. +- [ ] When a Zellij session is detached and reattached, the plugin stops without getting drawing and timer events. [#2575](https://github.com/zellij-org/zellij/issues/2575) +- [x] Unnecessary borderlines appear when this plugin is placed at the bottom of the workspace with borderless=true. + ## Note ### Operation log in riscv64 -At this time, RISC-V is not yet supported in Wasmer 2.3 used by Zellij. RISC-V has been supported since Wasmer 3.2. +At this time, RISC-V is not yet supported in Wasmer 3.1 used by Zellij. RISC-V has been supported since Wasmer 3.2. ```bash $ uname -a diff --git a/docs/images/zellij-05.png b/docs/images/zellij-05.png new file mode 100644 index 0000000000000000000000000000000000000000..705ac539945166f31c7364cbdcc44401b7b0d133 GIT binary patch literal 103228 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
-5|J1MLm9a0vZcumX%R3!H!E? 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 Y;7Z)6)gu{~v&XM6(lgb?X+M7be}xCH6#xJL literal 0 HcmV?d00001 diff --git a/plugin.kdl b/plugin.kdl index 15c36f0..9a596dc 100644 --- a/plugin.kdl +++ b/plugin.kdl @@ -1,11 +1,25 @@ layout { pane size=1 borderless=true { - plugin location="file:./target/wasm32-wasi/debug/zellij-datetime.wasm" + plugin location="file:./target/wasm32-wasi/debug/zellij-datetime.wasm" { + timezone1 "PDT/-9" + timezone2 "UTC/0" + timezone3 "CEST/+2" + timezone4 "JST/+9" + default_timezone "JST" + background_color "#0080a0" + foreground_color "#ffffff" + pane_color "#1e1e1e" + enable_right_click true + } } pane size=1 borderless=true { plugin location="zellij:tab-bar" } pane + pane command="tail" close_on_exit=true { + args "-f" "zellij.log" + cwd "/tmp/zellij-0/zellij-log" + } pane size=2 borderless=true { plugin location="zellij:status-bar" } diff --git a/rust-toolchain b/rust-toolchain index cfad046..64eef0f 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "1.69" +channel = "1.71.1" targets = [ "wasm32-wasi" ] diff --git a/src/config.rs b/src/config.rs index 6df3eee..a9c58ce 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,33 +1,40 @@ +use std::collections::BTreeMap; + use csscolorparser::Color; -use kdl::KdlDocument; use linked_hash_map::LinkedHashMap; -static DEFALUT_BG_COLOR: (u8, u8, u8) = (32, 32, 32); +static DEFAULT_TIMEZONE: &str = "UTC"; +static DEFAULT_BACKGROUND_COLOR: &str = "#0080a0"; +static DEFAULT_FOREGROUND_COLOR: &str = "#ffffff"; +static DEFAULT_PANE_COLOR: &str = "#1e1e1e"; pub struct Config { timezone: LinkedHashMap, default_timezone: String, - backgound_color: (u8, u8, u8), + backgound_color: Option<(u8, u8, u8)>, + foreground_color: Option<(u8, u8, u8)>, + pane_color: Option<(u8, u8, u8)>, + enable_right_click: bool, } impl Default for Config { fn default() -> Self { - let default_timezone = "UTC"; + let default_timezone = DEFAULT_TIMEZONE; let mut timezone: LinkedHashMap = LinkedHashMap::new(); - // default config timezone.insert(default_timezone.to_string(), 0); - timezone.insert("PDT".to_string(), -7); - timezone.insert("JST".to_string(), 9); Config { timezone, default_timezone: default_timezone.to_string(), - backgound_color: DEFALUT_BG_COLOR, + backgound_color: Some(parse_color(DEFAULT_BACKGROUND_COLOR).unwrap()), + foreground_color: Some(parse_color(DEFAULT_FOREGROUND_COLOR).unwrap()), + pane_color: Some(parse_color(DEFAULT_PANE_COLOR).unwrap()), + enable_right_click: false, } } } impl Config { - pub fn get_defalut_timezone(&self) -> String { + pub fn get_default_timezone(&self) -> String { self.default_timezone.to_string() } @@ -68,54 +75,78 @@ impl Config { } } - pub fn get_backgound_color(&self) -> (u8, u8, u8) { + pub fn get_backgound_color(&self) -> Option<(u8, u8, u8)> { self.backgound_color } - pub fn load_config(&mut self, setting: &str) { - let mut config_timezone: LinkedHashMap = LinkedHashMap::new(); - if let Ok(doc) = setting.parse::() { - // timezone tree (TODO: using KQL or macro) - if let Some(timezone) = doc.get("timezone") { - if let Some(children) = timezone.children() { - for node in children.nodes() { - if node.name().value() == "define" && node.entries().len() >= 2 { - if let Ok(offset) = node.entries()[1].to_string().trim().parse() { - config_timezone.insert( - node.entries()[0].to_string().trim().replace('"', ""), - offset, - ); - } + pub fn get_foreground_color(&self) -> Option<(u8, u8, u8)> { + self.foreground_color + } + + pub fn get_pane_color(&self) -> Option<(u8, u8, u8)> { + self.pane_color + } + + pub fn get_enable_right_click(&self) -> bool { + self.enable_right_click + } + + pub fn configuration(&mut self, configuration: &BTreeMap) { + let mut timezone: LinkedHashMap = LinkedHashMap::new(); + let mut default_timezone: Option = None; + + for (key, value) in configuration { + match key.as_str() { + "timezone1" | "timezone2" | "timezone3" | "timezone4" | "timezone5" + | "timezone6" | "timezone7" | "timezone8" | "timezone9" => { + let value: Vec<&str> = value.split('/').collect(); + if value.len() == 2 { + if let Ok(offset) = value[1].parse() { + timezone.insert(value[0].trim().to_string(), offset); } } } - } - // override defalut config - if !config_timezone.is_empty() { - self.timezone = config_timezone; - } - // default timezone - if let Some(defalut_timezone) = doc.get_arg("defalut_timezone") { - let timezone = defalut_timezone.to_string().trim().replace('"', ""); - if self.timezone.contains_key(&timezone) { - self.default_timezone = timezone; - } else { - // first key - self.default_timezone = self.timezone.keys().next().unwrap().to_string(); + "default_timezone" => { + default_timezone = Some(value.trim().to_string()); } + "background_color" => { + if let Ok(color) = parse_color(value) { + self.backgound_color = Some((color.0, color.1, color.2)); + } + } + "foreground_color" => { + if let Ok(color) = parse_color(value) { + self.foreground_color = Some((color.0, color.1, color.2)); + } + } + "pane_color" => { + if let Ok(color) = parse_color(value) { + self.pane_color = Some((color.0, color.1, color.2)); + } + } + "enable_right_click" => { + self.enable_right_click = value.trim().parse().unwrap_or(false); + } + _ => {} } - // backgound color - if let Some(backgound_color) = doc.get_arg("background_color") { - if let Ok(color) = backgound_color - .to_string() - .replace('"', "") - .trim() - .parse::() - { - let color = color.to_rgba8(); - self.backgound_color = (color[0], color[1], color[2]); + } + + if !timezone.is_empty() { + self.default_timezone = timezone.keys().next().unwrap().to_string(); + if let Some(default_timezone) = default_timezone { + if timezone.contains_key(&default_timezone) { + self.default_timezone = default_timezone; } } + self.timezone = timezone; } } } + +fn parse_color(color: &str) -> Result<(u8, u8, u8), &str> { + if let Ok(color) = color.to_string().trim().parse::() { + let color = color.to_rgba8(); + return Ok((color[0], color[1], color[2])); + } + Err("Color format parse error") +} diff --git a/src/line.rs b/src/line.rs index 55ac287..ad96b69 100644 --- a/src/line.rs +++ b/src/line.rs @@ -7,24 +7,41 @@ static ARROW_SPACE: &str = " "; #[derive(Default)] pub struct Line { - fg_color: PaletteColor, - bg_color: PaletteColor, - datetime_bg_color: PaletteColor, + backgound_color: PaletteColor, + foreground_color: PaletteColor, + pane_color: PaletteColor, separator: (String, String, String), } impl Line { - pub fn update_style(&mut self, style: Style, datetime_bg_color: (u8, u8, u8)) { - // pallet - self.fg_color = style.colors.fg; - self.bg_color = style.colors.bg; - self.datetime_bg_color = PaletteColor::Rgb(datetime_bg_color); + pub fn update_style( + &mut self, + backgound_color: Option<(u8, u8, u8)>, + foreground_color: Option<(u8, u8, u8)>, + pane_color: Option<(u8, u8, u8)>, + ) { + // set color + if let Some(bg_color) = backgound_color { + self.backgound_color = PaletteColor::Rgb(bg_color); + } + if let Some(fg_color) = foreground_color { + self.foreground_color = PaletteColor::Rgb(fg_color); + } + if let Some(pane_color) = pane_color { + self.pane_color = PaletteColor::Rgb(pane_color); + } // create charctor - let bg_1 = self.bg_color; - let bg_2 = self.datetime_bg_color; + let bg_1 = self.pane_color; + let bg_2 = self.backgound_color; let arrow = &style!(bg_2, bg_2).bold().paint(ARROW_SPACE).to_string(); - let sep_1 = &style!(bg_2, bg_1).bold().paint(ARROW_SEPARATOR_1).to_string(); - let sep_2 = &style!(bg_1, bg_2).bold().paint(ARROW_SEPARATOR_2).to_string(); + let sep_1 = &style!(bg_2, bg_1) + .bold() + .paint(ARROW_SEPARATOR_1) + .to_string(); + let sep_2 = &style!(bg_1, bg_2) + .bold() + .paint(ARROW_SEPARATOR_2) + .to_string(); let mut sp_0 = String::new(); sp_0.push_str(sep_1); sp_0.push_str(arrow); @@ -38,7 +55,7 @@ impl Line { } pub fn create(&self, cols: usize, timezone: &str, date: &str, time: &str) -> String { - // padding (support full width) + // padding (partial support for full-width characters) let timezone_len = timezone .chars() .map(|c| if c.is_ascii() { 1 } else { 2 }) @@ -47,16 +64,16 @@ impl Line { // There are cases where cols may be declared momentarily low at render time. let padding: String = if cols as isize - width as isize > 0 { let space = ARROW_SPACE.repeat(cols - width); - style!(self.fg_color, self.bg_color) + style!(self.foreground_color, self.pane_color) .paint(space) .to_string() } else { String::new() }; - let timezone = style!(self.fg_color, self.datetime_bg_color).paint(timezone); - let date = style!(self.fg_color, self.datetime_bg_color).paint(date); - let time = style!(self.fg_color, self.datetime_bg_color).paint(time); + let timezone = style!(self.foreground_color, self.backgound_color).paint(timezone); + let date = style!(self.foreground_color, self.backgound_color).paint(date); + let time = style!(self.foreground_color, self.backgound_color).paint(time); format!( "{}{}{}{}{}{}{}{}", diff --git a/src/main.rs b/src/main.rs index 5f9d7bd..6157f14 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,7 @@ mod config; mod line; use chrono::prelude::*; -use std::fs; +use std::collections::BTreeMap; use zellij_tile::prelude::*; use crate::config::Config; @@ -17,36 +17,51 @@ struct State { timezone_offset: i32, before_minute: u32, visible: bool, - style: Style, line: Line, config: Config, } register_plugin!(State); impl ZellijPlugin for State { - fn load(&mut self) { - // load setting from config file - if let Ok(setting) = fs::read_to_string("/host/.zellij-datetime.kdl") { - self.config.load_config(&setting); - }; - // get default timezone in config - self.timezone = self.config.get_defalut_timezone(); - self.timezone_offset = self.config.get_timezone_offset(&self.timezone); + fn load(&mut self, configuration: BTreeMap) { + // setting from plugin config in layout + self.config.configuration(&configuration); + // reset default timezone + self.reset_default_timezone(); + // create line sytle + self.line.update_style( + self.config.get_backgound_color(), + self.config.get_foreground_color(), + self.config.get_pane_color(), + ); // for making minute comparisons self.before_minute = u32::MAX; // zellij plunin setting - set_selectable(false); subscribe(&[ + EventType::PermissionRequestResult, EventType::Timer, EventType::Visible, - EventType::ModeUpdate, EventType::Mouse, ]); + // request permission + if self.config.get_enable_right_click() { + request_permission(&[ + PermissionType::WriteToStdin, + ]); + } else { + set_selectable(false); + } } fn update(&mut self, event: Event) -> bool { - let mut render: bool = false; + let mut should_render: bool = false; match event { + Event::PermissionRequestResult(_result) => { + // reset default timezone (TODO: Why is this reconfiguration necessary here?) + self.reset_default_timezone(); + // Use focus until permission authentication. + set_selectable(false); + }, Event::Visible(visible) => { // TODO: // If the Zellij session is detached, it is called with false, @@ -65,23 +80,16 @@ impl ZellijPlugin for State { if self.before_minute != now_minute { self.before_minute = now_minute; self.now = Some(now); - render = true; + should_render = true; } if self.visible { set_timeout(INTERVAL_TIME); } } - Event::ModeUpdate(mode_info) => { - if self.style != mode_info.style { - self.style = mode_info.style; - self.line - .update_style(self.style, self.config.get_backgound_color()); - } - } Event::Mouse(mouse) => match mouse { Mouse::LeftClick(_size, _align) => { self.change_timezone_next(); - render = true; + should_render = true; } Mouse::RightClick(_, _) => { // write characters to the STDIN of the focused pane @@ -89,17 +97,17 @@ impl ZellijPlugin for State { } Mouse::ScrollUp(_) => { self.change_timezone_prev(); - render = true; + should_render = true; } Mouse::ScrollDown(_) => { self.change_timezone_next(); - render = true; + should_render = true; } _ => {} }, _ => {} } - render + should_render } fn render(&mut self, _rows: usize, cols: usize) { @@ -122,6 +130,11 @@ impl ZellijPlugin for State { } impl State { + fn reset_default_timezone(&mut self) { + self.timezone = self.config.get_default_timezone(); + self.timezone_offset = self.config.get_timezone_offset(&self.timezone); + } + fn change_timezone(&mut self, timezone: String) { self.timezone = timezone; self.timezone_offset = self.config.get_timezone_offset(&self.timezone);