summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2023-03-06 21:56:49 +0100
committerGitHub <noreply@github.com>2023-03-06 21:56:49 +0100
commitd0a780dd7c537e6a5d304e1a9e052c5f05d69628 (patch)
treed97d9b8285bcc72014b885b80ad2774017470843
parent0708c106d7eecf72f459a1f15800fa8427bd96bd (diff)
chore(repo): revert theme pr (#2229)
* Revert "feat: add self-provided themes (#2224)" This reverts commit 63bfe9c5e495481da97c7c566a727216de75c8a7. * Revert "docs(changelog): add self-provided themes" This reverts commit 364f0e7c44921c23eef69c0f2d5fa4ff31aeb336.
-rw-r--r--CHANGELOG.md1
-rw-r--r--Cargo.lock20
-rw-r--r--example/themes/README.md18
-rw-r--r--example/themes/catppuccin.kdl (renamed from zellij-utils/assets/themes/catppuccin.kdl)0
-rw-r--r--example/themes/dracula.kdl (renamed from zellij-utils/assets/themes/dracula.kdl)0
-rw-r--r--example/themes/everforest-dark.kdl (renamed from zellij-utils/assets/themes/everforest-dark.kdl)0
-rw-r--r--example/themes/everforest-light.kdl (renamed from zellij-utils/assets/themes/everforest-light.kdl)0
-rw-r--r--example/themes/example.kdl34
-rw-r--r--example/themes/gruvbox.kdl (renamed from zellij-utils/assets/themes/gruvbox.kdl)0
-rw-r--r--example/themes/kanagawa.kdl (renamed from zellij-utils/assets/themes/kanagawa.kdl)0
-rw-r--r--example/themes/molokai-dark.kdl (renamed from zellij-utils/assets/themes/molokai-dark.kdl)0
-rw-r--r--example/themes/nord.kdl (renamed from zellij-utils/assets/themes/nord.kdl)0
-rw-r--r--example/themes/one-half-dark.kdl (renamed from zellij-utils/assets/themes/one-half-dark.kdl)0
-rw-r--r--example/themes/pencil.kdl (renamed from zellij-utils/assets/themes/pencil.kdl)0
-rw-r--r--example/themes/solarized-dark.kdl (renamed from zellij-utils/assets/themes/solarized-dark.kdl)0
-rw-r--r--example/themes/solarized-light.kdl (renamed from zellij-utils/assets/themes/solarized-light.kdl)0
-rw-r--r--example/themes/tokyo-night-dark.kdl (renamed from zellij-utils/assets/themes/tokyo-night-dark.kdl)0
-rw-r--r--example/themes/tokyo-night-light.kdl (renamed from zellij-utils/assets/themes/tokyo-night-light.kdl)0
-rw-r--r--example/themes/tokyo-night-storm.kdl (renamed from zellij-utils/assets/themes/tokyo-night-storm.kdl)0
-rw-r--r--example/themes/tokyo-night.kdl (renamed from zellij-utils/assets/themes/tokyo-night.kdl)0
-rw-r--r--zellij-utils/Cargo.toml1
-rw-r--r--zellij-utils/src/consts.rs2
-rw-r--r--zellij-utils/src/kdl/mod.rs30
-rw-r--r--zellij-utils/src/setup.rs47
24 files changed, 41 insertions, 112 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c322ceaa4..9743c3812 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -46,7 +46,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
* fix: log error instead of crashing when unable to set CWD in a template (https://github.com/zellij-org/zellij/pull/2214)
* fix: tab names in layout and gototabname crash on create (https://github.com/zellij-org/zellij/pull/2225)
* feat: add self-provided themes (https://github.com/zellij-org/zellij/pull/2224)
-* feat: allow simulating releases (https://github.com/zellij-org/zellij/pull/2194)
* feat: add args to new-tab action in keybinds (https://github.com/zellij-org/zellij/pull/2072)
Eg:
diff --git a/Cargo.lock b/Cargo.lock
index 7f1878a25..4f64bfb89 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1271,25 +1271,6 @@ dependencies = [
]
[[package]]
-name = "include_dir"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e"
-dependencies = [
- "include_dir_macros",
-]
-
-[[package]]
-name = "include_dir_macros"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
-dependencies = [
- "proc-macro2",
- "quote",
-]
-
-[[package]]
name = "indexmap"
version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4104,7 +4085,6 @@ dependencies = [
"colorsys",
"crossbeam",
"directories-next",
- "include_dir",
"insta",
"interprocess",
"kdl",
diff --git a/example/themes/README.md b/example/themes/README.md
index ec8da20b3..0102efe73 100644
--- a/example/themes/README.md
+++ b/example/themes/README.md
@@ -1,5 +1,19 @@
# Themes
-It contains examples showing how to write a theme.
+Themes can contain different flavors in one file, or can be created as individual files.
-If you would like to add a theme to zellij, please refer [zellij-utils/assets/themes](../../zellij-utils/assets/themes). \ No newline at end of file
+Example:
+
+```
+gruvbox.kdl
+├─ gruvbox-light
+└─ gruvbox-dark
+
+or
+
+gruvbox-light.kdl
+└─ gruvbox-light
+
+gruvbox-dark.kdl
+└─ gruvbox-dark
+```
diff --git a/zellij-utils/assets/themes/catppuccin.kdl b/example/themes/catppuccin.kdl
index b8e70bbb6..b8e70bbb6 100644
--- a/zellij-utils/assets/themes/catppuccin.kdl
+++ b/example/themes/catppuccin.kdl
diff --git a/zellij-utils/assets/themes/dracula.kdl b/example/themes/dracula.kdl
index 26f20504e..26f20504e 100644
--- a/zellij-utils/assets/themes/dracula.kdl
+++ b/example/themes/dracula.kdl
diff --git a/zellij-utils/assets/themes/everforest-dark.kdl b/example/themes/everforest-dark.kdl
index 00f996fec..00f996fec 100644
--- a/zellij-utils/assets/themes/everforest-dark.kdl
+++ b/example/themes/everforest-dark.kdl
diff --git a/zellij-utils/assets/themes/everforest-light.kdl b/example/themes/everforest-light.kdl
index 0bfb9d8f6..0bfb9d8f6 100644
--- a/zellij-utils/assets/themes/everforest-light.kdl
+++ b/example/themes/everforest-light.kdl
diff --git a/example/themes/example.kdl b/example/themes/example.kdl
deleted file mode 100644
index 2a6569dda..000000000
--- a/example/themes/example.kdl
+++ /dev/null
@@ -1,34 +0,0 @@
-// This file shows how to write a theme file
-// using `gruvbox` theme.
-
-themes {
- // example of how to set a theme in RGB format
- gruvbox-light {
- fg 60 56 54
- bg 251 82 75
- black 40 40 40
- red 205 75 69
- green 152 151 26
- yellow 215 153 33
- blue 69 133 136
- magenta 177 98 134
- cyan 104 157 106
- white 213 196 161
- orange 214 93 14
- }
-
- // example of how to set a theme in HEX format
- gruvbox-dark {
- fg "#D5C4A1"
- bg "#282828"
- black "#3C3836"
- red "#CC241D"
- green "#98971A"
- yellow "#D79921"
- blue "#3C8588"
- magenta "#B16286"
- cyan "#689D6A"
- white "#FBF1C7"
- orange "#D65D0E"
- }
-} \ No newline at end of file
diff --git a/zellij-utils/assets/themes/gruvbox.kdl b/example/themes/gruvbox.kdl
index 2c7ca0c8f..2c7ca0c8f 100644
--- a/zellij-utils/assets/themes/gruvbox.kdl
+++ b/example/themes/gruvbox.kdl
diff --git a/zellij-utils/assets/themes/kanagawa.kdl b/example/themes/kanagawa.kdl
index f0b575555..f0b575555 100644
--- a/zellij-utils/assets/themes/kanagawa.kdl
+++ b/example/themes/kanagawa.kdl
diff --git a/zellij-utils/assets/themes/molokai-dark.kdl b/example/themes/molokai-dark.kdl
index 6fd96f9af..6fd96f9af 100644
--- a/zellij-utils/assets/themes/molokai-dark.kdl
+++ b/example/themes/molokai-dark.kdl
diff --git a/zellij-utils/assets/themes/nord.kdl b/example/themes/nord.kdl
index a56a9bfb3..a56a9bfb3 100644
--- a/zellij-utils/assets/themes/nord.kdl
+++ b/example/themes/nord.kdl
diff --git a/zellij-utils/assets/themes/one-half-dark.kdl b/example/themes/one-half-dark.kdl
index ade1874bf..ade1874bf 100644
--- a/zellij-utils/assets/themes/one-half-dark.kdl
+++ b/example/themes/one-half-dark.kdl
diff --git a/zellij-utils/assets/themes/pencil.kdl b/example/themes/pencil.kdl
index 166368349..166368349 100644
--- a/zellij-utils/assets/themes/pencil.kdl
+++ b/example/themes/pencil.kdl
diff --git a/zellij-utils/assets/themes/solarized-dark.kdl b/example/themes/solarized-dark.kdl
index 20482f5c3..20482f5c3 100644
--- a/zellij-utils/assets/themes/solarized-dark.kdl
+++ b/example/themes/solarized-dark.kdl
diff --git a/zellij-utils/assets/themes/solarized-light.kdl b/example/themes/solarized-light.kdl
index 93bac49b7..93bac49b7 100644
--- a/zellij-utils/assets/themes/solarized-light.kdl
+++ b/example/themes/solarized-light.kdl
diff --git a/zellij-utils/assets/themes/tokyo-night-dark.kdl b/example/themes/tokyo-night-dark.kdl
index 6813a3360..6813a3360 100644
--- a/zellij-utils/assets/themes/tokyo-night-dark.kdl
+++ b/example/themes/tokyo-night-dark.kdl
diff --git a/zellij-utils/assets/themes/tokyo-night-light.kdl b/example/themes/tokyo-night-light.kdl
index 3ac5fb767..3ac5fb767 100644
--- a/zellij-utils/assets/themes/tokyo-night-light.kdl
+++ b/example/themes/tokyo-night-light.kdl
diff --git a/zellij-utils/assets/themes/tokyo-night-storm.kdl b/example/themes/tokyo-night-storm.kdl
index e727ef72f..e727ef72f 100644
--- a/zellij-utils/assets/themes/tokyo-night-storm.kdl
+++ b/example/themes/tokyo-night-storm.kdl
diff --git a/zellij-utils/assets/themes/tokyo-night.kdl b/example/themes/tokyo-night.kdl
index 4ea1a8104..4ea1a8104 100644
--- a/zellij-utils/assets/themes/tokyo-night.kdl
+++ b/example/themes/tokyo-night.kdl
diff --git a/zellij-utils/Cargo.toml b/zellij-utils/Cargo.toml
index 0af9d7c78..766031866 100644
--- a/zellij-utils/Cargo.toml
+++ b/zellij-utils/Cargo.toml
@@ -38,7 +38,6 @@ miette = { version = "3.3.0", features = ["fancy"] }
regex = "1.5.5"
tempfile = "3.2.0"
kdl = { version = "4.5.0", features = ["span"] }
-include_dir = "0.7.3"
#[cfg(not(target_family = "wasm"))]
[target.'cfg(not(target_family = "wasm"))'.dependencies]
diff --git a/zellij-utils/src/consts.rs b/zellij-utils/src/consts.rs
index 7599a5ae0..5709db891 100644
--- a/zellij-utils/src/consts.rs
+++ b/zellij-utils/src/consts.rs
@@ -1,7 +1,6 @@
//! Zellij program-wide constants.
use directories_next::ProjectDirs;
-use include_dir::{include_dir, Dir};
use lazy_static::lazy_static;
use once_cell::sync::OnceCell;
use std::path::PathBuf;
@@ -16,7 +15,6 @@ pub static DEBUG_MODE: OnceCell<bool> = OnceCell::new();
pub const SYSTEM_DEFAULT_CONFIG_DIR: &str = "/etc/zellij";
pub const SYSTEM_DEFAULT_DATA_DIR_PREFIX: &str = system_default_data_dir();
-pub static ZELLIJ_THEMES_DIR: Dir = include_dir!("$CARGO_MANIFEST_DIR/assets/themes");
const fn system_default_data_dir() -> &'static str {
if let Some(data_dir) = std::option_env!("PREFIX") {
diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs
index 6d2c5958d..64fe0bac4 100644
--- a/zellij-utils/src/kdl/mod.rs
+++ b/zellij-utils/src/kdl/mod.rs
@@ -1734,8 +1734,12 @@ impl Themes {
Ok(themes)
}
- pub fn from_string(raw_string: String) -> Result<Self, ConfigError> {
- let kdl_config: KdlDocument = raw_string.parse()?;
+ pub fn from_path(path_to_theme_file: PathBuf) -> Result<Self, ConfigError> {
+ // String is the theme name
+ let mut file = File::open(path_to_theme_file.clone())?;
+ let mut kdl_config = String::new();
+ file.read_to_string(&mut kdl_config)?;
+ let kdl_config: KdlDocument = kdl_config.parse()?;
let kdl_themes = kdl_config.get("themes").ok_or(ConfigError::new_kdl_error(
"No theme node found in file".into(),
kdl_config.span().offset(),
@@ -1744,26 +1748,4 @@ impl Themes {
let all_themes_in_file = Themes::from_kdl(kdl_themes)?;
Ok(all_themes_in_file)
}
-
- pub fn from_path(path_to_theme_file: PathBuf) -> Result<Self, ConfigError> {
- // String is the theme name
- let mut file = File::open(path_to_theme_file.clone())?;
- let mut kdl_config = String::new();
- file.read_to_string(&mut kdl_config)?;
- Themes::from_string(kdl_config)
- }
-
- pub fn from_dir(path_to_theme_dir: PathBuf) -> Result<Self, ConfigError> {
- let mut themes = Themes::default();
- for entry in std::fs::read_dir(path_to_theme_dir)? {
- let entry = entry?;
- let path = entry.path();
- if let Some(extension) = path.extension() {
- if extension == "kdl" {
- themes = themes.merge(Themes::from_path(path)?);
- }
- }
- }
- Ok(themes)
- }
}
diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs
index 2466083da..0086c6a99 100644
--- a/zellij-utils/src/setup.rs
+++ b/zellij-utils/src/setup.rs
@@ -1,6 +1,5 @@
#[cfg(not(target_family = "wasm"))]
use crate::consts::ASSET_MAP;
-use crate::consts::ZELLIJ_THEMES_DIR;
use crate::input::theme::Themes;
use crate::{
cli::{CliArgs, Command},
@@ -52,22 +51,6 @@ fn default_config_dirs() -> Vec<Option<PathBuf>> {
]
}
-#[cfg(not(test))]
-fn get_default_themes() -> Result<Themes, ConfigError> {
- let mut themes = Themes::default();
- for entry in ZELLIJ_THEMES_DIR.files() {
- if let Some(entry) = entry.contents_utf8() {
- themes = themes.merge(Themes::from_string(entry.to_string())?);
- }
- }
- Ok(themes)
-}
-
-#[cfg(test)]
-fn get_default_themes() -> Result<Themes, ConfigError> {
- Ok(Themes::default())
-}
-
/// Looks for an existing dir, uses that, else returns a
/// dir matching the config spec.
pub fn get_default_data_dir() -> PathBuf {
@@ -104,7 +87,6 @@ pub fn get_layout_dir(config_dir: Option<PathBuf>) -> Option<PathBuf> {
pub fn get_theme_dir(config_dir: Option<PathBuf>) -> Option<PathBuf> {
config_dir.map(|dir| dir.join("themes"))
}
-
pub fn dump_asset(asset: &[u8]) -> std::io::Result<()> {
std::io::stdout().write_all(asset)?;
Ok(())
@@ -328,13 +310,25 @@ impl Setup {
None => config.options.clone(),
};
- config.themes = config.themes.merge(get_default_themes()?);
-
- let user_theme_dir = config_options.theme_dir.clone().or_else(|| {
- get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir))
- });
- if let Some(user_dir) = user_theme_dir {
- config.themes = config.themes.merge(Themes::from_dir(user_dir)?);
+ if let Some(theme_dir) = config_options
+ .theme_dir
+ .clone()
+ .or_else(|| get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir)))
+ {
+ if theme_dir.is_dir() {
+ for entry in (theme_dir.read_dir()?).flatten() {
+ if let Some(extension) = entry.path().extension() {
+ if extension == "kdl" {
+ match Themes::from_path(entry.path()) {
+ Ok(themes) => config.themes = config.themes.merge(themes),
+ Err(e) => {
+ log::error!("error loading theme file: {:?}", e);
+ },
+ }
+ }
+ }
+ }
+ }
}
if let Some(Command::Setup(ref setup)) = &cli_args.command {
@@ -520,7 +514,6 @@ impl Setup {
Ok(())
}
-
fn generate_completion(shell: &str) {
let shell: Shell = match shell.to_lowercase().parse() {
Ok(shell) => shell,
@@ -571,7 +564,6 @@ impl Setup {
_ => {},
}
}
-
fn parse_layout_and_override_config(
cli_config_options: Option<&Options>,
config: Config,
@@ -601,7 +593,6 @@ impl Setup {
// that needs to take precedence
Layout::from_path_or_default(chosen_layout.as_ref(), layout_dir.clone(), config)
}
-
fn handle_setup_commands(cli_args: &CliArgs) {
if let Some(Command::Setup(ref setup)) = &cli_args.command {
setup.from_cli().map_or_else(