🔨 use lscolors for filename only, skip from theme configure

Signed-off-by: zwPapEr <zw.paper@gmail.com>
This commit is contained in:
zwPapEr 2021-09-12 17:15:31 +08:00 committed by Abin Simon
parent 861822cb04
commit 9f656fdd9d
3 changed files with 31 additions and 63 deletions

View file

@ -327,12 +327,6 @@ when configured with the `theme-file-name` which is a `yaml` file,
Check [Theme file content](#theme-file-content) for details.
### Filename coloring
`lsd` use both [LS_COLORS](https://github.com/trapd00r/LS_COLORS) and this theme feature to
colorize the filename, `lsd` will use the color and format option defined in `LS_COLORS`,
and then the theme configurations if no `LS_COLOR` are found.
### Theme file content
Theme file use the [crossterm](https://crates.io/crates/crossterm)
@ -348,30 +342,13 @@ This is the default theme scheme shipped with `lsd`.
```yaml
user: 230
group: 187
permissions:
permission:
read: Green
write: Yellow
exec: Red
exec-sticky: 5
no-access: 245
file-type:
file:
exec-uid: 40
uid-no-exec: 184
exec-no-uid: 40
no-exec-no-uid: 184
dir:
uid: 33
no-uid: 33
pipe: 44
symlink:
default: 44
broken: 124
block-device: 44
char-device: 172
socket: 44
special: 44
modified:
date:
hour-old: 40
day-old: 42
older: 36
@ -427,7 +404,7 @@ Some further examples of useful aliases:
In the future the possibility to customize the colors might be implemented.
For now, the default colors are:
| User/Group | Permissions | File Types | Last time Modified | File Size |
| User/Group | Permission | File Types | Date | File Size |
|:---|:---|:---|:---|:---|
|![#ffffd7](https://via.placeholder.com/15/ffffd7/000000?text=+) User|![#00d700](https://via.placeholder.com/15/00d700/000000?text=+) Read |![#0087ff](https://via.placeholder.com/15/0087ff/000000?text=+) Directory|![#00d700](https://via.placeholder.com/15/00d700/000000?text=+) within the last hour|![#ffffaf](https://via.placeholder.com/15/ffffaf/000000?text=+) Small File|
|![#d7d7af](https://via.placeholder.com/15/d7d7af/000000?text=+) Group|![#d7ff87](https://via.placeholder.com/15/d7ff87/000000?text=+) Write|![#00d700](https://via.placeholder.com/15/00d700/000000?text=+) Executable File|![#00d787](https://via.placeholder.com/15/00d787/000000?text=+) within the last day|![#ffaf87](https://via.placeholder.com/15/ffaf87/000000?text=+) Medium File|

View file

@ -28,7 +28,7 @@ pub enum Elem {
Socket,
Special,
/// Permissions
/// Permission
Read,
Write,
Exec,
@ -95,15 +95,15 @@ impl Elem {
Elem::Socket => theme.file_type.socket,
Elem::Special => theme.file_type.special,
Elem::Read => theme.permissions.read,
Elem::Write => theme.permissions.write,
Elem::Exec => theme.permissions.exec,
Elem::ExecSticky => theme.permissions.exec_sticky,
Elem::NoAccess => theme.permissions.no_access,
Elem::Read => theme.permission.read,
Elem::Write => theme.permission.write,
Elem::Exec => theme.permission.exec,
Elem::ExecSticky => theme.permission.exec_sticky,
Elem::NoAccess => theme.permission.no_access,
Elem::DayOld => theme.modified.day_old,
Elem::HourOld => theme.modified.hour_old,
Elem::Older => theme.modified.older,
Elem::DayOld => theme.date.day_old,
Elem::HourOld => theme.date.hour_old,
Elem::Older => theme.date.older,
Elem::User => theme.user,
Elem::Group => theme.group,
@ -325,7 +325,7 @@ mod elem {
Theme {
user: Color::AnsiValue(230), // Cornsilk1
group: Color::AnsiValue(187), // LightYellow3
permissions: theme::Permissions {
permission: theme::Permission {
read: Color::Green,
write: Color::Yellow,
exec: Color::Red,
@ -353,7 +353,7 @@ mod elem {
socket: Color::AnsiValue(44), // DarkTurquoise
special: Color::AnsiValue(44), // DarkTurquoise
},
modified: theme::Modified {
date: theme::Date {
hour_old: Color::AnsiValue(40), // Green3
day_old: Color::AnsiValue(42), // SpringGreen2
older: Color::AnsiValue(36), // DarkCyan

View file

@ -16,19 +16,21 @@ use std::path::Path;
pub struct Theme {
pub user: Color,
pub group: Color,
pub permissions: Permissions,
pub file_type: FileType,
pub modified: Modified,
pub permission: Permission,
pub date: Date,
pub size: Size,
pub inode: INode,
pub tree_edge: Color,
pub links: Links,
#[serde(skip)]
pub file_type: FileType,
}
#[derive(Debug, Deserialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
#[serde(deny_unknown_fields)]
pub struct Permissions {
pub struct Permission {
pub read: Color,
pub write: Color,
pub exec: Color,
@ -79,7 +81,7 @@ pub struct Symlink {
#[derive(Debug, Deserialize, PartialEq)]
#[serde(rename_all = "kebab-case")]
#[serde(deny_unknown_fields)]
pub struct Modified {
pub struct Date {
pub hour_old: Color,
pub day_old: Color,
pub older: Color,
@ -111,6 +113,12 @@ pub struct Links {
pub invalid: Color,
}
impl Default for FileType {
fn default() -> Self {
Theme::default_dark().file_type
}
}
impl Default for Theme {
fn default() -> Self {
// TODO(zwpaper): check terminal color and return light or dark
@ -161,7 +169,7 @@ impl Theme {
Theme {
user: Color::AnsiValue(230), // Cornsilk1
group: Color::AnsiValue(187), // LightYellow3
permissions: Permissions {
permission: Permission {
read: Color::Green,
write: Color::Yellow,
exec: Color::Red,
@ -189,7 +197,7 @@ impl Theme {
socket: Color::AnsiValue(44), // DarkTurquoise
special: Color::AnsiValue(44), // DarkTurquoise
},
modified: Modified {
date: Date {
hour_old: Color::AnsiValue(40), // Green3
day_old: Color::AnsiValue(42), // SpringGreen2
older: Color::AnsiValue(36), // DarkCyan
@ -217,30 +225,13 @@ impl Theme {
r#"---
user: 230
group: 187
permissions:
permission:
read: Green
write: Yellow
exec: Red
exec-sticky: 5
no-access: 245
file-type:
file:
exec-uid: 40
uid-no-exec: 184
exec-no-uid: 40
no-exec-no-uid: 184
dir:
uid: 33
no-uid: 33
pipe: 44
symlink:
default: 44
broken: 124
block-device: 44
char-device: 172
socket: 44
special: 44
modified:
date:
hour-old: 40
day-old: 42
older: 36