Revision Difference
SourceScheme#562532
<cat>Dev.UI</cat>
<title>SourceScheme</title>
<note> This page is best read by those pretty familiar with garrysmod already, New and Junior Developers are **NOT** encourage to _MODIFY_ these files without having a proper understanding of not only how source games handle their files but also how garrysmod itself handles its filesystem as modifying these files without proper due diligence can break the game in unexpected ways.</note>
<warning> Modifying these files are not a part of the addon system which means there are very limited or no safeguards, Before doing anything ensure you have an unedited version of the file you can restore should your edits not be fixable.</warning>
# What is the SourceScheme File
The `SourceScheme.res` file found [HERE](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/resource/SourceScheme.res) is a [Valve KeyValues](https://developer.valvesoftware.com/wiki/KeyValues) file that controls the appearance of engine defined VGUI elements. THESE ARE NOT DERMA ELEMENTS meaning we cannot access them through lua.
# Why Customize it?
Customizing this file allows you to change the appearance of engine based VGUI panels that are not accessible through regular derma. In this file that includes: Main Menu Options, Console and Loading Dialogue.
The file that comes shipped with the game runs perfectly fine and above all else there is no necessity behind updating or changing this file. However for other people like me who really enjoy taking advantage of Garry's Mod open nature and tinkering with everything accessible.
The file that comes shipped with the game runs perfectly fine and above all else there is no necessity behind updating or changing this file. However for people who enjoy taking advantage of the open nature of Garry's Mod, this can be customized on the client as seen below.
<upload src="aaf9e/8dcb36b403dfde0.png" size="124007" name="image.png" />
Above is an example of what iv customized my sourcescheme file to look like. (yes they update transparency on focus)⤶
***
# File Explainer
## Colors
The first subsection within the file, this will contain all the color variables that we will use in the following subsection of `BaseSettings`
The default colors contained within this section are
| RGBA | Preview | Name |
|:----:|:-------:|:-----|
| `255` `255` `255` `255` | ![White] | `White`
| `221` `221` `221` `255` | ![OffWhite] | `OffWhite`
| `190` `190` `190` `255` | ![DullWhite] | `DullWhite`
| `255` `155` ` 0` `255` | ![Orange] | `Orange`
| ` 0` ` 0` ` 0` `128` | ![TransparentBlack] | `TransparentBlack`
| ` 0` ` 0` ` 0` `255` | ![Black] | `Black`
| ` 0` ` 0` ` 0` ` 0` | ![Blank] | `Blank`
| `108` `111` `114` `250` | ![GMod_BG_Opaque] | `GMod_BG_Opaque`
| `108` `111` `114` ` 0` | ![GMod_BG] | `GMod_BG`
| `255` `255` `255` ` 0` | ![GMod_WhiteBlank] | `GMod_WhiteBlank`
| `157` `194` ` 80` `255` | ![SteamLightGreen] | `SteamLightGreen`
| ` 79` ` 79` ` 79` `255` | ![AchievementsLightGrey] | `AchievementsLightGrey`
| ` 55` ` 55` ` 55` `255` | ![AchievementsDarkGrey] | `AchievementsDarkGrey`
| `130` `130` `130` `255` | ![AchievementsInactiveFG] | `AchievementsInactiveFG`
Adding your own colors this key is simple just follow the formatting of the document.
[White]: https://files.facepunch.com/wiki/files/b5608/8dc54e5b3c9eec6.webp
[OffWhite]: https://files.facepunch.com/wiki/files/b5608/8dc54e6bf24176f.webp
[DullWhite]: https://files.facepunch.com/wiki/files/b5608/8dc54e6c4aebdd5.webp
[Orange]: https://files.facepunch.com/wiki/files/b5608/8dc54e6cb7f40f8.webp
[TransparentBlack]: https://files.facepunch.com/wiki/files/b5608/8dc54e93d7b20bd.webp
[Black]: https://files.facepunch.com/wiki/files/b5608/8dc54e6d6d03fd5.webp
[Blank]: https://files.facepunch.com/wiki/files/b5608/8dc54e6e2551d8e.webp
[GMod_BG_Opaque]: https://files.facepunch.com/wiki/files/b5608/8dc54e6dbf82b3e.webp
[GMod_BG]: https://files.facepunch.com/wiki/files/b5608/8dc54e6e9171d6b.webp
[GMod_WhiteBlank]: https://files.facepunch.com/wiki/files/b5608/8dc54e6f0912bf2.webp
[SteamLightGreen]: https://files.facepunch.com/wiki/files/b5608/8dc54e6f704cee4.webp
[AchievementsLightGrey]: https://files.facepunch.com/wiki/files/b5608/8dc54e6fb19274d.webp
[AchievementsDarkGrey]: https://files.facepunch.com/wiki/files/b5608/8dc54e6ff3f637c.webp
[AchievementsInactiveFG]: https://files.facepunch.com/wiki/files/b5608/8dc54e703ed210e.webp
## BaseSettings
Here is where you can actually customize the color of the panels.
<note>Because of Garrys Mods progression over time some of these panels are not used anywhere anymore but their remains still exist in this file, I will point out all the values that I could note identify.
</note>
```
// The Default Border that surrounds most/all of the vgui elements
//Border.Bright "UNKNOWN"
//Border.Dark "UNKNOWN"
Border.Selection "Black" // Border for Elements that should standout for selection
Border.DarkSolid "40 40 40 255" // Border used to make elements stand out from Background
Border.Subtle "80 80 80 255" // Subtle Border used on elements.
// Button - Single Click Action Buttons
Button.TextColor "82 82 82 255" // Default Text Color
Button.BgColor "227 227 227 255" // Default Background Color
Button.ArmedTextColor "46 114 178 255" // Hover Text Color
Button.ArmedBgColor "240 240 240 255" // Hover Background Color
Button.DepressedTextColor "White" // Clicked Text Color
Button.DepressedBgColor "84 178 245 255" // Clicked Background Color
//Button.FocusBorderColor "UNKNOWN"
// CheckButtons
CheckButton.TextColor "White" // Text Label Color
CheckButton.SelectedTextColor "White" // Checked Text Label Color
CheckButton.BgColor "White" // Background of Checkbox Area
CheckButton.Border1 "Border.Subtle" // Border Color of Left and Top Walls
CheckButton.Border2 "Border.Subtle" // Border Color of Right and Bottom Walls
CheckButton.Check "Black" // color of the check itself
CheckButton.DisabledFgColor "Black" // color of the check itself when disabled
CheckButton.HighlightFgColor "OffWhite" // Hovered Text Color
CheckButton.ArmedBgColor "Blank" // Hovered Background Color
//CheckButton.DepressedBgColor "UNKNOWN"
CheckButton.DisabledBgColor "180 180 180 255" // Disabled Background Color
//This references the arrow within the ComboBox and not the actual ComboBox
ComboBoxButton.ArrowColor "81 81 81 255" // Default Color of Triangle
ComboBoxButton.ArmedArrowColor "110 110 110 255" // Hovered Triangle Color
ComboBoxButton.BgColor "GMod_WhiteBlank" // Box Surrounding Triangle
ComboBoxButton.DisabledBgColor "GMod_WhiteBlank" // Disabled Background
// Frames
Frame.TitleTextInsetX 16 // Title Text Inset
Frame.ClientInsetX 8 // Frame Padding for Child Elements Along X Axis
Frame.ClientInsetY 6 // Frame Padding for Child Elements Along Y Axis
Frame.BgColor "GMod_BG_Opaque" // Default Background Color
Frame.OutOfFocusBgColor "97 100 102 240" // Color When Not Focused
Frame.FocusTransitionEffectTime "0.3" // Time it takes to transition between focus states
Frame.TransitionEffectTime "0.3" // Time it takes for panel to open (and close?)
Frame.AutoSnapRange "0" // Distance (In Pixels?) it takes to snap to another object
FrameGrip.Color1 "200 200 200 196" // Bottom Right Grip Smaller Lines
FrameGrip.Color2 "0 0 0 196" // Bottom Right Grid Larger Lines
FrameTitleButton.FgColor "200 200 200 196" // In Focus Color of X for close button
FrameTitleButton.BgColor "GMod_BG" // In Focus Color of Background Surrounding X
FrameTitleButton.DisabledFgColor "255 255 255 192" // Out of Focus Color of X
FrameTitleButton.DisabledBgColor "GMod_BG" // Out of Focus Color of Background Surrounding X
FrameTitleBar.Font "UiBold" // Font Used for Name of Frame
FrameTitleBar.TextColor "255 255 255 204" // Default / Focused Text Color
FrameTitleBar.BgColor "GMod_BG" // Default / Focused Background Color
FrameTitleBar.DisabledTextColor "255 255 255 91" // Out of Focus Text Color
FrameTitleBar.DisabledBgColor "GMod_BG" // Out of Focus Background Color
// UnUsed in Gmod - Frame Button for Min, Max, Close Actions
// This also isnt positioned properly so it just needs to stay invis
FrameSystemButton.FgColor "Blank"
FrameSystemButton.BgColor "Blank"
FrameSystemButton.Icon ""
FrameSystemButton.DisabledIcon ""
// UNKNOWN
//GraphPanel.FgColor "White"
//GraphPanel.BgColor "TransparentBlack"
// Labels
Label.TextDullColor "DullWhite" // Color of non Interactive Label
Label.TextColor "OffWhite" // Default Label Color
//Label.TextBrightColor "UNKNOWN"
Label.SelectedTextColor "White" // Color When Text Is Selected
Label.BgColor "GMod_BG" // Default Label Background Color
Label.DisabledFgColor1 "110 110 110 255" // DropShadow Color of Disabled Labels
Label.DisabledFgColor2 "50 50 50 255" // Main Color of Disabled Labels
// Menu - Console Autocompletion
Menu.TextColor "80 80 80 255"
Menu.BgColor "233 233 233 255"
Menu.ArmedTextColor "White"
Menu.ArmedBgColor "132 183 241 255"
Menu.TextInset "6"
// Main Panel everything is parent to, fills entire screen
//Panel.FgColor "UNKNOWN" // Presumely the foreground color but could not find a place where this is used
Panel.BgColor "108 111 114 0" // Needs to be Alpha 0, Otherwise is fill screen with this color
// Loading Dialogue Progress Bar
ProgressBar.FgColor "White" // The White Boxes that Fill Up
ProgressBar.BgColor "TransparentBlack" // The Background
// PropertySheet - most Noteably the tabs in the option menu
PropertySheet.TextColor "10 10 10 200" // Default Text
PropertySheet.SelectedTextColor "10 10 10 255" // Text Color for Currently Slected Tab
//PropertySheet.SelectedBgColor "UNKNOWN"
PropertySheet.TransitionEffectTime "0.25" // time to change from one tab to another
//PropertySheet.BgColor "UNKNOWN"
// Unable to Locate / Depreciated
//RadioButton.TextColor "OffWhite"
//RadioButton.SelectedTextColor "White"
// Console Text
RichText.TextColor "OffWhite" // Default Text Color
RichText.BgColor "TransparentBlack" // Background for the Text Area
RichText.SelectedTextColor "White" // Text Color when highlighted
RichText.SelectedBgColor "0 168 255 204" // Background Color for selected text characters
// Scrollbar
ScrollBar.Wide 15
// Scrollbar Up and Down Buttons (Console)
ScrollBarButton.FgColor "60 60 60 255" // Color of Arrows
ScrollBarButton.BgColor "207 207 207 255" // Background of Buttons
ScrollBarButton.ArmedFgColor "20 65 72 255" // Hover Text Color
ScrollBarButton.ArmedBgColor "210 237 255 255" // Hover Background Color
ScrollBarButton.DepressedFgColor "9 119 226 255" // Clicked Text Color
ScrollBarButton.DepressedBgColor "31 207 248 255" // Clicked Background
// Scrollbar Track and Grip
ScrollBarSlider.FgColor "220 220 220 255" // Slider Grip Color
ScrollBarSlider.BgColor "184 184 184 229" // Sliders Track Color
// Options --> KeyBoard
SectionedListPanel.HeaderTextColor "50 50 50 255" // Header Text Color
SectionedListPanel.HeaderBgColor "Blank" // Header Background Color
SectionedListPanel.DividerColor "0 0 0 150" // Divider Color
//SectionedListPanel.TextColor "UNKNOWN"
SectionedListPanel.BrightTextColor "40 40 40 255" // Text Color of Each Item in List
SectionedListPanel.BgColor "White" // Background of Entire Element
SectionedListPanel.SelectedTextColor "White" // Color of Selected Text
SectionedListPanel.SelectedBgColor "0 168 255 204" // Color of Selected Text Background
SectionedListPanel.OutOfFocusSelectedTextColor "Black" // Selected Text Color When Out of Focus
SectionedListPanel.OutOfFocusSelectedBgColor "132 183 241 100" // Background of Selected Text When out of Focus
// Slider - Numerical Range Selector Thing
Slider.NobColor "220 220 220 255" // Color of The Thing you Grab
Slider.TextColor "180 180 180 255" // Text and Markers Below Element
Slider.TrackColor "184 184 184 229" // Track Color
Slider.DisabledTextColor1 "110 110 110 255" // Accent Color of Disabled Markers
Slider.DisabledTextColor2 "50 50 50 255" // Main Color of Disabled Markers
// Text Entry
TextEntry.TextColor "10 10 10 255" // Default Text Color
TextEntry.BgColor "White" // Default Background Color
TextEntry.CursorColor "10 10 10 255" // Blinking Cursor Color
TextEntry.DisabledTextColor "128 128 128 255" // Disabled Text Color
TextEntry.DisabledBgColor "192 192 192 255" // Disabled Background Color
TextEntry.SelectedTextColor "10 10 10 255" // Selected Text Color
TextEntry.SelectedBgColor "0 168 255 204" // Selected Background Color
TextEntry.OutOfFocusSelectedBgColor "132 183 241 100" // Out of Focus Background Color
//TextEntry.FocusEdgeColor "UNKNOWN"
// UNKNOWN
//ToggleButton.SelectedTextColor "UNKOWN"
// ToolTip
Tooltip.TextColor "110 102 60 255" // Color of Text in Popup Tooltip
Tooltip.BgColor "249 238 181 255" // Color of Background in Popup Tooltip
// Background for vgui_drawtree 1 cmd
//TreeView.BgColor "TransparentBlack"
// UNKNOWN
//WizardSubPanel.BgColor "Blank"
// UNKNOWN
//MainMenu.TextColor "UNKNOWN"
//MainMenu.ArmedTextColor "UNKNOWN"
//MainMenu.DepressedTextColor "UNKNOWN"
//MainMenu.MenuItemHeight "0"
//MainMenu.Inset "0"
//MainMenu.Backdrop "UNKNOWN"
// Console Text Colors
Console.TextColor "OffWhite" // Text of Cmds entered by user
//Console.DevTextColor "UNKNOWN"
// UNKNOWN
//NewGame.TextColor "UNKNOWN"
//NewGame.FillColor "UNKNOWN"
//NewGame.SelectionColor "UNKNOWN"
//NewGame.DisabledColor "UNKNOWN"
// UNKNOWN
//"QuickListBGDeselected" "UNKNOWN"
//"QuickListBGSelected" "UNKNOWN"
```
# BitmapFontFiles
Contains a singular special bitmap font used by the UI buttons. Upon further testing i was able to completely remove this section and have things still appear normal.
```
// Bitmap Fonts are ****VERY*** expensive static memory resources so they are purposely sparse
BitmapFontFiles
{
// UI buttons, custom font, (256x64)
"Buttons" "materials/vgui/fonts/buttons_32.vbf"
}
```
# Fonts
This is where all the fonts needed to run these engine panels are defined.
Some fields are conditional, indicated by the `[$WIN32]` or `[$X360]` [Here is the relevant Source 2013 SDK code for how these are elvaluated](https://github.com/ValveSoftware/source-sdk-2013/blob/0d8dceea4310fde5706b3ce1c70609d72a38efdf/sp/src/tier1/KeyValues.cpp#L2055C1-L2086C2)
It would be overly complex and confusing to try and document all possible locations where each of these fonts are used so instead of bloating this section with the source ill just list a few good notes I had while modifying my copy
Baseline fonts used
- Courier New
- Lucida Console
- Tahoma
- Verdana
- Helvetica Bold
- Marlett (Symbol font idk where its used)
- Trebuchet MS
- FixedSys
- HalfLife2 (Weapon Icons)
# Borders
These are basic border definitions for each panel. I personally haven't edited the borders at all so to keep the page short ill just say look at the [Original File](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/resource/SourceScheme.res)
# Custom Font Files
Loads custom ttf files that are not already in the `/fonts` subdirectory.