feat: rewrite moonset in Rust (gtk4-rs + gtk4-layer-shell)
Feature-parity with Python v0.2.0. Same CSS, same UI, same actions. Single 3.1 MB binary with embedded resources (CSS, wallpaper, avatar). Modules: power.rs, i18n.rs, config.rs, users.rs, panel.rs, main.rs 45 unit tests passing. Python sources retained as reference.
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
/* ABOUTME: GTK4 CSS stylesheet for the Moonset power menu. */
|
||||
/* ABOUTME: Uses GTK theme colors for consistency with the active desktop theme. */
|
||||
|
||||
/* Main panel window background */
|
||||
window.panel {
|
||||
background-color: @theme_bg_color;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
/* Wallpaper-only window for secondary monitors */
|
||||
window.wallpaper {
|
||||
background-color: @theme_bg_color;
|
||||
}
|
||||
|
||||
/* Round avatar image */
|
||||
.avatar {
|
||||
border-radius: 50%;
|
||||
min-width: 128px;
|
||||
min-height: 128px;
|
||||
background-color: @theme_selected_bg_color;
|
||||
border: 3px solid alpha(white, 0.3);
|
||||
}
|
||||
|
||||
/* Username label */
|
||||
.username-label {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
/* Action button — square card */
|
||||
.action-button {
|
||||
min-width: 120px;
|
||||
min-height: 120px;
|
||||
padding: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: alpha(@theme_base_color, 0.55);
|
||||
color: @theme_fg_color;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.action-button:hover {
|
||||
background-color: alpha(@theme_base_color, 0.7);
|
||||
}
|
||||
|
||||
/* Action icon inside button — request 48px from theme, scale up via CSS */
|
||||
.action-icon {
|
||||
color: @theme_fg_color;
|
||||
-gtk-icon-size: 64px;
|
||||
}
|
||||
|
||||
/* Action label below icon */
|
||||
.action-label {
|
||||
font-size: 14px;
|
||||
color: @theme_unfocused_fg_color;
|
||||
}
|
||||
|
||||
/* Confirmation box below action buttons */
|
||||
.confirm-box {
|
||||
padding: 16px 24px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Confirmation prompt text */
|
||||
.confirm-label {
|
||||
font-size: 16px;
|
||||
color: @theme_fg_color;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
/* Confirm "Yes" button */
|
||||
.confirm-yes {
|
||||
padding: 8px 24px;
|
||||
border-radius: 8px;
|
||||
background-color: @error_color;
|
||||
color: @theme_bg_color;
|
||||
border: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.confirm-yes:hover {
|
||||
background-color: lighter(@error_color);
|
||||
}
|
||||
|
||||
/* Confirm "No/Cancel" button */
|
||||
.confirm-no {
|
||||
padding: 8px 24px;
|
||||
border-radius: 8px;
|
||||
background-color: @theme_unfocused_bg_color;
|
||||
color: @theme_fg_color;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.confirm-no:hover {
|
||||
background-color: @theme_selected_bg_color;
|
||||
}
|
||||
|
||||
/* Error message label */
|
||||
.error-label {
|
||||
color: @error_color;
|
||||
font-size: 14px;
|
||||
}
|
||||
Reference in New Issue
Block a user