booru-viewer/themes/catppuccin-mocha.qss
pax 2fbf2f6472 0.2.0: mpv backend, popout viewer, preview toolbar, API retry, SearchState refactor
Video:
- Replace Qt Multimedia with mpv via python-mpv + OpenGL render API
- Hardware-accelerated decoding, frame-accurate seeking, proper EOF detection
- Translucent overlay controls in both preview and popout
- LC_NUMERIC=C for mpv locale compatibility

Popout viewer (renamed from slideshow):
- Floating toolbar + controls overlay with auto-hide (2s)
- Window auto-resizes to content aspect ratio on navigation
- Hyprland: hyprctl resizewindowpixel + keep_aspect_ratio prop
- Window geometry persisted to DB across sessions
- Smart F11 exit sizing (60% monitor, centered)

Preview toolbar:
- Bookmark, Save, BL Tag, BL Post, Popout buttons above preview
- Save opens folder picker menu, shows Save/Unsave state
- Blacklist actions have confirmation dialogs
- Per-tab button visibility (Library: Save + Popout only)
- Cross-tab state management with grid selection clearing

Search & pagination:
- SearchState dataclass replaces 8 scattered attrs + defensive getattr
- Media type filter dropdown (All/Animated/Video/GIF/Audio)
- API retry with backoff on 429/503/timeout
- Infinite scroll dedup fix (local seen set per backfill round)
- Prev/Next buttons hide at boundaries, "(end)" status indicator

Grid:
- Rubber band drag selection
- Saved/bookmarked dots update instantly across all tabs
- Library/bookmarks emit signals on file deletion for cross-tab sync

Settings & misc:
- Default site option
- Max thumbnail cache setting (500MB default)
- Source URLs clickable in info panel
- Long URLs truncated to prevent splitter blowout
- Bulk save no longer auto-bookmarks
2026-04-06 13:43:46 -05:00

127 lines
2.4 KiB
CSS

/* booru-viewer — Catppuccin Mocha */
QWidget {
background-color: #1e1e2e;
color: #cdd6f4;
font-size: 13px;
}
QPushButton {
background-color: #313244;
color: #cdd6f4;
border: 1px solid #45475a;
border-radius: 6px;
padding: 5px 14px;
}
QPushButton:hover {
background-color: #45475a;
border-color: #cba6f7;
}
QPushButton:pressed {
background-color: #585b70;
}
QPushButton:checked {
background-color: #cba6f7;
color: #1e1e2e;
border-color: #cba6f7;
}
QLineEdit, QSpinBox, QComboBox {
background-color: #313244;
color: #cdd6f4;
border: 1px solid #45475a;
border-radius: 6px;
padding: 4px 8px;
selection-background-color: #cba6f7;
selection-color: #1e1e2e;
}
QLineEdit:focus, QSpinBox:focus {
border-color: #cba6f7;
}
QComboBox::drop-down {
border: none;
width: 20px;
}
QComboBox QAbstractItemView {
background-color: #313244;
color: #cdd6f4;
border: 1px solid #45475a;
selection-background-color: #45475a;
}
QScrollBar:vertical {
background: #1e1e2e;
width: 10px;
border: none;
}
QScrollBar::handle:vertical {
background: #585b70;
border-radius: 4px;
min-height: 20px;
}
QScrollBar::handle:vertical:hover { background: #cba6f7; }
QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0; }
QScrollBar:horizontal {
background: #1e1e2e;
height: 10px;
}
QScrollBar::handle:horizontal {
background: #585b70;
border-radius: 4px;
}
QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { width: 0; }
QMenuBar, QMenu {
background-color: #1e1e2e;
color: #cdd6f4;
border: 1px solid #313244;
}
QMenu::item:selected {
background-color: #45475a;
}
QStatusBar {
background-color: #1e1e2e;
color: #a6adc8;
}
QSplitter::handle {
background: #45475a;
width: 2px;
}
QLabel { background: transparent; }
QSlider::groove:horizontal {
background: #313244;
height: 4px;
border-radius: 2px;
}
QSlider::handle:horizontal {
background: #cba6f7;
width: 12px;
margin: -4px 0;
border-radius: 6px;
}
QTabBar::tab {
background: #313244;
color: #cdd6f4;
border: 1px solid #45475a;
padding: 6px 16px;
border-radius: 4px 4px 0 0;
}
QTabBar::tab:selected {
background: #45475a;
color: #cba6f7;
}
/* Popout & preview overlay controls */
QWidget#_preview_controls,
QWidget#_slideshow_toolbar,
QWidget#_slideshow_controls {
background: rgba(0, 0, 0, 160);
}