🔨 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. 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 content
Theme file use the [crossterm](https://crates.io/crates/crossterm) Theme file use the [crossterm](https://crates.io/crates/crossterm)
@ -348,30 +342,13 @@ This is the default theme scheme shipped with `lsd`.
```yaml ```yaml
user: 230 user: 230
group: 187 group: 187
permissions: permission:
read: Green read: Green
write: Yellow write: Yellow
exec: Red exec: Red
exec-sticky: 5 exec-sticky: 5
no-access: 245 no-access: 245
file-type: date:
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:
hour-old: 40 hour-old: 40
day-old: 42 day-old: 42
older: 36 older: 36
@ -427,7 +404,7 @@ Some further examples of useful aliases:
In the future the possibility to customize the colors might be implemented. In the future the possibility to customize the colors might be implemented.
For now, the default colors are: 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| |![#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| |![#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, Socket,
Special, Special,
/// Permissions /// Permission
Read, Read,
Write, Write,
Exec, Exec,
@ -95,15 +95,15 @@ impl Elem {
Elem::Socket => theme.file_type.socket, Elem::Socket => theme.file_type.socket,
Elem::Special => theme.file_type.special, Elem::Special => theme.file_type.special,
Elem::Read => theme.permissions.read, Elem::Read => theme.permission.read,
Elem::Write => theme.permissions.write, Elem::Write => theme.permission.write,
Elem::Exec => theme.permissions.exec, Elem::Exec => theme.permission.exec,
Elem::ExecSticky => theme.permissions.exec_sticky, Elem::ExecSticky => theme.permission.exec_sticky,
Elem::NoAccess => theme.permissions.no_access, Elem::NoAccess => theme.permission.no_access,
Elem::DayOld => theme.modified.day_old, Elem::DayOld => theme.date.day_old,
Elem::HourOld => theme.modified.hour_old, Elem::HourOld => theme.date.hour_old,
Elem::Older => theme.modified.older, Elem::Older => theme.date.older,
Elem::User => theme.user, Elem::User => theme.user,
Elem::Group => theme.group, Elem::Group => theme.group,
@ -325,7 +325,7 @@ mod elem {
Theme { Theme {
user: Color::AnsiValue(230), // Cornsilk1 user: Color::AnsiValue(230), // Cornsilk1
group: Color::AnsiValue(187), // LightYellow3 group: Color::AnsiValue(187), // LightYellow3
permissions: theme::Permissions { permission: theme::Permission {
read: Color::Green, read: Color::Green,
write: Color::Yellow, write: Color::Yellow,
exec: Color::Red, exec: Color::Red,
@ -353,7 +353,7 @@ mod elem {
socket: Color::AnsiValue(44), // DarkTurquoise socket: Color::AnsiValue(44), // DarkTurquoise
special: Color::AnsiValue(44), // DarkTurquoise special: Color::AnsiValue(44), // DarkTurquoise
}, },
modified: theme::Modified { date: theme::Date {
hour_old: Color::AnsiValue(40), // Green3 hour_old: Color::AnsiValue(40), // Green3
day_old: Color::AnsiValue(42), // SpringGreen2 day_old: Color::AnsiValue(42), // SpringGreen2
older: Color::AnsiValue(36), // DarkCyan older: Color::AnsiValue(36), // DarkCyan

View file

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