(Init): Added shit
This commit is contained in:
325
nirimod/theme.py
Normal file
325
nirimod/theme.py
Normal file
@@ -0,0 +1,325 @@
|
||||
"""CSS theme definitions for NiriMod."""
|
||||
|
||||
CSS = """
|
||||
/* --- Nirimod -- Purple Theme --- */
|
||||
|
||||
/* --- Accent --- */
|
||||
@define-color nm_accent #9b6dff;
|
||||
@define-color nm_accent_mid #7c3aed;
|
||||
@define-color nm_accent_dim rgba(155, 109, 255, 0.13);
|
||||
@define-color nm_accent_hover rgba(155, 109, 255, 0.20);
|
||||
@define-color nm_accent_border rgba(155, 109, 255, 0.28);
|
||||
|
||||
/* --- Surfaces --- */
|
||||
@define-color window_bg_color #111114;
|
||||
@define-color window_fg_color #e8e8ed;
|
||||
@define-color view_bg_color #18181c;
|
||||
@define-color view_fg_color #e8e8ed;
|
||||
@define-color headerbar_bg_color #111114;
|
||||
@define-color card_bg_color #1e1e24;
|
||||
@define-color card_fg_color #e8e8ed;
|
||||
@define-color popover_bg_color #1e1e24;
|
||||
@define-color popover_fg_color #e8e8ed;
|
||||
@define-color dialog_bg_color #18181c;
|
||||
@define-color dialog_fg_color #e8e8ed;
|
||||
|
||||
/* --- Borders --- */
|
||||
@define-color nm_border rgba(255, 255, 255, 0.07);
|
||||
@define-color nm_border_strong rgba(255, 255, 255, 0.12);
|
||||
|
||||
/* --- Window --- */
|
||||
window {
|
||||
background-color: @window_bg_color;
|
||||
color: @window_fg_color;
|
||||
}
|
||||
|
||||
/* --- Header Bars --- */
|
||||
headerbar,
|
||||
.nm-sidebar-bg {
|
||||
background-color: @window_bg_color;
|
||||
background-image: none;
|
||||
box-shadow: none;
|
||||
border-bottom: 1px solid @nm_border;
|
||||
color: @window_fg_color;
|
||||
}
|
||||
|
||||
/* --- Sidebar --- */
|
||||
.navigation-sidebar {
|
||||
background-color: transparent;
|
||||
border-right: 1px solid @nm_border;
|
||||
}
|
||||
|
||||
.nm-sidebar-listbox {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.nm-sidebar-listbox row {
|
||||
border-radius: 7px;
|
||||
margin: 1px 4px;
|
||||
padding: 5px 8px;
|
||||
transition: background 130ms ease;
|
||||
color: @window_fg_color;
|
||||
}
|
||||
|
||||
.nm-sidebar-listbox row:hover {
|
||||
background: rgba(255, 255, 255, 0.045);
|
||||
}
|
||||
|
||||
.nm-sidebar-listbox row:selected {
|
||||
background: @nm_accent_dim;
|
||||
color: @nm_accent;
|
||||
}
|
||||
|
||||
.nm-sidebar-listbox row:selected image,
|
||||
.nm-sidebar-listbox row:selected label {
|
||||
color: @nm_accent;
|
||||
}
|
||||
|
||||
/* --- Section Labels --- */
|
||||
.nm-sidebar-section-label {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.08em;
|
||||
color: rgba(255, 255, 255, 0.30);
|
||||
}
|
||||
|
||||
/* --- Search --- */
|
||||
.nm-search-entry {
|
||||
color: @window_fg_color;
|
||||
background-color: @card_bg_color;
|
||||
border: 1px solid @nm_border;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.nm-search-entry > box { color: @window_fg_color; }
|
||||
.nm-search-entry text { color: @window_fg_color; }
|
||||
|
||||
.nm-search-results {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.nm-search-results row {
|
||||
padding: 8px 12px;
|
||||
border-radius: 7px;
|
||||
margin: 2px 4px;
|
||||
transition: background 110ms ease;
|
||||
}
|
||||
|
||||
.nm-search-results row:hover {
|
||||
background: @nm_accent_dim;
|
||||
}
|
||||
|
||||
/* --- Content Cards --- */
|
||||
.nm-card,
|
||||
preferencesgroup > box {
|
||||
background-color: @card_bg_color;
|
||||
border: 1px solid @nm_border;
|
||||
border-radius: 12px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
row {
|
||||
border-radius: 7px;
|
||||
transition: background 110ms ease;
|
||||
}
|
||||
|
||||
row:hover {
|
||||
background: rgba(255, 255, 255, 0.025);
|
||||
}
|
||||
|
||||
/* --- Unsaved Changes Bar --- */
|
||||
.nm-dirty-bar {
|
||||
background: rgba(155, 109, 255, 0.07);
|
||||
border-top: 1px solid rgba(155, 109, 255, 0.18);
|
||||
padding: 8px 20px;
|
||||
}
|
||||
|
||||
/* --- Niri Banner --- */
|
||||
.nm-niri-banner {
|
||||
background: rgba(180, 110, 0, 0.10);
|
||||
color: rgba(240, 180, 50, 0.90);
|
||||
padding: 6px 16px;
|
||||
font-size: 13px;
|
||||
border-bottom: 1px solid rgba(180, 110, 0, 0.18);
|
||||
}
|
||||
|
||||
/* --- Badges & Status --- */
|
||||
.nm-badge {
|
||||
background: @nm_accent;
|
||||
color: #111114;
|
||||
border-radius: 12px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
padding: 1px 7px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
/* --- Inline Tag Chips --- */
|
||||
.tag {
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
color: @window_fg_color;
|
||||
border: 1px solid @nm_border_strong;
|
||||
border-radius: 5px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
padding: 1px 7px;
|
||||
}
|
||||
|
||||
.tag.accent {
|
||||
background: @nm_accent_dim;
|
||||
color: @nm_accent;
|
||||
border-color: @nm_accent_border;
|
||||
}
|
||||
|
||||
/* --- Buttons --- */
|
||||
button.suggested-action {
|
||||
border-radius: 9px;
|
||||
font-weight: 600;
|
||||
background: @nm_accent_mid;
|
||||
}
|
||||
|
||||
/* --- Toasts --- */
|
||||
toast {
|
||||
background-color: @card_bg_color;
|
||||
color: @card_fg_color;
|
||||
border: 1px solid @nm_accent_border;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.45);
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
toast label { font-weight: 500; }
|
||||
|
||||
/* --- Code Editor --- */
|
||||
.code-editor {
|
||||
background-color: #0d0d10;
|
||||
color: #e8e8ed;
|
||||
border: 1px solid @nm_border;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* --- Keyboard Visualizer --- */
|
||||
.nm-kb-action-panel {
|
||||
background-color: @card_bg_color;
|
||||
border: 1px solid @nm_border;
|
||||
border-radius: 12px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.nm-kb-key-id-label {
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
color: @window_fg_color;
|
||||
}
|
||||
|
||||
.nm-kb-swatch {
|
||||
min-width: 12px;
|
||||
min-height: 12px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* --- Keycaps --- */
|
||||
.nm-keycap-main, .nm-keycap-mod {
|
||||
background-color: @nm_accent_dim;
|
||||
border: 1px solid @nm_accent_border;
|
||||
border-radius: 5px;
|
||||
padding: 2px 8px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: @nm_accent;
|
||||
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.nm-keycap-main {
|
||||
background-color: rgba(155, 109, 255, 0.22);
|
||||
border-color: rgba(155, 109, 255, 0.45);
|
||||
color: rgba(210, 190, 255, 1.0);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.nm-keycap-mod { opacity: 0.80; }
|
||||
|
||||
.nm-keycap-purple {
|
||||
background: @nm_accent_dim;
|
||||
color: @nm_accent;
|
||||
border: 1px solid @nm_accent_border;
|
||||
border-radius: 5px;
|
||||
padding: 2px 8px;
|
||||
font-weight: 600;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* --- Pulse Highlight (search) --- */
|
||||
@keyframes pulse-highlight {
|
||||
0% { background-color: transparent; }
|
||||
18% { background-color: rgba(155, 109, 255, 0.28); }
|
||||
100% { background-color: transparent; }
|
||||
}
|
||||
|
||||
.nm-pulse-highlight {
|
||||
animation-name: pulse-highlight;
|
||||
animation-duration: 1.4s;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
|
||||
/* --- Animations Page --- */
|
||||
.nm-anim-banner {
|
||||
background: @nm_accent_dim;
|
||||
border: 1px solid @nm_accent_border;
|
||||
border-radius: 10px;
|
||||
padding: 10px 16px;
|
||||
color: @nm_accent;
|
||||
}
|
||||
|
||||
.nm-anim-banner button {
|
||||
background: rgba(155, 109, 255, 0.15);
|
||||
border: 1px solid @nm_accent_border;
|
||||
color: @nm_accent;
|
||||
font-weight: 600;
|
||||
border-radius: 8px;
|
||||
padding: 4px 14px;
|
||||
}
|
||||
|
||||
.nm-anim-banner button:hover {
|
||||
background: @nm_accent_hover;
|
||||
}
|
||||
|
||||
.nm-preset-icon {
|
||||
font-size: 18px;
|
||||
min-width: 28px;
|
||||
}
|
||||
|
||||
/* --- Bindings Page --- */
|
||||
.nm-binding-card {
|
||||
background: rgba(30, 30, 35, 0.6);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 12px;
|
||||
padding: 16px;
|
||||
transition: all 200ms ease;
|
||||
}
|
||||
.nm-binding-card:hover {
|
||||
background: rgba(45, 45, 50, 0.8);
|
||||
border-color: rgba(147, 51, 234, 0.4);
|
||||
}
|
||||
.nm-binding-actions-label {
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.05em;
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
.nm-binding-action-name {
|
||||
color: rgba(192, 132, 252, 1.0);
|
||||
font-weight: 600;
|
||||
font-size: 1.0rem;
|
||||
}
|
||||
.nm-keycap-purple {
|
||||
background: #581c87;
|
||||
color: white;
|
||||
border-radius: 6px;
|
||||
padding: 2px 8px;
|
||||
font-weight: bold;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
""".encode("utf-8")
|
||||
Reference in New Issue
Block a user