Files
gniza4linux/tui/gniza.tcss
shuki fb508d9e0b Add remote folder browser for SSH source targets
Browse button now opens an SSH directory tree picker when source type is
SSH, using the configured credentials. Folders input and Browse button
placed on same row so they're visible without scrolling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 03:32:30 +02:00

434 lines
5.7 KiB
Plaintext

/* gniza TUI theme */
Screen {
background: $surface;
}
#screen-title {
text-style: bold;
color: #00cc00;
padding: 1 0;
text-align: center;
}
/* Main menu */
#main-layout {
width: 100%;
height: 1fr;
align: center middle;
}
#logo {
width: auto;
min-width: 40;
height: auto;
padding: 1 3;
content-align: center middle;
}
#menu-list {
width: 1fr;
max-width: 40;
min-width: 25;
height: auto;
max-height: 22;
margin: 1 2 0 2;
}
.screen-with-docs {
height: 1fr;
}
/* Data tables */
DataTable {
height: auto;
min-height: 5;
max-height: 16;
margin: 1 0;
}
/* Form screens */
#target-edit,
#remote-edit,
#schedule-edit,
#settings-screen,
#schedule-screen,
#backup-screen,
#restore-screen,
#retention-screen,
#snapshots-screen,
#targets-screen,
#remotes-screen,
#running-tasks-screen,
#logs-screen {
padding: 1 2;
overflow-y: auto;
}
Input {
margin: 0 0 1 0;
}
Select {
margin: 0 0 1 0;
}
#settings-screen Input,
#settings-screen Select {
margin: 0;
}
#settings-screen Static {
margin: 1 0 0 0;
}
#settings-screen #screen-title {
margin: 0;
}
SelectionList {
height: auto;
max-height: 8;
margin: 0 0 1 0;
}
/* MySQL restore toggle */
#restore-mysql-row {
height: 3;
align: left middle;
margin: 0 0 1 0;
}
#restore-mysql-row Static {
width: auto;
height: 3;
content-align: left middle;
}
#restore-mysql-row Switch {
height: 3;
margin: 0 1;
}
/* Browse row */
#restore-dest-row,
#te-folders-row {
height: auto;
margin: 0 0 1 0;
}
#restore-dest-row Input,
#te-folders-row Input {
width: 1fr;
}
#restore-dest-row Button,
#te-folders-row Button {
width: auto;
min-width: 12;
margin: 0 0 0 1;
}
/* Button rows */
#backup-buttons,
#restore-buttons,
#ret-buttons,
#targets-buttons,
#remotes-buttons,
#rt-buttons,
#log-pager-buttons,
#logs-buttons,
#snapshots-buttons,
#sched-buttons,
#sched-edit-buttons,
#te-buttons,
#re-buttons,
#set-buttons {
height: auto;
margin: 1 0;
overflow: hidden;
}
#backup-buttons Button,
#restore-buttons Button,
#ret-buttons Button,
#targets-buttons Button,
#remotes-buttons Button,
#rt-buttons Button,
#log-pager-buttons Button,
#logs-buttons Button,
#snapshots-buttons Button,
#sched-buttons Button,
#sched-edit-buttons Button,
#te-buttons Button,
#re-buttons Button,
#set-buttons Button {
margin: 0 1 0 0;
}
#log-page-info {
width: auto;
padding: 0 1;
content-align: center middle;
}
/* Dialogs */
#confirm-dialog {
width: 80%;
max-width: 60;
height: auto;
padding: 2;
background: $panel;
border: thick $accent;
}
#cd-title {
text-style: bold;
color: #00cc00;
margin: 0 0 1 0;
}
#cd-message {
margin: 0 0 1 0;
}
#cd-buttons {
height: auto;
align: center middle;
}
#cd-buttons Button {
margin: 0 1 0 0;
}
/* Help modal */
HelpModal {
align: center middle;
}
#help-modal {
width: 90%;
max-width: 70;
height: 80%;
padding: 1 2;
background: $panel;
border: thick $accent;
}
#help-modal #help-close {
margin: 1 0 0 0;
width: auto;
}
/* Folder picker */
#folder-picker {
width: 90%;
max-width: 70;
height: 80%;
max-height: 30;
padding: 1;
background: $panel;
border: thick $accent;
}
#fp-title {
text-style: bold;
color: #00cc00;
margin: 0 0 1 0;
}
#fp-tree {
height: 1fr;
}
#fp-new-row {
height: auto;
margin: 1 0 0 0;
}
#fp-new-row Input {
width: 1fr;
}
#fp-new-row Button {
width: auto;
min-width: 16;
margin: 0 0 0 1;
}
#fp-buttons {
height: auto;
margin: 1 0 0 0;
}
#fp-buttons Button {
margin: 0 1 0 0;
}
/* Operation log */
#op-log {
width: 90%;
max-width: 120;
height: 80%;
padding: 1;
background: $panel;
border: thick $accent;
}
#ol-title {
text-style: bold;
color: #00cc00;
margin: 0 0 1 0;
}
#ol-footer {
height: auto;
margin: 1 0 0 0;
}
#ol-spinner {
width: auto;
min-width: 20;
height: 3;
margin: 0 0 0 1;
content-align: left middle;
color: #00cc00;
}
#ol-log {
height: 1fr;
border: round $accent;
}
#ol-close {
margin: 0;
}
/* Snapshot browser */
#snapshot-browser {
width: 90%;
max-width: 120;
height: 80%;
padding: 1;
background: $panel;
border: thick $accent;
}
#sb-title {
text-style: bold;
color: #00cc00;
margin: 0 0 1 0;
}
#sb-tree {
height: 1fr;
border: round $accent;
}
#sb-buttons {
height: auto;
margin: 1 0 0 0;
}
#sb-buttons Button {
margin: 0 1 0 0;
}
/* Log viewer */
#log-viewer,
#rt-log-viewer {
height: 1fr;
min-height: 8;
border: round $accent;
margin: 1 0;
}
/* Progress bar */
#rt-progress {
margin: 0 0;
}
#rt-progress-label {
height: 1;
color: #00cc00;
}
/* Wizard */
#wizard {
width: 90%;
max-width: 60;
padding: 2;
}
#wizard Button {
width: 100%;
margin: 0 0 1 0;
}
#wizard-welcome {
margin: 0 0 1 0;
}
/* Switch row */
#te-switch-row {
height: auto;
align: left middle;
margin: 0 0 1 0;
}
Switch {
margin: 0 1;
}
.section-label {
text-style: bold;
color: #00cc00;
margin: 1 0 0 0;
}
/* SSH key browse row */
#re-key-row {
height: auto;
margin: 0 0 1 0;
}
#re-key-row Input {
width: 1fr;
}
#re-key-row Button {
width: auto;
min-width: 12;
margin: 0 0 0 1;
}
/* File picker */
#file-picker {
width: 90%;
max-width: 70;
height: 80%;
max-height: 30;
padding: 1;
background: $panel;
border: thick $accent;
}
#fip-title {
text-style: bold;
color: #00cc00;
margin: 0 0 1 0;
}
#fip-tree {
height: 1fr;
}
#fip-buttons {
height: auto;
margin: 1 0 0 0;
}
#fip-buttons Button {
margin: 0 1 0 0;
}