default_theme.rs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. use ansiterm::Colour::*;
  2. use ansiterm::Style;
  3. use crate::theme::ui_styles::*;
  4. use crate::theme::ColourScale;
  5. impl UiStyles {
  6. pub fn default_theme(scale: ColourScale) -> Self {
  7. Self {
  8. colourful: true,
  9. #[rustfmt::skip]
  10. filekinds: FileKinds {
  11. normal: Style::default(),
  12. directory: Blue.bold(),
  13. symlink: Cyan.normal(),
  14. pipe: Yellow.normal(),
  15. block_device: Yellow.bold(),
  16. char_device: Yellow.bold(),
  17. socket: Red.bold(),
  18. special: Yellow.normal(),
  19. executable: Green.bold(),
  20. mount_point: Blue.bold().underline(),
  21. },
  22. #[rustfmt::skip]
  23. perms: Permissions {
  24. user_read: Yellow.bold(),
  25. user_write: Red.bold(),
  26. user_execute_file: Green.bold().underline(),
  27. user_execute_other: Green.bold(),
  28. group_read: Yellow.normal(),
  29. group_write: Red.normal(),
  30. group_execute: Green.normal(),
  31. other_read: Yellow.normal(),
  32. other_write: Red.normal(),
  33. other_execute: Green.normal(),
  34. special_user_file: Purple.normal(),
  35. special_other: Purple.normal(),
  36. attribute: Style::default(),
  37. },
  38. size: Size::colourful(scale),
  39. #[rustfmt::skip]
  40. users: Users {
  41. user_you: Yellow.bold(),
  42. user_other: Style::default(),
  43. user_root: Style::default(),
  44. group_yours: Yellow.bold(),
  45. group_other: Style::default(),
  46. group_root: Style::default(),
  47. },
  48. #[rustfmt::skip]
  49. links: Links {
  50. normal: Red.bold(),
  51. multi_link_file: Red.on(Yellow),
  52. },
  53. #[rustfmt::skip]
  54. git: Git {
  55. new: Green.normal(),
  56. modified: Blue.normal(),
  57. deleted: Red.normal(),
  58. renamed: Yellow.normal(),
  59. typechange: Purple.normal(),
  60. ignored: Style::default().dimmed(),
  61. conflicted: Red.normal(),
  62. },
  63. git_repo: GitRepo {
  64. branch_main: Green.normal(),
  65. branch_other: Yellow.normal(),
  66. git_clean: Green.normal(),
  67. git_dirty: Yellow.bold(),
  68. },
  69. security_context: SecurityContext {
  70. none: Style::default(),
  71. #[rustfmt::skip]
  72. selinux: SELinuxContext {
  73. colon: Style::default().dimmed(),
  74. user: Blue.normal(),
  75. role: Green.normal(),
  76. typ: Yellow.normal(),
  77. range: Cyan.normal(),
  78. },
  79. },
  80. #[rustfmt::skip]
  81. file_type: FileType {
  82. image: Purple.normal(),
  83. video: Purple.bold(),
  84. music: Cyan.normal(),
  85. lossless: Cyan.bold(),
  86. crypto: Green.bold(),
  87. document: Green.normal(),
  88. compressed: Red.normal(),
  89. temp: White.normal(),
  90. compiled: Yellow.normal(),
  91. build: Yellow.bold().underline(),
  92. },
  93. punctuation: DarkGray.bold(),
  94. date: Blue.normal(),
  95. inode: Purple.normal(),
  96. blocks: Cyan.normal(),
  97. octal: Purple.normal(),
  98. header: Style::default().underline(),
  99. symlink_path: Cyan.normal(),
  100. control_char: Red.normal(),
  101. broken_symlink: Red.normal(),
  102. broken_path_overlay: Style::default().underline(),
  103. }
  104. }
  105. }
  106. impl Size {
  107. pub fn colourful(scale: ColourScale) -> Self {
  108. match scale {
  109. ColourScale::Gradient => Self::colourful_gradient(),
  110. ColourScale::Fixed => Self::colourful_fixed(),
  111. }
  112. }
  113. fn colourful_fixed() -> Self {
  114. Self {
  115. major: Green.bold(),
  116. minor: Green.normal(),
  117. number_byte: Green.bold(),
  118. number_kilo: Green.bold(),
  119. number_mega: Green.bold(),
  120. number_giga: Green.bold(),
  121. number_huge: Green.bold(),
  122. unit_byte: Green.normal(),
  123. unit_kilo: Green.normal(),
  124. unit_mega: Green.normal(),
  125. unit_giga: Green.normal(),
  126. unit_huge: Green.normal(),
  127. }
  128. }
  129. fn colourful_gradient() -> Self {
  130. Self {
  131. major: Green.bold(),
  132. minor: Green.normal(),
  133. number_byte: Green.normal(),
  134. number_kilo: Green.bold(),
  135. number_mega: Yellow.normal(),
  136. number_giga: Red.normal(),
  137. number_huge: Purple.normal(),
  138. unit_byte: Green.normal(),
  139. unit_kilo: Green.bold(),
  140. unit_mega: Yellow.normal(),
  141. unit_giga: Red.normal(),
  142. unit_huge: Purple.normal(),
  143. }
  144. }
  145. }