1# vim:set ft=gtkrc ts=2 sw=2 sts=2 ai et: 2# 3# This is the main theme file, handling all the default widgets and theme 4# properties. Since GTK+ 2 is old, we need to overcome some of its limitations, 5# which is also mostly done in this file. Sadly not all of them can be overcome 6# so there will always be a visible difference between the GTK+ 2 and 3 theme. 7 8style "default" { 9 10 xthickness = 1 11 ythickness = 1 12 13 #################### 14 # Style Properties # 15 #################### 16 17 GtkWidget::focus-line-width = 1 18 GtkWidget::focus-line-pattern = "\2\1" 19 20 GtkToolbar::internal-padding = 4 21 GtkToolButton::icon-spacing = 4 22 23 GtkWidget::tooltip-radius = 3 24 GtkWidget::tooltip-alpha = 235 25 GtkWidget::new-tooltip-style = 1 #for compatibility 26 27 GtkWidget::link-color = @link_color 28 GtkWidget::visited-link-color = @visited_link_color 29 GnomeHRef::link_color = @link_color 30 GtkHTML::link-color = @link_color 31 GtkHTML::vlink-color = @visited_link_color 32 GtkIMHtml::hyperlink-color = @link_color 33 GtkIMHtml::hyperlink-visited-color = @visited_link_color 34 35 GtkSeparatorMenuItem::horizontal-padding = 0 36 GtkSeparatorMenuItem::wide-separators = 1 37 GtkSeparatorMenuItem::separator-height = 1 38 39 GtkButton::child-displacement-y = 0 40 41 GtkButton::default-border = {0, 0, 0, 0} 42 GtkButton::default-outside-border = {0, 0, 0, 0} 43 GtkButton::inner-border = {4, 4, 4, 4} 44 45 GtkEntry::state-hint = 1 46 GtkEntry::inner-border = {7, 7, 4, 5} 47 48 GtkPaned::handle-size = 8 49 GtkHPaned::handle-size = 8 50 GtkVPaned::handle-size = 8 51 52 GtkScrollbar::trough-border = 0 53 GtkRange::trough-border = 0 54 GtkRange::slider-width = 10 55 GtkRange::stepper-size = 0 56 GtkRange::activate-slider = 1 57 58 GtkScrollbar::activate-slider = 1 59 GtkScrollbar::stepper-size = 0 60 GtkScrollbar::has-backward-stepper = 0 61 GtkScrollbar::has-forward-stepper = 0 62 GtkScrollbar::min-slider-length = 48 # 42 + 2*3 (margins) 63 GtkScrolledWindow::scrollbar-spacing = 0 64 GtkScrolledWindow::scrollbars-within-bevel = 1 65 66 GtkScale::slider_length = 26 67 GtkScale::slider_width = 26 68 GtkScale::trough-side-details = 1 69 70 GtkProgressBar::min-horizontal-bar-height = 6 71 GtkProgressBar::min-vertical-bar-width = 6 72 # Making this bigger than the min[height,width]-2*[y,x]spacing makes the 73 # whole progressbar thicker, so by setting it to the exact above value 74 # we get the maximum spacing between the text and the edges without 75 # doing so. 76 GtkProgressBar::xspacing = 4 77 GtkProgressBar::yspacing = 4 78 79 GtkStatusbar::shadow_type = GTK_SHADOW_NONE 80 GtkSpinButton::shadow_type = GTK_SHADOW_NONE 81 GtkMenuBar::shadow-type = GTK_SHADOW_NONE 82 GtkToolbar::shadow-type = GTK_SHADOW_NONE 83 # TODO: find out what this comment means: 84 # ( every window is misaligned for the sake of menus ): 85 GtkMenuBar::internal-padding = 0 86 GtkMenu::horizontal-padding = 0 87 GtkMenu::vertical-padding = 2 88 GtkMenu::double-arrows = 0 89 GtkMenuItem::arrow-scaling = 1 90 GtkMenuItem::toggle-spacing = 10 91 92 GtkCheckButton::indicator_spacing = 3 93 GtkOptionMenu::indicator_spacing = {13, 13, 5, 8} 94 95 GtkTreeView::expander-size = 16 96 GtkTreeView::vertical-separator = 0 97 GtkTreeView::horizontal-separator = 4 98 GtkTreeView::allow-rules = 0 99 # Set this because some apps read it 100 GtkTreeView::odd-row-color = @base_color 101 GtkTreeView::even-row-color = @base_color 102 103 GtkExpander::expander-size = 16 104 105 GtkNotebook::tab-overlap = 4 106 107 ########## 108 # Colors # 109 ########## 110 111 bg[NORMAL] = @bg_color 112 bg[PRELIGHT] = @bg_color 113 bg[SELECTED] = @selected_bg_color 114 bg[INSENSITIVE] = @insensitive_bg_color 115 bg[ACTIVE] = @bg_color 116 117 fg[NORMAL] = @fg_color 118 fg[PRELIGHT] = @fg_color 119 fg[SELECTED] = @selected_fg_color 120 fg[INSENSITIVE] = @insensitive_fg_color 121 fg[ACTIVE] = @fg_color 122 123 text[NORMAL] = @text_color 124 text[PRELIGHT] = @text_color 125 text[SELECTED] = @selected_fg_color 126 text[INSENSITIVE] = @insensitive_fg_color 127 text[ACTIVE] = @selected_fg_color 128 129 base[NORMAL] = @base_color 130 base[PRELIGHT] = shade (0.95, @bg_color) 131 base[SELECTED] = @selected_bg_color 132 base[INSENSITIVE] = @insensitive_bg_color 133 base[ACTIVE] = @selected_bg_color 134 135 # For succinctness, all reasonable pixmap options remain here 136 137 # Draw frame around menu in a non-compositied environment 138 # This needs to go before pixmap because we need to override some stuff 139 engine "adwaita" {} 140 141 engine "pixmap" { 142 143 ################# 144 # Check Buttons # 145 ################# 146 147 image { 148 function = CHECK 149 state = NORMAL 150 shadow = OUT 151 overlay_file = "assets/checkbox-unchecked.png" 152 overlay_stretch = FALSE 153 } 154 155 image { 156 function = CHECK 157 state = PRELIGHT 158 shadow = OUT 159 overlay_file = "assets/checkbox-unchecked-hover.png" 160 overlay_stretch = FALSE 161 } 162 163 image { 164 function = CHECK 165 state = ACTIVE 166 shadow = OUT 167 overlay_file = "assets/checkbox-unchecked-active.png" 168 overlay_stretch = FALSE 169 } 170 171 image { 172 function = CHECK 173 state = SELECTED 174 shadow = OUT 175 overlay_file = "assets/checkbox-unchecked.png" 176 overlay_stretch = FALSE 177 } 178 179 image { 180 function = CHECK 181 state = INSENSITIVE 182 shadow = OUT 183 overlay_file = "assets/menu-checkbox-insensitive.png" 184 overlay_stretch = FALSE 185 } 186 187 image { 188 function = CHECK 189 state = NORMAL 190 shadow = IN 191 overlay_file = "assets/checkbox-checked.png" 192 overlay_stretch = FALSE 193 } 194 195 image { 196 function = CHECK 197 state = PRELIGHT 198 shadow = IN 199 overlay_file = "assets/checkbox-checked.png" 200 overlay_stretch = FALSE 201 } 202 203 image { 204 function = CHECK 205 state = ACTIVE 206 shadow = IN 207 overlay_file = "assets/checkbox-checked-active.png" 208 overlay_stretch = FALSE 209 } 210 211 image { 212 function = CHECK 213 state = SELECTED 214 shadow = IN 215 overlay_file = "assets/checkbox-checked.png" 216 overlay_stretch = FALSE 217 } 218 219 image { 220 function = CHECK 221 state = INSENSITIVE 222 shadow = IN 223 overlay_file = "assets/menu-checkbox-checked-insensitive.png" 224 overlay_stretch = FALSE 225 } 226 227 image { 228 function = CHECK 229 state = NORMAL 230 shadow = ETCHED_IN 231 overlay_file = "assets/checkbox-mixed.png" 232 overlay_stretch = FALSE 233 } 234 235 image { 236 function = CHECK 237 state = PRELIGHT 238 shadow = ETCHED_IN 239 overlay_file = "assets/checkbox-mixed.png" 240 overlay_stretch = FALSE 241 } 242 243 image { 244 function = CHECK 245 state = ACTIVE 246 shadow = ETCHED_IN 247 overlay_file = "assets/checkbox-mixed-active.png" 248 overlay_stretch = FALSE 249 } 250 251 image { 252 function = CHECK 253 state = SELECTED 254 shadow = ETCHED_IN 255 overlay_file = "assets/checkbox-mixed.png" 256 overlay_stretch = FALSE 257 } 258 259 image { 260 function = CHECK 261 state = INSENSITIVE 262 shadow = ETCHED_IN 263 overlay_file = "assets/checkbox-mixed-insensitive.png" 264 overlay_stretch = FALSE 265 } 266 267 ################# 268 # Radio Buttons # 269 ################# 270 271 image { 272 function = OPTION 273 state = NORMAL 274 shadow = OUT 275 overlay_file = "assets/radio-unchecked.png" 276 overlay_stretch = FALSE 277 } 278 279 image { 280 function = OPTION 281 state = PRELIGHT 282 shadow = OUT 283 overlay_file = "assets/radio-unchecked-hover.png" 284 overlay_stretch = FALSE 285 } 286 287 image { 288 function = OPTION 289 state = ACTIVE 290 shadow = OUT 291 overlay_file = "assets/radio-unchecked-active.png" 292 overlay_stretch = FALSE 293 } 294 295 image { 296 function = OPTION 297 state = SELECTED 298 shadow = OUT 299 overlay_file = "assets/radio-unchecked.png" 300 overlay_stretch = FALSE 301 } 302 303 image { 304 function = OPTION 305 state = INSENSITIVE 306 shadow = OUT 307 overlay_file = "assets/menu-radio-insensitive.png" 308 overlay_stretch = FALSE 309 } 310 311 image { 312 function = OPTION 313 state = NORMAL 314 shadow = IN 315 overlay_file = "assets/menu-radio-checked.png" 316 overlay_stretch = FALSE 317 } 318 319 image { 320 function = OPTION 321 state = PRELIGHT 322 shadow = IN 323 overlay_file = "assets/menu-radio-checked.png" 324 overlay_stretch = FALSE 325 } 326 327 image { 328 function = OPTION 329 state = ACTIVE 330 shadow = IN 331 overlay_file = "assets/menu-radio-checked.png" 332 overlay_stretch = FALSE 333 } 334 335 image { 336 function = OPTION 337 state = SELECTED 338 shadow = IN 339 overlay_file = "assets/menu-radio-checked.png" 340 overlay_stretch = FALSE 341 } 342 343 image { 344 function = OPTION 345 state = INSENSITIVE 346 shadow = IN 347 overlay_file = "assets/menu-radio-checked-insensitive.png" 348 overlay_stretch = FALSE 349 } 350 351 image { 352 function = OPTION 353 state = NORMAL 354 shadow = ETCHED_IN 355 overlay_file = "assets/radio-mixed.png" 356 overlay_stretch = FALSE 357 } 358 359 image { 360 function = OPTION 361 state = PRELIGHT 362 shadow = ETCHED_IN 363 overlay_file = "assets/radio-mixed.png" 364 overlay_stretch = FALSE 365 } 366 367 image { 368 function = OPTION 369 state = ACTIVE 370 shadow = ETCHED_IN 371 overlay_file = "assets/radio-mixed-active.png" 372 overlay_stretch = FALSE 373 } 374 375 image { 376 function = OPTION 377 state = SELECTED 378 shadow = ETCHED_IN 379 overlay_file = "assets/radio-mixed.png" 380 overlay_stretch = FALSE 381 } 382 383 image { 384 function = OPTION 385 state = INSENSITIVE 386 shadow = ETCHED_IN 387 overlay_file = "assets/radio-mixed-insensitive.png" 388 overlay_stretch = FALSE 389 } 390 391 ########## 392 # Arrows # 393 ########## 394 395 # Overrides 396 397 # Disable arrows in spinbuttons 398 image { 399 function = ARROW 400 detail = "spinbutton" 401 } 402 403 # QGtkStyle (used for Qt apps) *always* assumes scrollbars have 404 # arrows, so configure these here. Gtk2 apps will atually ignore 405 # this. 406 407 image { 408 function = ARROW 409 overlay_file = "assets/scrollbar-arrow-up.png" 410 detail = "vscrollbar" 411 overlay_border = { 0, 0, 0, 0 } 412 overlay_stretch = FALSE 413 arrow_direction = UP 414 } 415 416 image { 417 function = ARROW 418 overlay_file = "assets/scrollbar-arrow-down.png" 419 detail = "vscrollbar" 420 overlay_border = { 0, 0, 0, 0 } 421 overlay_stretch = FALSE 422 arrow_direction = DOWN 423 } 424 425 image { 426 function = ARROW 427 overlay_file = "assets/scrollbar-arrow-left.png" 428 detail = "hscrollbar" 429 overlay_border = { 0, 0, 0, 0 } 430 overlay_stretch = FALSE 431 arrow_direction = LEFT 432 } 433 434 image { 435 function = ARROW 436 overlay_file = "assets/scrollbar-arrow-right.png" 437 detail = "hscrollbar" 438 overlay_border = { 0, 0, 0, 0 } 439 overlay_stretch = FALSE 440 arrow_direction = RIGHT 441 } 442 443 image { 444 function = BOX 445 detail = "hscrollbar" 446 orientation = HORIZONTAL 447 } 448 449 image { 450 function = BOX 451 detail = "vscrollbar" 452 orientation = VERTICAL 453 } 454 455 # Menu arrows 456 457 image { 458 function = ARROW 459 state = NORMAL 460 detail = "menuitem" 461 overlay_file = "assets/menu-pan-left.png" 462 overlay_stretch = FALSE 463 arrow_direction = LEFT 464 } 465 466 image { 467 function = ARROW 468 state = PRELIGHT 469 detail = "menuitem" 470 overlay_file = "assets/menu-pan-left.png" 471 overlay_stretch = FALSE 472 arrow_direction = LEFT 473 } 474 475 image { 476 function = ARROW 477 state = INSENSITIVE 478 detail = "menuitem" 479 overlay_file = "assets/menu-pan-left-insensitive.png" 480 overlay_stretch = FALSE 481 arrow_direction = LEFT 482 } 483 484 image { 485 function = ARROW 486 state = NORMAL 487 detail = "menuitem" 488 overlay_file = "assets/menu-pan-right.png" 489 overlay_stretch = FALSE 490 arrow_direction = RIGHT 491 } 492 493 image { 494 function = ARROW 495 state = PRELIGHT 496 detail = "menuitem" 497 overlay_file = "assets/menu-pan-right.png" 498 overlay_stretch = FALSE 499 arrow_direction = RIGHT 500 } 501 502 image { 503 function = ARROW 504 state = INSENSITIVE 505 detail = "menuitem" 506 overlay_file = "assets/menu-pan-right-insensitive.png" 507 overlay_stretch = FALSE 508 arrow_direction = RIGHT 509 } 510 511 image { 512 function = ARROW 513 state = INSENSITIVE 514 detail = "menu_scroll_arrow_up" 515 overlay_file = "assets/menu-pan-up-insensitive.png" 516 overlay_stretch = FALSE 517 } 518 519 image { 520 function = ARROW 521 detail = "menu_scroll_arrow_up" 522 overlay_file = "assets/menu-pan-up.png" 523 overlay_stretch = FALSE 524 } 525 526 image { 527 function = ARROW 528 state = INSENSITIVE 529 detail = "menu_scroll_arrow_down" 530 overlay_file = "assets/menu-pan-down-insensitive.png" 531 overlay_stretch = FALSE 532 } 533 534 image { 535 function = ARROW 536 detail = "menu_scroll_arrow_down" 537 overlay_file = "assets/menu-pan-down.png" 538 overlay_stretch = FALSE 539 } 540 541 # Regular arrows 542 543 image { 544 function = ARROW 545 state = NORMAL 546 overlay_file = "assets/pan-up.png" 547 overlay_stretch = FALSE 548 arrow_direction = UP 549 } 550 551 image { 552 function = ARROW 553 state = PRELIGHT 554 overlay_file = "assets/pan-up.png" 555 overlay_stretch = FALSE 556 arrow_direction = UP 557 } 558 559 image { 560 function = ARROW 561 state = ACTIVE 562 overlay_file = "assets/pan-up.png" 563 overlay_stretch = FALSE 564 arrow_direction = UP 565 } 566 567 image { 568 function = ARROW 569 state = INSENSITIVE 570 overlay_file = "assets/pan-up-insensitive.png" 571 overlay_stretch = FALSE 572 arrow_direction = UP 573 } 574 575 image { 576 function = ARROW 577 state = NORMAL 578 overlay_file = "assets/pan-down.png" 579 overlay_stretch = FALSE 580 arrow_direction = DOWN 581 } 582 583 image { 584 function = ARROW 585 state = PRELIGHT 586 overlay_file = "assets/pan-down.png" 587 overlay_stretch = FALSE 588 arrow_direction = DOWN 589 } 590 591 image { 592 function = ARROW 593 state = ACTIVE 594 overlay_file = "assets/pan-down.png" 595 overlay_stretch = FALSE 596 arrow_direction = DOWN 597 } 598 599 image { 600 function = ARROW 601 state = INSENSITIVE 602 overlay_file = "assets/pan-down-insensitive.png" 603 overlay_stretch = FALSE 604 arrow_direction = DOWN 605 } 606 607 image { 608 function = ARROW 609 state = NORMAL 610 overlay_file = "assets/pan-left.png" 611 overlay_stretch = FALSE 612 arrow_direction = LEFT 613 } 614 615 image { 616 function = ARROW 617 state = PRELIGHT 618 overlay_file = "assets/pan-left.png" 619 overlay_stretch = FALSE 620 arrow_direction = LEFT 621 } 622 623 image { 624 function = ARROW 625 state = ACTIVE 626 overlay_file = "assets/pan-left.png" 627 overlay_stretch = FALSE 628 arrow_direction = LEFT 629 } 630 631 image { 632 function = ARROW 633 state = INSENSITIVE 634 overlay_file = "assets/pan-left-insensitive.png" 635 overlay_stretch = FALSE 636 arrow_direction = LEFT 637 } 638 639 image { 640 function = ARROW 641 state = NORMAL 642 overlay_file = "assets/pan-right.png" 643 overlay_stretch = FALSE 644 arrow_direction = RIGHT 645 } 646 647 image { 648 function = ARROW 649 state = PRELIGHT 650 overlay_file = "assets/pan-right.png" 651 overlay_stretch = FALSE 652 arrow_direction = RIGHT 653 } 654 655 image { 656 function = ARROW 657 state = ACTIVE 658 overlay_file = "assets/pan-right.png" 659 overlay_stretch = FALSE 660 arrow_direction = RIGHT 661 } 662 663 image { 664 function = ARROW 665 state = INSENSITIVE 666 overlay_file = "assets/pan-right-insensitive.png" 667 overlay_stretch = FALSE 668 arrow_direction = RIGHT 669 } 670 671 ###################### 672 # Option Menu Arrows # 673 ###################### 674 675 image { 676 function = TAB 677 state = NORMAL 678 overlay_file = "assets/pan-down.png" 679 overlay_stretch = FALSE 680 } 681 682 image { 683 function = TAB 684 state = PRELIGHT 685 overlay_file = "assets/pan-down.png" 686 overlay_stretch = FALSE 687 } 688 689 image { 690 function = TAB 691 state = ACTIVE 692 overlay_file = "assets/pan-down.png" 693 overlay_stretch = FALSE 694 } 695 696 image { 697 function = TAB 698 state = INSENSITIVE 699 overlay_file = "assets/pan-down-insensitive.png" 700 overlay_stretch = FALSE 701 } 702 703 ######### 704 # Lines # 705 ######### 706 707 image { 708 function = VLINE 709 file = "assets/line.png" 710 border = {1, 0, 0, 0} 711 } 712 713 image { 714 function = HLINE 715 file = "assets/line.png" 716 border = {0, 0, 1, 0} 717 } 718 719 ######### 720 # Focus # 721 ######### 722 723 image { 724 function = FOCUS 725 file = "assets/focus.png" 726 border = {1, 1, 1, 1} 727 stretch = TRUE 728 } 729 730 ########### 731 # Handles # 732 ########### 733 734 image { 735 function = HANDLE 736 detail = "handlebox" 737 overlay_file = "assets/handle.png" 738 overlay_stretch = FALSE 739 } 740 741 image { 742 function = HANDLE 743 file = "assets/handle-horz.png" 744 border = {0, 0, 4, 4} 745 orientation = HORIZONTAL 746 } 747 748 image { 749 function = HANDLE 750 file = "assets/handle-vert.png" 751 border = {4, 4, 0, 0} 752 orientation = VERTICAL 753 } 754 755 image { 756 function = RESIZE_GRIP 757 } 758 759 ############# 760 # Expanders # 761 ############# 762 763 image { 764 function = EXPANDER 765 expander_style = EXPANDED 766 file = "assets/pan-down.png" 767 } 768 769 # LTR 770 771 image { 772 function = EXPANDER 773 expander_style = COLLAPSED 774 file = "assets/pan-right.png" 775 direction = LTR 776 } 777 778 image { 779 function = EXPANDER 780 expander_style = SEMI_COLLAPSED 781 file = "assets/pan-right-semi.png" 782 direction = LTR 783 } 784 785 image { 786 function = EXPANDER 787 expander_style = SEMI_EXPANDED 788 file = "assets/pan-right-semi.png" 789 direction = LTR 790 } 791 792 # RTL 793 794 image { 795 function = EXPANDER 796 expander_style = COLLAPSED 797 file = "assets/pan-left.png" 798 direction = RTL 799 } 800 801 image { 802 function = EXPANDER 803 expander_style = SEMI_COLLAPSED 804 file = "assets/pan-left-semi.png" 805 direction = RTL 806 } 807 808 image { 809 function = EXPANDER 810 expander_style = SEMI_EXPANDED 811 file = "assets/pan-left-semi.png" 812 direction = RTL 813 } 814 815 ############# 816 # Notebooks # 817 ############# 818 819 # Left 820 821 image { 822 function = EXTENSION 823 state = NORMAL 824 file = "assets/tab-left-active.png" 825 border = {3, 0, 3, 3} 826 stretch = TRUE 827 gap_side = RIGHT 828 } 829 830 image { 831 function = EXTENSION 832 file = "assets/tab-left.png" 833 border = {3, 0, 3, 3} 834 stretch = TRUE 835 gap_side = RIGHT 836 } 837 838 # Right 839 840 image { 841 function = EXTENSION 842 state = NORMAL 843 file = "assets/tab-right-active.png" 844 border = {0, 3, 3, 3} 845 stretch = TRUE 846 gap_side = LEFT 847 } 848 849 image { 850 function = EXTENSION 851 file = "assets/tab-right.png" 852 border = {0, 3, 3, 3} 853 stretch = TRUE 854 gap_side = LEFT 855 } 856 857 # Up 858 859 image { 860 function = EXTENSION 861 state = NORMAL 862 file = "assets/tab-up-active.png" 863 border = {3, 3, 3, 0} 864 stretch = TRUE 865 gap_side = BOTTOM 866 } 867 868 image { 869 function = EXTENSION 870 file = "assets/tab-up.png" 871 border = {3, 3, 3, 0} 872 stretch = TRUE 873 gap_side = BOTTOM 874 } 875 876 # Down 877 878 image { 879 function = EXTENSION 880 state = NORMAL 881 file = "assets/tab-down-active.png" 882 border = {3, 3, 0, 3} 883 stretch = TRUE 884 gap_side = TOP 885 } 886 887 image { 888 function = EXTENSION 889 file = "assets/tab-down.png" 890 border = {3, 3, 0, 3} 891 stretch = TRUE 892 gap_side = TOP 893 } 894 895 # Inner frame 896 897 image { 898 function = BOX_GAP 899 detail = "notebook" 900 file = "assets/frame-notebook.png" 901 border = {1, 1, 1, 1} 902 stretch = TRUE 903 gap_file = "assets/tab-vert-gap.png" 904 gap_border = {1, 0, 1, 1} 905 gap_side = LEFT 906 } 907 908 image { 909 function = BOX_GAP 910 detail = "notebook" 911 file = "assets/frame-notebook.png" 912 border = {1, 1, 1, 1} 913 stretch = TRUE 914 gap_file = "assets/tab-vert-gap.png" 915 gap_border = {0, 1, 1, 1} 916 gap_side = RIGHT 917 } 918 919 image { 920 function = BOX_GAP 921 detail = "notebook" 922 file = "assets/frame-notebook.png" 923 border = {1, 1, 1, 1} 924 stretch = TRUE 925 gap_file = "assets/tab-horz-gap.png" 926 gap_border = {1, 1, 1, 0} 927 gap_side = TOP 928 } 929 930 image { 931 function = BOX_GAP 932 detail = "notebook" 933 file = "assets/frame-notebook.png" 934 border = {1, 1, 1, 1} 935 stretch = TRUE 936 gap_file = "assets/tab-horz-gap.png" 937 gap_border = {1, 1, 0, 1} 938 gap_side = BOTTOM 939 } 940 941 # Standalone frame 942 image { 943 function = BOX 944 detail = "notebook" 945 file = "assets/frame-notebook.png" 946 border = {1, 1, 1, 1} 947 stretch = TRUE 948 } 949 950 ############## 951 # Scrollbars # 952 ############## 953 954 image { 955 function = BOX 956 detail = "trough" 957 file = "assets/scrollbar-horz-trough.png" 958 border = {0, 0, 1, 0} 959 orientation = HORIZONTAL 960 } 961 962 image { 963 function = BOX 964 detail = "trough" 965 file = "assets/scrollbar-vert-trough.png" 966 border = {1, 0, 0, 0} 967 orientation = VERTICAL 968 direction = LTR 969 } 970 971 image { 972 function = BOX 973 detail = "trough" 974 file = "assets/scrollbar-vert-trough-rtl.png" 975 border = {0, 1, 0, 0} 976 orientation = VERTICAL 977 direction = RTL 978 } 979 980 981 # Disable insensitive sliders 982 983 image { 984 function = SLIDER 985 state = INSENSITIVE 986 detail = "slider" 987 } 988 989 # Horizontal sliders 990 991 image { 992 function = SLIDER 993 state = NORMAL 994 detail = "slider" 995 file = "assets/scrollbar-horz-slider.png" 996 border = {6, 6, 7, 6 } 997 stretch = TRUE 998 orientation = HORIZONTAL 999 } 1000 1001 image { 1002 function = SLIDER 1003 state = PRELIGHT 1004 detail = "slider" 1005 file = "assets/scrollbar-horz-slider-hover.png" 1006 border = {6, 6, 7, 6 } 1007 stretch = TRUE 1008 orientation = HORIZONTAL 1009 } 1010 1011 image { 1012 function = SLIDER 1013 state = ACTIVE 1014 detail = "slider" 1015 file = "assets/scrollbar-horz-slider-active.png" 1016 border = {6, 6, 7, 6 } 1017 stretch = TRUE 1018 orientation = HORIZONTAL 1019 } 1020 1021 # Vertical sliders 1022 1023 image { 1024 function = SLIDER 1025 state = NORMAL 1026 detail = "slider" 1027 file = "assets/scrollbar-vert-slider.png" 1028 border = {7, 6, 6, 6} 1029 stretch = TRUE 1030 orientation = VERTICAL 1031 direction = LTR 1032 } 1033 1034 image { 1035 function = SLIDER 1036 state = PRELIGHT 1037 detail = "slider" 1038 file = "assets/scrollbar-vert-slider-hover.png" 1039 border = {7, 6, 6, 6} 1040 stretch = TRUE 1041 orientation = VERTICAL 1042 direction = LTR 1043 } 1044 1045 image { 1046 function = SLIDER 1047 state = ACTIVE 1048 detail = "slider" 1049 file = "assets/scrollbar-vert-slider-active.png" 1050 border = {7, 6, 6, 6} 1051 stretch = TRUE 1052 orientation = VERTICAL 1053 direction = LTR 1054 } 1055 1056 # RTL 1057 1058 image { 1059 function = SLIDER 1060 state = NORMAL 1061 detail = "slider" 1062 file = "assets/scrollbar-vert-slider-rtl.png" 1063 border = {6, 7, 6, 6} 1064 stretch = TRUE 1065 orientation = VERTICAL 1066 direction = RTL 1067 } 1068 1069 image { 1070 function = SLIDER 1071 state = PRELIGHT 1072 detail = "slider" 1073 file = "assets/scrollbar-vert-slider-hover-rtl.png" 1074 border = {6, 7, 6, 6} 1075 stretch = TRUE 1076 orientation = VERTICAL 1077 direction = RTL 1078 } 1079 1080 image { 1081 function = SLIDER 1082 state = ACTIVE 1083 detail = "slider" 1084 file = "assets/scrollbar-vert-slider-active-rtl.png" 1085 border = {6, 7, 6, 6} 1086 stretch = TRUE 1087 orientation = VERTICAL 1088 direction = RTL 1089 } 1090 1091 ########## 1092 # Scales # 1093 ########## 1094 1095 # Troughs, overrided later on. We set them here too because some widgets 1096 # don't specify their orientation. 1097 1098 image { 1099 function = BOX 1100 detail = "trough-upper" 1101 file = "assets/scale-horz-trough.png" 1102 border = {10, 10, 0, 0} 1103 stretch = TRUE 1104 orientation = HORIZONTAL 1105 } 1106 1107 image { 1108 function = BOX 1109 detail = "trough-lower" 1110 file = "assets/scale-horz-trough-active.png" 1111 border = {10, 10, 0, 0} 1112 stretch = TRUE 1113 orientation = HORIZONTAL 1114 } 1115 1116 image { 1117 function = BOX 1118 detail = "trough-upper" 1119 file = "assets/scale-vert-trough.png" 1120 border = {0, 0, 10, 10} 1121 stretch = TRUE 1122 orientation = VERTICAL 1123 } 1124 1125 image { 1126 function = BOX 1127 detail = "trough-lower" 1128 file = "assets/scale-vert-trough-active.png" 1129 border = {0, 0, 10, 10} 1130 stretch = TRUE 1131 orientation = VERTICAL 1132 } 1133 1134 # Sliders 1135 1136 image { 1137 function = SLIDER 1138 state = NORMAL 1139 detail = "hscale" 1140 file = "assets/scale-slider.png" 1141 } 1142 1143 image { 1144 function = SLIDER 1145 state = PRELIGHT 1146 detail = "hscale" 1147 file = "assets/scale-slider-hover.png" 1148 } 1149 1150 image { 1151 function = SLIDER 1152 state = ACTIVE 1153 detail = "hscale" 1154 file = "assets/scale-slider-active.png" 1155 } 1156 1157 image { 1158 function = SLIDER 1159 state = INSENSITIVE 1160 detail = "hscale" 1161 file = "assets/scale-slider-insensitive.png" 1162 } 1163 image { 1164 function = SLIDER 1165 state = NORMAL 1166 detail = "vscale" 1167 file = "assets/scale-slider.png" 1168 } 1169 1170 image { 1171 function = SLIDER 1172 state = PRELIGHT 1173 detail = "vscale" 1174 file = "assets/scale-slider-hover.png" 1175 } 1176 1177 image { 1178 function = SLIDER 1179 state = ACTIVE 1180 detail = "vscale" 1181 file = "assets/scale-slider-active.png" 1182 } 1183 1184 image { 1185 function = SLIDER 1186 state = INSENSITIVE 1187 detail = "vscale" 1188 file = "assets/scale-slider-insensitive.png" 1189 } 1190 1191 ########### 1192 # Menubar # 1193 ########### 1194 1195 image { 1196 function = BOX 1197 detail = "menubar" 1198 file = "assets/line.png" 1199 border = {0, 0, 0, 1} 1200 } 1201 1202 ######### 1203 # Menus # 1204 ######### 1205 1206 image { 1207 function = BOX 1208 state = PRELIGHT 1209 detail = "menu_scroll_arrow_up" 1210 file = "assets/line.png" 1211 } 1212 1213 image { 1214 function = BOX 1215 detail = "menu_scroll_arrow_up" 1216 file = "assets/line.png" 1217 border = {0, 0, 0, 1} 1218 } 1219 1220 image { 1221 function = BOX 1222 state = PRELIGHT 1223 detail = "menu_scroll_arrow_down" 1224 file = "assets/line.png" 1225 } 1226 1227 image { 1228 function = BOX 1229 detail = "menu_scroll_arrow_down" 1230 file = "assets/line.png" 1231 border = {0, 0, 1, 0} 1232 } 1233 1234 ########### 1235 # Entries # 1236 ########### 1237 1238 1239 image { 1240 function = SHADOW 1241 state = ACTIVE 1242 detail = "entry" 1243 file = "assets/entry-active.png" 1244 border = {4, 4, 4, 4} 1245 stretch = TRUE 1246 } 1247 1248 image { 1249 function = SHADOW 1250 state = INSENSITIVE 1251 detail = "entry" 1252 file = "assets/entry-insensitive.png" 1253 border = {4, 4, 4, 4} 1254 stretch = TRUE 1255 } 1256 1257 image { 1258 function = SHADOW 1259 detail = "entry" 1260 file = "assets/entry.png" 1261 border = {4, 4, 4, 4} 1262 stretch = TRUE 1263 } 1264 1265 image { 1266 function = FLAT_BOX 1267 state = ACTIVE 1268 detail = "entry_bg" 1269 file = "assets/entry-background.png" 1270 } 1271 1272 image { 1273 function = FLAT_BOX 1274 state = INSENSITIVE 1275 detail = "entry_bg" 1276 file = "assets/entry-background-insensitive.png" 1277 } 1278 1279 image { 1280 function = FLAT_BOX 1281 detail = "entry_bg" 1282 file = "assets/entry-background.png" 1283 } 1284 ######### 1285 # Spins # 1286 ######### 1287 1288 # Spin-Up LTR 1289 1290 image { 1291 function = BOX 1292 state = NORMAL 1293 detail = "spinbutton_up" 1294 file = "assets/spin-ltr-up.png" 1295 border = {1, 4, 4, 0} 1296 stretch = TRUE 1297 overlay_file = "assets/spin-up.png" 1298 overlay_stretch = FALSE 1299 direction = LTR 1300 } 1301 1302 image { 1303 function = BOX 1304 state = PRELIGHT 1305 detail = "spinbutton_up" 1306 file = "assets/spin-ltr-up-hover.png" 1307 border = {1, 4, 4, 0} 1308 stretch = TRUE 1309 overlay_file = "assets/spin-up.png" 1310 overlay_stretch = FALSE 1311 direction = LTR 1312 } 1313 1314 image { 1315 function = BOX 1316 state = ACTIVE 1317 detail = "spinbutton_up" 1318 file = "assets/spin-ltr-up-active.png" 1319 border = {1, 4, 4, 0} 1320 stretch = TRUE 1321 overlay_file = "assets/spin-up.png" 1322 overlay_stretch = FALSE 1323 direction = LTR 1324 } 1325 1326 image { 1327 function = BOX 1328 state = INSENSITIVE 1329 detail = "spinbutton_up" 1330 file = "assets/spin-ltr-up-insensitive.png" 1331 border = {1, 4, 4, 0} 1332 stretch = TRUE 1333 overlay_file = "assets/spin-up-insensitive.png" 1334 overlay_stretch = FALSE 1335 direction = LTR 1336 } 1337 1338 # Spin-Up RTL 1339 1340 image { 1341 function = BOX 1342 state = NORMAL 1343 detail = "spinbutton_up" 1344 file = "assets/spin-rtl-up.png" 1345 border = {4, 1, 4, 0} 1346 stretch = TRUE 1347 overlay_file = "assets/spin-up.png" 1348 overlay_stretch = FALSE 1349 direction = RTL 1350 } 1351 1352 image { 1353 function = BOX 1354 state = PRELIGHT 1355 detail = "spinbutton_up" 1356 file = "assets/spin-rtl-up-hover.png" 1357 border = {4, 1, 4, 0} 1358 stretch = TRUE 1359 overlay_file = "assets/spin-up.png" 1360 overlay_stretch = FALSE 1361 direction = RTL 1362 } 1363 1364 image { 1365 function = BOX 1366 state = ACTIVE 1367 detail = "spinbutton_up" 1368 file = "assets/spin-rtl-up-hover.png" 1369 border = {4, 1, 4, 0} 1370 stretch = TRUE 1371 overlay_file = "assets/spin-up.png" 1372 overlay_stretch = FALSE 1373 direction = RTL 1374 } 1375 1376 image { 1377 function = BOX 1378 state = INSENSITIVE 1379 detail = "spinbutton_up" 1380 file = "assets/spin-rtl-up-insensitive.png" 1381 border = {4, 1, 4, 0} 1382 stretch = TRUE 1383 overlay_file = "assets/spin-up-insensitive.png" 1384 overlay_stretch = FALSE 1385 direction = RTL 1386 } 1387 1388 # Spin-Down LTR 1389 1390 image { 1391 function = BOX 1392 state = NORMAL 1393 detail = "spinbutton_down" 1394 file = "assets/spin-ltr-down.png" 1395 border = {1, 4, 1, 4} 1396 stretch = TRUE 1397 overlay_file = "assets/spin-down.png" 1398 overlay_stretch = FALSE 1399 direction = LTR 1400 } 1401 1402 image { 1403 function = BOX 1404 state = PRELIGHT 1405 detail = "spinbutton_down" 1406 file = "assets/spin-ltr-down-hover.png" 1407 border = {1, 4, 1, 4} 1408 stretch = TRUE 1409 overlay_file = "assets/spin-down.png" 1410 overlay_stretch = FALSE 1411 direction = LTR 1412 } 1413 1414 image { 1415 function = BOX 1416 state = ACTIVE 1417 detail = "spinbutton_down" 1418 file = "assets/spin-ltr-down-active.png" 1419 border = {1, 4, 1, 4} 1420 stretch = TRUE 1421 overlay_file = "assets/spin-down.png" 1422 overlay_stretch = FALSE 1423 direction = LTR 1424 } 1425 1426 image { 1427 function = BOX 1428 state = INSENSITIVE 1429 detail = "spinbutton_down" 1430 file = "assets/spin-ltr-down-insensitive.png" 1431 border = {1, 4, 1, 4} 1432 stretch = TRUE 1433 overlay_file = "assets/spin-down-insensitive.png" 1434 overlay_stretch = FALSE 1435 direction = LTR 1436 } 1437 1438 # Spin-Down RTL 1439 1440 image { 1441 function = BOX 1442 state = NORMAL 1443 detail = "spinbutton_down" 1444 file = "assets/spin-rtl-down.png" 1445 border = {4, 1, 1, 4} 1446 stretch = TRUE 1447 overlay_file = "assets/spin-down.png" 1448 overlay_stretch = FALSE 1449 direction = RTL 1450 } 1451 1452 image { 1453 function = BOX 1454 state = PRELIGHT 1455 detail = "spinbutton_down" 1456 file = "assets/spin-rtl-down-hover.png" 1457 border = {4, 1, 1, 4} 1458 stretch = TRUE 1459 overlay_file = "assets/spin-down.png" 1460 overlay_stretch = FALSE 1461 direction = RTL 1462 } 1463 1464 image { 1465 function = BOX 1466 state = ACTIVE 1467 detail = "spinbutton_down" 1468 file = "assets/spin-rtl-down-active.png" 1469 border = {4, 1, 1, 4} 1470 stretch = TRUE 1471 overlay_file = "assets/spin-down.png" 1472 overlay_stretch = FALSE 1473 direction = RTL 1474 } 1475 1476 image { 1477 function = BOX 1478 state = INSENSITIVE 1479 detail = "spinbutton_down" 1480 file = "assets/spin-rtl-down-insensitive.png" 1481 border = {4, 1, 1, 4} 1482 stretch = TRUE 1483 overlay_file = "assets/spin-down-insensitive.png" 1484 overlay_stretch = FALSE 1485 direction = RTL 1486 } 1487 1488 ############## 1489 # Scrollbars # 1490 ############## 1491 1492 image { 1493 function = BOX 1494 detail = "bar" 1495 file = "assets/progressbar-horz.png" 1496 stretch = TRUE 1497 border = {2, 2, 1, 1} 1498 orientation = HORIZONTAL 1499 } 1500 1501 image { 1502 function = BOX 1503 detail = "bar" 1504 file = "assets/progressbar-vert.png" 1505 stretch = TRUE 1506 border = {1, 1, 2, 2} 1507 orientation = VERTICAL 1508 } 1509 1510 ############# 1511 # Treeviews # 1512 ############# 1513 1514 # Disable active the column highlight 1515 # We need to match specific cells or we break stuff 1516 # Looking at you deadbeef 1517 1518 image { 1519 function = FLAT_BOX 1520 detail = "cell_even_sorted" 1521 state = NORMAL 1522 } 1523 1524 image { 1525 function = FLAT_BOX 1526 detail = "cell_odd_sorted" 1527 state = NORMAL 1528 } 1529 1530 # Disable all the other shadows 1531 # This prevents the Raleigh effect 1532 image { 1533 function = SHADOW 1534 } 1535 1536 } 1537 1538} 1539 1540style "menubar" { 1541 1542 # Needed to fix Firefox's menubar text 1543 bg[NORMAL] = @menubar_bg 1544 bg[SELECTED] = @selected_fg_color 1545 fg[SELECTED] = @link_color 1546} 1547 1548style "menubar_item" { 1549 1550 xthickness = 3 1551 ythickness = 4 1552 1553 fg[NORMAL] = @menubar_insensitive_fg 1554 fg[PRELIGHT] = @menubar_fg 1555 1556 engine "pixmap" { 1557 image { 1558 function = BOX 1559 state = PRELIGHT 1560 file = "assets/menubar-item-active.png" 1561 border = {0, 0, 0, 3} 1562 } 1563 } 1564 1565} 1566 1567style "menu" { 1568 1569 xthickness = 0 1570 ythickness = 0 1571 1572 bg[NORMAL] = @menu_color 1573 bg[INSENSITIVE] = @menu_color 1574 bg[PRELIGHT] = @menu_color 1575 bg[SELECTED] = @selected_bg_color 1576 1577} 1578 1579style "menu_item" { 1580 1581 xthickness = 3 1582 ythickness = 4 1583 1584 bg[PRELIGHT] = @menu_hover_color 1585 # Chromium uses this setting 1586 bg[SELECTED] = @menu_hover_color 1587 1588 fg[PRELIGHT] = @fg_color 1589 fg[SELECTED] = @fg_color 1590 text[NORMAL] = @fg_color 1591 text[PRELIGHT] = @fg_color 1592 text[ACTIVE] = @fg_color 1593 text[SELECTED] = @fg_color 1594 1595 # Some widgets use text, we need to handle that 1596 # Don't know what this comment is about but maybe we've nulled it 1597 1598 # Unfortunately we can't tell regular and menu checks/radios apart 1599 # Without the heirarchy 1600 engine "pixmap" { 1601 1602 ################# 1603 # Check Buttons # 1604 ################# 1605 1606 image { 1607 function = CHECK 1608 state = NORMAL 1609 shadow = OUT 1610 overlay_file = "assets/menu-checkbox.png" 1611 overlay_stretch = FALSE 1612 } 1613 1614 image { 1615 function = CHECK 1616 state = PRELIGHT 1617 shadow = OUT 1618 overlay_file = "assets/menu-checkbox.png" 1619 overlay_stretch = FALSE 1620 } 1621 1622 image { 1623 function = CHECK 1624 state = ACTIVE 1625 shadow = OUT 1626 overlay_file = "assets/menu-checkbox.png" 1627 overlay_stretch = FALSE 1628 } 1629 1630 image { 1631 function = CHECK 1632 state = INSENSITIVE 1633 shadow = OUT 1634 overlay_file = "assets/menu-checkbox-insensitive.png" 1635 overlay_stretch = FALSE 1636 } 1637 1638 image { 1639 function = CHECK 1640 state = NORMAL 1641 shadow = IN 1642 overlay_file = "assets/menu-checkbox-checked.png" 1643 overlay_stretch = FALSE 1644 } 1645 1646 image { 1647 function = CHECK 1648 state = PRELIGHT 1649 shadow = IN 1650 overlay_file = "assets/menu-checkbox-checked.png" 1651 overlay_stretch = FALSE 1652 } 1653 1654 image { 1655 function = CHECK 1656 state = ACTIVE 1657 shadow = IN 1658 overlay_file = "assets/menu-checkbox-checked.png" 1659 overlay_stretch = FALSE 1660 } 1661 1662 image { 1663 function = CHECK 1664 state = INSENSITIVE 1665 shadow = IN 1666 overlay_file = "assets/menu-checkbox-checked-insensitive.png" 1667 overlay_stretch = FALSE 1668 } 1669 1670 image { 1671 function = CHECK 1672 state = NORMAL 1673 shadow = ETCHED_IN 1674 overlay_file = "assets/menu-checkbox-mixed.png" 1675 overlay_stretch = FALSE 1676 } 1677 1678 image { 1679 function = CHECK 1680 state = PRELIGHT 1681 shadow = ETCHED_IN 1682 overlay_file = "assets/menu-checkbox-mixed.png" 1683 overlay_stretch = FALSE 1684 } 1685 1686 image { 1687 function = CHECK 1688 state = ACTIVE 1689 shadow = ETCHED_IN 1690 overlay_file = "assets/menu-checkbox-mixed.png" 1691 overlay_stretch = FALSE 1692 } 1693 1694 image { 1695 function = CHECK 1696 state = INSENSITIVE 1697 shadow = ETCHED_IN 1698 overlay_file = "assets/menu-checkbox-mixed-insensitive.png" 1699 overlay_stretch = FALSE 1700 } 1701 1702 ################# 1703 # Radio Buttons # 1704 ################# 1705 1706 image { 1707 function = OPTION 1708 state = NORMAL 1709 shadow = OUT 1710 overlay_file = "assets/menu-radio.png" 1711 overlay_stretch = FALSE 1712 } 1713 1714 image { 1715 function = OPTION 1716 state = PRELIGHT 1717 shadow = OUT 1718 overlay_file = "assets/menu-radio.png" 1719 overlay_stretch = FALSE 1720 } 1721 1722 image { 1723 function = OPTION 1724 state = ACTIVE 1725 shadow = OUT 1726 overlay_file = "assets/menu-radio.png" 1727 overlay_stretch = FALSE 1728 } 1729 1730 image { 1731 function = OPTION 1732 state = INSENSITIVE 1733 shadow = OUT 1734 overlay_file = "assets/menu-radio-insensitive.png" 1735 overlay_stretch = FALSE 1736 } 1737 1738 image { 1739 function = OPTION 1740 state = NORMAL 1741 shadow = IN 1742 overlay_file = "assets/menu-radio-checked.png" 1743 overlay_stretch = FALSE 1744 } 1745 1746 image { 1747 function = OPTION 1748 state = PRELIGHT 1749 shadow = IN 1750 overlay_file = "assets/menu-radio-checked.png" 1751 overlay_stretch = FALSE 1752 } 1753 1754 image { 1755 function = OPTION 1756 state = ACTIVE 1757 shadow = IN 1758 overlay_file = "assets/menu-radio-checked.png" 1759 overlay_stretch = FALSE 1760 } 1761 1762 image { 1763 function = OPTION 1764 state = INSENSITIVE 1765 shadow = IN 1766 overlay_file = "assets/menu-radio-checked-insensitive.png" 1767 overlay_stretch = FALSE 1768 } 1769 1770 image { 1771 function = OPTION 1772 state = NORMAL 1773 shadow = ETCHED_IN 1774 overlay_file = "assets/menu-radio-mixed.png" 1775 overlay_stretch = FALSE 1776 } 1777 1778 image { 1779 function = OPTION 1780 state = PRELIGHT 1781 shadow = ETCHED_IN 1782 overlay_file = "assets/menu-radio-mixed.png" 1783 overlay_stretch = FALSE 1784 } 1785 1786 image { 1787 function = OPTION 1788 state = ACTIVE 1789 shadow = ETCHED_IN 1790 overlay_file = "assets/menu-radio-mixed.png" 1791 overlay_stretch = FALSE 1792 } 1793 1794 image { 1795 function = OPTION 1796 state = INSENSITIVE 1797 shadow = ETCHED_IN 1798 overlay_file = "assets/menu-radio-mixed-insensitive.png" 1799 overlay_stretch = FALSE 1800 } 1801 1802 1803 1804 } 1805 1806} 1807 1808style "separator_menu_item" { 1809 1810 xthickness = 0 1811 ythickness = 0 1812 1813 engine "pixmap" { 1814 image { 1815 function = BOX 1816 file = "assets/line.png" 1817 } 1818 } 1819 1820} 1821 1822style "button" { 1823 1824 xthickness = 2 1825 ythickness = 2 1826 1827 # For the sake of sanity style buttons this way 1828 engine "pixmap" { 1829 1830 ########### 1831 # Buttons # 1832 ########### 1833 1834 image { 1835 function = BOX 1836 state = NORMAL 1837 file = "assets/button.png" 1838 border = {4, 4, 4, 4} 1839 stretch = TRUE 1840 } 1841 1842 image { 1843 function = BOX 1844 state = PRELIGHT 1845 shadow = OUT 1846 file = "assets/button-hover.png" 1847 border = {4, 4, 4, 4} 1848 stretch = TRUE 1849 } 1850 1851 # Don't add hover effect on pressed buttons 1852 image { 1853 function = BOX 1854 state = PRELIGHT 1855 shadow = IN 1856 file = "assets/button-active.png" 1857 border = {4, 4, 4, 4} 1858 stretch = TRUE 1859 } 1860 1861 image { 1862 function = BOX 1863 state = ACTIVE 1864 file = "assets/button-active.png" 1865 border = {4, 4, 4, 4} 1866 stretch = TRUE 1867 } 1868 1869 image { 1870 function = BOX 1871 state = INSENSITIVE 1872 file = "assets/button-insensitive.png" 1873 border = {4, 4, 4, 4} 1874 stretch = TRUE 1875 } 1876 } 1877} 1878 1879style "link_button" { 1880 1881 # Disable the button effect, leave just the link 1882 engine "pixmap" { 1883 image { 1884 function = BOX 1885 } 1886 } 1887 1888} 1889 1890style "entry" { 1891 1892 # We set this same as the border of the border of the entry 1893 # This way there's no overlap 1894 xthickness = 4 1895 ythickness = 4 1896 1897} 1898 1899style "combobox" { 1900 1901 xthickness = 6 1902 ythickness = 4 1903 1904 # This affects only the button beside an entry 1905 GtkButton::inner-border = {0, 0, 0, 0} 1906 1907} 1908 1909style "combobox_cellview" { 1910 text[NORMAL] = @fg_color 1911 text[PRELIGHT] = @fg_color 1912} 1913 1914style "combobox_entry" { 1915 1916 # Since one side of the button is missing, we need to shift the arrow a little to the right 1917 GtkButton::inner-border = {0, 1, 0, 0} 1918 1919 engine "pixmap" { 1920 1921 ############# 1922 # LTR entry # 1923 ############# 1924 1925 image { 1926 function = SHADOW 1927 state = NORMAL 1928 detail = "entry" 1929 file = "assets/combo-entry-ltr-entry.png" 1930 border = {4, 4, 4, 4} 1931 stretch = TRUE 1932 direction = LTR 1933 } 1934 1935 image { 1936 function = SHADOW 1937 state = ACTIVE 1938 detail = "entry" 1939 file = "assets/combo-entry-ltr-entry-active.png" 1940 border = {4, 4, 4, 4} 1941 stretch = TRUE 1942 direction = LTR 1943 } 1944 1945 image { 1946 function = SHADOW 1947 state = INSENSITIVE 1948 detail = "entry" 1949 file = "assets/combo-entry-ltr-entry-insensitive.png" 1950 border = {4, 4, 4, 4} 1951 stretch = TRUE 1952 direction = LTR 1953 } 1954 1955 ############# 1956 # RTL entry # 1957 ############# 1958 1959 image { 1960 function = SHADOW 1961 state = NORMAL 1962 detail = "entry" 1963 file = "assets/combo-entry-rtl-entry.png" 1964 border = {4, 4, 4, 4} 1965 stretch = TRUE 1966 direction = RTL 1967 } 1968 1969 image { 1970 function = SHADOW 1971 state = ACTIVE 1972 detail = "entry" 1973 file = "assets/combo-entry-rtl-entry-active.png" 1974 border = {4, 4, 4, 4} 1975 stretch = TRUE 1976 direction = RTL 1977 } 1978 1979 image { 1980 function = SHADOW 1981 state = INSENSITIVE 1982 detail = "entry" 1983 file = "assets/combo-entry-rtl-entry-insensitive.png" 1984 border = {4, 4, 4, 4} 1985 stretch = TRUE 1986 direction = RTL 1987 } 1988 1989 ############## 1990 # LTR button # 1991 ############## 1992 1993 image { 1994 function = BOX 1995 state = NORMAL 1996 detail = "button" 1997 file = "assets/combo-entry-ltr-button.png" 1998 border = {0, 4, 4, 4} 1999 stretch = TRUE 2000 direction = LTR 2001 } 2002 2003 image { 2004 function = BOX 2005 state = PRELIGHT 2006 detail = "button" 2007 file = "assets/combo-entry-ltr-button-hover.png" 2008 border = {0, 4, 4, 4} 2009 stretch = TRUE 2010 direction = LTR 2011 } 2012 2013 image { 2014 function = BOX 2015 state = ACTIVE 2016 detail = "button" 2017 file = "assets/combo-entry-ltr-button-active.png" 2018 border = {0, 4, 4, 4} 2019 stretch = TRUE 2020 direction = LTR 2021 } 2022 2023 image { 2024 function = BOX 2025 state = INSENSITIVE 2026 detail = "button" 2027 file = "assets/combo-entry-ltr-button-insensitive.png" 2028 border = {0, 4, 4, 4} 2029 stretch = TRUE 2030 direction = LTR 2031 } 2032 2033 ############## 2034 # RTL button # 2035 ############## 2036 2037 image { 2038 function = BOX 2039 state = NORMAL 2040 detail = "button" 2041 file = "assets/combo-entry-rtl-button.png" 2042 border = {4, 0, 4, 4} 2043 stretch = TRUE 2044 direction = RTL 2045 } 2046 2047 image { 2048 function = BOX 2049 state = PRELIGHT 2050 detail = "button" 2051 file = "assets/combo-entry-rtl-button-hover.png" 2052 border = {4, 0, 4, 4} 2053 stretch = TRUE 2054 direction = RTL 2055 } 2056 2057 image { 2058 function = BOX 2059 state = ACTIVE 2060 detail = "button" 2061 file = "assets/combo-entry-rtl-button-active.png" 2062 border = {4, 0, 4, 4} 2063 stretch = TRUE 2064 direction = RTL 2065 } 2066 2067 image { 2068 function = BOX 2069 state = INSENSITIVE 2070 detail = "button" 2071 file = "assets/combo-entry-rtl-button-insensitive.png" 2072 border = {4, 0, 4, 4} 2073 stretch = TRUE 2074 direction = RTL 2075 } 2076 2077 } 2078 2079} 2080 2081style "combo_button_padding" { 2082 2083 # Since one side of the button is missing, we need to shift the arrow a 2084 # little to the right. 2085 # This is the same thing we've done above but the combo, unlike the combobox, 2086 # uses padding the same way as a button. 2087 GtkButton::inner-border = {6, 8, 4, 4} 2088 2089} 2090 2091style "notebook" { 2092 2093 xthickness = 5 2094 ythickness = 2 2095 2096} 2097 2098style "notebook_viewport" { 2099 bg[NORMAL] = @base_color 2100} 2101 2102style "notebook_bg" { 2103 bg[NORMAL] = @base_color 2104 bg[PRELIGHT] = @base_color 2105 bg[INSENSITIVE] = @base_color 2106} 2107 2108style "notebook_entry" { 2109 2110 engine "pixmap" { 2111 2112 image { 2113 function = SHADOW 2114 state = ACTIVE 2115 detail = "entry" 2116 file = "assets/notebook-entry-active.png" 2117 border = {4, 4, 4, 4} 2118 stretch = TRUE 2119 } 2120 2121 image { 2122 function = SHADOW 2123 state = INSENSITIVE 2124 detail = "entry" 2125 file = "assets/notebook-entry-insensitive.png" 2126 border = {4, 4, 4, 4} 2127 stretch = TRUE 2128 } 2129 2130 image { 2131 function = SHADOW 2132 detail = "entry" 2133 file = "assets/notebook-entry.png" 2134 border = {4, 4, 4, 4} 2135 stretch = TRUE 2136 } 2137 } 2138} 2139 2140style "normal_bg" { 2141 bg[NORMAL] = @bg_color 2142 bg[PRELIGHT] = @bg_color 2143 bg[INSENSITIVE] = @insensitive_bg_color 2144} 2145 2146style "normal_entry" { 2147 2148 engine "pixmap" { 2149 2150 image { 2151 function = SHADOW 2152 state = ACTIVE 2153 detail = "entry" 2154 file = "assets/entry-active.png" 2155 border = {4, 4, 4, 4} 2156 stretch = TRUE 2157 } 2158 2159 image { 2160 function = SHADOW 2161 state = INSENSITIVE 2162 detail = "entry" 2163 file = "assets/entry-insensitive.png" 2164 border = {4, 4, 4, 4} 2165 stretch = TRUE 2166 } 2167 2168 image { 2169 function = SHADOW 2170 detail = "entry" 2171 file = "assets/entry.png" 2172 border = {4, 4, 4, 4} 2173 stretch = TRUE 2174 } 2175 } 2176} 2177 2178style "notebook_combo" { 2179 2180 engine "pixmap" { 2181 2182 ############# 2183 # LTR entry # 2184 ############# 2185 2186 image { 2187 function = SHADOW 2188 state = NORMAL 2189 detail = "entry" 2190 file = "assets/notebook-combo-entry-ltr-entry.png" 2191 border = {4, 4, 4, 4} 2192 stretch = TRUE 2193 direction = LTR 2194 } 2195 2196 image { 2197 function = SHADOW 2198 state = ACTIVE 2199 detail = "entry" 2200 file = "assets/notebook-combo-entry-ltr-entry-active.png" 2201 border = {4, 4, 4, 4} 2202 stretch = TRUE 2203 direction = LTR 2204 } 2205 2206 image { 2207 function = SHADOW 2208 state = INSENSITIVE 2209 detail = "entry" 2210 file = "assets/notebook-combo-entry-ltr-entry-insensitive.png" 2211 border = {4, 4, 4, 4} 2212 stretch = TRUE 2213 direction = LTR 2214 } 2215 2216 ############# 2217 # RTL entry # 2218 ############# 2219 2220 image { 2221 function = SHADOW 2222 state = NORMAL 2223 detail = "entry" 2224 file = "assets/notebook-combo-entry-rtl-entry.png" 2225 border = {4, 4, 4, 4} 2226 stretch = TRUE 2227 direction = RTL 2228 } 2229 2230 image { 2231 function = SHADOW 2232 state = ACTIVE 2233 detail = "entry" 2234 file = "assets/notebook-combo-entry-rtl-entry-active.png" 2235 border = {4, 4, 4, 4} 2236 stretch = TRUE 2237 direction = RTL 2238 } 2239 2240 image { 2241 function = SHADOW 2242 state = INSENSITIVE 2243 detail = "entry" 2244 file = "assets/notebook-combo-entry-rtl-entry-insensitive.png" 2245 border = {4, 4, 4, 4} 2246 stretch = TRUE 2247 direction = RTL 2248 } 2249 2250 } 2251 2252} 2253 2254style "textview" { 2255 bg[NORMAL] = @base_color 2256} 2257 2258style "scale_horz" { 2259 2260 engine "pixmap" { 2261 2262 image { 2263 function = BOX 2264 detail = "trough-upper" 2265 file = "assets/scale-horz-trough.png" 2266 border = {10, 10, 0, 0} 2267 stretch = TRUE 2268 } 2269 2270 image { 2271 function = BOX 2272 detail = "trough-lower" 2273 file = "assets/scale-horz-trough-active.png" 2274 border = {10, 10, 0, 0} 2275 stretch = TRUE 2276 } 2277 2278 } 2279 2280} 2281 2282style "scale_vert" { 2283 2284 engine "pixmap" { 2285 2286 image { 2287 function = BOX 2288 detail = "trough-upper" 2289 file = "assets/scale-vert-trough.png" 2290 border = {0, 0, 10, 10} 2291 stretch = TRUE 2292 } 2293 2294 image { 2295 function = BOX 2296 detail = "trough-lower" 2297 file = "assets/scale-vert-trough-active.png" 2298 border = {0, 0, 10, 10} 2299 stretch = TRUE 2300 } 2301 2302 } 2303 2304} 2305 2306style "progressbar" { 2307 2308 xthickness = 1 2309 ythickness = 1 2310 2311 fg[PRELIGHT] = @selected_fg_color 2312 2313 engine "pixmap" { 2314 2315 image { 2316 function = BOX 2317 detail = "trough" 2318 file = "assets/progressbar-horz-trough.png" 2319 border = {3, 3, 2, 2} 2320 stretch = TRUE 2321 orientation = HORIZONTAL 2322 } 2323 2324 image { 2325 function = BOX 2326 detail = "trough" 2327 file = "assets/progressbar-vert-trough.png" 2328 border = {2, 2, 3, 3} 2329 stretch = TRUE 2330 orientation = VERTICAL 2331 } 2332 2333 } 2334 2335} 2336 2337style "treeview_header_button" { 2338 2339 engine "pixmap" { 2340 image { 2341 function = SHADOW 2342 state = NORMAL 2343 file = "assets/treeview-header-button.png" 2344 border = {4, 4, 4, 4} 2345 stretch = TRUE 2346 } 2347 } 2348 2349} 2350 2351style "treeview_header_label" { 2352 2353 xthickness = 1 2354 ythickness = 0 2355 2356 font_name = "Bold" 2357 2358 GtkButton::inner-border = {5, 5, 0, 1} 2359 2360 engine "pixmap" { 2361 2362 image { 2363 function = BOX 2364 file = "assets/treeview-separator-ltr.png" 2365 border = {0, 1, 0, 1} 2366 stretch = TRUE 2367 direction = LTR 2368 } 2369 2370 image { 2371 function = BOX 2372 file = "assets/treeview-separator-rtl.png" 2373 border = {1, 0, 0, 1} 2374 stretch = TRUE 2375 direction = RTL 2376 } 2377 2378 image { 2379 function = ARROW 2380 state = NORMAL 2381 overlay_file = "assets/treeview-pan-up.png" 2382 overlay_stretch = FALSE 2383 arrow_direction = UP 2384 } 2385 2386 image { 2387 function = ARROW 2388 state = PRELIGHT 2389 overlay_file = "assets/treeview-pan-up-hover.png" 2390 overlay_stretch = FALSE 2391 arrow_direction = UP 2392 } 2393 2394 image { 2395 function = ARROW 2396 state = ACTIVE 2397 overlay_file = "assets/treeview-pan-up-active.png" 2398 overlay_stretch = FALSE 2399 arrow_direction = UP 2400 } 2401 2402 image { 2403 function = ARROW 2404 state = NORMAL 2405 overlay_file = "assets/treeview-pan-down.png" 2406 overlay_stretch = FALSE 2407 arrow_direction = DOWN 2408 } 2409 2410 image { 2411 function = ARROW 2412 state = PRELIGHT 2413 overlay_file = "assets/treeview-pan-down-hover.png" 2414 overlay_stretch = FALSE 2415 arrow_direction = DOWN 2416 } 2417 2418 image { 2419 function = ARROW 2420 state = ACTIVE 2421 overlay_file = "assets/treeview-pan-down-active.png" 2422 overlay_stretch = FALSE 2423 arrow_direction = DOWN 2424 } 2425 2426 } 2427 2428} 2429 2430style "scrolled_window" { 2431 2432 engine "pixmap" { 2433 image { 2434 function = SHADOW 2435 file = "assets/frame.png" 2436 border = {1, 1, 1, 1} 2437 stretch = TRUE 2438 } 2439 } 2440 2441} 2442 2443style "frame" { 2444 2445 engine "pixmap" { 2446 2447 image { 2448 function = SHADOW 2449 shadow = NONE 2450 } 2451 2452 image { 2453 function = SHADOW 2454 file = "assets/frame.png" 2455 border = {1, 1, 1, 1} 2456 stretch = TRUE 2457 } 2458 2459 image { 2460 function = SHADOW_GAP 2461 file = "assets/frame.png" 2462 border = {1, 1, 1, 1} 2463 stretch = TRUE 2464 gap_start_file = "assets/border.png" 2465 gap_end_file = "assets/border.png" 2466 } 2467 2468 } 2469 2470} 2471 2472style "toolbar_button" { 2473 2474 xthickness = 2 2475 ythickness = 2 2476 2477 GtkButton::inner-border = {2, 2, 2, 2} 2478 2479} 2480 2481style "toolbar_separator" { 2482 2483 GtkWidget::wide-separators = 1 2484 GtkWidget::separator-width = 1 2485 GtkWidget::separator-height = 1 2486 2487 engine "pixmap" { 2488 image { 2489 function = BOX 2490 file = "assets/line.png" 2491 } 2492 } 2493 2494} 2495 2496style "inline_toolbar" { 2497 2498 GtkToolbar::button-relief = GTK_RELIEF_NORMAL 2499 2500 engine "pixmap" { 2501 image { 2502 function = SHADOW 2503 file = "assets/frame-inline.png" 2504 border = {1, 1, 0, 1} 2505 stretch = TRUE 2506 } 2507 } 2508 2509} 2510 2511style "tooltip" { 2512 2513 xthickness = 13 2514 ythickness = 13 2515 2516 bg[NORMAL] = @tooltip_bg_color 2517 fg[NORMAL] = @tooltip_fg_color 2518 bg[SELECTED] = @tooltip_bg_color 2519 2520} 2521 2522style "disable_separator" { 2523 2524 xthickness = 0 2525 ythickness = 0 2526 2527 GtkWidget::wide-separators = 1 2528 2529} 2530 2531# Default style, containing theme properties and trying to match every widget as 2532# much as possible, which is not only faster than trying to match every widget 2533# by its own but also less bug-prune and more consistent. However there is some 2534# widget specific stuff that needs to be taken care of, which is the point of 2535# every other style below. 2536class "GtkWidget" style "default" 2537 2538 ###################################### 2539 # Override padding, style and colour # 2540 ###################################### 2541 2542class "GtkButton" style "button" 2543class "GtkLinkButton" style "link_button" 2544class "GtkEntry" style "entry" 2545class "GtkOldEditable" style "entry" 2546class "GtkNotebook" style "notebook" 2547class "GtkHScale" style "scale_horz" 2548class "GtkVScale" style "scale_vert" 2549class "GtkProgressBar" style "progressbar" 2550class "GtkScrolledWindow" style "scrolled_window" 2551class "GtkFrame" style "frame" 2552class "GtkSeparatorToolItem" style "toolbar_separator" 2553class "GtkMenuBar" style "menubar" 2554class "GtkMenu" style "menu" 2555class "GtkTextView" style "textview" 2556 2557# Menu and menubar items 2558widget_class "*<GtkMenuItem>*" style "menu_item" 2559widget_class "*<GtkMenuBar>.<GtkMenuItem>*" style "menubar_item" 2560widget_class "*<GtkMenuBar>*" style "menubar_item" 2561widget_class "*<GtkSeparatorMenuItem>*" style "separator_menu_item" 2562 2563# Treeview buttons 2564widget_class "*<GtkTreeView>*<GtkButton>*" style "treeview_header_label" 2565widget_class "*<GtkTreeView>*<GtkButton>" style "treeview_header_button" 2566 2567# Give the file chooser toolbar a border 2568widget_class "*<GtkFileChooserDefault>*<GtkToolbar>" style "inline_toolbar" 2569 2570# Fix padding on regular comboboxes 2571widget_class "*<GtkComboBox>.<GtkButton>" style "combobox" 2572# And disable separators on them 2573widget_class "*<GtkComboBox>.<GtkButton>*<GtkSeparator>" style "disable_separator" 2574 2575# Join together the ComboBoxEntry entry and button 2576widget_class "*<GtkComboBoxEntry>*" style "combobox_entry" 2577 2578# Join the Combo entry and button 2579widget_class "*<GtkCombo>*" style "combobox_entry" 2580# Tweak the padding on the button a little bit because it 2581# uses it a bit differently 2582widget_class "*<GtkCombo>.<GtkButton>" style "combo_button_padding" 2583 2584# Alas we cannot do the same for ComboBoxText because there 2585# isn't a way to apply the style to only the comboboxes that 2586# have an entry inside 2587 2588# Toolbar buttons have different paddings 2589widget_class "*<GtkToolbar>*<GtkButton>" style "toolbar_button" 2590 2591# Notebooks are white, act accordingly 2592widget_class "*<GtkNotebook>*<GtkEntry>" style "notebook_entry" 2593widget_class "*<GtkNotebook>*<GtkProgressBar>" style "notebook_bg" 2594widget_class "*<GtkNotebook>*<GtkSpinButton>" style "notebook_bg" 2595widget_class "*<GtkNotebook>*<GtkScrolledWindow>*<GtkViewport>" style "notebook_bg" 2596widget_class "*<GtkNotebook>*<GimpRuler>" style "notebook_bg" 2597widget_class "*<GtkNotebook>.<GimpDisplayShell>*<GtkEventBox>" style "notebook_bg" 2598widget_class "*<GtkNotebook>*<GtkComboBoxEntry>*" style "notebook_combo" 2599widget_class "*<GtkNotebook>*<GtkCombo>*" style "notebook_combo" 2600 2601# However, stuff inside eventboxes inside notebooks is grey 2602# again, react 2603widget_class "*<GtkNotebook>*<GtkEventBox>*<GtkEntry>" style "normal_entry" 2604widget_class "*<GtkNotebook>*<GtkEventBox>*<GtkProgressBar>" style "normal_bg" 2605widget_class "*<GtkNotebook>*<GtkEventBox>*<GtkSpinButton>" style "normal_bg" 2606widget_class "*<GtkNotebook>*<GtkEventBox>*<GtkComboBoxEntry>*" style "combobox_entry" 2607widget_class "*<GtkNotebook>*<GtkEventBox>*<GtkCombo>*" style "combobox_entry" 2608widget_class "*<GtkNotebook>*<GtkEventBox>*<GtkCombo>.<GtkButton>" style "combo_button_padding" 2609 2610# ComboBoxes tend to draw the button label with text[] 2611# instead of fg[], we need to fix that 2612widget_class "*<GtkComboBox>*<GtkCellView>" style "combobox_cellview" 2613 2614# GTK tooltips 2615widget "gtk-tooltip*" style "tooltip" 2616