/******************************************************************************/ /* Copyright (C) 2014-2015 by Philippe Groarke */ /* */ /* */ /* This program is free software: you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation, either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU General Public License for more details. */ /* */ /* */ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ /******************************************************************************/ /* Colors */ /* rgb(225,224,225); /* veryLight */ /* rgb(200,199,200); /* lighter */ /* rgb(122,121,122); /* light */ /* rgb(88,87,88); /* kindaDark */ /* rgb(58,57,58); /* dark */ /* rgb(31,30,31); /* veryDark */ /* rgb(11,10,11); /* veryVeryDark */ /* rgb(42,130,218); /* blue */ /* Custom theme information. This will set the application's QPalette, as * well as pass to QML via the OBSTheme object. * Can also use OBSTheme::disabled, OBSTheme::active, and OBSTheme::inactive. * Using it without will set all three (making 'active' a bit redundant) */ OBSTheme {{ window: {background}; /* dark */ windowText: rgb(225,224,225); /* veryLight */ base: rgb(31,30,31); /* veryDark */ alternateBase: rgb(11,10,11); /* veryVeryDark */ text: rgb(225,224,225); /* veryLight */ button: rgb(88,87,88); /* kindaDark */ buttonText: rgb(225,224,225); /* veryLight */ brightText: rgb(200,199,200); /* lighter */ light: rgb(88,87,88); /* kindaDark */ mid: rgb(58,57,58); /* dark */ dark: rgb(31,30,31); /* veryDark */ shadow: rgb(11,10,11); /* veryVeryDark */ highlight: rgb(42,130,218); /* blue */ highlightedText: rgb(0,0,0); link: rgb(114,162,255); /* OBS blue */ linkVisited: rgb(114,162,255); /* OBS blue */ }} OBSTheme::disabled {{ text: rgb(122,121,122); /* light */ buttonText: rgb(122,121,122); /* light */ brightText: rgb(122,121,122); /* light */ }} OBSTheme::inactive {{ highlight: rgb(48,47,48); highlightedText: rgb(255,255,255); }} /* General style, we override only what is needed. */ QWidget {{ background-color: palette(window); alternate-background-color: palette(base); color: palette(window-text); selection-background-color: palette(highlight); selection-color: palette(highlighted-text); }} * [frameShape="1"], * [frameShape="2"], * [frameShape="3"], * [frameShape="4"], * [frameShape="5"], * [frameShape="6"] {{ border: 1px solid palette(base); }} /* Misc */ QWidget::disabled {{ color: 2px solid palette(bright-text); }} QAbstractItemView, QStackedWidget#stackedMixerArea QWidget {{ background-color: palette(base); }} QToolTip {{ background-color: palette(base); color: rgb(205,205,205); border: none; }} QMenuBar::item {{ background-color: palette(window); }} QListWidget::item:selected:!active, SourceTree::item:selected:!active {{ color: rgb(255,255,255); background-color: rgb(48,47,48); }} QListWidget QLineEdit, SourceTree QLineEdit {{ padding-top: 0px; padding-bottom: 0px; padding-right: 0; padding-left: 2px; border: none; border-radius: none; }} /* Dock Widget */ QDockWidget {{ titlebar-close-icon: url('./Dark/close.svg'); titlebar-normal-icon: url('./Dark/popout.svg'); }} QDockWidget::title {{ text-align: center; background-color: rgb(70,69,70); }} QDockWidget::close-button, QDockWidget::float-button {{ border: 1px solid transparent; background: transparent; padding: 0px; }} QDockWidget::close-button:hover, QDockWidget::float-button:hover {{ background: transparent; }} QDockWidget::close-button:pressed, QDockWidget::float-button:pressed {{ padding: 1px -1px -1px 1px; }} /* Group Box */ QGroupBox {{ border: 1px solid palette(base); border-radius: 5px; padding-top: 24px; font-weight: bold; }} QGroupBox::title {{ subcontrol-origin: margin; left: 4px; top: 4px; }} /* ScrollBars */ ::corner {{ background-color: palette(window); border: none; }} QScrollBar:vertical {{ background-color: palette(window); width: 14px; margin: 0px; }} QScrollBar::handle:vertical {{ background-color: rgb(76,76,76); min-height: 20px; margin: 2px; border-radius: 5px; border-width: 1px; border: 1px solid rgb(76,76,76); }} QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {{ border: none; background: none; height: 0px; }} QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical, QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {{ border: none; background: none; color: none; }} QScrollBar:horizontal {{ background-color: palette(window); height: 14px; margin: 0px; }} QScrollBar::handle:horizontal {{ background-color: rgb(76,76,76); min-width: 20px; margin: 2px; border-radius: 5px; border-width: 1px; border: 1px solid rgb(76,76,76); }} QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {{ border: none; background: none; width: 0px; }} QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal, QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {{ border: none; background: none; color: none; }} /* Source Context */ #contextContainer QPushButton[themeID2=contextBarButton] {{ padding: 3px; margin: 0px; }} #contextContainer QPushButton#sourcePropertiesButton {{ qproperty-icon: url(./Dark/settings/general.svg); }} #contextContainer QPushButton#sourceFiltersButton {{ qproperty-icon: url(./Dark/filter.svg); }} #contextContainer QPushButton#sourceInteractButton {{ qproperty-icon: url(./Dark/interact.svg); }} /* Scenes and Sources toolbar */ QToolBar {{ background-color: palette(window); border: none; }} QToolButton:hover {{ background-color: rgb(122,121,122); /* light */ border-radius: none; }} QToolButton:pressed {{ background-color: palette(base); border-radius: none; }} * [themeID="addIconSmall"] {{ qproperty-icon: url(./Dark/plus.svg); }} * [themeID="removeIconSmall"] {{ qproperty-icon: url(./Dark/minus.svg); }} * [themeID="propertiesIconSmall"] {{ qproperty-icon: url(./Dark/settings/general.svg); }} * [themeID="configIconSmall"] {{ qproperty-icon: url(./Dark/settings/general.svg); }} * [themeID="refreshIconSmall"] {{ qproperty-icon: url(./Dark/refresh.svg); }} * [themeID="upArrowIconSmall"] {{ qproperty-icon: url(./Dark/up.svg); }} * [themeID="downArrowIconSmall"] {{ qproperty-icon: url(./Dark/down.svg); }} * [themeID="pauseIconSmall"] {{ qproperty-icon: url(./Dark/media-pause.svg); }} /* Tab Widget */ QTabWidget::pane {{ /* The tab widget frame */ border-top: 1px solid palette(base); /* veryDark */ }} QTabWidget::tab-bar {{ alignment: left; }} QTabBar::tab {{ background-color: rgb(76,76,76); border: none; padding: 5px; min-width: 50px; margin: 1px; }} QTabBar::tab:top {{ border-bottom: 1px transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; }} QTabBar::tab:bottom {{ padding-top: 1px; margin-bottom: 4px; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; height: 14px; }} QTabBar::tab:selected {{ background-color: palette(base); }} QTabBar::tab:hover {{ background-color: rgb(122,121,122); /* light */ }} QTabBar::tab:pressed {{ background-color: palette(base); }} /* ComboBox */ QDateTimeEdit, QComboBox {{ background-color: rgb(76,76,76); border-style: solid; border: 1px; border-radius: 3px; border-color: rgb(76,76,76); /* veryDark */ padding: 2px; padding-left: 10px; }} QDateTimeEdit:hover, QComboBox:hover {{ background-color: palette(button); }} QDateTimeEdit::drop-down, QComboBox::drop-down {{ border:none; border-left: 1px solid rgba(31,30,31,155); /* veryDark */ width: 20px; }} QDateTimeEdit::down-arrow, QComboBox::down-arrow {{ qproperty-alignment: AlignTop; image: url(./Dark/updown.svg); width: 100%; }} QDateTimeEdit:on, QComboBox:on {{ background-color: palette(base); }} QDateTimeEdit:editable, QComboBox:editable {{ border-top-left-radius: 0px; border-bottom-left-radius: 0px; }} QDateTimeEdit::drop-down:editable, QComboBox::drop-down:editable {{ border-top-right-radius: 3px; border-bottom-right-radius: 3px; }} QDateTimeEdit::down-arrow:editable, QComboBox::down-arrow:editable {{ qproperty-alignment: AlignTop; image: url(./Dark/down.svg); width: 8%; }} /* Textedits etc */ QLineEdit, QTextEdit, QPlainTextEdit {{ background-color: palette(base); border: none; border-radius: 3px; padding: 2px 2px 3px 7px; }} /* Spinbox and doubleSpinbox */ QSpinBox, QDoubleSpinBox {{ background-color: palette(base); border: none; border-radius: 3px; margin: 0px 3px 0px 0px; padding: 2px 2px 3px 7px; }} QSpinBox::up-button, QDoubleSpinBox::up-button {{ subcontrol-origin: margin; subcontrol-position: top right; /* position at the top right corner */ background-color: rgb(76,76,76); border: 1px solid palette(base); border-radius: 3px; border-width: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-width: 0; }} QSpinBox::down-button, QDoubleSpinBox::down-button {{ subcontrol-origin: margin; subcontrol-position: bottom right; /* position at the top right corner */ background-color: rgb(76,76,76); border: 1px solid palette(base); border-radius: 3px; border-width: 0; border-top-left-radius: 0; border-top-right-radius: 0; border-top-width: 0; }} QSpinBox::up-button:hover, QSpinBox::down-button:hover, QDoubleSpinBox::up-button:hover, QDoubleSpinBox::down-button:hover {{ background-color: rgb(122,121,122); /* light */ }} QSpinBox::up-button:pressed, QSpinBox::down-button:pressed, QDoubleSpinBox::up-button:pressed, QDoubleSpinBox::down-button:pressed {{ background-color: palette(window); }} QSpinBox::up-button:disabled, QSpinBox::up-button:off, QSpinBox::down-button:disabled, QSpinBox::down-button:off {{ background-color: palette(window); }} QDoubleSpinBox::up-button:disabled, QDoubleSpinBox::up-button:off, QDoubleSpinBox::down-button:disabled, QDoubleSpinBox::down-button:off {{ background-color: palette(window); }} QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {{ image: url(./Dark/up.svg); width: 100%; }} QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {{ image: url(./Dark/down.svg); width: 100%; }} /* Buttons */ QPushButton {{ color: palette(window-text); background-color: rgb(76,76,76); border: none; border-radius: 3px; padding: 4px; padding-left: 20px; padding-right: 20px; }} QPushButton::flat {{ background-color: palette(window); }} QPushButton:checked {{ background-color: palette(base); }} QPushButton:hover {{ background-color: rgb(122,121,122); /* light */ }} QPushButton:pressed {{ background-color: palette(base); }} QPushButton:disabled {{ background-color: rgb(46,45,46); }} QPushButton::menu-indicator {{ image: url(./Dark/down.svg); subcontrol-position: right; subcontrol-origin: padding; width: 25px; }} /* Sliders */ QSlider::groove:horizontal {{ background-color: rgb(76,76,76); height: 4px; border: none; border-radius: 2px; }} QSlider::handle:horizontal {{ background-color: rgb(210,210,210); border: 1px solid palette(window); border-radius: 3px; height: 10px; width: 18px; margin: -3px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */ }} QSlider::handle:horizontal:pressed {{ background-color: rgb(210,210,210); }} QSlider::sub-page:horizontal {{ background-color: palette(highlight); border-radius: 2px; }} QSlider::sub-page:horizontal:disabled {{ background-color: rgb(50,49,50); /* dark */ border-radius: 2px; }} QSlider::groove:vertical {{ background-color: rgb(76,76,76); width: 4px; border: none; border-radius: 2px; }} QSlider::handle:vertical {{ background-color: rgb(210,210,210); border: 1px solid palette(window); border-radius: 3px; width: 10px; height: 18px; margin: 0 -3px; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */ }} QSlider::handle:vertical:pressed {{ background-color: rgb(210,210,210); }} QSlider::add-page:vertical {{ background-color: palette(highlight); border-radius: 2px; }} QSlider::add-page:vertical:disabled {{ background-color: rgb(50,49,50); /* dark */ border-radius: 2px; }} QSlider::handle:hover {{ background-color: palette(bright-text); }} QSlider::handle:disabled {{ background-color: rgb(122,121,122); /* light */ }} /* Volume Control */ VolumeMeter {{ qproperty-backgroundNominalColor: rgb(38,127,38); qproperty-backgroundWarningColor: rgb(127,127,38); qproperty-backgroundErrorColor: rgb(127,38,38); qproperty-foregroundNominalColor: rgb(76,255,76); qproperty-foregroundWarningColor: rgb(255,255,76); qproperty-foregroundErrorColor: rgb(255,76,76); qproperty-magnitudeColor: rgb(0,0,0); qproperty-majorTickColor: palette(window-text); qproperty-minorTickColor: rgb(122,121,122); /* light */ }} /* Status Bar */ QStatusBar::item {{ border: none; }} /* Table View */ QTableView {{ gridline-color: palette(light); }} QHeaderView::section {{ background-color: palette(window); color: palette(window-text); border: 1px solid palette(base); border-radius: 5px; }} /* Mute CheckBox */ MuteCheckBox {{ outline: none; }} MuteCheckBox::indicator:checked {{ image: url(./Dark/mute.svg); }} MuteCheckBox::indicator:unchecked {{ image: url(./Dark/settings/audio.svg); }} OBSHotkeyLabel[hotkeyPairHover=true] {{ color: red; }} /* Pause */ PauseCheckBox {{ outline: none; }} PauseCheckBox::indicator:checked {{ image: url(:/res/images/media-pause.svg); }} PauseCheckBox::indicator:unchecked {{ image: url(:/res/images/media-play.svg); }} /* Group Collapse Checkbox */ SourceTreeSubItemCheckBox {{ background: transparent; outline: none; }} SourceTreeSubItemCheckBox::indicator {{ width: 10px; height: 10px; }} SourceTreeSubItemCheckBox::indicator:checked {{ image: url(./Dark/expand.svg); }} SourceTreeSubItemCheckBox::indicator:unchecked {{ image: url(./Dark/down.svg); }} /* Label warning/error */ QLabel#warningLabel {{ color: rgb(192,128,0); font-weight: bold; }} QLabel#errorLabel {{ color: rgb(192,0,0); font-weight: bold; }} * [themeID="warning"] {{ color: rgb(192,128,0); font-weight: bold; }} * [themeID="error"] {{ color: rgb(192,0,0); font-weight: bold; }} * [themeID="good"] {{ color: rgb(0,192,0); font-weight: bold; }} /* About dialog */ * [themeID="aboutName"] {{ font-size: 36px; font-weight: bold; }} * [themeID="aboutVersion"] {{ font-size: 16px; margin-bottom: 20px; }} * [themeID="aboutInfo"] {{ margin-bottom: 20px; }} * [themeID="aboutHLayout"] {{ background-color: palette(base); }} /* Preview background color */ OBSQTDisplay {{ qproperty-displayBackgroundColor: rgb(76,76,76); }} /* Preview/Program labels */ * [themeID="previewProgramLabels"] {{ font-size: 18px; font-weight: bold; color: rgb(122,121,122); }} /* Settings Icons */ OBSBasicSettings {{ qproperty-generalIcon: url(./Dark/settings/general.svg); qproperty-streamIcon: url(./Dark/settings/stream.svg); qproperty-outputIcon: url(./Dark/settings/output.svg); qproperty-audioIcon: url(./Dark/settings/audio.svg); qproperty-videoIcon: url(./Dark/settings/video.svg); qproperty-hotkeysIcon: url(./Dark/settings/hotkeys.svg); qproperty-advancedIcon: url(./Dark/settings/advanced.svg); }} OBSBasicSettings QListWidget::item {{ padding-top: 5px; padding-bottom: 5px; }} /* Locked CheckBox */ LockedCheckBox {{ outline: none; background: transparent; }} LockedCheckBox::indicator:checked {{ image: url(./Dark/locked.svg); }} LockedCheckBox::indicator:unchecked {{ image: url(:res/images/unlocked.svg); }} /* Visibility CheckBox */ VisibilityCheckBox {{ outline: none; background: transparent; }} VisibilityCheckBox::indicator:checked {{ image: url(./Dark/visible.svg); }} VisibilityCheckBox::indicator:unchecked {{ image: url(:res/images/invisible.svg); }} * [themeID="trashIcon"] {{ qproperty-icon: url(./Dark/trash.svg); }} * [themeID="revertIcon"] {{ qproperty-icon: url(./Dark/revert.svg); }} QPushButton#extraPanelDelete {{ background-color: palette(base); }} QPushButton#extraPanelDelete:hover {{ background-color: rgb(122,121,122); }} QPushButton#extraPanelDelete:pressed {{ background-color: palette(base); }} OBSMissingFiles {{ qproperty-warningIcon: url(./Dark/alert.svg); }} /* Source Icons */ OBSBasic {{ qproperty-imageIcon: url(./Dark/sources/image.svg); qproperty-colorIcon: url(./Dark/sources/brush.svg); qproperty-slideshowIcon: url(./Dark/sources/slideshow.svg); qproperty-audioInputIcon: url(./Dark/sources/microphone.svg); qproperty-audioOutputIcon: url(./Dark/settings/audio.svg); qproperty-desktopCapIcon: url(./Dark/settings/video.svg); qproperty-windowCapIcon: url(./Dark/sources/window.svg); qproperty-gameCapIcon: url(./Dark/sources/gamepad.svg); qproperty-cameraIcon: url(./Dark/sources/camera.svg); qproperty-textIcon: url(./Dark/sources/text.svg); qproperty-mediaIcon: url(./Dark/sources/media.svg); qproperty-browserIcon: url(./Dark/sources/globe.svg); qproperty-groupIcon: url(./Dark/sources/group.svg); qproperty-sceneIcon: url(./Dark/sources/scene.svg); qproperty-defaultIcon: url(./Dark/sources/default.svg); }} /* Scene Tree */ SceneTree {{ qproperty-gridItemWidth: 150; qproperty-gridItemHeight: 27; }} *[gridMode="true"] SceneTree::item {{ color: palette(window-text); background-color: rgb(76,76,76); border: none; border-radius: 3px; padding: 4px; padding-left: 10px; padding-right: 10px; margin: 1px; }} *[gridMode="true"] SceneTree::item:selected {{ background-color: rgb(122,121,122); /* light */ }} *[gridMode="true"] SceneTree::item:hover {{ background-color: rgb(122,121,122); /* light */ }} *[gridMode="true"] SceneTree::item:pressed {{ background-color: palette(base); }} *[gridMode="true"] SceneTree::item:checked {{ background-color: rgb(122,121,122); /* light */ }} /* Save icon */ * [themeID="replayIconSmall"] {{ qproperty-icon: url(./Dark/save.svg); }} /* Studio Mode T-Bar */ QSlider[themeID="tBarSlider"] {{ height: 24px; }} QSlider::groove:horizontal[themeID="tBarSlider"] {{ border: 1px solid rgb(76,76,76); height: 5px; background: palette(base); }} QSlider::sub-page:horizontal[themeID="tBarSlider"] {{ background: palette(base);; border: 1px solid rgb(76,76,76); }} QSlider::handle:horizontal[themeID="tBarSlider"] {{ background-color: rgb(210,210,210); width: 12px; height: 24px; margin: -24px 0px; }} /* Media icons */ * [themeID="playIcon"] {{ qproperty-icon: url(./Dark/media/media_play.svg); }} * [themeID="pauseIcon"] {{ qproperty-icon: url(./Dark/media/media_pause.svg); }} * [themeID="restartIcon"] {{ qproperty-icon: url(./Dark/media/media_restart.svg); }} * [themeID="stopIcon"] {{ qproperty-icon: url(./Dark/media/media_stop.svg); }} * [themeID="nextIcon"] {{ qproperty-icon: url(./Dark/media/media_next.svg); }} * [themeID="previousIcon"] {{ qproperty-icon: url(./Dark/media/media_previous.svg); }} /* YouTube Integration */ OBSYoutubeActions {{ qproperty-thumbPlaceholder: url(./Dark/sources/image.svg); }} #ytEventList QLabel {{ color: rgb(225,224,225); /* veryLight */ background-color: rgb(76,76,76); border: none; border-radius: 3px; padding: 4px 20px; }} #ytEventList QLabel:hover {{ background: rgb(122,121,122); }} #ytEventList QLabel[isSelectedEvent=true] {{ background: rgb(31,30,31); border: none; }} /* Calendar Widget */ QDateTimeEdit::down-arrow {{ qproperty-alignment: AlignTop; image: url(./Dark/down.svg); width: 100%; }} QDateTimeEdit:on {{ background-color: rgb(31,30,31); /* veryDark */ }} /* Calendar Top Bar */ QCalendarWidget QWidget#qt_calendar_navigationbar {{ background-color: rgb(58,57,58); padding: 4px 8px; }} /* Calendar Top Bar Buttons */ QCalendarWidget QToolButton {{ background-color: rgb(76,76,76); padding: 2px 16px; border-radius: 3px; margin: 2px; }} #qt_calendar_monthbutton::menu-indicator {{ image: url(./Dark/down.svg); subcontrol-position: right; padding-top: 2px; padding-right: 6px; height: 10px; width: 10px; }} QCalendarWidget #qt_calendar_prevmonth {{ padding: 2px; qproperty-icon: url(./Dark/left.svg); icon-size: 16px, 16px; }} QCalendarWidget #qt_calendar_nextmonth {{ padding: 2px; qproperty-icon: url(./Dark/expand.svg); icon-size: 16px, 16px; }} QCalendarWidget QToolButton:hover {{ background-color: rgb(122,121,122); border-radius: 3px; }} QCalendarWidget QToolButton:pressed {{ background-color: rgb(31,30,31); /* veryDark */ }} /* Month Dropdown Menu */ QCalendarWidget QMenu {{ }} /* Year spinbox */ QCalendarWidget QSpinBox {{ background-color: rgb(31,30,31); /* veryDark */ border: none; border-radius: 3px; margin: 0px 3px 0px 0px; padding: 4px 16px; }} QCalendarWidget QSpinBox::up-button {{ subcontrol-origin: border; subcontrol-position: top right; width: 16px; }} QCalendarWidget QSpinBox::down-button {{subcontrol-origin: border; subcontrol-position: bottom right; width: 16px;}} QCalendarWidget QSpinBox::up-arrow {{ width: 10px; height: 10px; }} QCalendarWidget QSpinBox::down-arrow {{ width: 10px; height: 10px; }} /* Days of the Week Bar */ QCalendarWidget QWidget {{ alternate-background-color: rgb(70,69,70); }} QCalendarWidget QAbstractItemView:enabled {{ background-color: rgb(31,30,31); color: rgb(225,224,225); selection-background-color: rgb(25,51,75); selection-color: rgb(225,224,225); }} QCalendarWidget QAbstractItemView:disabled {{ color: rgb(122,121,122); }}