chore(repo): revert theme pr (#2229)
* Revert "feat: add self-provided themes (#2224)" This reverts commit63bfe9c5e4. * Revert "docs(changelog): add self-provided themes" This reverts commit364f0e7c44.
This commit is contained in:
parent
0708c106d7
commit
d0a780dd7c
24 changed files with 41 additions and 112 deletions
|
|
@ -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: 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)
|
* 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: 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)
|
* feat: add args to new-tab action in keybinds (https://github.com/zellij-org/zellij/pull/2072)
|
||||||
|
|
||||||
Eg:
|
Eg:
|
||||||
|
|
|
||||||
20
Cargo.lock
generated
20
Cargo.lock
generated
|
|
@ -1270,25 +1270,6 @@ dependencies = [
|
||||||
"unicode-normalization",
|
"unicode-normalization",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[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]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "1.8.2"
|
version = "1.8.2"
|
||||||
|
|
@ -4104,7 +4085,6 @@ dependencies = [
|
||||||
"colorsys",
|
"colorsys",
|
||||||
"crossbeam",
|
"crossbeam",
|
||||||
"directories-next",
|
"directories-next",
|
||||||
"include_dir",
|
|
||||||
"insta",
|
"insta",
|
||||||
"interprocess",
|
"interprocess",
|
||||||
"kdl",
|
"kdl",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,19 @@
|
||||||
# Themes
|
# 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).
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
gruvbox.kdl
|
||||||
|
├─ gruvbox-light
|
||||||
|
└─ gruvbox-dark
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
gruvbox-light.kdl
|
||||||
|
└─ gruvbox-light
|
||||||
|
|
||||||
|
gruvbox-dark.kdl
|
||||||
|
└─ gruvbox-dark
|
||||||
|
```
|
||||||
|
|
|
||||||
|
|
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -38,7 +38,6 @@ miette = { version = "3.3.0", features = ["fancy"] }
|
||||||
regex = "1.5.5"
|
regex = "1.5.5"
|
||||||
tempfile = "3.2.0"
|
tempfile = "3.2.0"
|
||||||
kdl = { version = "4.5.0", features = ["span"] }
|
kdl = { version = "4.5.0", features = ["span"] }
|
||||||
include_dir = "0.7.3"
|
|
||||||
|
|
||||||
#[cfg(not(target_family = "wasm"))]
|
#[cfg(not(target_family = "wasm"))]
|
||||||
[target.'cfg(not(target_family = "wasm"))'.dependencies]
|
[target.'cfg(not(target_family = "wasm"))'.dependencies]
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
//! Zellij program-wide constants.
|
//! Zellij program-wide constants.
|
||||||
|
|
||||||
use directories_next::ProjectDirs;
|
use directories_next::ProjectDirs;
|
||||||
use include_dir::{include_dir, Dir};
|
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use once_cell::sync::OnceCell;
|
use once_cell::sync::OnceCell;
|
||||||
use std::path::PathBuf;
|
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_CONFIG_DIR: &str = "/etc/zellij";
|
||||||
pub const SYSTEM_DEFAULT_DATA_DIR_PREFIX: &str = system_default_data_dir();
|
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 {
|
const fn system_default_data_dir() -> &'static str {
|
||||||
if let Some(data_dir) = std::option_env!("PREFIX") {
|
if let Some(data_dir) = std::option_env!("PREFIX") {
|
||||||
|
|
|
||||||
|
|
@ -1734,8 +1734,12 @@ impl Themes {
|
||||||
Ok(themes)
|
Ok(themes)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_string(raw_string: String) -> Result<Self, ConfigError> {
|
pub fn from_path(path_to_theme_file: PathBuf) -> Result<Self, ConfigError> {
|
||||||
let kdl_config: KdlDocument = raw_string.parse()?;
|
// 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(
|
let kdl_themes = kdl_config.get("themes").ok_or(ConfigError::new_kdl_error(
|
||||||
"No theme node found in file".into(),
|
"No theme node found in file".into(),
|
||||||
kdl_config.span().offset(),
|
kdl_config.span().offset(),
|
||||||
|
|
@ -1744,26 +1748,4 @@ impl Themes {
|
||||||
let all_themes_in_file = Themes::from_kdl(kdl_themes)?;
|
let all_themes_in_file = Themes::from_kdl(kdl_themes)?;
|
||||||
Ok(all_themes_in_file)
|
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#[cfg(not(target_family = "wasm"))]
|
#[cfg(not(target_family = "wasm"))]
|
||||||
use crate::consts::ASSET_MAP;
|
use crate::consts::ASSET_MAP;
|
||||||
use crate::consts::ZELLIJ_THEMES_DIR;
|
|
||||||
use crate::input::theme::Themes;
|
use crate::input::theme::Themes;
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{CliArgs, Command},
|
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
|
/// Looks for an existing dir, uses that, else returns a
|
||||||
/// dir matching the config spec.
|
/// dir matching the config spec.
|
||||||
pub fn get_default_data_dir() -> PathBuf {
|
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> {
|
pub fn get_theme_dir(config_dir: Option<PathBuf>) -> Option<PathBuf> {
|
||||||
config_dir.map(|dir| dir.join("themes"))
|
config_dir.map(|dir| dir.join("themes"))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn dump_asset(asset: &[u8]) -> std::io::Result<()> {
|
pub fn dump_asset(asset: &[u8]) -> std::io::Result<()> {
|
||||||
std::io::stdout().write_all(asset)?;
|
std::io::stdout().write_all(asset)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -328,13 +310,25 @@ impl Setup {
|
||||||
None => config.options.clone(),
|
None => config.options.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
config.themes = config.themes.merge(get_default_themes()?);
|
if let Some(theme_dir) = config_options
|
||||||
|
.theme_dir
|
||||||
let user_theme_dir = config_options.theme_dir.clone().or_else(|| {
|
.clone()
|
||||||
get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir))
|
.or_else(|| get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir)))
|
||||||
});
|
{
|
||||||
if let Some(user_dir) = user_theme_dir {
|
if theme_dir.is_dir() {
|
||||||
config.themes = config.themes.merge(Themes::from_dir(user_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 {
|
if let Some(Command::Setup(ref setup)) = &cli_args.command {
|
||||||
|
|
@ -520,7 +514,6 @@ impl Setup {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_completion(shell: &str) {
|
fn generate_completion(shell: &str) {
|
||||||
let shell: Shell = match shell.to_lowercase().parse() {
|
let shell: Shell = match shell.to_lowercase().parse() {
|
||||||
Ok(shell) => shell,
|
Ok(shell) => shell,
|
||||||
|
|
@ -571,7 +564,6 @@ impl Setup {
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_layout_and_override_config(
|
fn parse_layout_and_override_config(
|
||||||
cli_config_options: Option<&Options>,
|
cli_config_options: Option<&Options>,
|
||||||
config: Config,
|
config: Config,
|
||||||
|
|
@ -601,7 +593,6 @@ impl Setup {
|
||||||
// that needs to take precedence
|
// that needs to take precedence
|
||||||
Layout::from_path_or_default(chosen_layout.as_ref(), layout_dir.clone(), config)
|
Layout::from_path_or_default(chosen_layout.as_ref(), layout_dir.clone(), config)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_setup_commands(cli_args: &CliArgs) {
|
fn handle_setup_commands(cli_args: &CliArgs) {
|
||||||
if let Some(Command::Setup(ref setup)) = &cli_args.command {
|
if let Some(Command::Setup(ref setup)) = &cli_args.command {
|
||||||
setup.from_cli().map_or_else(
|
setup.from_cli().map_or_else(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue