The look of the Sublime Text interface is controlled by themes. The term theme
refers strictly to the look of the UI – buttons, select lists, the sidebar,
tabs and so forth. The highlighting of source code, markup and prose is
controlled by a color scheme.
The theme engine for Sublime Text is based on raster graphics. PNGs are used to
prevent texture degradation and provide full alpha control. Each element in the
UI can have up to four layers of textures or fills applied, with properties to
control opacity and padding. The properties set on each element can be
conditionally changed based on user interaction and settings.
Sublime Text themes are implemented via the .sublime-theme format. It is
a JSON format that specifies rules for matching elements and modifying their
appearance.
-
Format
-
Terminology
-
General Information
-
Inheritance
-
Variables
-
Colors
-
Font Sizes
-
Attributes
-
Settings
-
Properties
-
Elements
-
Deprecated
-
Obsolete
-
Customization
Format🔗
A .sublime-theme file contains a single JSON document. The document
should be an object containing a key “rules” with the value of 3179
an array of rules. An optional key “variables” with an object
containing variable/value pairs may be added. 3179
The following is an example of a .sublime-theme file, showing the
format. A complete theme will have many more rules to cover all elements used in
the UI.
[ // Set up the textures for a button { "class": "button_control", "layer0.tint": "#000", "layer0.opacity": 1.0, "layer1.texture": "Theme - Example/textures/button_background.png", "layer1.inner_margin": 4, "layer1.opacity": 1.0, "layer2.texture": "Theme - Example/textures/button_highlight.png", "layer2.inner_margin": 4, "layer2.opacity": 0.0, "content_margin": [4, 8, 4, 8] }, // Show the highlight texture when the button is hovered { "class": "button_control", "attributes": ["hover"], "layer2.opacity": 1.0 }, // Basic text label style { "class": "label_control", "fg": [240, 240, 240], "font.bold": true }, // Brighten labels contained in a button on hover { "class": "label_control", "parents": [{"class": "button_control", "attributes": ["hover"]}], "fg": [255, 255, 255] } ]
Terminology🔗
The primary contents of a theme is an array of rules. Each rule object
contains a "class"
key used to match to an element. In addition to the
"class"
, matching can be further restricted by specifying "attributes"
,
"settings"
, "parents"
and "platforms"
keys. Properties affect the
look or behavior of the element.
- Variables allow reusing values throughout different rules. Variables may
-
contain any type of syntax, but may only be referenced by top-level keys
in a rule.
3179
Most elements have a single class name, although a few have more than one to
allow for both generic, and specific styling. For example, the
popup_control
class can be used to set styles for the auto complete and
HTML popups, however popup_control auto_complete_popup
may be used to
target just the auto complete popup. Multiple "class"
values are separated
by a space. When a rule specified multiple class names, all must be present on
the element for the rule to be applied.
"attributes"
are set by Sublime Text, and indicate the state of user
interaction, or other information about the nature of an element. The value is
an array of strings. Examples include "hover"
, "pressed"
and "dirty"
.
"settings"
uses values from .sublime-settings files to filter rules.
This allowing theme authors to give users the ability to tweak a theme. Themes
may define their own settings, but there are a handful of “default” settings
that should be supported if possible. See Settings for more details.
The value for the "settings"
key may be one of:
-
array of strings
Each string is the name of boolean settings. To check for a
false
value, prefix the setting name with a!
.Example:
["bold_folder_labels", "!always_show_minimap_viewport"]
. -
object
Each key is the name of a setting. A value may be a boolean, string, or array
of strings. If an array of strings is used, the setting will be matched if
any of the strings in the array matches the user’s value. When comparing to a
string, the user’s setting will be coerced to an empty string when not set.Example:
{"bold_folder_labels": true, "file_tab_style": "rounded"}
.
The "parents"
key is an array of objects specifying the "class"
and
"attributes"
that must be matched in a parent element. Note that the
parents must be ordered from furthest to closest parent.
The "platforms"
key is an array of strings specifying the what operating
systems to apply the rule to. Valid options
include "osx"
, "windows"
and "linux"
.
Properties refer to all other keys in the JSON objects. Some properties are
available on all elements, while others are specific to an individual element.
General Information🔗
The follow sections discuss information about images and how to specify styles.
Specificity🔗
Unlike CSS, a Sublime Text theme does not do specificity matching when applying
rules to elements. All rules are tested, in order, against each element.
Subsequent rules that match will override properties from previous rules.
Texture Images🔗
All textures in a theme are specified using PNG images. Each texture should be
saved at “normal” DPI, where each pixel in the file will be mapped to one
device pixel. All file paths in the theme definition should reference the
normal DPI version.
A second version of each texture should also be included at double the DPI, with
@2x
added to the filename right before the extension. Sublime Text will
automatically use the @2x
version when being displayed on a high-DPI
screen. :since:<It is also possible to specify @3x
variants of textures for
screens running at 300% scale or higher <3167>>.
SVG images are not currently supported.
Dimensions🔗
Integer units in a theme referring to dimensions are always specified in
device-independent pixels (DIP). Sublime Text automatically handles scaling UI
elements based on the screen density.
Padding & Margins🔗
Padding and margin may be specified in one of three ways:
-
A single integer value – the same value is applied to the left, top, right and
bottom -
An array of two integers – the first value is applied to the left and right,
while the second value is applied to the top and bottom -
An array of four integers – the values are applied, in order, to the left,
top, right and bottom
Inheritance🔗
A theme may extend another theme, appending rules and overriding variables. To
extend a theme, add a top-level key "extends"
to the JSON object, with a
string value of the base theme.
{ "extends": "Default.sublime-theme", "rules": [ { "class": "label_control", "parents": [{"class": "button_control", "attributes": ["hover"]}], "fg": "red" } ] }
The resulting list of rules will start with the base theme rules followed by the
extending theme rules. Any variables from the extending theme will override
variables with the same name in the base theme. Variable overrides will affect
rules both in the base theme and the extending theme.
3179
Variables🔗
Reusable variables may be defined by a JSON object under the top-level key
"variables"
. Variable names are strings, however the value may be a string,
number, boolean, array or object. Using a variable requires specifying a string
in the format var(example_variable_name)
.
{ "variables": { "light_gray": "rgb(240, 240, 240)" }, "rules": [ { "class": "label_control", "fg": "var(light_gray)" } ] }
Variables may be used as the value for any properties, but
the variable must be the entire value, it may not be embedded within another
variable. The only exception to this rule is that variables may be used as the
base color for the CSS color()
mod function.
3179
Colors🔗
Colors may be specified by CSS or legacy color syntax:
CSS Color Syntax🔗
Since Sublime Text build 3177, colors in themes may now be specified using CSS
syntax, as supported by minihtml Reference. This includes support for hex, rgb()
,
hsl()
, variables and the color mod function. Additionally, all
Predefined Variables that are derived from the color
scheme are available for use.
The color white, as hex
The color white, using rgb()
functional notation
50% opacity white, using hsl()
functional notation
The closest color to red, as defined in the color scheme
50% opacity of the closest color to red, as defined in the color scheme
color(var(--redish) a(0.5)
3179
Legacy Color Syntax🔗
Prior to supporting CSS syntax for colors, themes were only able to specify
colors using the following formats, which are now deprecated.
RGB🔗
Colors in the RGB color space are specified via an array of 3 or 4 numbers, with
the first three being integers ranging from 0
to 255
representing the components red, green and blue. The optional fourth number is
a float ranging from 0.0
to 1.0
that controls the opacity of
the color.
The color white, with full opacity
The color blue, with 50% opacity
HSL🔗
Colors may also be specified using the HSL color space by creating an array of 4
elements, with the first being the string "hsl"
. The second element is
an integer from 0
to 360
specifying the hue. The third is an
integer from 0
to 100
specifying the saturation, and the fourth
is an integer from 0
to 100
specifying the lightness.
A dark magenta, with full opacity
A float from 0.0
to 1.0
may be added as a fifth element to
control the opacity.
A bright teal, with 50% opacity
["hsl", 180, 100, 75, 0.5]
Derived Colors🔗
It is also possible to derive colors from the current global color scheme.
Colors in this format are specified using arrays with specific formats. In all
cases, the first element is the base color, which may
be "foreground"
, "background"
or "accent"
.
Change Opacity of Base Color🔗
To change the opacity of a base color, specify an array of 2 elements, the first
being the base color name and the second being a float from 0.0
to 1.0
. The opacity will be set to the float value.
The color scheme foreground, at 90% opacity
De-saturate Base Color🔗
To de-saturate a base color, specify an array with 3 elements. The first is the
name of the base color, the second is the string "grayscale"
, and the
third is an integer from 0
to 100
which specifies what
percentage of the saturation (in HSL color space) of the existing color should
be retained. A value of 100
means no change, whereas a value
of 0
would cause the color to be completely de-saturated.
The color scheme foreground, with the saturation adjusted to 1/4 of the
original value.
["foreground", "grayscale", 25]
Tint Base Color🔗
5 and 6-element derived colors allow blending a color into the base color. A
5-element colors uses an RGBA color, whereas a 6-element uses an HSLA. In both
cases, the last element, which normally represents the opacity, controls how
much of the secondary color is blended into the base.
The color scheme background, lightened with white
["background", 255, 255, 255, 0.1]
The color scheme accent, tinted with dark red
["accent", "hsl", 0, 100, 30, 0.2]
Colors derived from the color scheme will always be based on the global color
scheme, and will not reflect view-specific color schemes. Certain view-specific
controls in the UI have tinting properties that allow using the view-specific
color scheme colors.
Font Sizes🔗
Font sizes may be specified in the formats:
Numeric🔗
An integer or float to specify the size of the font in pixels.
Examples: 12
, 13.5
.
CSS Format🔗
A string of a px
or rem
CSS font size.
Examples: 12px
, 1.`2rem
The rem
size is based on the global setting font_size
for most
elements. Elements that use a different root font size will specify in the
description.
4050
Attributes🔗
Attributes are specified as an array of strings. Each string is an attribute
name. To check for the absence of an attribute, prepend a !
to the name.
The following attributes are common to all elements:
-
hover
-
Set whenever the user’s mouse is hovered over an element.
Luminosity🔗
Although not available on all elements, many have attributes set based on the
approximate luminosity of the current color scheme. Most elements have the
attributes set based on the global color scheme. Tabs and the tab background,
however, have the attributes based on the color scheme specific to the selected
view.
The attributes are assigned based on the V
value of the background color,
when represented as HSV colors.
-
file_light
-
V
from0.60
—1.00
-
file_medium
-
V
from0.30
—0.59
-
file_medium_dark
-
V
from0.10
—0.29
-
file_dark
-
V
from0.00
—0.09
Settings🔗
Certain Sublime Text settings are design to influence the UI. Themes should
respect these settings and change elements based on them.
- «overlay_scroll_bars»🔗
-
This should affect the style of the scroll bars – generally they should be
semi-transparent and theoverlay
property of the
scroll_area_control
should be set totrue
.
- «always_show_minimap_viewport»🔗
-
If the current viewport area should be highlighted on the minimap even when
the user is not hovering over the minimap.
- «bold_folder_labels»🔗
-
If folder names in the side bar should have the
font.bold
property set totrue
.
- «mouse_wheel_switches_tabs»🔗
-
This is used to control mouse wheel behavior of tabs on Linux. It should be
combined with checking for!enable_tab_scrolling
to change the
mouse_wheel_switch
property of thetabset_control
tofalse
.
- «highlight_modified_tabs»🔗
-
If the tabs of modified files should be highlighted. This setting should be
checked in addition to thedirty
attribute.
- «show_tab_close_buttons»🔗
-
If tabs should have close buttons.
- «inactive_sheet_dimming»🔗
-
If sheets other than the one with the attribute
highlighted
should be
visually de-emphasized usingbackground_modifier
.
4095
Properties🔗
The "rules"
key of a .sublime-theme file is a JSON array of of
objects describing how UI elements should be styled. Every element in the UI
supports the following keys:
-
layer0.*
-
The bottom-most texture layer for the element.
-
layer1.*
-
The second texture layer for the element.
-
layer2.*
-
The third texture layer for the element.
-
layer3.*
-
The fourth texture layer for the element.
-
hit_test_level
-
A float value setting the required opacity of a pixel for a click to be
considering a “hit”.
Layer Properties🔗
Every element in the UI supports up to four texture layers for displaying fill
colors and raster graphics. Each layer has dotted sub-keys in the format
layer#.sub-key
. Valid sub-keys include:
-
layer#.opacity
-
A float value from
0.0
to1.0
that controls the master
opacity of the layer.Example:
0.9
-
layer#.tint
-
A color value of a fill color to apply to the layer.
Example:
[255, 0, 0, 127]
-
layer#.texture
-
A string of the file path to a PNG image, relative to the Packages/
folder.Example:
"Theme - Default/arrow_right.png"
-
layer#.inner_margin
-
Texture images are stretched to fit the element by slicing into a grid of 9
using four lines. See padding & margins for valid formats with which to
specify the margin used to make the slices.Example:
[5, 2, 5, 2]
-
layer#.draw_center
-
A boolean that controls if the center rectangle of the 9-grid created via
layer#.inner_margin
should be drawn. This is an optimization that
allows skipping an unused section of texture.Example:
false
-
layer#.repeat
-
A boolean that controls if the texture should be repeated instead of
stretched.Example:
false
Value Animation🔗
Properties specified by floats may be animated over time. Instead of providing a
single numeric value, the animation is specified with an object including
details of the animation. Value animation is primarily useful for changing
opacity over time. The object keys are:
-
target
-
A float value from
0.0
to1.0
that controls the destination
value.Example:
1.0
-
speed
-
A float value of
1.0
or greater that controls the relative length of
time the animation takes.Example:
1.5
-
interpolation
-
An optional string that allow specifying the use of smoothstep function
instead of the default linear function.Default:
"linear"
Example:
"smoothstep"
Texture Animation🔗
The layer#.texture
sub-key may be an object to specify an animation based on
two or more PNG images. The object keys are:
-
keyframes
-
An array of strings of the paths to PNG images, in order
Example:
["Theme - Default/spinner.png", "Theme - Default/spinner1.png"]
-
loop
-
An optional boolean that controls if the animation should repeat
Default:
false
Example:
true
-
frame_time
-
An optional float specifying how long each frame should be
displayed.1.0
represents 1 second.Default:
0.0333
(30 fps)Example:
0.0166
(60 fps)
Texture Tinting Properties🔗
Certain elements have an available tint value set by the background of current
color scheme. The tint can be modified and applied to a layer#.texture
image.
-
tint_index
-
Controls which layer the tint is applied to. Must be an integer
from0
to3
.
-
tint_modifier
-
An array of four integers in the range
0
to255
. The first
three are blended into the RGB values from the tint color with the fourth
value specifying how much of these RGB modifier values to apply.
Font Properties🔗
Certain textual elements allow setting the following font properties:
-
font.face
-
The name of the font face.
-
font.size
-
The font size.
-
font.bold
-
A boolean, if the font should be bold.
-
font.italic
-
A boolean, if the font should be italic.
-
color
-
A color value to use for the text — the
fg
property is an
alias for this for backwards compatibility.
-
shadow_color
-
A color value to use for the text shadow.
-
shadow_offset
-
A 2-element array containing the X and Y offsets of the shadow
-
A float from
0.0
to1.0
that is multiplied against the
opacity of thecolor
andshadow_color
properties.
Filter Label Properties🔗
Labels used in the quick panel have color control based on selection and
matching:
-
fg
-
A color value for unselected, unmatched text.
-
match_fg
-
A color value for unselected, matched text.
-
bg
-
A color value for the background of an unselected row.
-
selected_fg
-
A color value for selected, unmatched text.
-
selected_match_fg
-
A color value for selected, matched text.
-
bg
-
A color value for the background of a selected row.
-
font.face
-
The name of the font face.
-
font.size
-
The font size.
Data Table Properties🔗
Row-based tables of data provide the following properties:
-
dark_content
-
If the background is dark – used to set the
dark
attribute for
scrollbars.
-
row_padding
-
Padding added to each row, in one of the formats described in Padding &
Margins.
Styled Label Properties🔗
Certain labels allow for additional control over their appearance. They support
the properties:
-
border_color
-
A color value for the border of the label.
-
background_color
-
A color value for the background of the label.
Elements🔗
The following is an exhaustive list of the elements that comprise the Sublime
Text UI, along with supported attributes and properties:
-
Windows
-
Side Bar
-
Tabs
-
Quick Panel
-
Views
-
Auto Complete
-
Panels
-
Status Bar
-
Dialogs
-
Scroll Bars
-
Inputs
-
Buttons
-
Labels
-
Tool Tips
Windows🔗
-
title_bar
-
- Attributes
-
Luminosity
- Properties
-
-
fg
-
A color value to use for the window title text – Mac 10.10
or newer only.
-
bg
-
A color value to use for the title bar background – Mac
10.10 or newer only.
-
The OS style to use for the title
bar —"system"
,"dark"
(Mac/Linux only)
or"light"
(Mac only).Default:
"system"
-
-
window
-
This element can not be styled directly, however it can be used in a
"parents"
key. The luminosity attributes are set based on the global
color scheme.- Attributes
-
Luminosity
-
edit_window
-
This element contains the main editor window, and is intended for use in a
"parents"
key.
-
switch_project_window
-
This element contains the Switch Project window, and is intended for use in
a"parents"
key.
Side Bar🔗
-
sidebar_container
-
The primary sidebar container that handles scrolling.
- Properties
-
-
content_margin
-
The margin around the
sidebar_tree
.
-
-
sidebar_tree
-
A tree control containing multiple
tree_row
s.- Properties
-
-
indent
-
An integer amount to indent each level of the tree structure.
-
indent_offset
-
An additional indent applied to every row, for the sake of positioning
disclosure_button_control
andclose_button
.
-
indent_top_level
-
A boolean if top-level rows in the tree should be indented.
-
spacer_rows
-
A boolean controlling if a blank row should be added between the Open
Files and Folders sections of the sidebar, when both are visible..
-
-
tree_row
-
A row may contain a header, open file, folder or file.
- Attributes
-
-
selectable
-
When a row is selectable.
-
selected
-
When an selectable row is selected.
-
expandable
-
When a row is expandable.
-
expanded
-
When an expandable row is expanded.
-
-
sidebar_heading
-
One of the “Open Files”, “Group #” or “Folders” headings in the sidebar.
- Properties
-
font properties
-
The case modification to use for the heading —
"upper"
,
"lower"
or"title"
.Default:
"upper"
-
-
The container holding information about a file or folder in the sidebar.
Contains different controls based on which section of the sidebar it is
within.Within the Open Files section, this control will contain a
sidebar_label
with the file name, plus possibly avcs_status_badge
.Within the Folders section, this control will contain a folder or file
icon (eithericon_folder
,icon_folder_loading
,icon_folder_dup
oricon_file_type
), asidebar_label
with the file or folder name,
plus possibly avcs_status_badge
.- Attributes
-
-
ignored
-
Files: when a file is ignored.
Folders: when the entire folder is ignored.
-
untracked
-
Files: when a file is new or not recognized.
Folders: when a folder contains one or more untracked files.
-
modified
-
Files: when a file has been changed on disk.
Folders: when a folder contains one or more modified files.
-
missing
-
Folders: when one or more of a folder‘s files is no longer on disk.
-
added
-
Files: when a new file has been newly added to the index.
Folders: when a folder contains one or more added files.
-
staged
-
Files: when a modified file has been added to the index.
Folders: when a folder contains one or more staged files.
-
deleted
-
Folders: when one or more of a folder‘s files has been added to the
index for removal.
-
unmerged
-
Files: when a file is in a conflict state and needs to be resolved.
Folders: when a folder contains one or more unmerged files.
-
- Properties
-
-
content_margin
-
The margin around the contained controls.
-
spacing
-
An integer number of pixels between each contained control.
-
-
sidebar_label
-
Names of open files, folder names and filenames.
- Properties
-
font properties
-
close_button
-
A button to the left of each file in the Open Files section.
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
-
disclosure_button_control
-
An expand/collapse icon present in all
tree_row
s that can be expanded- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
-
icon_folder
-
Used for a folder once the contents have been fully enumerated.
- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_folder_loading
-
Used for a folder while the contents are being enumerated
- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_folder_dup
-
Used for a folder that has been scanned previously in the sidebar. This is
necessary to prevent a possibly infinite list of files due to recursive
symlinks.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_file_type
-
The icon for a file. The
layer0.texture
should not be set since it is
determined dynamically based on theicon
setting provided
by .tmPreferences files.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
An icon contained within
file_system_entry
that is used to display the
status of a file or folder with regards to a Git repository it is contained
in. This icon will only be shown if the settingshow_git_status
istrue
, the file is contained within a Git repository, and the
file has some sort of special state within the repository. A file that is
not shown viagit status
and is not ignored via a .gitignore
rule will have no icon.- Attributes
-
-
ignored
-
Files: when a file is ignored.
Folders: when the entire folder is ignored.
-
untracked
-
Files: when a file is new or not recognized.
Folders: when a folder contains one or more untracked files.
-
modified
-
Files: when a file has been changed on disk.
Folders: when a folder contains one or more modified files.
-
missing
-
Folders: when one or more of a folder‘s files is no longer on disk.
-
added
-
Files: when a new file has been newly added to the index.
Folders: when a folder contains one or more added files.
-
staged
-
Files: when a modified file has been added to the index.
Folders: when a folder contains one or more staged files.
-
deleted
-
Folders: when one or more of a folder‘s files has been added to the
index for removal.
-
unmerged
-
Files: when a file is in a conflict state and needs to be resolved.
Folders: when a folder contains one or more unmerged files.
-
- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
Tabs🔗
-
tabset_control
-
- Attributes
-
Luminosity
- Properties
-
texture tinting properties
-
content_margin
-
The margin around the
tab_control
s.
-
tab_overlap
-
How many DIPs the tabs should overlap.
-
tab_width
-
Default tab width when space is available.
-
tab_min_width
-
The minimum tab width before tab scrolling occurs.
-
tab_height
-
The height of the tabs in DIPs.
-
mouse_wheel_switch
-
If the mouse wheel should switch tabs – this should only be set to
true
if the settingenable_tab_scrolling
isfalse
.
-
-
tab_control
-
- Attributes
-
Luminosity
-
dirty
-
When the associated view has unsaved changed.
-
selected
-
When the associated view is the active view in its group.
-
transient
-
When the associate view is a preview and not fully opened.
-
When the tab is for the sheet with input focus.
-
When the tab is the left-most tab in the tabset.
-
When the tab is the right-most tab in the tabset.
-
When the tab is part of a sheet multi-selection.
-
When the tab is to the left of a selected tab.
-
When the tab is to the left of a hovered tab.
-
When the tab is to the right of a selected tab.
-
When the tab is to the right of a hovered tab.
-
When the tab is overhanging to the left of its sheet, which can occur
during sheet multi-selection.
-
When the tab is overhanging to the right of its sheet, which can occur
during sheet multi-selection.
-
- Properties
-
texture tinting properties
-
content_margin
-
The margin around the
tab_label
.
-
max_margin_trim
-
How much of the left and right
content_margin
may be removed when
tab space is extremely limited.
-
accent_tint_index
-
Controls which layer the accent tint is applied to. Must be an integer
from0
to3
. The accent color is specified by the color
scheme.
-
accent_tint_modifier
-
An array of four integers in the range
0
to255
. The
first three are blended into the RGB values from the accent tint color
with the fourth value specifying how much of these RGB modifier values
to apply.
-
-
tab_label
-
- Attributes
-
-
transient
-
When the associate view is a preview and not fully opened
-
- Properties
-
font properties
-
tab_close_button
-
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
accent_tint_index
-
Controls which layer the accent tint is applied to. Must be an integer
from0
to3
. The accent color is specified by the color
scheme.
-
accent_tint_modifier
-
An array of four integers in the range
0
to255
. The
first three are blended into the RGB values from the accent tint color
with the fourth value specifying how much of these RGB modifier values
to apply.
-
-
scroll_tabs_left_button
-
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
-
scroll_tabs_right_button
-
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
-
show_tabs_dropdown_button
-
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
-
- Attributes
-
-
left_overhang
-
When the tab is overhanging to the left of its sheet, which can occur
during sheet multi-selection.
-
right_overhang
-
When the tab is overhanging to the right of its sheet, which can occur
during sheet multi-selection.
-
- Properties
-
texture tinting properties
Quick Panel🔗
The quick panel is used for the various Goto functionality, the command palette
and is available for use by plugins.
-
overlay_control
-
The container for the quick panel, including the input and data table.
- Specializations
-
To allow for targeting the
overlay_control
when the quick panel
is being used for specific functionality, the following multi-class
selectors are available:-
overlay_control goto_file
-
The Goto File quick panel.
-
overlay_control goto_symbol
-
The Goto Symbol quick panel.
-
overlay_control goto_symbol_in_project
-
The Goto Symbol in Project quick panel.
-
overlay_control goto_line
-
The Goto Line quick panel.
-
overlay_control goto_word
-
The Goto Anything quick panel, filtering by word.
-
overlay_control command_palette
-
The Command Palette.
-
- Properties
-
-
content_margin
-
The margin around the
quick_panel
.
-
4050
-
quick_panel
-
The data table displayed below the input. Normally the height is dynamic so
the layers will not be visible, however the Switch Project window will use
layers for the blank space below the filtered options.- Properties
-
data table properties
-
mini_quick_panel_row
-
A non-file row in
quick_panel
. Contains onequick_panel_label
for
each line of text in the row.- Attributes
-
-
selected
-
When the row is selected.
-
-
quick_panel_row
-
A Goto Anything file row in
quick_panel
. Also used in the Switch Project
window.Contains
quick_panel_label
with the filename, and
quick_panel_path_label
for the file path.- Attributes
-
-
selected
-
When the row is selected.
-
-
A spacing-only container to control the spacing between
quick_panel_label
andquick_panel_path_label
controls when a row
has one or more detail lines.- Properties
-
-
spacing
-
An integer number of pixels between each line of text,
-
-
A container shown to the left of the symbols in the Goto Symbol and Goto
Symbol in Project quick panels. It contains thekind_label
and is used
to indicate the kind of the symbol.This element is also used in
auto_complete
to show the kind of the item
being inserted. A"parents"
key should be used to distinguish the two
uses.The element
kind_container
is always paired with a second class name
indicating the general category the kind belongs to. The categories for
usage in the quick panel are as follows:- Specializations
-
-
kind_container kind_ambiguous
-
When the kind of the item is unknown – no color.
-
kind_container kind_keyword
-
When the item is a keyword – typically pink.
-
kind_container kind_type
-
When the item is a data type, class, struct, interface, enum, trait,
etc – typically purple.
-
kind_container kind_function
-
When the item is a function, method, constructor or subroutine –
typically red.
-
kind_container kind_namespace
-
When the item is a namespace or module – typically blue.
-
kind_container kind_navigation
-
When the item is a definition, label or section – typically yellow.
-
kind_container kind_markup
-
When the item is a markup component, including HTML tags and CSS
selectors – typically orange.
-
kind_container kind_variable
-
When the item is a variable, member, attribute, constant or parameter –
typically cyan.
-
kind_container kind_snippet
-
When the item is a snippet – typically green.
-
kind_container kind_color_redish
-
When the plugin author wants to display red.
-
kind_container kind_color_orangish
-
When the plugin author wants to display orange.
-
kind_container kind_color_yellowish
-
When the plugin author wants to display yellow.
-
kind_container kind_color_greenish
-
When the plugin author wants to display green.
-
kind_container kind_color_cyanish
-
When the plugin author wants to display cyan.
-
kind_container kind_color_bluish
-
When the plugin author wants to display blue.
-
kind_container kind_color_purplish
-
When the plugin author wants to display purple.
-
kind_container kind_color_pinkish
-
When the plugin author wants to display pink.
-
kind_container kind_color_dark
-
When the plugin author wants to display a dark background.
-
kind_container kind_color_light
-
When the plugin author wants to display a light background.
-
- Properties
-
-
content_margin
-
A margin that is added around the
kind_label
.
-
-
A label showing a single unicode character, contained within the
kind_container
.This element is also used in
auto_complete
to show the kind of the item
being inserted. A"parents"
key should be used to distinguish the two
uses.- Properties
-
font properties
-
A container around the
quick_panel_label
when showing the Goto Symbol or
Goto Symbol in Project symbol lists.- Properties
-
-
content_margin
-
A margin that is added around the
quick_panel_label
.
-
-
quick_panel_label
-
Filenames in
quick_panel_row
and all text inmini_quick_panel_row
.- Properties
-
filter label properties
-
quick_panel_path_label
-
File paths in
quick_panel_row
.- Properties
-
filter label properties
-
quick_panel_label key_binding
-
Key bindings show to the right-hand side of
quick_panel_row
.- Properties
-
filter label properties
4073
-
quick_panel_label hint
-
Annotations show to the right-hand side of
quick_panel_row
.- Properties
-
filter label properties
4073
-
quick_panel_detail_label
-
Detail rows in
quick_panel_row
.- Properties
-
-
color
-
A color value to use for the text.
-
link_color
-
A color value to use for links.
-
monospace_color
-
A color value to use for monospace text.
-
monospace_background_color
-
A color value to use for the background of monospace text.
-
4083
Sheets🔗
-
A sheet can have text, image or HTML contents
- Attributes
-
Luminosity
-
When the sheet has input focus.
-
- Properties
-
-
background_modifier
-
A string with a space-separated list of adjusters that are supported by
the color() mod function. Used for implementing
inactive sheet dimming.
-
Views🔗
-
text_area_control
-
This element can not be styled directly since that is controlled by the
color scheme, however it can be used in a"parents"
key.- Attributes
-
Luminosity
-
grid_layout_control
-
The borders displayed between views when multiple groups are visible.
- Properties
-
-
border_color
-
A color value to use for the border.
-
border_size
-
An integer of the border size in DIPs.
-
-
minimap_control
-
Control over the display of the viewport projection on the minimap.
- Properties
-
-
viewport_color
-
A color value to fill the viewport projection with.
-
viewport_opacity
-
A float from
0.0
to1.0
specifying the opacity of the
viewport projection.
-
-
fold_button_control
-
Code folding buttons in the gutter.
- Attributes
-
-
expanded
-
When a section of code is unfolded.
-
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
-
A wrapper around popup windows that allows controlling the shadow.
-
popup_control html_popup
-
The primary container for the HTML popups used by Show Definitions and
third-party packages. The tint of the scroll bar will be set to the
background color of the HTML document.
-
popup_control annotation_popup
-
The primary container for the annotations added to the right-hand side of
the editor pane by build systems and third-party packages.
4050
-
annotation_close_button
-
The close button shown at the left edge of
annotation_popup
.- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
4050
Auto Complete🔗
-
popup_control auto_complete_popup
-
The primary container for the auto complete popup.
-
auto_complete
-
The data table for completion data. The tint is set based on the background
color of the color scheme applied to the view the popup is displayed in.- Properties
-
data table properties
texture tinting properties
-
table_row
-
A row in
auto_complete
.- Attributes
-
-
selected
-
When the user has highlighted a completion.
-
-
A container shown to the left of an auto complete item, which contains the
kind_label
and is used to indicate the kind of the item.This element is also used in the
quick_panel
for Goto Symbol and Goto
Symbol in Project. A"parents"
key should be used to distinguish the two
uses.The element
kind_container
is always paired with a second class name
indicating the general category the kind belongs to. The categories for
usage in the auto complete window are as follows:- Specializations
-
-
kind_container kind_ambiguous
-
When the kind of the item is unknown – no color.
-
kind_container kind_keyword
-
When the item is a keyword – typically pink.
-
kind_container kind_type
-
When the item is a data type, class, struct, interface, enum, trait,
etc – typically purple.
-
kind_container kind_function
-
When the item is a function, method, constructor or subroutine –
typically red.
-
kind_container kind_namespace
-
When the item is a namespace or module – typically blue.
-
kind_container kind_navigation
-
When the item is a definition, label or section – typically yellow.
-
kind_container kind_markup
-
When the item is a markup component, including HTML tags and CSS
selectors – typically orange.
-
kind_container kind_variable
-
When the item is a variable, member, attribute, constant or parameter –
typically cyan.
-
kind_container kind_snippet
-
When the item is a snippet – typically green.
-
- Properties
-
-
content_margin
-
A margin that is added around the
kind_label
.
-
-
A label showing a single unicode character, contained within the
kind_container
.This element is also used in the
quick_panel
for Goto Symbol and Goto
Symbol in Project. Aparents
key should be used to distinguish the two
uses.- Properties
-
font properties
The
rem
root font size is based on the font size of the editor control
the auto complete window is being shown for.
-
A container around the
auto_complete_label
.- Properties
-
-
content_margin
-
A margin that is added around the
auto_complete_label
.
-
-
auto_complete_label
-
Text in a
table_row
.- Properties
-
filter label properties
-
fg_blend
-
A boolean controlling if the
fg
,match_fg
,selected_fg
, and
selected_match_fg
values should be blended onto the foreground
color from the color scheme of the current view.
-
-
auto_complete_label auto_complete_hint
-
The “annotation” hint displayed at the right-hand-side of a
table_row
.- Properties
-
font properties
The
rem
root font size is based on the font size of the editor
control the auto complete window is being shown for.-
fg_blend
-
A boolean controlling if the
color
value should be blended onto the
foreground color from the color scheme of the current view.
-
4073
-
auto_complete_detail_pane
-
A detail pane displayed below the list of auto complete items, containing
theauto_complete_info
spacer, withauto_complete_kind_name_label
andauto_complete_details
inside.- Properties
-
-
content_margin
-
A margin that is added around the child controls.
-
4050
-
Provides spacing between
auto_complete_kind_name_label
and
auto_complete_details
.- Properties
-
-
spacing
-
An integer number of pixels between each contained control.
-
-
auto_complete_kind_name_label
-
A label used to display the name of the auto complete kind.
- Properties
-
font properties
The
rem
root font size is based on the font size of the editor
control the auto complete window is being shown for.styled label properties
4050
-
auto_complete_details
-
A single-line HTML control used to display the details of the auto complete
item.- Properties
-
-
font.face
-
The name of the font face.
-
font.size
-
The font size — the
rem
root font size is based on
the font size of the editor control the auto complete window is being
shown for.
-
color
-
A color value to use for the text.
-
link_color
-
A color value to use for links.
-
monospace_color
-
A color value to use for monospace text.
-
monospace_background_color
-
A color value to use for the background of monospace text.
-
4050
Panels🔗
-
panel_control find_panel
-
The container for the Find and Incremental Find panels.
- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_control replace_panel
-
The container for the Replace panel.
- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_control find_in_files_panel
-
The container for the Find in Files panel.
- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_control input_panel
-
The container for the input panel, which is available via the API and used
for things like file renaming.- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_control console_panel
-
The container for the Console.
- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_control output_panel
-
The container for the output panel, which is available via the API and used
for build results.- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_control switch_project_panel
-
The container for the input in the Switch Project window.
- Properties
-
-
content_margin
-
The margin around the panel contents.
-
-
panel_grid_control
-
The layout grid used to position inputs on the various panels.
- Properties
-
-
inside_spacing
-
An integer padding to place between each cell of the grid.
-
outside_vspacing
-
An integer padding to place above and below the grid.
-
outside_hspacing
-
An integer padding to place to the left and right of the grid.
-
-
panel_close_button
-
The button to close the open panel
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
Status Bar🔗
-
status_bar
-
- Attributes
-
-
panel_visible
-
When a panel is displayed above the status bar
-
- Properties
-
-
content_margin
-
The margin around the
sidebar_button_control
,
status_container
andstatus_buttons
s.
-
-
panel_button_control
-
The panel switcher button on the left side of the status bar.
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
<4050
-
sidebar_button_control
-
The sidebar/panel switcher button on the left side of the status bar.
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
4050
-
status_container
-
The area that contains the current status message.
- Properties
-
-
content_margin
-
The margin around the status message.
-
-
status_button
-
The status buttons that display, and allow changing, the indentation,
syntax, encoding and line endings.- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
min_size
-
An array of two integers specifying the minimum width and height of a
button, in DIPs.
-
-
The container holding the
vcs_branch_icon
,label_control
with the
current branch name, andvcs_changes_annotation
control.- Properties
-
-
content_margin
-
The margin around the contained controls.
-
spacing
-
An integer number of pixels between each contained control.
-
-
An icon shown to the left of the current branch name.
- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
vcs_changes_annotation
-
Displays the number of files that have been added, modified or deleted.
- Properties
-
font properties
styled label properties
3181
Dialogs🔗
-
dialog
-
The Indexer Status and Update windows both use this class for the window
background.
-
progress_bar_control
-
The progress bar container. The progress bar is displayed in the Update
window used for updates on Mac and Windows.
-
progress_gauge_control
-
The bar representing the progress completed so far.
- Properties
-
-
content_margin
-
The margin specifies the height of the bar.
-
Scroll Bars🔗
-
scroll_area_control
-
The scroll area contains the element being scrolled, along with the bar,
track and puck.- Attributes
-
-
When the control can be scrolled vertically.
-
When the control can be scrolled horizontally.
-
- Properties
-
-
content_margin
-
A margin that is added around the content being
scrolled.
-
overlay
-
Sets the scroll bars to be rendered on top of the content.
-
left_shadow
-
A color value to use when drawing a shadow to indicate the
area can be scrolled to the left.
-
left_shadow_size
-
An integer of the width of the shadow to draw when the area can be
scrolled to the left.
-
top_shadow
-
A color value to use when drawing a shadow to indicate the
area can be scrolled to the top.
-
top_shadow_size
-
An integer of the height of the shadow to draw when the area can be
scrolled to the top.
-
right_shadow
-
A color value to use when drawing a shadow to indicate the
area can be scrolled to the right.
-
right_shadow_size
-
An integer of the width of the shadow to draw when the area can be
scrolled to the right.
-
bottom_shadow
-
A color value to use when drawing a shadow to indicate the
area can be scrolled to the bottom.
-
bottom_shadow_size
-
An integer of the height of the shadow to draw when the area can be
scrolled to the bottom.
-
-
scroll_bar_control
-
The scroll bar contains the scroll track. The tint is set based on the
background color of the element being scrolled.- Attributes
-
-
dark
-
When the scroll area content is dark, necessitating a light scroll bar.
-
horizontal
-
When the scroll bar should be horizontal instead of vertical.
-
- Properties
-
texture tinting properties
-
content_margin
-
A margin that is added around the scroll track.
-
-
scroll_track_control
-
The track that the puck runs along. The tint is set based on the background
color of the element being scrolled.- Attributes
-
-
dark
-
When the scroll area content is dark, necessitating a light scroll bar.
-
horizontal
-
When the scroll bar should be horizontal instead of vertical.
-
- Properties
-
texture tinting properties
-
scroll_corner_control
-
The dead space in the bottom right of a
scroll_area_control
when both
the vertical and horizontal scroll bars are being shown.- Attributes
-
-
dark
-
When the scroll area content is dark, necessitating a light scroll bar.
-
- Properties
-
texture tinting properties
-
puck_control
-
The scroll puck, or handle. The tint is set based on the background color of
the element being scrolled.- Attributes
-
-
dark
-
When the scroll area content is dark, necessitating a light scroll bar.
-
horizontal
-
When the scroll bar should be horizontal instead of vertical.
-
- Properties
-
texture tinting properties
Inputs🔗
-
text_line_control
-
The text input used by the Quick Panel, Find, Replace, Find in Files and
Input panels.- Properties
-
-
content_margin
-
The margin around the text.
-
color_scheme_tint
-
A color value to use to tint the background of the color scheme.
-
color_scheme_tint_2
-
A color value to use to add a secondary tint to the
background of the color scheme.
-
-
dropdown_button_control
-
The button to close the open panel.
- Properties
-
-
content_margin
-
For buttons, the margin specifies the dimensions.
-
Buttons🔗
-
button_control
-
Text buttons.
- Attributes
-
-
pressed
-
Set when a button is pressed down.
-
- Properties
-
-
min_size
-
An array of two integers specifying the minimum width and height of a
button, in DIPs.
-
-
icon_button_group
-
A grid controlling the spacing of related icon buttons.
- Properties
-
no layer support
-
spacing
-
An integer number of pixels between each button in the group.
-
-
icon_button_control
-
- Small icon-based buttons in the Find, Find in Files,
-
and Replace panels
- Attributes
-
-
selected
-
When an icon button is toggled on.
-
left
-
When the button is the left-most button in a group.
-
right
-
When the button is the right-most button in a group.
-
-
icon_regex
-
The button to enable regex mode in the Find, Find in Files and Replace
panels.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_case
-
The button to enable case-sensitive mode in the Find, Find in Files and
Replace panels.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_whole_word
-
The button to enable whole-word mode in the Find, Find in Files and Replace
panels.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_wrap
-
The button to enable search wrapping when using the Find and Replace
panels.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_in_selection
-
The button to only search in the selection when using the Find and Replace
panels.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_highlight
-
The button to enable highlighting all matches in the Find and Replace
panels.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_preserve_case
-
The button to enable preserve-case mode when using the Replace panel.
- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_context
-
The button to show context around matches when using the Find in Files
panel.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
icon_use_buffer
-
The button to display results in a buffer, instead of an output panel, when
using the Find in Files panel.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
-
The button to toggle using .gitignore to filter files in the Find in
Files panel.- Properties
-
-
content_margin
-
For icons, the margin specifies the dimensions.
-
Labels🔗
-
label_control
-
Labels are shown in the Find, Replace, Find in File and Input panels.
Additionally, labels are used in the Update window, on textual buttons and
for the text in thestatus_container
.Targeting specific labels can be accomplished by using the
"parents"
key.- Properties
-
font properties
-
title_label_control
-
The title label is used in the About window.
- Properties
-
font properties
Tool Tips🔗
-
tool_tip_control
-
Tool tips shown when hovering over tabs and buttons.
- Properties
-
-
content_margin
-
The margin around the tool tip text.
-
-
tool_tip_label_control
-
Text shown in a tool tip
- Properties
-
font properties
Deprecated🔗
Color Values🔗
Before build 3127, the only way to specify opacity in colors was by using a
4-element array containing all integers from 0
to 255
. The
fourth element controlled the opacity, such that 0
was fully
transparent and 255
was fully opaque. The preferred format is now to
use a float from 0.0
to 1.0
.
Obsolete🔗
As the UI of Sublime Text has adapted over time, certain elements and properties
are no longer applicable or supported.
Elements🔗
The panel_button_control
element was removed from the status bar and
replaced by sidebar_button_control
.
4050
The sheet_container_control
element is never visible to users in recent
versions of Sublime Text.
An element named icon_reverse
used to exist in the find panel to control if
searching would move forward or backwards in the view. This is now controlled
by the Find and Find Prev buttons.
The element named quick_panel_score_label
is no longer present in the Goto
Anything quick panel.
Properties🔗
The blur
property used to be supported to blur the pixel data behind an
element, however it is not currently supported for implementation reasons.
Customization🔗
Users can customize a theme by creating a file with new rules that will be
appended to the original theme definition.
To create a user-specific customization of a theme, create a new file with the
same filename as the theme, but save it in the Packages/User/
directory.
For example, to customize the Default theme, create a file
named Packages/User/Default.sublime-theme. Adding the following rules
to that file will increase the size of the text in the sidebar.
[ { "class": "sidebar_heading", "font.size": 15, }, { "class": "sidebar_label", "font.size": 14 } ]
The Theme
that you’re using modifies the overall look of the UI, which includes things like the sidebar, status bar, tab shape, and so on. At any one time there can only ever be one Theme
active, since it is application wide.
In contrast, colors used in inside of the views used to edit files are controlled by a Color Scheme
. Unlike Themes
, the color scheme can be modified in a tab-by-tab or file-by-file basis.
So in order to change the background color of a file editing view, you need to make changes to the color scheme that you’re using.
The color scheme that is in use is set by the color_scheme
setting, which you can see by selecting Preferences > Settings
from the menu (Preferences
is under Sublime Text
in the menu on MacOS).
If you have a custom color scheme set, you will see it in the right hand pane of this window; otherwise your color scheme is the default, which you will find in the left hand pane.
According to your post, the color scheme that is currently in use is "Packages/Material Theme/schemes/Material-Theme-Darker.tmTheme"
.
This is telling you that the file that needs to be altered is Material-Theme-Darker.tmTheme
, and it is contained inside the Material Theme
package in a folder named schemes
.
How you make the change you desire depends on the extension of the file mentioned in the color_scheme
setting, which itself also depends on the build of Sublime Text 3 that you’re currently using and the author of the theme itself.
Extension is tmTheme
Files of type tmTheme
are XML formatted files based on the Plist file format from MacOS. This is the «classic» or «legacy» color scheme format used in Sublime Text; it’s inherited from TextMate. In order to modify colors in these files, you need to modify the file itself, which requires you to first open the file.
Files in Sublime packages are generally compressed into sublime-package
files, which requires you to create an override for the file to get Sublime to ignore the version in the package and use yours instead.
Occasionally a package may be installed «Unpacked» as a set of files inside of the Packages
folder. The following instructions will work regardless of how the theme that you’re using is installed.
The first step is to open the file that you want to modify. The easiest way to do that is to use PackageResourceViewer (install it first if you’re not already using it):
- Open the command palette and select the
PackageResourceViewer: Open Resource
command by enteringprvor
to filter the list - Select the package that contains the theme (here
Material Theme
) - Select the file that you want to open (here select
schemes
, thenMaterial-Theme-Darker.tmTheme
This opens the file, and what you’re seeing is the file that Sublime is currently using as your color scheme. Any modifications you make to this file will immediately take effect on the color scheme that you’re sing.
Generally speaking you would edit the contents of this file as appropriate to apply any color(s) that you want. In your case you want to modify the background color of the text area, so near the top of the file you’re going to see a section that looks somewhat like this (this is from the default Monokai
color scheme):
<key>settings</key>
<dict>
<key>background</key>
<string>#272822</string>
<key>caret</key>
<string>#F8F8F0</string>
<key>foreground</key>
<string>#F8F8F2</string>
<key>invisibles</key>
<string>#3B3A32</string>
<key>lineHighlight</key>
<string>#3E3D32</string>
<key>selection</key>
<string>#49483E</string>
<key>findHighlight</key>
<string>#FFE792</string>
<key>findHighlightForeground</key>
<string>#000000</string>
<key>selectionBorder</key>
<string>#222218</string>
<key>activeGuide</key>
<string>#9D550FB0</string>
<key>misspelling</key>
<string>#F92672</string>
<key>bracketsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketsOptions</key>
<string>underline</string>
<key>bracketContentsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketContentsOptions</key>
<string>underline</string>
<key>tagsOptions</key>
<string>stippled_underline</string>
</dict>
This sets various global colors for the color scheme. The rest of the file is for applying specific colors to the contents of files based on the syntax of the language that you’re viewing.
In your case you want to modify the background color, so modify the value of the background
property to the color that you want. For you, that would look like this:
<key>background</key>
<string>#1a1a1a</string>
As soon as you save the file, you should see the change immediately take effect in all of your open files.
When you save, if the file was a part of a sublime-package
file, an override
wil be created for this file, which will be used instead of the version in the sublime-package
file.
When that happens, your override will always be in effect even if the package author updates the color scheme. Sublime won’t tell you that this is happening.
The OverrideAudit package will give you warnings when this happens to you, so you can handle the situation by changing your file to match the new one or removing it altogether, if you’re concerned about this.
Extension is sublime-color-scheme
Files of this type are a new type of color scheme format that is JSON based instead of XML based.
At the present time (January 8, 2018) color schemes of this format are only available in development builds, but at some point in the future they will become the new file format for color schemes going forward.
Like most Sublime resources, files of this type are additive
; all resources with the same name from all packages are loaded and combined together at run time.
In order to see what you need to modify here, open the Command Palette and select the View Package File
command by by entering vpf
to filter the command list, then select the appropriate package file from the list presented, which lists all package files in the same format as the color_scheme
setting.
Note: This command is only present in recent development versions of Sublime, so you won’t see it if you’re using an older build; I would assume in that case you also won’t see color schemes in this format, but just in case you can also use the PackageResourceViewer steps from above to look at the file.
This time the file that you see is a JSON interpretation of the same data. Again, here is a relevant section near the top of the file, where this example is the default Monokai
color scheme. Make sure that you DO NOT save this file, just take a look at it.
"globals":
{
"foreground": "var(white3)",
"background": "var(black3)",
"caret": "var(white2)",
"invisibles": "color(var(white3) alpha(0.35))",
"line_highlight": "var(yellow4)",
"selection": "var(grey)",
"selection_border": "var(black2)",
"misspelling": "var(red2)",
"active_guide": "color(var(orange2) alpha(0.69))",
"find_highlight_foreground": "var(black)",
"find_highlight": "var(orange3)",
"brackets_options": "underline",
"brackets_foreground": "color(var(white3) alpha(0.65))",
"bracket_contents_options": "underline",
"bracket_contents_foreground": "color(var(white3) alpha(0.65))",
"tags_options": "stippled_underline"
},
In this example, most of the colors are coming from a variables section just above, which allows you to easily change a color and have its representation change everywhere that the variable is referenced.
In order to alter items in a file of type sublime-color-scheme
, instead of saving this file, you create a new file in your User
package that has the same name, and include in it only those parts of the color scheme that you want to change.
In our example here, you would do that be creating a file with the following contents and saving it in your User
package as Material-Theme-Darker.sublime-color-scheme
.
{
"globals":
{
"background": "rgb(26,26,26)"
}
}
As above, as soon as you save this file, you should see the color change.
This file is combined with the default file that we were looking at, but here we just provide a background color and the rest of the content is taken from the original.
This version of the file (and thus your background color change) will always take effect when this color scheme is active, regardless of what the underlying color scheme thinks the background color should be.
The Theme
that you’re using modifies the overall look of the UI, which includes things like the sidebar, status bar, tab shape, and so on. At any one time there can only ever be one Theme
active, since it is application wide.
In contrast, colors used in inside of the views used to edit files are controlled by a Color Scheme
. Unlike Themes
, the color scheme can be modified in a tab-by-tab or file-by-file basis.
So in order to change the background color of a file editing view, you need to make changes to the color scheme that you’re using.
The color scheme that is in use is set by the color_scheme
setting, which you can see by selecting Preferences > Settings
from the menu (Preferences
is under Sublime Text
in the menu on MacOS).
If you have a custom color scheme set, you will see it in the right hand pane of this window; otherwise your color scheme is the default, which you will find in the left hand pane.
According to your post, the color scheme that is currently in use is "Packages/Material Theme/schemes/Material-Theme-Darker.tmTheme"
.
This is telling you that the file that needs to be altered is Material-Theme-Darker.tmTheme
, and it is contained inside the Material Theme
package in a folder named schemes
.
How you make the change you desire depends on the extension of the file mentioned in the color_scheme
setting, which itself also depends on the build of Sublime Text 3 that you’re currently using and the author of the theme itself.
Extension is tmTheme
Files of type tmTheme
are XML formatted files based on the Plist file format from MacOS. This is the «classic» or «legacy» color scheme format used in Sublime Text; it’s inherited from TextMate. In order to modify colors in these files, you need to modify the file itself, which requires you to first open the file.
Files in Sublime packages are generally compressed into sublime-package
files, which requires you to create an override for the file to get Sublime to ignore the version in the package and use yours instead.
Occasionally a package may be installed «Unpacked» as a set of files inside of the Packages
folder. The following instructions will work regardless of how the theme that you’re using is installed.
The first step is to open the file that you want to modify. The easiest way to do that is to use PackageResourceViewer (install it first if you’re not already using it):
- Open the command palette and select the
PackageResourceViewer: Open Resource
command by enteringprvor
to filter the list - Select the package that contains the theme (here
Material Theme
) - Select the file that you want to open (here select
schemes
, thenMaterial-Theme-Darker.tmTheme
This opens the file, and what you’re seeing is the file that Sublime is currently using as your color scheme. Any modifications you make to this file will immediately take effect on the color scheme that you’re sing.
Generally speaking you would edit the contents of this file as appropriate to apply any color(s) that you want. In your case you want to modify the background color of the text area, so near the top of the file you’re going to see a section that looks somewhat like this (this is from the default Monokai
color scheme):
<key>settings</key>
<dict>
<key>background</key>
<string>#272822</string>
<key>caret</key>
<string>#F8F8F0</string>
<key>foreground</key>
<string>#F8F8F2</string>
<key>invisibles</key>
<string>#3B3A32</string>
<key>lineHighlight</key>
<string>#3E3D32</string>
<key>selection</key>
<string>#49483E</string>
<key>findHighlight</key>
<string>#FFE792</string>
<key>findHighlightForeground</key>
<string>#000000</string>
<key>selectionBorder</key>
<string>#222218</string>
<key>activeGuide</key>
<string>#9D550FB0</string>
<key>misspelling</key>
<string>#F92672</string>
<key>bracketsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketsOptions</key>
<string>underline</string>
<key>bracketContentsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketContentsOptions</key>
<string>underline</string>
<key>tagsOptions</key>
<string>stippled_underline</string>
</dict>
This sets various global colors for the color scheme. The rest of the file is for applying specific colors to the contents of files based on the syntax of the language that you’re viewing.
In your case you want to modify the background color, so modify the value of the background
property to the color that you want. For you, that would look like this:
<key>background</key>
<string>#1a1a1a</string>
As soon as you save the file, you should see the change immediately take effect in all of your open files.
When you save, if the file was a part of a sublime-package
file, an override
wil be created for this file, which will be used instead of the version in the sublime-package
file.
When that happens, your override will always be in effect even if the package author updates the color scheme. Sublime won’t tell you that this is happening.
The OverrideAudit package will give you warnings when this happens to you, so you can handle the situation by changing your file to match the new one or removing it altogether, if you’re concerned about this.
Extension is sublime-color-scheme
Files of this type are a new type of color scheme format that is JSON based instead of XML based.
At the present time (January 8, 2018) color schemes of this format are only available in development builds, but at some point in the future they will become the new file format for color schemes going forward.
Like most Sublime resources, files of this type are additive
; all resources with the same name from all packages are loaded and combined together at run time.
In order to see what you need to modify here, open the Command Palette and select the View Package File
command by by entering vpf
to filter the command list, then select the appropriate package file from the list presented, which lists all package files in the same format as the color_scheme
setting.
Note: This command is only present in recent development versions of Sublime, so you won’t see it if you’re using an older build; I would assume in that case you also won’t see color schemes in this format, but just in case you can also use the PackageResourceViewer steps from above to look at the file.
This time the file that you see is a JSON interpretation of the same data. Again, here is a relevant section near the top of the file, where this example is the default Monokai
color scheme. Make sure that you DO NOT save this file, just take a look at it.
"globals":
{
"foreground": "var(white3)",
"background": "var(black3)",
"caret": "var(white2)",
"invisibles": "color(var(white3) alpha(0.35))",
"line_highlight": "var(yellow4)",
"selection": "var(grey)",
"selection_border": "var(black2)",
"misspelling": "var(red2)",
"active_guide": "color(var(orange2) alpha(0.69))",
"find_highlight_foreground": "var(black)",
"find_highlight": "var(orange3)",
"brackets_options": "underline",
"brackets_foreground": "color(var(white3) alpha(0.65))",
"bracket_contents_options": "underline",
"bracket_contents_foreground": "color(var(white3) alpha(0.65))",
"tags_options": "stippled_underline"
},
In this example, most of the colors are coming from a variables section just above, which allows you to easily change a color and have its representation change everywhere that the variable is referenced.
In order to alter items in a file of type sublime-color-scheme
, instead of saving this file, you create a new file in your User
package that has the same name, and include in it only those parts of the color scheme that you want to change.
In our example here, you would do that be creating a file with the following contents and saving it in your User
package as Material-Theme-Darker.sublime-color-scheme
.
{
"globals":
{
"background": "rgb(26,26,26)"
}
}
As above, as soon as you save this file, you should see the color change.
This file is combined with the default file that we were looking at, but here we just provide a background color and the rest of the content is taken from the original.
This version of the file (and thus your background color change) will always take effect when this color scheme is active, regardless of what the underlying color scheme thinks the background color should be.
Сегодня расскажу о редакторе кода, которым пользуюсь для верстки сайтов уже много лет. Быстрый, удобный и полностью настраиваемый Sublime Text 3.
Мы с нуля настроем его внешний вид, а также применим плагины AutoFileName, BracketHighliter, ColorHighliter, Emmet, GotoCSSDeclaration и Tag, которые существенно помогут нам при верстке сайтов! Ну что ж, от слов к делу!
Внешний вид программы
Первым делом, после установки Sublime Text 3, я настраиваю внешний вид программы.
Боковая панель
Для отображения панели переходим View – Side Bar – Show Open Files. В этой панели будут отображаться наши проекты, то есть папки и файлы нашей верстки. Для наглядности сейчас добавлю один из них. Все что там нужно сделать — это просто перетащить папку с проектом на нашу панель.
Цветовая схема
Далее настраиваю цветовую схему программы и кода, для наглядности открою любой файл, например, с HTML кодом. Для этого два раза кликаю на нужном файле. Теперь перехожу Preferences – Color Scheme, открывается окошко с установленными цветовыми решениями и при выборе той или иной темы внешний вид нашего кода и сама программа будут меняться.
Лично мне не подходит ни один из предустановленных вариантов, поэтому я устанавливаю дополнительную цветовую схему. Огромное их количество можно найти и ознакомиться на сайте с дополнениями к Sublime packagecontrol.io. Я уже знаю какую именно я схему хочу установить, что сейчас и сделаю.
Для того что устанавливать новые цветовые схемы, плагины и прочие дополнения, мне нужно сперва установить установщик этих дополнений. Звучит сложно, но на деле все гораздо проще.
Перехожу в меню Tools – Command Palette, либо нажимаю Ctrl+Shift+P. Открывается вот такое окно с поиском, в поле поиска ввожу install пока не увижу пункт Install Package Control, и нажимаю на него. Спустя несколько секунд получаю сообщение о том, что Package Control успешно установлен. Теперь я могу приступить к установке нужной цветовой схемы.
Для этого опять вызываю Command Palette зажимая Ctrl+Shift+P, в поле поиска опять ввожу install пока не увижу пункт Package Control: Install Package (установить пакет дополнения) нажимаю на него. Немного подождав вижу окно со списком всех доступных дополнений к Sublime. Ну, почти всех.
В поле поиска ввожу название того дополнения, которое хочу установить, в данный момент — это цветовая схема под названием Base16 Color Schemes, точнее это целый пакет с множеством цветовых схем. Нажимаю на найденный пункт и ожидаю установки. Индикатор процесса установки можно увидеть на нижней панели программы. Получив там же короткое сообщение о том, что все установлено перехожу к смене схемы. Для этого открываю уже знакомый пункт меню Preferences – Color Scheme и вижу в открывшемся окне уже большое множество разных вариантов. Меня интересует схема Ocean, ввожу название в поиске, их тут есть две: одна более контрастней другой.
Моя любимая цветовая схема установлена, ты конечно же можешь выбрать себе любую другую.
Общий вид программы мне больше нравится темный, поэтому перехожу Preferences – Theme, и переключаюсь на Adaptive.sublime-theme
Сочетание цветов очень важно для работы с кодом, так как это влияет не только на восприятие, но и на усталость и здоровье твоих глаз. Так что подбери себе цветовую схему так, чтобы тебя ничего в ней не напрягало. И помни про перерывы в работе!
Дополнительные настройки
Дополнительно повысить восприятие кода и комфорт при работе с ним мне помогут следующие дополнительные настройки. Переходим Preferences – Settings. Открывается такое окно разделенное на две части. В левой части настройки по умолчанию, их изменить нельзя, а вот в правой части ты можешь эти настройки переназначить, каждая следующая должна идти через запятую. Вот какие настройки использую я:
"margin": 0, // Убирает отступы
"font_size": 10, // Размер шрифта по умолчанию
"draw_indent_guides": true, // Включает/выключает направляющие линии
"draw_white_space": "all", // Отображает непечатаемые символы
"tab_size": 3, //Размер табуляции
"remeber_open_files": true, // Помнит открытые ранее файлы
Поясню каждую настройку.
"margin": 0, // Убирает отступы
Убирает странные отступы в программе между кодом и боковой панелью, что делает общую картину более компактной.
"font_size": 10, // Размер шрифта по умолчанию
Выставляет размер шрифта по умолчанию.Также быстро изменить размер шрифта, работая с кодом, можно зажав контрол и покрутив колесо мыши.
Если ты вдруг размер изменил случайно, то сбросить его можно перейдя в Preferences – Font — Reset
"draw_indent_guides": true, // Включает/выключает направляющие линии
Эти линии очень полезны для новичка, потому что визуально соединяют открывающий и закрывающий элемент, что существенно помогает в ориентации в коде.
Лично я отключаю их (false) по двум причинам. Первая — я уже не новичок и без них неплохо справляюсь, вторая причина — это следующая настройка.
"draw_white_space": "all", //Отображает непечатаемые символы
Отображает невидимые табуляции и пробелы. То есть это не часть кода, а просто разметка для удобства работы. И вот, если включить и draw_indent_guides и draw_white_space то получатеся кашица которая лично меня напрягает. Что из этого использовать, а что нет — решать тебе.
"tab_size": 3, //Размер табуляции
Размер ширины линии отступа при нажатии Tab. Лично мне нравится 3й размер
"remember_open_files": true, //Помнит открытые файлы
Например мы работали работали, а потом неожиданно закрыли программу Бывает такое? У меня постоянно, так вот эта настройка включает «память» у Sublime и при следующем открытии программы откроются и все последние файлы. И да, память работает и после перезагрузки компа.
Разделение рабочего окна
Еще более улучшить восприятие кода и ускорить процесс верстки нам поможет разделение рабочего окна.
Поскольку практически всегда приходится работать с несколькими разными файлами, например index.html style.css и какой-то js файл, то дополнительным удобством будет разделение окна с кодом на секторы. Варинтов несколько. Переходим в View – Layout и смотрим что тут у нас есть.
Соответственно Single – это вид без разделений как сейчас, Columns: 2, 3, 4 это разбивка по вертикали. Например нажав на Columns: 2 наш экран с кодом разделится пополам, и мы можем часть файлов переместить в пустую колонку, например CSS слева HTML и JS справа, что делает работу более наглядной и быстрой.
Так же у нас есть варианты поделить экран по горизонтали это Rows: 2 и Rows: 3, нажав например на Rows: 3 получим три горизонтальных окна и можно перекинуть JS файл в третье окно. И последний вариант это Grid: 4 который делит экран пополам как по горизонтали, так и по вертикали. В результате получаются четыре окна. Обрати внимание, что переключаться между режимами можно и с помощью горячих клавиш Alt+Shift+ соответствующая цифра.
Так что у тебя есть широкий выбор по вкусу. Я чаще всего использую одно разделение по вертикали.
Подсветки синтаксиса
Конечной настройкой внешнего вида будет настройка подсветки синтаксиса. Слово страшное, однако на деле все просто.
Подсветки синтаксиса – это особое окрашивание цветом того или иного елемента в коде. Например, в этой цветовой схеме в HTML файле краcным выделен тег, зеленым — название класса, белым — текст и так далее. Это делает восприятие кода намного понятнее. Обрати внимание на правый нижний угол окна программы, в зависимости от того как кой файл у нас сейчас активен, CSS HTML JS и так далее происходит переключение отображения кода этого конкретного файла.
Зачем же тут что-то делать если все и так отлично работает? Дело в том что в начальном пакете Sublime установлены пакеты подсветки синтаксиса далеко не для всех форматов.
Например, в дальнейшем я планирую работать с файлами SCSS, открыв его я увижу сплошную простыню из набора белых символов. Не очень удобно, правда?
Так вот, в таких случаях я дополнительно устанавливаю нужный пакет.
Открываем наш привычный Commаnd Palette перейдя Tools – Command Palette, либо нажимаем Ctrl+Shift+P набираем install, жмем Install Package Control и ищем дополнение SCSS. Нажимаем на него, после установки мы можем переключить наше отображение на SCSS. Сейчас все выглядит симпатичнее, не так ли?
Настройка внешнего вида редактора важна, так как мы довольно длительное время проводим за написанием кода. Это влияет на нашу усталость, продуктивность, здоровье да и просто на настроение.
Следующее, что мы сделаем это установим ряд плагинов и дополнений. Их существует огромное количество, а я расскажу про основные, которые активно использую сам и которые в разы ускорят весь процесс верстки. Приступим!
Плагины
AutoFileName
Дело в том, что в процессе верстки часто приходится подключать различные картинки. Этот плагин в разы облегчает процесс подключения. Установим его. Нажимаем Ctrl+Shift+P далее Install Package Control ищем AutoFileName устанавливаем. Попробуем подключить картинку сейчас. Сразу замечаем появление выпадающего меню со списком локальных файлов. Переходим в нужную папку с картинками и видим тут нужный нам файл, а также его размеры, что тоже пригодится.
BracketHighliter
BracketHighliter можно перевести как подсветка кавычек. Установим его. Нажимаем Ctrl+Shift+P, Install Package Control ищем BracketHighliter. Устанавливаем. Тут даже открывается отдельный файл с сообщением об успешной установке. Теперь в нашем коде будет подсвечиваться начальный и конечный элемент, например открывающий и закрывающий тег, начальная и конечная ковычка, открывающая и закрывающая скобка. Это очень помогает с ориентацией в коде.
ColorHighliter
Обрати внимание на этот код — это код цвета, но какого именно непонятно.
Давай установим плагин. Ctrl+Shift+P, Install Package Control ищем ColorHighliter. Опять открывается отдельный файл с сообщением об успешной установке. И сообщения о некой ошибке, игнорируем их. Смотрим на наш код с цветом, и теперь видим что за цвет скрывается за буквенноцифровым кодом. Сам плагин можно дополнительно настроить в меню Tools — ColorHighliter но сейчас не будем останавливаться на этом. Все и так стало намного лучше.
Великий и могучий Emmet
Устанавливаем по наработанной схеме. Ctrl+Shift+P, Install Package Control ищем Emmet. Открывается отдельный файл с сообщением с просьбой перезагрузить программу для окончания установки. Закрываем и открываем Sublime. Получаем сообщение, что все установлено.
Итак, что же умеет Emmet?
Перейдем в HTML файл и попробуем записать тег div с классом .block, для этого нам теперь достаточно поставить точку, написать «block» и нажать клавишу Tab. Мы получим:
<div class="block"></div>
Чтобы сделать более сложную запись, например в тег div с классом .block вставить тег span используем следующую запись:
.block>span
Жмем клавишу Tab и получаем:
<div class="block"><span></span></div>
Крутяк, правда!?
Но и это еще не все, мы можем создавать свои сниппеты, то есть шаблоны/заготовки.
Для этого перейдем Preferences – Package Settings – Emmet – Settings User. Здесь запишем следующее:
{
"snippets":{
"html":{
"snippets":{
"bl":"<div class="block"></div>"
}
}
}
}
Теперь для того чтобы вызвать запись:
<div class="block"></div>
нам достаточно написать bl и нажать клавишу Tab
Из этого следует, что возможности Emmet безграничны, и мы можем настроить свои сниппеты как угодно и работать очень быстро. Подробную информацию о возможностях плагина можно найти на сайте https://emmet.io
GotoCSSDeclaration
Плагин поможет нам с навигацией в коде. Устанавливаем ровно так же как и предыдущие плагины. Далее назначим горячие клавиши для работы с плагином для этого переходим Preferences – Key Bindings, и пишем следующий код
{
"keys": ["ctrl+1"], "command": "goto_css_declaration",
"args": {"goto": "next"}
},
Где [«ctrl+1«] это и есть нужное сочетание клавиш. Сохраняем Cntr+S.
И вот как это работает. У нас должен быть открыт CSS и HTML файлы. CSS как правило очень большой и найти что-то быстро сложно, но это в прошлом. Например, нам нужно изменить CSS для класса content-mainpage кликаем на него мышкой и нажимаем ctrl+1. Вуаля, мы в нужном месте CSS файла.
Tag
Ну и для тех, кто дочитал до этого момента покажу еще один плагин, который установить не так просто, но он точно того стоит.
Зовут его Tag и установить нам придется его вручную. По этой ссылке можно скачать архив с плагином. Далее распаковываем в особую папку программы. Для Windows 10 это C:Users[Подставь свое имя пользователя]AppDataRoamingSublime Text 3Packages. Далее закрываем Sublime и открываем снова и добавляем горячие клавиши открыв Preferences – Key Bindings и дописав следующее:
{ "keys": ["ctrl+`"], "command": "tag_classes" }
Где ctrl+` это и есть наше сочетание клавиш.
Итак, для чего же мы проделали весь этот нелегкий путь? Как правило, в процессе написания, кода мы работаем сначала с HTML потом переносим названия классов в CSS и работаем уже там. Так вот этот перенос делать вручную давольно долго. И тут нам на помощь приходит плагин Tag. Сейчас нам достаточно выделить нужный HTML код, нажать наше сочетание клавиш ctrl+`
и потом вставить результат копирования в наш CSS ctrl+v.
По мотивам выпуска «Sublime Text 3. Настройка, установка, плагины», из серии «Программы и инструменты для верстки сайтов», на YouTube канале «Фрилансер по жизни».
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какой редактор кода используете для верстки сайтов?
47.96%
Sublime text 3
318
40.27%
Visual Studio Code
267
Проголосовали 663 пользователя.
Воздержались 102 пользователя.