Light.qss 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487
  1. /******************************************************************************/
  2. /* Copyright (C) 2014-2015 by Philippe Groarke <[email protected]> */
  3. /* */
  4. /* */
  5. /* This program is free software: you can redistribute it and/or modify */
  6. /* it under the terms of the GNU General Public License as published by */
  7. /* the Free Software Foundation, either version 2 of the License, or */
  8. /* (at your option) any later version. */
  9. /* */
  10. /* This program is distributed in the hope that it will be useful, */
  11. /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
  12. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
  13. /* GNU General Public License for more details. */
  14. /* */
  15. /* */
  16. /* You should have received a copy of the GNU General Public License */
  17. /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
  18. /******************************************************************************/
  19. /* Colors */
  20. OBSThemeMeta {
  21. dark: 'false';
  22. author: 'Warchamp7';
  23. }
  24. /* Custom theme information. This will set the application's QPalette, as
  25. * well as pass to QML via the OBSTheme object.
  26. * Can also use OBSTheme::disabled, OBSTheme::active, and OBSTheme::inactive.
  27. * Using it without will set all three (making 'active' a bit redundant) */
  28. OBSTheme {
  29. window: rgb(211,211,211);
  30. windowText: rgb(255,254,255);
  31. base: rgb(229,229,229);
  32. alternateBase: rgb(11,10,11);
  33. text: rgb(2,2,2);
  34. button: rgb(243,243,243);
  35. buttonText: rgb(2,2,2);
  36. brightText: rgb(255,254,255);
  37. light: rgb(167,167,167);
  38. mid: rgb(211,211,211);
  39. dark: rgb(229,229,229);
  40. shadow: rgb(11,10,11);
  41. primary: rgb(140,181,255);
  42. primaryLight: rgb(178,207,255);
  43. primaryDark: rgb(193,193,193);
  44. highlight: rgb(42,130,218);
  45. highlightText: rgb(255,254,255);
  46. link: rgb(77,166,255);
  47. linkVisited: rgb(77,166,255);
  48. }
  49. OBSTheme::disabled {
  50. windowText: rgb(74,74,74);
  51. text: rgb(74,74,74);
  52. button: rgb(27,29,34);
  53. buttonText: rgb(43,46,56);
  54. brightText: rgb(43,46,56);
  55. }
  56. OBSTheme::inactive {
  57. text: rgb(255,254,255);
  58. highlight: rgb(25,28,34);
  59. highlightText: rgb(255,255,255);
  60. }
  61. /* Default widget style, we override only what is needed. */
  62. QWidget {
  63. alternate-background-color: palette(base);
  64. color: palette(text);
  65. selection-background-color: rgb(140,181,255);
  66. selection-color: palette(text);
  67. font-size: 10pt;
  68. font-family: 'Open Sans', Helvetica, Arial, 'MS Shell Dlg', sans-serif
  69. }
  70. QWidget:disabled {
  71. color: rgb(74,74,74);
  72. }
  73. /* Container windows */
  74. QDialog,
  75. QMainWindow,
  76. QStatusBar,
  77. QMenuBar,
  78. QMenu {
  79. background-color: palette(window);
  80. }
  81. /* macOS Separator Fix */
  82. QMainWindow::separator {
  83. background: transparent;
  84. width: 4px;
  85. height: 4px;
  86. }
  87. /* General Widgets */
  88. QLabel,
  89. QGroupBox,
  90. QCheckBox {
  91. background: transparent;
  92. }
  93. QComboBox,
  94. QCheckBox,
  95. QPushButton,
  96. QSpinBox,
  97. QDoubleSpinBox {
  98. margin-top: 3px;
  99. margin-bottom: 3px;
  100. }
  101. QListWidget QWidget,
  102. SceneTree QWidget,
  103. SourceTree QWidget {
  104. margin-top: 0;
  105. margin-bottom: 0;
  106. }
  107. * [frameShape="1"], * [frameShape="2"], * [frameShape="3"], * [frameShape="4"], * [frameShape="5"], * [frameShape="6"] {
  108. border: 1px solid palette(dark);
  109. }
  110. /* Misc */
  111. QAbstractItemView, QStackedWidget#stackedMixerArea QWidget {
  112. background-color: palette(base);
  113. }
  114. QToolTip {
  115. background-color: palette(base);
  116. color: palette(text);
  117. border: none;
  118. }
  119. /* Context Menu */
  120. QMenu::item:disabled {
  121. color: rgb(74,74,74);
  122. }
  123. QMenu::item:disabled {
  124. background: transparent;
  125. }
  126. /* Top Menu Bar Items */
  127. QMenuBar::item {
  128. background-color: transparent;
  129. }
  130. QMenuBar::item:selected {
  131. background: rgb(140,181,255);
  132. }
  133. /* Item Lists */
  134. QListWidget::item {
  135. color: palette(text);
  136. }
  137. SceneTree,
  138. SourceTree {
  139. padding: 3px;
  140. }
  141. SceneTree::item,
  142. SourceTree::item {
  143. border-radius: 4px;
  144. padding: 6px;
  145. color: palette(text);
  146. border: 0px solid transparent;
  147. }
  148. QListWidget::item:selected,
  149. SceneTree::item:selected,
  150. SourceTree::item:selected {
  151. background-color: rgb(140,181,255);
  152. }
  153. QListWidget::item:hover,
  154. SceneTree::item:hover,
  155. SourceTree::item:hover,
  156. QListWidget::item:selected:hover,
  157. SceneTree::item:selected:hover,
  158. SourceTree::item:selected:hover {
  159. background-color: rgb(178,207,255);
  160. color: palette(text);
  161. }
  162. QListWidget::item:disabled,
  163. QListWidget::item:disabled:hover {
  164. background: transparent;
  165. color: rgb(74,74,74);
  166. }
  167. QListWidget QLineEdit,
  168. SceneTree QLineEdit,
  169. SourceTree QLineEdit {
  170. padding: 0px;
  171. padding-bottom: 2px;
  172. margin: 0px;
  173. border: 1px solid #FFF;
  174. border-radius: 2px;
  175. }
  176. QListWidget QLineEdit:focus,
  177. SceneTree QLineEdit:focus,
  178. SourceTree QLineEdit:focus {
  179. border: 1px solid #FFF;
  180. }
  181. /* Settings QList */
  182. OBSBasicSettings QListWidget {
  183. border-radius: 4px;
  184. padding: 3px;
  185. }
  186. OBSBasicSettings QListWidget::item {
  187. border-radius: 4px;
  188. padding: 6px;
  189. }
  190. /* Settings properties view */
  191. OBSBasicSettings #PropertiesContainer {
  192. background-color: palette(dark);
  193. }
  194. /* Dock Widget */
  195. OBSDock > QWidget {
  196. background: palette(dark);
  197. border-bottom-left-radius: 4px;
  198. border-bottom-right-radius: 4px;
  199. }
  200. OBSDock QFrame {
  201. background: palette(dark);
  202. border-bottom-left-radius: 4px;
  203. border-bottom-right-radius: 4px;
  204. }
  205. #transitionsContainer QPushButton {
  206. margin: 0px 0px;
  207. padding: 4px 6px;
  208. }
  209. OBSDock QLabel {
  210. background: transparent;
  211. }
  212. OBSDock QComboBox,
  213. OBSDock QPushButton {
  214. margin: 1px 2px;
  215. }
  216. QDockWidget {
  217. font-size: 10.5pt;
  218. font-weight: bold;
  219. titlebar-close-icon: url('./Light/Close.svg');
  220. titlebar-normal-icon: url('./Light/Popout.svg');
  221. }
  222. QDockWidget::title {
  223. text-align: left;
  224. background-color: palette(button);
  225. padding: 6px 8px;
  226. border-top-left-radius: 4px;
  227. border-top-right-radius: 4px;
  228. }
  229. QDockWidget::close-button, QDockWidget::float-button {
  230. border: 0px solid transparent;
  231. border-radius: 4px;
  232. background: transparent;
  233. margin-right: 1px;
  234. opacity: .5;
  235. }
  236. QDockWidget::close-button:hover, QDockWidget::float-button:hover {
  237. background: rgb(254,254,255);
  238. opacity: 1;
  239. }
  240. QDockWidget::close-button:pressed, QDockWidget::float-button:pressed {
  241. padding: 1px -1px -1px 1px;
  242. }
  243. QScrollArea {
  244. border-radius: 4px;
  245. }
  246. OBSBasicStatusBar {
  247. margin-top: 8px;
  248. }
  249. /* Group Box */
  250. QGroupBox {
  251. background: palette(dark);
  252. border-radius: 8px;
  253. padding-top: 32px;
  254. padding-bottom: 8px;
  255. font-weight: bold;
  256. margin-bottom: 6px;
  257. }
  258. QGroupBox::title {
  259. subcontrol-origin: margin;
  260. left: 4px;
  261. top: 4px;
  262. }
  263. /* ScrollBars */
  264. ::corner {
  265. background-color: palette(window);
  266. border: none;
  267. }
  268. QScrollBar:vertical {
  269. background-color: transparent;
  270. width: 14px;
  271. margin: 0px;
  272. }
  273. QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
  274. border: none;
  275. background: none;
  276. height: 0px;
  277. }
  278. QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical, QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
  279. border: none;
  280. background: none;
  281. color: none;
  282. }
  283. QScrollBar:horizontal {
  284. background-color: transparent;
  285. height: 14px;
  286. margin: 0px;
  287. }
  288. QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
  289. border: none;
  290. background: none;
  291. width: 0px;
  292. }
  293. QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal, QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
  294. border: none;
  295. background: none;
  296. color: none;
  297. }
  298. QScrollBar::handle {
  299. background-color: palette(button);
  300. margin: 2px;
  301. border-radius: 2px;
  302. border: 1px solid palette(button);
  303. }
  304. QScrollBar::handle:hover {
  305. background-color: rgb(254,254,255);
  306. border-color: rgb(254,254,255);
  307. }
  308. QScrollBar::handle:pressed {
  309. background-color: rgb(140,181,255);
  310. border-color: rgb(140,181,255);
  311. }
  312. QScrollBar::handle:vertical {
  313. min-height: 20px;
  314. }
  315. QScrollBar::handle:horizontal {
  316. min-width: 20px;
  317. }
  318. /* Source Context Bar */
  319. #contextContainer {
  320. background-color: palette(dark);
  321. margin-top: 4px;
  322. border-radius: 4px;
  323. }
  324. #contextContainer QPushButton {
  325. padding-left: 12px;
  326. padding-right: 12px;
  327. }
  328. QPushButton#sourcePropertiesButton {
  329. qproperty-icon: url(./Light/settings/general.svg);
  330. }
  331. QPushButton#sourceFiltersButton {
  332. qproperty-icon: url(./Light/filter.svg);
  333. }
  334. /* Scenes and Sources toolbar */
  335. QToolBar {
  336. background-color: palette(dark);
  337. border: none;
  338. padding: 0px;
  339. margin: 4px 0px;
  340. }
  341. QPushButton[toolButton="true"],
  342. QToolButton {
  343. background-color: rgb(243,243,243);
  344. padding: 4px 6px;
  345. margin: 0px 2px;
  346. border-radius: 2px;
  347. }
  348. QPushButton[toolButton="true"]:last-child,
  349. QToolButton:last-child {
  350. margin-right: 0px;
  351. }
  352. QToolButton:hover {
  353. background-color: rgb(254,254,255);
  354. }
  355. QToolButton:pressed {
  356. background-color: rgb(193,193,193);
  357. }
  358. * [themeID="addIconSmall"] {
  359. qproperty-icon: url(./Light/plus.svg);
  360. }
  361. * [themeID="removeIconSmall"] {
  362. qproperty-icon: url(./Light/trash.svg);
  363. }
  364. * [themeID="clearIconSmall"] {
  365. qproperty-icon: url(./Light/entry-clear.svg);
  366. }
  367. * [themeID="propertiesIconSmall"] {
  368. qproperty-icon: url(./Light/settings/general.svg);
  369. }
  370. * [themeID="configIconSmall"] {
  371. qproperty-icon: url(./Light/settings/general.svg);
  372. }
  373. * [themeID="menuIconSmall"] {
  374. qproperty-icon: url(./Light/dots-vert.svg);
  375. }
  376. * [themeID="refreshIconSmall"] {
  377. qproperty-icon: url(./Light/refresh.svg);
  378. }
  379. * [themeID="cogsIcon"] {
  380. qproperty-icon: url(./Light/cogs.svg);
  381. }
  382. #sourceInteractButton {
  383. qproperty-icon: url(./Light/interact.svg);
  384. }
  385. * [themeID="upArrowIconSmall"] {
  386. qproperty-icon: url(./Light/up.svg);
  387. }
  388. * [themeID="downArrowIconSmall"] {
  389. qproperty-icon: url(./Light/down.svg);
  390. }
  391. * [themeID="pauseIconSmall"] {
  392. qproperty-icon: url(./Light/media-pause.svg);
  393. }
  394. QToolBarExtension {
  395. background: palette(button);
  396. min-width: 12px;
  397. max-width: 12px;
  398. padding: 4px 0px;
  399. margin-left: 0px;
  400. qproperty-icon: url(./Light/dots-vert.svg);
  401. }
  402. /* Tab Widget */
  403. QTabWidget::pane { /* The tab widget frame */
  404. border-top: 4px solid palette(base);
  405. }
  406. QTabWidget::tab-bar {
  407. alignment: left;
  408. }
  409. QTabBar QToolButton {
  410. background: rgb(44,46,53);
  411. border: none;
  412. }
  413. QTabBar::tab:top {
  414. border-top-left-radius: 4px;
  415. border-top-right-radius: 4px;
  416. }
  417. QTabBar::tab:bottom {
  418. border-bottom-left-radius: 4px;
  419. border-bottom-right-radius: 4px;
  420. }
  421. QTabBar::tab {
  422. background: palette(dark);
  423. color: palette(text);
  424. border: none;
  425. padding: 8px 12px;
  426. min-width: 50px;
  427. margin: 1px 2px;
  428. }
  429. QTabBar::tab:pressed {
  430. background: rgb(193,193,193);
  431. }
  432. QTabBar::tab:hover {
  433. background: rgb(254,254,255);
  434. color: palette(text);
  435. }
  436. QTabBar::tab:selected {
  437. background: rgb(243,243,243);
  438. color: palette(text);
  439. }
  440. QTabBar::tab:top:selected {
  441. border-bottom: 2px solid rgb(250,250,250);
  442. }
  443. QTabBar::tab:bottom:selected {
  444. border-top: 2px solid rgb(250,250,250);
  445. }
  446. QTabBar QToolButton {
  447. background: palette(button);
  448. min-width: 16px;
  449. padding: 0px;
  450. }
  451. /* ComboBox */
  452. QComboBox,
  453. QDateTimeEdit {
  454. background-color: rgb(243,243,243);
  455. border-style: solid;
  456. border: 1px;
  457. border-radius: 3px;
  458. border-color: rgb(243,243,243);
  459. padding: 4px;
  460. padding-left: 10px;
  461. }
  462. QComboBox:hover,
  463. QComboBox:selected,
  464. QDateTimeEdit:hover,
  465. QDateTimeEdit:selected {
  466. background-color: rgb(254,254,255);
  467. }
  468. QComboBox::drop-down,
  469. QDateTimeEdit::drop-down {
  470. border:none;
  471. border-left: 1px solid rgb(25,28,34);
  472. width: 20px;
  473. }
  474. QComboBox::down-arrow,
  475. QDateTimeEdit::down-arrow {
  476. qproperty-alignment: AlignTop;
  477. image: url(./Light/updown.svg);
  478. width: 100%;
  479. }
  480. QComboBox:on,
  481. QDateTimeEdit:on {
  482. background-color: rgb(193,193,193);
  483. }
  484. QComboBox:editable:hover {
  485. }
  486. QComboBox::drop-down:editable,
  487. QDateTimeEdit::drop-down:editable {
  488. border-top-right-radius: 3px;
  489. border-bottom-right-radius: 3px;
  490. }
  491. QComboBox::down-arrow:editable,
  492. QDateTimeEdit::down-arrow:editable {
  493. qproperty-alignment: AlignTop;
  494. image: url(./Light/down.svg);
  495. width: 8%;
  496. }
  497. /* Textedits etc */
  498. QLineEdit, QTextEdit, QPlainTextEdit {
  499. background-color: palette(button);
  500. border: none;
  501. border-radius: 3px;
  502. padding: 5px 2px 5px 7px;
  503. border: 2px solid transparent;
  504. }
  505. QLineEdit:hover,
  506. QTextEdit:hover,
  507. QPlainTextEdit:hover {
  508. border: 2px solid rgb(99,102,111);
  509. }
  510. QLineEdit:focus,
  511. QTextEdit:focus,
  512. QPlainTextEdit:focus {
  513. background-color: palette(mid);
  514. border: 2px solid rgb(140,181,255);
  515. }
  516. /* Spinbox and doubleSpinbox */
  517. QSpinBox,
  518. QDoubleSpinBox {
  519. background-color: palette(button);
  520. border: 2px solid palette(button);
  521. border-radius: 4px;
  522. margin-right: 3px;
  523. padding: 3px 0px 4px 5px;
  524. }
  525. QSpinBox:hover,
  526. QDoubleSpinBox:hover {
  527. border: 2px solid rgb(99,102,111);
  528. }
  529. QSpinBox:focus,
  530. QDoubleSpinBox:focus {
  531. background-color: palette(mid);
  532. border: 2px solid rgb(140,181,255);
  533. }
  534. QSpinBox::up-button, QDoubleSpinBox::up-button {
  535. subcontrol-origin: padding;
  536. subcontrol-position: top right; /* position at the top right corner */
  537. right: 2px;
  538. border-radius: 3px;
  539. border-width: 0;
  540. border-bottom-left-radius: 0;
  541. border-bottom-right-radius: 0;
  542. border-bottom-width: 0;
  543. }
  544. QSpinBox::down-button, QDoubleSpinBox::down-button {
  545. subcontrol-origin: padding;
  546. subcontrol-position: bottom right; /* position at the top right corner */
  547. right: 2px;
  548. border-radius: 3px;
  549. border-width: 0;
  550. border-top-left-radius: 0;
  551. border-top-right-radius: 0;
  552. border-top-width: 0;
  553. }
  554. QSpinBox::up-button:hover, QSpinBox::down-button:hover, QDoubleSpinBox::up-button:hover, QDoubleSpinBox::down-button:hover {
  555. background-color: rgb(254,254,255);
  556. }
  557. QSpinBox::up-button:pressed, QSpinBox::down-button:pressed, QDoubleSpinBox::up-button:pressed, QDoubleSpinBox::down-button:pressed {
  558. background-color: rgb(193,193,193);
  559. }
  560. QSpinBox::up-button:disabled, QSpinBox::up-button:off, QSpinBox::down-button:disabled, QSpinBox::down-button:off {
  561. background-color: rgb(193,193,193);
  562. }
  563. QDoubleSpinBox::up-button:disabled, QDoubleSpinBox::up-button:off, QDoubleSpinBox::down-button:disabled, QDoubleSpinBox::down-button:off {
  564. background-color: rgb(193,193,193);
  565. }
  566. QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
  567. image: url(./Light/up.svg);
  568. width: 100%;
  569. margin: 2px;
  570. }
  571. QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
  572. image: url(./Light/down.svg);
  573. width: 100%;
  574. padding: 2px;
  575. }
  576. /* Controls Dock */
  577. #controlsDock QPushButton {
  578. margin: 1px;
  579. }
  580. #streamButton,
  581. #recordButton,
  582. QPushButton[themeID="replayBufferButton"],
  583. #broadcastButton {
  584. padding: 10px;
  585. }
  586. /* Primary Control Button Checked Coloring */
  587. #streamButton:!hover:!pressed:checked,
  588. #recordButton:!hover:!pressed:checked,
  589. QPushButton[themeID="replayBufferButton"]:!hover:!pressed:checked,
  590. #modeSwitch:!hover:!pressed:checked,
  591. #broadcastButton:!hover:!pressed:checked {
  592. background: rgb(140,181,255);
  593. }
  594. /* Primary Control Button Hover Coloring */
  595. #streamButton:hover:!pressed:checked,
  596. #recordButton:hover:!pressed:checked,
  597. QPushButton[themeID="replayBufferButton"]:!pressed:checked,
  598. #modeSwitch:hover:!pressed:checked,
  599. #broadcastButton:hover:!pressed:checked {
  600. background: rgb(178,207,255);
  601. color: palette(text);
  602. }
  603. /* Buttons */
  604. QPushButton {
  605. color: palette(text);
  606. background-color: palette(button);
  607. min-height: 18px;
  608. border: none;
  609. border-radius: 4px;
  610. padding: 6px 16px;
  611. }
  612. QPushButton::flat {
  613. background-color: rgb(243,243,243);
  614. }
  615. QPushButton:checked {
  616. background-color: rgb(140,181,255);
  617. }
  618. QPushButton:hover {
  619. background-color: rgb(254,254,255);
  620. }
  621. QPushButton:pressed {
  622. background-color: rgb(193,193,193);
  623. }
  624. QPushButton:disabled {
  625. background-color: rgb(193,193,193);
  626. }
  627. QPushButton::menu-indicator {
  628. image: url(./Light/down.svg);
  629. subcontrol-position: right;
  630. subcontrol-origin: padding;
  631. width: 25px;
  632. }
  633. /* Sliders */
  634. QSlider::groove:horizontal {
  635. background-color: rgb(243,243,243);
  636. height: 4px;
  637. border: none;
  638. border-radius: 2px;
  639. }
  640. QSlider::handle:horizontal {
  641. background-color: palette(text);
  642. border: 1px solid palette(mid);
  643. border-radius: 3px;
  644. height: 10px;
  645. width: 18px;
  646. margin: -3px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
  647. }
  648. QSlider::handle:horizontal:pressed {
  649. background-color: palette(text);
  650. }
  651. QSlider::sub-page:horizontal {
  652. background-color: palette(highlight);
  653. border-radius: 2px;
  654. }
  655. QSlider::sub-page:horizontal:disabled {
  656. background-color: palette(dark);
  657. border-radius: 2px;
  658. }
  659. QSlider::groove:vertical {
  660. background-color: rgb(243,243,243);
  661. width: 4px;
  662. border: none;
  663. border-radius: 2px;
  664. }
  665. QSlider::handle:vertical {
  666. background-color: palette(text);
  667. border: 1px solid palette(mid);
  668. border-radius: 3px;
  669. width: 10px;
  670. height: 18px;
  671. margin: 0 -3px; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
  672. }
  673. QSlider::handle:vertical:pressed {
  674. background-color: palette(text);
  675. }
  676. QSlider::add-page:vertical {
  677. background-color: palette(highlight);
  678. border-radius: 2px;
  679. }
  680. QSlider::add-page:vertical:disabled {
  681. background-color: rgb(50,49,50);
  682. border-radius: 2px;
  683. }
  684. QSlider::handle:hover {
  685. background-color: rgb(200,199,200);
  686. }
  687. QSlider::handle:disabled {
  688. background-color: rgb(68,75,110);
  689. }
  690. /* Volume Control */
  691. #stackedMixerArea QPushButton {
  692. min-width: 16px;
  693. padding: 4px 8px;
  694. }
  695. /* This is an incredibly cursed but necessary fix */
  696. #stackedMixerArea QPushButton:!hover {
  697. background-color: palette(button);
  698. }
  699. #stackedMixerArea QPushButton:hover {
  700. background-color: rgb(254,254,255);
  701. }
  702. #stackedMixerArea QPushButton:pressed {
  703. background-color: rgb(193,193,193);
  704. }
  705. VolumeMeter {
  706. qproperty-backgroundNominalColor: rgb(66,112,24);
  707. qproperty-backgroundWarningColor: rgb(112,91,28);
  708. qproperty-backgroundErrorColor: rgb(112,39,53);
  709. qproperty-foregroundNominalColor: rgb(115,189,49);
  710. qproperty-foregroundWarningColor: rgb(189,144,9);
  711. qproperty-foregroundErrorColor: rgb(189,47,73);
  712. qproperty-magnitudeColor: rgb(0,0,0);
  713. qproperty-majorTickColor: palette(text);
  714. qproperty-minorTickColor: palette(light);
  715. }
  716. /* Status Bar */
  717. QStatusBar::item {
  718. border: none;
  719. }
  720. /* Table View */
  721. QTableView {
  722. background: palette(base);
  723. gridline-color: palette(light);
  724. }
  725. QTableView::item {
  726. margin: 0px;
  727. padding: 0px;
  728. }
  729. QTableView QLineEdit {
  730. background: palette(mid);
  731. padding: 0;
  732. margin: 0;
  733. }
  734. QTableView QPushButton,
  735. QTableView QToolButton {
  736. margin: 1px 1px 2px;
  737. }
  738. QHeaderView::section {
  739. background-color: palette(button);
  740. color: palette(text);
  741. border: none;
  742. border-left: 1px solid palette(window);
  743. border-right: 1px solid palette(window);
  744. padding: 2px 4px;
  745. margin-bottom: 2px;
  746. }
  747. /* Mute CheckBox */
  748. MuteCheckBox {
  749. margin: 4px 0px 0px;
  750. }
  751. MuteCheckBox::indicator:checked {
  752. image: url(./Light/mute.svg);
  753. }
  754. MuteCheckBox::indicator:unchecked {
  755. image: url(./Light/settings/audio.svg);
  756. }
  757. OBSHotkeyLabel[hotkeyPairHover=true] {
  758. color: rgb(53,82,222);
  759. }
  760. /* Pause */
  761. PauseCheckBox {
  762. outline: none;
  763. }
  764. PauseCheckBox::indicator:checked {
  765. image: url(:/res/images/media-pause.svg);
  766. }
  767. PauseCheckBox::indicator:unchecked {
  768. image: url(:/res/images/media-play.svg);
  769. }
  770. /* Label warning/error */
  771. QLabel#warningLabel {
  772. color: rgb(192,128,0);
  773. font-weight: bold;
  774. }
  775. QLabel#errorLabel {
  776. color: rgb(192,0,0);
  777. font-weight: bold;
  778. }
  779. * [themeID="warning"] {
  780. color: rgb(192,128,0);
  781. font-weight: bold;
  782. }
  783. * [themeID="error"] {
  784. color: rgb(192,0,0);
  785. font-weight: bold;
  786. }
  787. * [themeID="good"] {
  788. color: rgb(0,192,0);
  789. font-weight: bold;
  790. }
  791. /* About dialog */
  792. * [themeID="aboutName"] {
  793. font-size: 26pt;
  794. font-weight: bold;
  795. }
  796. * [themeID="aboutVersion"] {
  797. font-size: 12pt;
  798. margin-bottom: 20px;
  799. }
  800. * [themeID="aboutInfo"] {
  801. margin-bottom: 20px;
  802. }
  803. * [themeID="aboutHLayout"] {
  804. background-color: palette(base);
  805. }
  806. /* Canvas / Preview background color */
  807. OBSQTDisplay {
  808. qproperty-displayBackgroundColor: rgb(193,193,193);
  809. border-radius: 10px;
  810. }
  811. /* Filters Window */
  812. OBSBasicFilters QListWidget {
  813. border-radius: 4px;
  814. padding: 3px;
  815. }
  816. OBSBasicFilters QListWidget::item {
  817. border-radius: 4px;
  818. padding: 6px;
  819. }
  820. OBSBasicFilters #widget,
  821. OBSBasicFilters #widget_2 {
  822. margin: 0px;
  823. padding: 0px;
  824. padding-bottom: 4px;
  825. }
  826. OBSBasicFilters #widget QPushButton,
  827. OBSBasicFilters #widget_2 QPushButton {
  828. min-width: 16px;
  829. padding: 4px 8px;
  830. margin-top: 0px;
  831. }
  832. /* Preview/Program labels */
  833. * [themeID="previewProgramLabels"] {
  834. font-size: 14pt;
  835. font-weight: bold;
  836. color: rgb(210,210,210);
  837. margin-bottom: 4px;
  838. }
  839. /* Settings Icons */
  840. OBSBasicSettings {
  841. qproperty-generalIcon: url(./Light/settings/general.svg);
  842. qproperty-streamIcon: url(./Light/settings/stream.svg);
  843. qproperty-outputIcon: url(./Light/settings/output.svg);
  844. qproperty-audioIcon: url(./Light/settings/audio.svg);
  845. qproperty-videoIcon: url(./Light/settings/video.svg);
  846. qproperty-hotkeysIcon: url(./Light/settings/hotkeys.svg);
  847. qproperty-accessibilityIcon: url(./Light/settings/accessibility.svg);
  848. qproperty-advancedIcon: url(./Light/settings/advanced.svg);
  849. }
  850. /* Checkboxes */
  851. QCheckBox {
  852. }
  853. QCheckBox::indicator,
  854. QGroupBox::indicator {
  855. width: 18px;
  856. height: 18px;
  857. }
  858. QGroupBox::indicator {
  859. margin-left: 2px;
  860. }
  861. QCheckBox::indicator:unchecked,
  862. QGroupBox::indicator:unchecked {
  863. image: url(./Light/checkbox_unchecked.svg);
  864. }
  865. QCheckBox::indicator:unchecked:hover,
  866. QGroupBox::indicator:unchecked:hover {
  867. border: none;
  868. image: url(./Light/checkbox_unchecked_focus.svg);
  869. }
  870. QCheckBox::indicator:checked,
  871. QGroupBox::indicator:checked {
  872. image: url(./Light/checkbox_checked.svg);
  873. }
  874. QCheckBox::indicator:checked:hover,
  875. QGroupBox::indicator:checked:hover {
  876. border: none;
  877. image: url(./Light/checkbox_checked_focus.svg);
  878. }
  879. QCheckBox::indicator:checked:disabled,
  880. QGroupBox::indicator:checked:disabled {
  881. image: url(./Light/checkbox_checked_disabled.svg);
  882. }
  883. QCheckBox::indicator:unchecked:disabled,
  884. QGroupBox::indicator:unchecked:disabled {
  885. image: url(./Light/checkbox_unchecked_disabled.svg);
  886. }
  887. /* Locked CheckBox */
  888. LockedCheckBox {
  889. outline: none;
  890. background: transparent;
  891. }
  892. LockedCheckBox::indicator {
  893. width: 16px;
  894. height: 16px;
  895. }
  896. LockedCheckBox::indicator:checked,
  897. LockedCheckBox::indicator:checked:hover {
  898. image: url(./Light/locked.svg);
  899. }
  900. LockedCheckBox::indicator:unchecked,
  901. LockedCheckBox::indicator:unchecked:hover {
  902. image: url(:res/images/unlocked.svg);
  903. }
  904. /* Visibility CheckBox */
  905. VisibilityCheckBox {
  906. outline: none;
  907. background: transparent;
  908. }
  909. VisibilityCheckBox::indicator {
  910. width: 16px;
  911. height: 16px;
  912. }
  913. VisibilityCheckBox::indicator:checked,
  914. VisibilityCheckBox::indicator:checked:hover {
  915. image: url(./Light/visible.svg);
  916. }
  917. VisibilityCheckBox::indicator:unchecked,
  918. VisibilityCheckBox::indicator:unchecked:hover {
  919. image: url(:res/images/invisible.svg);
  920. }
  921. * [themeID="revertIcon"] {
  922. qproperty-icon: url(./Light/revert.svg);
  923. }
  924. QPushButton#extraPanelDelete {
  925. background-color: palette(mid);
  926. }
  927. QPushButton#extraPanelDelete:hover {
  928. background-color: rgb(68,75,110);
  929. }
  930. QPushButton#extraPanelDelete:pressed {
  931. background-color: palette(dark);
  932. }
  933. /* Mute CheckBox */
  934. MuteCheckBox {
  935. outline: none;
  936. }
  937. MuteCheckBox::indicator {
  938. width: 16px;
  939. height: 16px;
  940. }
  941. MuteCheckBox::indicator:checked {
  942. image: url(./Light/mute.svg);
  943. }
  944. MuteCheckBox::indicator:unchecked {
  945. image: url(./Light/settings/audio.svg);
  946. }
  947. MuteCheckBox::indicator:unchecked:hover {
  948. image: url(./Light/settings/audio.svg);
  949. }
  950. MuteCheckBox::indicator:unchecked:focus {
  951. image: url(./Light/settings/audio.svg);
  952. }
  953. MuteCheckBox::indicator:checked:hover {
  954. image: url(./Light/mute.svg);
  955. }
  956. MuteCheckBox::indicator:checked:focus {
  957. image: url(./Light/mute.svg);
  958. }
  959. MuteCheckBox::indicator:checked:disabled {
  960. image: url(./Light/mute.svg);
  961. }
  962. MuteCheckBox::indicator:unchecked:disabled {
  963. image: url(./Light/settings/audio.svg);
  964. }
  965. #hotkeyFilterReset {
  966. margin-top: 0px;
  967. }
  968. OBSHotkeyWidget {
  969. padding: 8px 0px;
  970. margin: 2px 0px;
  971. }
  972. OBSHotkeyLabel {
  973. padding: 4px 0px;
  974. }
  975. OBSHotkeyLabel[hotkeyPairHover=true] {
  976. color: rgb(53,82,222);
  977. }
  978. OBSHotkeyWidget QPushButton {
  979. min-width: 16px;
  980. padding: 4px 4px;
  981. margin-top: 0px;
  982. margin-left: 4px;
  983. }
  984. /* Sources List Group Collapse Checkbox */
  985. SourceTreeSubItemCheckBox {
  986. background: transparent;
  987. outline: none;
  988. padding: 0px;
  989. }
  990. SourceTreeSubItemCheckBox::indicator {
  991. width: 12px;
  992. height: 12px;
  993. }
  994. SourceTreeSubItemCheckBox::indicator:checked,
  995. SourceTreeSubItemCheckBox::indicator:checked:hover {
  996. image: url(./Light/expand.svg);
  997. }
  998. SourceTreeSubItemCheckBox::indicator:unchecked,
  999. SourceTreeSubItemCheckBox::indicator:unchecked:hover {
  1000. image: url(./Light/collapse.svg);
  1001. }
  1002. /* Source Icons */
  1003. OBSBasic {
  1004. qproperty-imageIcon: url(./Light/sources/image.svg);
  1005. qproperty-colorIcon: url(./Light/sources/brush.svg);
  1006. qproperty-slideshowIcon: url(./Light/sources/slideshow.svg);
  1007. qproperty-audioInputIcon: url(./Light/sources/microphone.svg);
  1008. qproperty-audioOutputIcon: url(./Light/settings/audio.svg);
  1009. qproperty-desktopCapIcon: url(./Light/settings/video.svg);
  1010. qproperty-windowCapIcon: url(./Light/sources/window.svg);
  1011. qproperty-gameCapIcon: url(./Light/sources/gamepad.svg);
  1012. qproperty-cameraIcon: url(./Light/sources/camera.svg);
  1013. qproperty-textIcon: url(./Light/sources/text.svg);
  1014. qproperty-mediaIcon: url(./Light/sources/media.svg);
  1015. qproperty-browserIcon: url(./Light/sources/globe.svg);
  1016. qproperty-groupIcon: url(./Light/sources/group.svg);
  1017. qproperty-sceneIcon: url(./Light/sources/scene.svg);
  1018. qproperty-defaultIcon: url(./Light/sources/default.svg);
  1019. qproperty-audioProcessOutputIcon: url(./Light/sources/windowaudio.svg);
  1020. }
  1021. /* Scene Tree Grid Mode */
  1022. SceneTree {
  1023. qproperty-gridItemWidth: 154;
  1024. qproperty-gridItemHeight: 31;
  1025. }
  1026. *[gridMode="true"] SceneTree::item {
  1027. color: palette(text);
  1028. background-color: palette(button);
  1029. border-radius: 4px;
  1030. margin: 2px;
  1031. }
  1032. *[gridMode="true"] SceneTree::item:selected {
  1033. background-color: rgb(51,69,163);
  1034. }
  1035. *[gridMode="true"] SceneTree::item:checked {
  1036. background-color: rgb(51,69,163);
  1037. }
  1038. *[gridMode="true"] SceneTree::item:hover {
  1039. background-color: rgb(254,254,255);
  1040. }
  1041. /* Save icon */
  1042. * [themeID="replayIconSmall"] {
  1043. qproperty-icon: url(./Light/save.svg);
  1044. }
  1045. /* Studio Mode T-Bar */
  1046. QSlider[themeID="tBarSlider"] {
  1047. height: 24px;
  1048. }
  1049. QSlider::groove:horizontal[themeID="tBarSlider"] {
  1050. border: 1px solid #4c4c4c;
  1051. height: 5px;
  1052. background: palette(dark);
  1053. }
  1054. QSlider::sub-page:horizontal[themeID="tBarSlider"] {
  1055. background: palette(dark);
  1056. border: 1px solid #4c4c4c;
  1057. }
  1058. QSlider::handle:horizontal[themeID="tBarSlider"] {
  1059. background-color: #d2d2d2;
  1060. width: 12px;
  1061. height: 24px;
  1062. margin: -24px 0px;
  1063. }
  1064. /* Media icons */
  1065. * [themeID="playIcon"] {
  1066. qproperty-icon: url(./Light/media/media_play.svg);
  1067. }
  1068. * [themeID="pauseIcon"] {
  1069. qproperty-icon: url(./Light/media/media_pause.svg);
  1070. }
  1071. * [themeID="restartIcon"] {
  1072. qproperty-icon: url(./Light/media/media_restart.svg);
  1073. }
  1074. * [themeID="stopIcon"] {
  1075. qproperty-icon: url(./Light/media/media_stop.svg);
  1076. }
  1077. * [themeID="nextIcon"] {
  1078. qproperty-icon: url(./Light/media/media_next.svg);
  1079. }
  1080. * [themeID="previousIcon"] {
  1081. qproperty-icon: url(./Light/media/media_previous.svg);
  1082. }
  1083. /* YouTube Integration */
  1084. OBSYoutubeActions {
  1085. qproperty-thumbPlaceholder: url(./Light/sources/image.svg);
  1086. }
  1087. #ytEventList QLabel {
  1088. color: palette(text);
  1089. background-color: palette(button);
  1090. border: none;
  1091. border-radius: 3px;
  1092. padding: 4px 20px;
  1093. }
  1094. #ytEventList QLabel:hover {
  1095. background-color: rgb(254,254,255);
  1096. }
  1097. #ytEventList QLabel[isSelectedEvent=true] {
  1098. background-color: rgb(140,181,255);
  1099. border: none;
  1100. }
  1101. #ytEventList QLabel[isSelectedEvent=true]:hover {
  1102. background-color: rgb(178,207,255);
  1103. color: palette(text);
  1104. }
  1105. /* Calendar Widget */
  1106. QDateTimeEdit::down-arrow {
  1107. qproperty-alignment: AlignTop;
  1108. image: url(./Light/down.svg);
  1109. width: 100%;
  1110. }
  1111. QDateTimeEdit:on {
  1112. background-color: palette(mid);
  1113. }
  1114. /* Calendar Top Bar */
  1115. QCalendarWidget QWidget#qt_calendar_navigationbar {
  1116. background-color: palette(base);
  1117. padding: 4px 8px;
  1118. }
  1119. /* Calendar Top Bar Buttons */
  1120. QCalendarWidget QToolButton {
  1121. background-color: palette(button);
  1122. padding: 2px 16px;
  1123. border-radius: 3px;
  1124. margin: 2px;
  1125. }
  1126. #qt_calendar_monthbutton::menu-indicator {
  1127. image: url(./Light/down.svg);
  1128. subcontrol-position: right;
  1129. padding-top: 2px;
  1130. padding-right: 6px;
  1131. height: 10px;
  1132. width: 10px;
  1133. }
  1134. QCalendarWidget #qt_calendar_prevmonth {
  1135. padding: 2px;
  1136. qproperty-icon: url(./Light/left.svg);
  1137. icon-size: 16px, 16px;
  1138. }
  1139. QCalendarWidget #qt_calendar_nextmonth {
  1140. padding: 2px;
  1141. qproperty-icon: url(./Light/right.svg);
  1142. icon-size: 16px, 16px;
  1143. }
  1144. QCalendarWidget QToolButton:hover {
  1145. background-color: rgb(254,254,255);
  1146. border-radius: 3px;
  1147. }
  1148. QCalendarWidget QToolButton:pressed {
  1149. background-color: rgb(193,193,193);
  1150. }
  1151. /* Month Dropdown Menu */
  1152. QCalendarWidget QMenu {
  1153. }
  1154. /* Year spinbox */
  1155. QCalendarWidget QSpinBox {
  1156. background-color: rgb(193,193,193);
  1157. border: none;
  1158. border-radius: 3px;
  1159. margin: 0px 3px 0px 0px;
  1160. padding: 4px 16px;
  1161. }
  1162. QCalendarWidget QSpinBox::up-button { subcontrol-origin: border; subcontrol-position: top right; width: 16px; }
  1163. QCalendarWidget QSpinBox::down-button {subcontrol-origin: border; subcontrol-position: bottom right; width: 16px;}
  1164. QCalendarWidget QSpinBox::up-arrow { width: 10px; height: 10px; }
  1165. QCalendarWidget QSpinBox::down-arrow { width: 10px; height: 10px; }
  1166. /* Days of the Week Bar */
  1167. QCalendarWidget QWidget { alternate-background-color: palette(mid); }
  1168. QCalendarWidget QAbstractItemView:enabled {
  1169. background-color: palette(base);
  1170. color: palette(text);
  1171. }
  1172. QCalendarWidget QAbstractItemView:disabled {
  1173. color: rgb(122,121,122);
  1174. }
  1175. /* VirtualCam Plugin Fixes */
  1176. #VirtualProperties QWidget {
  1177. margin-top: 0;
  1178. margin-bottom: 0;
  1179. }
  1180. /* Disable icons on QDialogButtonBox */
  1181. QDialogButtonBox {
  1182. dialogbuttonbox-buttons-have-icons: 0;
  1183. }