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