hueman-cli 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hueman/__init__.py +11 -0
- hueman/__main__.py +3 -0
- hueman/cli.py +353 -0
- hueman/data/hueman.config.example.yaml +111 -0
- hueman/engine/__init__.py +0 -0
- hueman/engine/colors.py +30 -0
- hueman/engine/config.py +186 -0
- hueman/engine/fsutil.py +41 -0
- hueman/engine/palettes.py +66 -0
- hueman/engine/reload.py +60 -0
- hueman/engine/render.py +243 -0
- hueman/engine/statesource.py +370 -0
- hueman/engine/targets.py +95 -0
- hueman/palettes/arctic-ice.yaml +102 -0
- hueman/palettes/autumn.yaml +102 -0
- hueman/palettes/catppuccin-latte.yaml +102 -0
- hueman/palettes/catppuccin-mocha.yaml +102 -0
- hueman/palettes/copperwave.yaml +103 -0
- hueman/palettes/crimson-vivid.yaml +111 -0
- hueman/palettes/dracula.yaml +102 -0
- hueman/palettes/ember-red.yaml +111 -0
- hueman/palettes/everforest-dark.yaml +102 -0
- hueman/palettes/galaxy.yaml +102 -0
- hueman/palettes/gruvbox-light.yaml +102 -0
- hueman/palettes/gruvbox.yaml +102 -0
- hueman/palettes/kanagawa-dragon.yaml +102 -0
- hueman/palettes/matrix.yaml +102 -0
- hueman/palettes/mono-contrast.yaml +102 -0
- hueman/palettes/nord.yaml +102 -0
- hueman/palettes/ocean-deep.yaml +102 -0
- hueman/palettes/one-light.yaml +102 -0
- hueman/palettes/onyx-gold.yaml +103 -0
- hueman/palettes/rose-pine-dawn.yaml +102 -0
- hueman/palettes/solarized-light.yaml +102 -0
- hueman/palettes/synthwave.yaml +102 -0
- hueman/palettes/tokyonight.yaml +106 -0
- hueman/palettes/tuxedo.yaml +103 -0
- hueman/palettes/vaporwave.yaml +102 -0
- hueman/resources.py +18 -0
- hueman/templates/atuin_theme.toml.j2 +19 -0
- hueman/templates/bottom_theme.toml.j2 +43 -0
- hueman/templates/bspwm_colors.conf.j2 +5 -0
- hueman/templates/claude_statusline.sh.j2 +216 -0
- hueman/templates/dunst_colors.conf.j2 +15 -0
- hueman/templates/fzf_opts.j2 +9 -0
- hueman/templates/fzf_theme.j2 +17 -0
- hueman/templates/herdr_theme_custom.toml.j2 +11 -0
- hueman/templates/k9s_theme.yaml.j2 +83 -0
- hueman/templates/kitty.conf.j2 +51 -0
- hueman/templates/lazydocker_theme.yml.j2 +19 -0
- hueman/templates/leaf_theme.toml.j2 +89 -0
- hueman/templates/newt_colors.j2 +32 -0
- hueman/templates/nvim_nightfox_theme.lua.j2 +70 -0
- hueman/templates/omp.omp.json.j2 +107 -0
- hueman/templates/opencode_theme.json.j2 +71 -0
- hueman/templates/pi_theme.json.j2 +65 -0
- hueman/templates/polybar_colors.ini.j2 +11 -0
- hueman/templates/posting_theme.yaml.j2 +47 -0
- hueman/templates/qutebrowser_github.user.js.j2 +121 -0
- hueman/templates/qutebrowser_google.user.js.j2 +132 -0
- hueman/templates/qutebrowser_hteam.user.js.j2 +962 -0
- hueman/templates/qutebrowser_theme.py.j2 +78 -0
- hueman/templates/rofi_theme.rasi.j2 +132 -0
- hueman/templates/sshub_theme.toml.j2 +49 -0
- hueman/templates/starship_block.toml.j2 +11 -0
- hueman/templates/termux_colors.properties.j2 +20 -0
- hueman/templates/tmux.conf.j2 +33 -0
- hueman/templates/tuicr_theme.toml.j2 +51 -0
- hueman/templates/wezterm_colors.lua.j2 +14 -0
- hueman/templates/windhawk_taskbar.json.j2 +4 -0
- hueman/templates/yazi_theme.toml.j2 +130 -0
- hueman/templates/zen_theme.json.j2 +11 -0
- hueman_cli-0.2.0.dist-info/METADATA +119 -0
- hueman_cli-0.2.0.dist-info/RECORD +78 -0
- hueman_cli-0.2.0.dist-info/WHEEL +5 -0
- hueman_cli-0.2.0.dist-info/entry_points.txt +2 -0
- hueman_cli-0.2.0.dist-info/licenses/LICENSE +21 -0
- hueman_cli-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Generado por hueman — no editar a mano, se sobreescribe en cada `hueman set`.
|
|
2
|
+
"""Theme 'current' — generado por hueman desde la paleta activa (sección polybar)"""
|
|
3
|
+
|
|
4
|
+
theme_colors = {
|
|
5
|
+
'completion_category_bg': "{{ background }}",
|
|
6
|
+
'completion_category_border_bottom': "{{ background }}",
|
|
7
|
+
'completion_category_border_top': "{{ background }}",
|
|
8
|
+
'completion_category_fg': "{{ primary }}",
|
|
9
|
+
'completion_even_bg': "{{ background }}",
|
|
10
|
+
'completion_odd_bg': "{{ background_alt }}",
|
|
11
|
+
'completion_fg': "{{ foreground }}",
|
|
12
|
+
'completion_selected_bg': "{{ background_alt }}",
|
|
13
|
+
'completion_selected_border_bottom': "{{ background_alt }}",
|
|
14
|
+
'completion_selected_border_top': "{{ background_alt }}",
|
|
15
|
+
'completion_selected_fg': "{{ secondary }}",
|
|
16
|
+
'completion_match_fg': "{{ secondary }}",
|
|
17
|
+
'completion_scrollbar_bg': "{{ background }}",
|
|
18
|
+
'completion_scrollbar_fg': "{{ primary }}",
|
|
19
|
+
'downloads_bar_bg': "{{ background }}",
|
|
20
|
+
'downloads_error_bg': "{{ alert }}",
|
|
21
|
+
'downloads_error_fg': "{{ foreground }}",
|
|
22
|
+
'downloads_stop_bg': "{{ success }}",
|
|
23
|
+
'downloads_system_bg': 'none',
|
|
24
|
+
'hints_bg': "{{ primary }}",
|
|
25
|
+
'hints_fg': "{{ foreground }}",
|
|
26
|
+
'hints_match_fg': "{{ secondary }}",
|
|
27
|
+
'keyhint_bg': "{{ background }}",
|
|
28
|
+
'keyhint_fg': "{{ foreground }}",
|
|
29
|
+
'keyhint_suffix_fg': "{{ warning }}",
|
|
30
|
+
'messages_error_bg': "{{ alert }}",
|
|
31
|
+
'messages_error_border': "{{ alert }}",
|
|
32
|
+
'messages_error_fg': "{{ foreground }}",
|
|
33
|
+
'messages_info_bg': "{{ muted }}",
|
|
34
|
+
'messages_info_border': "{{ muted }}",
|
|
35
|
+
'messages_info_fg': "{{ foreground }}",
|
|
36
|
+
'messages_warning_bg': "{{ warning }}",
|
|
37
|
+
'messages_warning_border': "{{ warning }}",
|
|
38
|
+
'messages_warning_fg': "{{ background }}",
|
|
39
|
+
'prompts_bg': "{{ background }}",
|
|
40
|
+
'prompts_border': "1px solid {{ primary }}",
|
|
41
|
+
'prompts_fg': "{{ foreground }}",
|
|
42
|
+
'prompts_selected_bg': "{{ background_alt }}",
|
|
43
|
+
'statusbar_caret_bg': "{{ primary }}",
|
|
44
|
+
'statusbar_caret_fg': "{{ background }}",
|
|
45
|
+
'statusbar_caret_selection_bg': "{{ primary }}",
|
|
46
|
+
'statusbar_caret_selection_fg': "{{ background }}",
|
|
47
|
+
'statusbar_command_bg': "{{ background }}",
|
|
48
|
+
'statusbar_command_fg': "{{ foreground }}",
|
|
49
|
+
'statusbar_command_private_bg': "{{ background }}",
|
|
50
|
+
'statusbar_command_private_fg': "{{ foreground }}",
|
|
51
|
+
'statusbar_insert_bg': "{{ success }}",
|
|
52
|
+
'statusbar_insert_fg': "{{ background }}",
|
|
53
|
+
'statusbar_normal_bg': "{{ background }}",
|
|
54
|
+
'statusbar_normal_fg': "{{ foreground }}",
|
|
55
|
+
'statusbar_passthrough_bg': "{{ secondary }}",
|
|
56
|
+
'statusbar_passthrough_fg': "{{ background }}",
|
|
57
|
+
'statusbar_private_bg': "{{ background_alt }}",
|
|
58
|
+
'statusbar_private_fg': "{{ foreground }}",
|
|
59
|
+
'statusbar_progress_bg': "{{ primary }}",
|
|
60
|
+
'statusbar_url_error_fg': "{{ alert }}",
|
|
61
|
+
'statusbar_url_fg': "{{ foreground }}",
|
|
62
|
+
'statusbar_url_hover_fg': "{{ secondary }}",
|
|
63
|
+
'statusbar_url_success_http_fg': "{{ foreground }}",
|
|
64
|
+
'statusbar_url_success_https_fg': "{{ success }}",
|
|
65
|
+
'statusbar_url_warn_fg': "{{ warning }}",
|
|
66
|
+
'tabs_bar_bg': "{{ background }}",
|
|
67
|
+
'tabs_even_bg': "{{ background_alt }}",
|
|
68
|
+
'tabs_even_fg': "{{ foreground }}",
|
|
69
|
+
'tabs_odd_bg': "{{ background_alt }}",
|
|
70
|
+
'tabs_odd_fg': "{{ foreground }}",
|
|
71
|
+
'tabs_indicator_error': "{{ alert }}",
|
|
72
|
+
'tabs_indicator_system': 'none',
|
|
73
|
+
'tabs_selected_even_bg': "{{ background }}",
|
|
74
|
+
'tabs_selected_even_fg': "{{ primary }}",
|
|
75
|
+
'tabs_selected_odd_bg': "{{ background }}",
|
|
76
|
+
'tabs_selected_odd_fg': "{{ primary }}",
|
|
77
|
+
'webpage_bg': "{{ background }}",
|
|
78
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/* Generado por hueman — no editar a mano, se sobreescribe en cada `hueman set`. */
|
|
2
|
+
* {
|
|
3
|
+
bg: {{ background }};
|
|
4
|
+
bg-alt: {{ background_alt }};
|
|
5
|
+
fg: {{ foreground }};
|
|
6
|
+
accent: {{ primary }};
|
|
7
|
+
accent-alt: {{ secondary }};
|
|
8
|
+
accent-text: {{ primary | contrast }};
|
|
9
|
+
accent-alt-text: {{ secondary | contrast }};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
window {
|
|
13
|
+
background-color: @bg;
|
|
14
|
+
border: 2px;
|
|
15
|
+
border-color: @accent;
|
|
16
|
+
padding: 14px;
|
|
17
|
+
border-radius: 20px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
mainbox {
|
|
21
|
+
background-color: @bg;
|
|
22
|
+
border: 0px;
|
|
23
|
+
padding: 0px;
|
|
24
|
+
spacing: 10px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
message {
|
|
28
|
+
background-color: @bg-alt;
|
|
29
|
+
text-color: @fg;
|
|
30
|
+
border-radius: 12px;
|
|
31
|
+
padding: 8px;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
textbox {
|
|
35
|
+
background-color: @bg;
|
|
36
|
+
text-color: @fg;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
error-message {
|
|
40
|
+
background-color: @bg-alt;
|
|
41
|
+
text-color: @accent;
|
|
42
|
+
border-radius: 12px;
|
|
43
|
+
padding: 10px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
inputbar {
|
|
47
|
+
background-color: @bg-alt;
|
|
48
|
+
text-color: @fg;
|
|
49
|
+
padding: 10px 14px;
|
|
50
|
+
border-radius: 14px;
|
|
51
|
+
border: 1px;
|
|
52
|
+
border-color: @accent;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
entry {
|
|
56
|
+
background-color: transparent;
|
|
57
|
+
text-color: @fg;
|
|
58
|
+
placeholder-color: @bg-alt;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
prompt {
|
|
62
|
+
background-color: transparent;
|
|
63
|
+
text-color: @accent-alt;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
case-indicator {
|
|
67
|
+
background-color: transparent;
|
|
68
|
+
text-color: @fg;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
listview {
|
|
72
|
+
background-color: @bg;
|
|
73
|
+
lines: 10;
|
|
74
|
+
padding: 8px 0px;
|
|
75
|
+
spacing: 4px;
|
|
76
|
+
scrollbar: true;
|
|
77
|
+
scrollbar-width: 4px;
|
|
78
|
+
fixed-height: 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
scrollbar {
|
|
82
|
+
background-color: @bg-alt;
|
|
83
|
+
handle-color: @accent;
|
|
84
|
+
border-radius: 8px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
mode-switcher {
|
|
88
|
+
background-color: @bg-alt;
|
|
89
|
+
text-color: @fg;
|
|
90
|
+
border-radius: 12px;
|
|
91
|
+
spacing: 4px;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
button {
|
|
95
|
+
background-color: @bg-alt;
|
|
96
|
+
text-color: @fg;
|
|
97
|
+
border-radius: 10px;
|
|
98
|
+
padding: 6px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
button selected {
|
|
102
|
+
background-color: @accent;
|
|
103
|
+
text-color: @accent-text;
|
|
104
|
+
border-radius: 10px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
element {
|
|
108
|
+
background-color: @bg;
|
|
109
|
+
text-color: @fg;
|
|
110
|
+
padding: 8px 10px;
|
|
111
|
+
border-radius: 12px;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
element-icon {
|
|
115
|
+
background-color: transparent;
|
|
116
|
+
size: 1.2em;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
element-text {
|
|
120
|
+
background-color: transparent;
|
|
121
|
+
text-color: inherit;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
element selected {
|
|
125
|
+
background-color: @accent;
|
|
126
|
+
text-color: @accent-text;
|
|
127
|
+
border-radius: 12px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
element-text selected {
|
|
131
|
+
text-color: inherit;
|
|
132
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Generado por hueman — no editar a mano, se sobreescribe en cada `hueman set`.
|
|
2
|
+
# SSHub usa el tema `current` configurado en ~/.config/sshub/config.toml.
|
|
3
|
+
schema_version = 1
|
|
4
|
+
extends = "default"
|
|
5
|
+
name = "Auto"
|
|
6
|
+
description = "Tema generado por hueman desde la paleta {{ theme_name }}"
|
|
7
|
+
|
|
8
|
+
[palette]
|
|
9
|
+
background = "{{ background }}"
|
|
10
|
+
background_alt = "{{ background_alt }}"
|
|
11
|
+
foreground = "{{ foreground }}"
|
|
12
|
+
primary = "{{ primary }}"
|
|
13
|
+
secondary = "{{ secondary }}"
|
|
14
|
+
alert = "{{ alert }}"
|
|
15
|
+
success = "{{ success }}"
|
|
16
|
+
warning = "{{ warning }}"
|
|
17
|
+
muted = "{{ muted }}"
|
|
18
|
+
|
|
19
|
+
[semantic]
|
|
20
|
+
background = "palette.background"
|
|
21
|
+
canvas = "palette.background"
|
|
22
|
+
surface = "palette.background_alt"
|
|
23
|
+
surface_raised = "palette.background_alt"
|
|
24
|
+
|
|
25
|
+
border = "palette.muted"
|
|
26
|
+
border_focus = "palette.primary"
|
|
27
|
+
border_popup = "palette.secondary"
|
|
28
|
+
|
|
29
|
+
text = "palette.foreground"
|
|
30
|
+
text_bright = "palette.foreground"
|
|
31
|
+
text_highlight = "palette.foreground"
|
|
32
|
+
text_muted = "palette.muted"
|
|
33
|
+
text_dim = "palette.muted"
|
|
34
|
+
text_inverse = "palette.background"
|
|
35
|
+
|
|
36
|
+
accent = "palette.primary"
|
|
37
|
+
selection_bg = "palette.primary"
|
|
38
|
+
selection_fg = "palette.background"
|
|
39
|
+
|
|
40
|
+
success = "palette.success"
|
|
41
|
+
warning = "palette.warning"
|
|
42
|
+
error = "palette.alert"
|
|
43
|
+
info = "palette.secondary"
|
|
44
|
+
connecting = "palette.primary"
|
|
45
|
+
exited = "palette.alert"
|
|
46
|
+
unknown = "palette.muted"
|
|
47
|
+
|
|
48
|
+
pty_background = "palette.background"
|
|
49
|
+
pty_foreground = "palette.foreground"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# --- Bloque gestionado por hueman: no editar a mano ---
|
|
2
|
+
[palettes.dotfiles]
|
|
3
|
+
background = "{{ background }}"
|
|
4
|
+
background_alt = "{{ background_alt }}"
|
|
5
|
+
foreground = "{{ foreground }}"
|
|
6
|
+
primary = "{{ primary }}"
|
|
7
|
+
secondary = "{{ secondary }}"
|
|
8
|
+
alert = "{{ alert }}"
|
|
9
|
+
success = "{{ success }}"
|
|
10
|
+
warning = "{{ warning }}"
|
|
11
|
+
muted = "{{ muted }}"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Generado por hueman - no editar a mano, se sobreescribe en cada `hueman set`.
|
|
2
|
+
foreground={{ foreground }}
|
|
3
|
+
background={{ background }}
|
|
4
|
+
cursor={{ cursor }}
|
|
5
|
+
color0={{ color0 }}
|
|
6
|
+
color1={{ color1 }}
|
|
7
|
+
color2={{ color2 }}
|
|
8
|
+
color3={{ color3 }}
|
|
9
|
+
color4={{ color4 }}
|
|
10
|
+
color5={{ color5 }}
|
|
11
|
+
color6={{ color6 }}
|
|
12
|
+
color7={{ color7 }}
|
|
13
|
+
color8={{ color8 }}
|
|
14
|
+
color9={{ color9 }}
|
|
15
|
+
color10={{ color10 }}
|
|
16
|
+
color11={{ color11 }}
|
|
17
|
+
color12={{ color12 }}
|
|
18
|
+
color13={{ color13 }}
|
|
19
|
+
color14={{ color14 }}
|
|
20
|
+
color15={{ color15 }}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generado por hueman — no editar a mano, se sobreescribe en cada `hueman set`.
|
|
2
|
+
set -g status-style "bg={{ status_bg }},fg={{ status_fg }}"
|
|
3
|
+
set -g pane-border-style "fg={{ pane_border_fg }}"
|
|
4
|
+
set -g pane-active-border-style "fg={{ pane_active_border_fg }}"
|
|
5
|
+
set -g message-style "bg={{ message_bg | default(status_bg) }},fg={{ message_fg | default(status_fg) }}"
|
|
6
|
+
set -g message-command-style "bg={{ message_bg | default(status_bg) }},fg={{ message_fg | default(status_fg) }}"
|
|
7
|
+
set -g mode-style "bg={{ mode_bg | default(pane_active_border_fg) }},fg={{ mode_fg | default(status_bg) }}"
|
|
8
|
+
|
|
9
|
+
set -g status-left-length 50
|
|
10
|
+
set -g status-right-length 120
|
|
11
|
+
|
|
12
|
+
set -g status-left "\
|
|
13
|
+
#[fg={{ segment_session_fg }},bg={{ segment_session_bg }},bold] 🖳 #S \
|
|
14
|
+
#[fg={{ segment_session_bg }},bg={{ status_bg }}] "
|
|
15
|
+
|
|
16
|
+
set -g status-right "\
|
|
17
|
+
#[fg={{ separator_fg }}]│\
|
|
18
|
+
#[fg={{ segment_time_fg }}] %H:%M \
|
|
19
|
+
#[fg={{ separator_fg }}]│\
|
|
20
|
+
#[fg={{ segment_date_fg }}] %d-%b \
|
|
21
|
+
#[fg={{ separator_fg }}]│\
|
|
22
|
+
#[fg={{ segment_user_fg }}] #(whoami) \
|
|
23
|
+
#[fg={{ separator_fg }}]│\
|
|
24
|
+
#[fg={{ segment_battery_fg }}] #(~/.battery) \
|
|
25
|
+
#[fg={{ separator_fg }}]│\
|
|
26
|
+
#{?window_zoomed_flag,#[fg={{ segment_alert_fg }}] zoom ,}"
|
|
27
|
+
|
|
28
|
+
setw -g window-status-format "#[fg={{ window_inactive_fg }},bg={{ status_bg }}] #I #[fg={{ segment_session_bg }}]#W "
|
|
29
|
+
setw -g window-status-current-format "#[fg={{ status_bg }},bg={{ segment_session_bg }},bold] #I #W "
|
|
30
|
+
|
|
31
|
+
setw -g monitor-activity off
|
|
32
|
+
set -g visual-activity off
|
|
33
|
+
setw -g monitor-bell off
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Generado por hueman — no editar a mano, se sobreescribe en cada `hueman set`.
|
|
2
|
+
# Activar con `theme = "current"` en ~/.config/tuicr/config.toml o `tuicr --theme current`.
|
|
3
|
+
panel_bg = "{{ background }}"
|
|
4
|
+
bg_highlight = "{{ background_alt }}"
|
|
5
|
+
fg_primary = "{{ foreground }}"
|
|
6
|
+
fg_secondary = "{{ muted }}"
|
|
7
|
+
fg_dim = "{{ muted }}"
|
|
8
|
+
|
|
9
|
+
diff_add = "{{ success }}"
|
|
10
|
+
diff_add_bg = "{{ background_alt }}"
|
|
11
|
+
diff_del = "{{ alert }}"
|
|
12
|
+
diff_del_bg = "{{ background_alt }}"
|
|
13
|
+
diff_context = "{{ foreground }}"
|
|
14
|
+
diff_hunk_header = "{{ secondary }}"
|
|
15
|
+
expanded_context_fg = "{{ muted }}"
|
|
16
|
+
|
|
17
|
+
syntax_add_bg = "{{ background_alt }}"
|
|
18
|
+
syntax_del_bg = "{{ background_alt }}"
|
|
19
|
+
|
|
20
|
+
file_added = "{{ success }}"
|
|
21
|
+
file_modified = "{{ warning }}"
|
|
22
|
+
file_deleted = "{{ alert }}"
|
|
23
|
+
file_renamed = "{{ secondary }}"
|
|
24
|
+
|
|
25
|
+
reviewed = "{{ success }}"
|
|
26
|
+
pending = "{{ warning }}"
|
|
27
|
+
|
|
28
|
+
comment_note = "{{ secondary }}"
|
|
29
|
+
comment_suggestion = "{{ primary }}"
|
|
30
|
+
comment_issue = "{{ alert }}"
|
|
31
|
+
comment_praise = "{{ success }}"
|
|
32
|
+
|
|
33
|
+
border_focused = "{{ primary }}"
|
|
34
|
+
border_unfocused = "{{ background_alt }}"
|
|
35
|
+
status_bar_bg = "{{ background_alt }}"
|
|
36
|
+
cursor_color = "{{ primary }}"
|
|
37
|
+
cursor_line_bg = "{{ background_alt }}"
|
|
38
|
+
branch_name = "{{ secondary }}"
|
|
39
|
+
help_indicator = "{{ muted }}"
|
|
40
|
+
|
|
41
|
+
message_info_fg = "{{ primary | contrast }}"
|
|
42
|
+
message_info_bg = "{{ primary }}"
|
|
43
|
+
message_warning_fg = "{{ warning | contrast }}"
|
|
44
|
+
message_warning_bg = "{{ warning }}"
|
|
45
|
+
message_error_fg = "{{ alert | contrast }}"
|
|
46
|
+
message_error_bg = "{{ alert }}"
|
|
47
|
+
update_badge_fg = "{{ warning | contrast }}"
|
|
48
|
+
update_badge_bg = "{{ warning }}"
|
|
49
|
+
|
|
50
|
+
mode_fg = "{{ primary | contrast }}"
|
|
51
|
+
mode_bg = "{{ primary }}"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
config.colors = {
|
|
2
|
+
foreground = "{{ foreground }}",
|
|
3
|
+
background = "{{ background }}",
|
|
4
|
+
|
|
5
|
+
cursor_bg = "{{ cursor }}",
|
|
6
|
+
cursor_fg = "{{ cursor_text_color }}",
|
|
7
|
+
cursor_border = "{{ cursor }}",
|
|
8
|
+
|
|
9
|
+
selection_fg = "{{ selection_foreground }}",
|
|
10
|
+
selection_bg = "{{ selection_background }}",
|
|
11
|
+
|
|
12
|
+
ansi = { "{{ color0 }}", "{{ color1 }}", "{{ color2 }}", "{{ color3 }}", "{{ color4 }}", "{{ color5 }}", "{{ color6 }}", "{{ color7 }}" },
|
|
13
|
+
brights = { "{{ color8 }}", "{{ color9 }}", "{{ color10 }}", "{{ color11 }}", "{{ color12 }}", "{{ color13 }}", "{{ color14 }}", "{{ color15 }}" },
|
|
14
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Generado por hueman — no editar a mano, se sobreescribe en cada `hueman set`.
|
|
2
|
+
# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
|
|
3
|
+
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
|
4
|
+
|
|
5
|
+
[mgr]
|
|
6
|
+
cwd = { fg = "{{ primary }}" }
|
|
7
|
+
|
|
8
|
+
# Hovered
|
|
9
|
+
hovered = { fg = "{{ background }}", bg = "{{ secondary }}" }
|
|
10
|
+
preview_hovered = { underline = true }
|
|
11
|
+
|
|
12
|
+
# Find
|
|
13
|
+
find_keyword = { fg = "{{ warning }}", italic = true }
|
|
14
|
+
find_position = { fg = "{{ secondary }}", bg = "reset", italic = true }
|
|
15
|
+
|
|
16
|
+
# Marker
|
|
17
|
+
marker_selected = { fg = "{{ success }}", bg = "{{ success }}" }
|
|
18
|
+
marker_copied = { fg = "{{ warning }}", bg = "{{ warning }}" }
|
|
19
|
+
marker_cut = { fg = "{{ alert }}", bg = "{{ alert }}" }
|
|
20
|
+
|
|
21
|
+
# Tab
|
|
22
|
+
tab_active = { fg = "{{ background }}", bg = "{{ secondary }}" }
|
|
23
|
+
tab_inactive = { fg = "{{ foreground }}", bg = "{{ background_alt }}" }
|
|
24
|
+
tab_width = 1
|
|
25
|
+
|
|
26
|
+
# Border
|
|
27
|
+
border_symbol = "│"
|
|
28
|
+
border_style = { fg = "{{ muted }}" }
|
|
29
|
+
|
|
30
|
+
# Highlighting
|
|
31
|
+
syntect_theme = ""
|
|
32
|
+
|
|
33
|
+
[status]
|
|
34
|
+
separator_open = ""
|
|
35
|
+
separator_close = ""
|
|
36
|
+
separator_style = { fg = "{{ muted }}", bg = "{{ muted }}" }
|
|
37
|
+
|
|
38
|
+
# Mode
|
|
39
|
+
mode_normal = { fg = "{{ background }}", bg = "{{ secondary }}", bold = true }
|
|
40
|
+
mode_select = { fg = "{{ background }}", bg = "{{ success }}", bold = true }
|
|
41
|
+
mode_unset = { fg = "{{ background }}", bg = "{{ warning }}", bold = true }
|
|
42
|
+
|
|
43
|
+
# Progress
|
|
44
|
+
progress_label = { fg = "{{ foreground }}", bold = true }
|
|
45
|
+
progress_normal = { fg = "{{ secondary }}", bg = "{{ background }}" }
|
|
46
|
+
progress_error = { fg = "{{ alert }}", bg = "{{ background }}" }
|
|
47
|
+
|
|
48
|
+
# Permissions
|
|
49
|
+
permissions_t = { fg = "{{ success }}" }
|
|
50
|
+
permissions_r = { fg = "{{ warning }}" }
|
|
51
|
+
permissions_w = { fg = "{{ alert }}" }
|
|
52
|
+
permissions_x = { fg = "{{ primary }}" }
|
|
53
|
+
permissions_s = { fg = "{{ muted }}" }
|
|
54
|
+
|
|
55
|
+
[input]
|
|
56
|
+
border = { fg = "{{ secondary }}" }
|
|
57
|
+
title = { fg = "{{ foreground }}" }
|
|
58
|
+
value = { fg = "{{ warning }}" }
|
|
59
|
+
selected = { reversed = true }
|
|
60
|
+
|
|
61
|
+
[select]
|
|
62
|
+
border = { fg = "{{ secondary }}" }
|
|
63
|
+
active = { fg = "{{ secondary }}" }
|
|
64
|
+
inactive = { fg = "{{ muted }}" }
|
|
65
|
+
|
|
66
|
+
[tasks]
|
|
67
|
+
border = { fg = "{{ secondary }}" }
|
|
68
|
+
title = { fg = "{{ foreground }}" }
|
|
69
|
+
hovered = { underline = true }
|
|
70
|
+
|
|
71
|
+
[which]
|
|
72
|
+
mask = { bg = "{{ background }}" }
|
|
73
|
+
cand = { fg = "{{ primary }}" }
|
|
74
|
+
rest = { fg = "{{ muted }}" }
|
|
75
|
+
desc = { fg = "{{ secondary }}" }
|
|
76
|
+
separator = " "
|
|
77
|
+
separator_style = { fg = "{{ muted }}" }
|
|
78
|
+
|
|
79
|
+
[help]
|
|
80
|
+
on = { fg = "{{ secondary }}" }
|
|
81
|
+
exec = { fg = "{{ primary }}" }
|
|
82
|
+
desc = { fg = "{{ muted }}" }
|
|
83
|
+
hovered = { bg = "{{ background_alt }}", bold = true }
|
|
84
|
+
footer = { fg = "{{ background }}", bg = "{{ foreground }}" }
|
|
85
|
+
|
|
86
|
+
[notify]
|
|
87
|
+
title_info = { fg = "{{ success }}" }
|
|
88
|
+
title_warn = { fg = "{{ warning }}" }
|
|
89
|
+
title_error = { fg = "{{ alert }}" }
|
|
90
|
+
|
|
91
|
+
# : file, 1: symlink, 2: hardlink, 3: orphaned
|
|
92
|
+
[filetype]
|
|
93
|
+
|
|
94
|
+
rules = [
|
|
95
|
+
# Images
|
|
96
|
+
{ mime = "image/*", fg = "{{ primary }}" },
|
|
97
|
+
|
|
98
|
+
# Videos
|
|
99
|
+
{ mime = "video/*", fg = "{{ warning }}" },
|
|
100
|
+
{ mime = "audio/*", fg = "{{ warning }}" },
|
|
101
|
+
|
|
102
|
+
# Archives
|
|
103
|
+
{ mime = "application/zip", fg = "{{ secondary }}" },
|
|
104
|
+
{ mime = "application/gzip", fg = "{{ secondary }}" },
|
|
105
|
+
{ mime = "application/x-tar", fg = "{{ secondary }}" },
|
|
106
|
+
{ mime = "application/x-bzip", fg = "{{ secondary }}" },
|
|
107
|
+
{ mime = "application/x-bzip2", fg = "{{ secondary }}" },
|
|
108
|
+
{ mime = "application/x-7z-compressed", fg = "{{ secondary }}" },
|
|
109
|
+
{ mime = "application/x-rar", fg = "{{ secondary }}" },
|
|
110
|
+
{ mime = "application/xz", fg = "{{ secondary }}" },
|
|
111
|
+
|
|
112
|
+
# Documents
|
|
113
|
+
{ mime = "application/doc", fg = "{{ success }}" },
|
|
114
|
+
{ mime = "application/pdf", fg = "{{ success }}" },
|
|
115
|
+
{ mime = "application/rtf", fg = "{{ success }}" },
|
|
116
|
+
{ mime = "application/vnd.*", fg = "{{ success }}" },
|
|
117
|
+
|
|
118
|
+
# Text
|
|
119
|
+
{ mime = "text/*", fg = "{{ success }}" },
|
|
120
|
+
|
|
121
|
+
# Empty files
|
|
122
|
+
{ mime = "inode/x-empty", fg = "{{ alert }}" },
|
|
123
|
+
|
|
124
|
+
# Special files
|
|
125
|
+
{ url = "*", is = "orphan", bg = "{{ alert }}" },
|
|
126
|
+
{ url = "*", is = "exec", fg = "{{ primary }}" },
|
|
127
|
+
|
|
128
|
+
# Fallback
|
|
129
|
+
{ url = "*/", fg = "{{ primary }}" }
|
|
130
|
+
]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{ theme_name }}",
|
|
3
|
+
"background": "{{ background }}",
|
|
4
|
+
"background_alt": "{{ background_alt }}",
|
|
5
|
+
"foreground": "{{ foreground }}",
|
|
6
|
+
"primary": "{{ primary }}",
|
|
7
|
+
"success": "{{ success }}",
|
|
8
|
+
"warning": "{{ warning }}",
|
|
9
|
+
"alert": "{{ alert }}",
|
|
10
|
+
"muted": "{{ muted }}"
|
|
11
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hueman-cli
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Centralized theme manager: one YAML palette feeds Jinja2 templates that generate each tool's config.
|
|
5
|
+
Author: 4DRIAN0RTIZ
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://hueman.cuevaneander.tech
|
|
8
|
+
Project-URL: Source, https://github.com/NeanderTeam/hueman
|
|
9
|
+
Project-URL: Issues, https://github.com/NeanderTeam/hueman/issues
|
|
10
|
+
Keywords: theme,colors,palette,dotfiles,jinja2,terminal,cli
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Desktop Environment
|
|
23
|
+
Classifier: Topic :: Utilities
|
|
24
|
+
Requires-Python: >=3.9
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: Jinja2>=3.1.6
|
|
28
|
+
Requires-Dist: PyYAML>=6.0.1
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# hueman
|
|
34
|
+
|
|
35
|
+
Gestor centralizado de temas: una **paleta de color (YAML)** alimenta
|
|
36
|
+
**templates Jinja2** que generan la configuración real de tus herramientas
|
|
37
|
+
(kitty, tmux, nvim, starship, Windows Terminal, lo que declares en tu propio
|
|
38
|
+
config). Sin dependencias de ningún gestor de dotfiles: todo el mapeo de rutas
|
|
39
|
+
de salida vive en un `hueman.config.yaml` propio, fuera de este repo.
|
|
40
|
+
|
|
41
|
+
## Quickstart
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
pipx install hueman-cli # o: pip install hueman-cli
|
|
45
|
+
hueman init # escribe un config de ejemplo en ~/.config/hueman/config.yaml
|
|
46
|
+
# ajusta tus targets en ese archivo, luego:
|
|
47
|
+
hueman set <paleta> --dry-run
|
|
48
|
+
hueman set <paleta>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Desde el código fuente (requiere Python >= 3.9):
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
git clone https://github.com/NeanderTeam/hueman.git
|
|
55
|
+
cd hueman && pip install -e .
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Actualizar: `pipx upgrade hueman-cli` (o `pip install -U hueman-cli`).
|
|
59
|
+
Desinstalar: `pipx uninstall hueman-cli` (o `pip uninstall hueman-cli`); tu config
|
|
60
|
+
y los archivos generados no se borran (detalle en la
|
|
61
|
+
[guía de instalación](https://hueman.cuevaneander.tech/?p=install)).
|
|
62
|
+
|
|
63
|
+
Otros comandos: `init` (config de ejemplo), `list` (paletas), `status` (tema activo) y `sync` (estado
|
|
64
|
+
compartido entre máquinas).
|
|
65
|
+
|
|
66
|
+
## Ideas centrales
|
|
67
|
+
|
|
68
|
+
- Una paleta, muchos targets; el mapeo de salidas es declarativo.
|
|
69
|
+
- Templates y paletas empaquetados son defaults; los directorios custom ganan.
|
|
70
|
+
- `overwrite` para archivos generados enteros, `patch` para bloques dentro de
|
|
71
|
+
configs editadas a mano.
|
|
72
|
+
- `reload` por target y `post_apply` global, best-effort, con política
|
|
73
|
+
`warn` / `error`.
|
|
74
|
+
- Sync opcional de la paleta activa entre máquinas (`state_sync`).
|
|
75
|
+
- Agregar una tool nueva es un template + un target, no un cambio al motor.
|
|
76
|
+
|
|
77
|
+
## Herramientas empaquetadas
|
|
78
|
+
|
|
79
|
+
`hueman/palettes/` y `hueman/templates/` traen 25 paletas estéticas genéricas y templates
|
|
80
|
+
para las herramientas más comunes (kitty, tmux, polybar, nvim/nightfox, dunst,
|
|
81
|
+
bspwm, yazi, qutebrowser, rofi, fzf, atuin, oh-my-posh, wezterm, starship,
|
|
82
|
+
Termux). Para targets idiosincráticos usa `template_dirs` en tu config en vez
|
|
83
|
+
de pedir que se agreguen aquí.
|
|
84
|
+
|
|
85
|
+
## Documentación
|
|
86
|
+
|
|
87
|
+
Documentación completa: **[hueman.cuevaneander.tech](https://hueman.cuevaneander.tech)**
|
|
88
|
+
|
|
89
|
+
Para verla en local (las fuentes están en `website/`):
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
python3 -m http.server 8765 --directory website
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
y abre `http://localhost:8765`.
|
|
96
|
+
|
|
97
|
+
## Soporte
|
|
98
|
+
|
|
99
|
+
¿Un bug o una idea? Abre un issue en
|
|
100
|
+
[github.com/NeanderTeam/hueman/issues](https://github.com/NeanderTeam/hueman/issues).
|
|
101
|
+
|
|
102
|
+
## Estructura del repo
|
|
103
|
+
|
|
104
|
+
| Ruta | Contenido |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `hueman/cli.py` | CLI y orquestación (comando `hueman`) |
|
|
107
|
+
| `hueman/engine/` | Config, paletas, targets, render, reload, estado compartido |
|
|
108
|
+
| `hueman/palettes/`, `hueman/templates/` | Paletas YAML y plantillas Jinja2 empaquetadas |
|
|
109
|
+
| `hueman/data/hueman.config.example.yaml` | Ejemplo comentado de config externa (lo escribe `hueman init`) |
|
|
110
|
+
| `tests/` | Suite de tests |
|
|
111
|
+
| `website/` | Sitio de documentación |
|
|
112
|
+
|
|
113
|
+
El repo es autocontenido: nada dentro importa código fuera de sí mismo, salvo
|
|
114
|
+
el config externo que cada usuario provee. Un repo de dotfiles solo necesita
|
|
115
|
+
tener `hueman` instalado y su propio `hueman.config.yaml`.
|
|
116
|
+
|
|
117
|
+
## Licencia
|
|
118
|
+
|
|
119
|
+
MIT, ver [LICENSE](LICENSE).
|