Restyled the client frame

- Created new substance theme "Obsidian"
- Created new ColorScheme file to hold all globally used colors
- Darkened the client frame using the substance color scheme file
- Changed substance's colorization factor to 1
- Tweaked the coloring on the dev plugin panel
- Set the UI default foreground color on Buttons and MenuItems to White.
This commit is contained in:
Ruben Amendoeira
2018-04-22 03:28:45 +01:00
parent 509c9e61dc
commit 327c7b9c3b
8 changed files with 499 additions and 3 deletions

View File

@@ -32,6 +32,7 @@ import javax.swing.JButton;
import javax.swing.JPanel;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.PluginPanel;
@Slf4j
@@ -52,6 +53,8 @@ public class DevToolsPanel extends PluginPanel
this.plugin = plugin;
this.widgetInspector = widgetInspector;
setBackground(ColorScheme.DARK_GRAY_COLOR);
varTracker = new VarTracker(client);
add(createOptionsPanel());
}
@@ -59,6 +62,7 @@ public class DevToolsPanel extends PluginPanel
private JPanel createOptionsPanel()
{
final JPanel container = new JPanel();
container.setBackground(ColorScheme.DARK_GRAY_COLOR);
container.setLayout(new GridLayout(0, 2, 3, 3));
final JButton renderPlayersBtn = new JButton("Players");

View File

@@ -67,11 +67,12 @@ import net.runelite.client.events.PluginToolbarButtonAdded;
import net.runelite.client.events.PluginToolbarButtonRemoved;
import net.runelite.client.events.TitleToolbarButtonAdded;
import net.runelite.client.events.TitleToolbarButtonRemoved;
import net.runelite.client.ui.skin.SubstanceRuneLiteLookAndFeel;
import net.runelite.client.input.KeyManager;
import net.runelite.client.util.OSType;
import net.runelite.client.util.OSXUtil;
import net.runelite.client.util.SwingUtil;
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
import org.pushingpixels.substance.internal.SubstanceSynapse;
import org.pushingpixels.substance.internal.utils.SubstanceCoreUtilities;
import org.pushingpixels.substance.internal.utils.SubstanceTitlePaneUtilities;
@@ -327,7 +328,7 @@ public class ClientUI
SwingUtil.setupDefaults();
// Use substance look and feel
SwingUtil.setTheme(new SubstanceGraphiteLookAndFeel());
SwingUtil.setTheme(new SubstanceRuneLiteLookAndFeel());
// Use custom UI font
SwingUtil.setFont(FontManager.getRunescapeFont());
@@ -362,6 +363,8 @@ public class ClientUI
navContainer.setLayout(new BorderLayout(0, 0));
navContainer.setMinimumSize(new Dimension(0, 0));
navContainer.setMaximumSize(new Dimension(0, Integer.MAX_VALUE));
// To reduce substance's colorization (tinting)
navContainer.putClientProperty(SubstanceSynapse.COLORIZATION_FACTOR, 1.0);
container.add(navContainer);
pluginToolbar = new ClientPluginToolbar();
@@ -565,6 +568,7 @@ public class ClientUI
/**
* Get offset of game canvas in game window
*
* @return game canvas offset
*/
public Point getCanvasOffset()

View File

@@ -0,0 +1,60 @@
/*
* Copyright (c) 2018, Psikoi <https://github.com/psikoi>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.ui;
import java.awt.Color;
/**
* This class serves to hold commonly used UI colors.
*/
public class ColorScheme
{
/* The orange color used for the branding's accents */
public static final Color BRAND_ORANGE = new Color(220, 138, 0);
public static final Color DARKER_GRAY_COLOR = new Color(30, 30, 30);
public static final Color DARK_GRAY_COLOR = new Color(40, 40, 40);
public static final Color MEDIUM_GRAY_COLOR = new Color(77, 77, 77);
public static final Color LIGHT_GRAY_COLOR = new Color(165, 165, 165);
public static final Color DARK_GRAY_HOVER_COLOR = new Color(35, 35, 35);
/* The color for the green progress bar (used in ge offers, farming tracker, etc)*/
public static final Color PROGRESS_COMPLETE_COLOR = new Color(55, 240, 70);
/* The color for the red progress bar (used in ge offers, farming tracker, etc)*/
public static final Color PROGRESS_ERROR_COLOR = new Color(230, 30, 30);
/* The color for the orange progress bar (used in ge offers, farming tracker, etc)*/
public static final Color PROGRESS_INPROGRESS_COLOR = new Color(230, 150, 30);
/* The color for the price indicator in the ge search results */
public static final Color GRAND_EXCHANGE_PRICE = new Color(110, 225, 110);
/* The color for the high alch indicator in the ge search results */
public static final Color GRAND_EXCHANGE_ALCH = new Color(240, 207, 123);
/* The background color of the scrollbar's track */
public static final Color SCROLL_TRACK_COLOR = new Color(25, 25, 25);
}

View File

@@ -60,10 +60,12 @@ public abstract class PluginPanel extends JPanel
{
setBorder(BORDER_PADDING);
setLayout(new GridLayout(0, 1, 0, 3));
setBackground(ColorScheme.DARK_GRAY_COLOR);
final JPanel northPanel = new JPanel();
northPanel.setLayout(new BorderLayout());
northPanel.add(this, BorderLayout.NORTH);
northPanel.setBackground(ColorScheme.DARK_GRAY_COLOR);
scrollPane = new JScrollPane(northPanel);
scrollPane.getVerticalScrollBar().setUnitIncrement(16); //Otherwise scrollspeed is really slow

View File

@@ -0,0 +1,220 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* Copyright (c) 2018, Psikoi <https://github.com/psikoi>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.ui.skin;
import javax.swing.AbstractButton;
import org.pushingpixels.substance.api.ComponentState;
import org.pushingpixels.substance.api.SubstanceColorSchemeBundle;
import org.pushingpixels.substance.api.SubstanceSkin;
import org.pushingpixels.substance.api.SubstanceSlices.ColorSchemeAssociationKind;
import org.pushingpixels.substance.api.SubstanceSlices.DecorationAreaType;
import org.pushingpixels.substance.api.colorscheme.ColorSchemeSingleColorQuery;
import org.pushingpixels.substance.api.colorscheme.SubstanceColorScheme;
import org.pushingpixels.substance.api.painter.border.ClassicBorderPainter;
import org.pushingpixels.substance.api.painter.border.CompositeBorderPainter;
import org.pushingpixels.substance.api.painter.border.DelegateBorderPainter;
import org.pushingpixels.substance.api.painter.decoration.MatteDecorationPainter;
import org.pushingpixels.substance.api.painter.fill.FractionBasedFillPainter;
import org.pushingpixels.substance.api.painter.highlight.ClassicHighlightPainter;
import org.pushingpixels.substance.api.painter.overlay.BottomLineOverlayPainter;
import org.pushingpixels.substance.api.painter.overlay.BottomShadowOverlayPainter;
import org.pushingpixels.substance.api.painter.overlay.TopBezelOverlayPainter;
import org.pushingpixels.substance.api.painter.overlay.TopLineOverlayPainter;
import org.pushingpixels.substance.api.shaper.ClassicButtonShaper;
import org.pushingpixels.substance.internal.utils.SubstanceColorUtilities;
public class ObsidianSkin extends SubstanceSkin
{
/**
* Display name for <code>this</code> skin.
*/
private static final String NAME = "RuneLite";
/**
* Creates a new <code>RuneLite</code> skin.
*/
ObsidianSkin()
{
final SubstanceSkin.ColorSchemes schemes = SubstanceSkin
.getColorSchemes(getClass().getResource(NAME + ".colorschemes"));
final SubstanceColorScheme activeScheme = schemes.get("RuneLite Active");
final SubstanceColorScheme enabledScheme = schemes.get("RuneLite Enabled");
final SubstanceColorSchemeBundle defaultSchemeBundle = new SubstanceColorSchemeBundle(
activeScheme, enabledScheme, enabledScheme);
defaultSchemeBundle.registerColorScheme(enabledScheme, 0.6f,
ComponentState.DISABLED_UNSELECTED);
defaultSchemeBundle.registerColorScheme(activeScheme, 0.6f,
ComponentState.DISABLED_SELECTED);
// borders
final SubstanceColorScheme borderDisabledSelectedScheme = schemes
.get("RuneLite Selected Disabled Border");
final SubstanceColorScheme borderScheme = schemes.get("RuneLite Border");
defaultSchemeBundle.registerColorScheme(borderDisabledSelectedScheme,
ColorSchemeAssociationKind.BORDER, ComponentState.DISABLED_SELECTED);
defaultSchemeBundle.registerColorScheme(borderScheme, ColorSchemeAssociationKind.BORDER);
// marks
final SubstanceColorScheme markActiveScheme = schemes.get("RuneLite Mark Active");
defaultSchemeBundle.registerColorScheme(markActiveScheme, ColorSchemeAssociationKind.MARK,
ComponentState.getActiveStates());
defaultSchemeBundle.registerColorScheme(markActiveScheme, 0.6f,
ColorSchemeAssociationKind.MARK, ComponentState.DISABLED_SELECTED,
ComponentState.DISABLED_UNSELECTED);
// separators
final SubstanceColorScheme separatorScheme = schemes.get("RuneLite Separator");
defaultSchemeBundle.registerColorScheme(separatorScheme,
ColorSchemeAssociationKind.SEPARATOR);
// tab borders
defaultSchemeBundle.registerColorScheme(schemes.get("RuneLite Tab Border"),
ColorSchemeAssociationKind.TAB_BORDER, ComponentState.getActiveStates());
final SubstanceColorScheme watermarkScheme = schemes.get("RuneLite Watermark");
this.registerDecorationAreaSchemeBundle(defaultSchemeBundle, watermarkScheme,
DecorationAreaType.NONE);
final SubstanceColorSchemeBundle decorationsSchemeBundle = new SubstanceColorSchemeBundle(
activeScheme, enabledScheme, enabledScheme);
decorationsSchemeBundle.registerColorScheme(enabledScheme, 0.5f,
ComponentState.DISABLED_UNSELECTED);
// borders
decorationsSchemeBundle.registerColorScheme(borderDisabledSelectedScheme,
ColorSchemeAssociationKind.BORDER, ComponentState.DISABLED_SELECTED);
decorationsSchemeBundle.registerColorScheme(borderScheme,
ColorSchemeAssociationKind.BORDER);
// marks
decorationsSchemeBundle.registerColorScheme(markActiveScheme,
ColorSchemeAssociationKind.MARK, ComponentState.getActiveStates());
// separators
final SubstanceColorScheme separatorDecorationsScheme = schemes
.get("RuneLite Decorations Separator");
decorationsSchemeBundle.registerColorScheme(separatorDecorationsScheme,
ColorSchemeAssociationKind.SEPARATOR);
final SubstanceColorScheme decorationsWatermarkScheme = schemes
.get("RuneLite Decorations Watermark");
this.registerDecorationAreaSchemeBundle(decorationsSchemeBundle, decorationsWatermarkScheme,
DecorationAreaType.TOOLBAR, DecorationAreaType.GENERAL, DecorationAreaType.FOOTER);
final SubstanceColorSchemeBundle headerSchemeBundle = new SubstanceColorSchemeBundle(activeScheme,
enabledScheme, enabledScheme);
headerSchemeBundle.registerColorScheme(enabledScheme, 0.5f,
ComponentState.DISABLED_UNSELECTED);
// borders
final SubstanceColorScheme headerBorderScheme = schemes.get("RuneLite Header Border");
headerSchemeBundle.registerColorScheme(borderDisabledSelectedScheme,
ColorSchemeAssociationKind.BORDER, ComponentState.DISABLED_SELECTED);
headerSchemeBundle.registerColorScheme(headerBorderScheme,
ColorSchemeAssociationKind.BORDER);
// marks
headerSchemeBundle.registerColorScheme(markActiveScheme, ColorSchemeAssociationKind.MARK,
ComponentState.getActiveStates());
headerSchemeBundle.registerHighlightColorScheme(activeScheme, 0.7f,
ComponentState.ROLLOVER_UNSELECTED, ComponentState.ROLLOVER_ARMED,
ComponentState.ARMED);
headerSchemeBundle.registerHighlightColorScheme(activeScheme, 0.8f,
ComponentState.SELECTED);
headerSchemeBundle.registerHighlightColorScheme(activeScheme, 1.0f,
ComponentState.ROLLOVER_SELECTED);
final SubstanceColorScheme headerWatermarkScheme = schemes.get("RuneLite Header Watermark");
this.registerDecorationAreaSchemeBundle(headerSchemeBundle, headerWatermarkScheme,
DecorationAreaType.PRIMARY_TITLE_PANE, DecorationAreaType.SECONDARY_TITLE_PANE,
DecorationAreaType.HEADER);
setTabFadeStart(0.2);
setTabFadeEnd(0.9);
// Add overlay painters to paint drop shadows along the bottom
// edges of toolbars and footers
this.addOverlayPainter(BottomShadowOverlayPainter.getInstance(),
DecorationAreaType.TOOLBAR);
this.addOverlayPainter(BottomShadowOverlayPainter.getInstance(), DecorationAreaType.FOOTER);
// add an overlay painter to paint a dark line along the bottom
// edge of toolbars
final BottomLineOverlayPainter toolbarBottomLineOverlayPainter = new BottomLineOverlayPainter(
(SubstanceColorScheme scheme) -> scheme.getUltraDarkColor().darker());
this.addOverlayPainter(toolbarBottomLineOverlayPainter, DecorationAreaType.TOOLBAR);
// add an overlay painter to paint a dark line along the bottom
// edge of toolbars
final TopLineOverlayPainter toolbarTopLineOverlayPainter = new TopLineOverlayPainter(
(SubstanceColorScheme scheme) -> SubstanceColorUtilities
.getAlphaColor(scheme.getForegroundColor(), 32));
this.addOverlayPainter(toolbarTopLineOverlayPainter, DecorationAreaType.TOOLBAR);
// add an overlay painter to paint a bezel line along the top
// edge of footer
final TopBezelOverlayPainter footerTopBezelOverlayPainter = new TopBezelOverlayPainter(
(SubstanceColorScheme scheme) -> scheme.getUltraDarkColor().darker(),
(SubstanceColorScheme scheme) -> SubstanceColorUtilities
.getAlphaColor(scheme.getForegroundColor(), 32));
this.addOverlayPainter(footerTopBezelOverlayPainter, DecorationAreaType.FOOTER);
this.setTabFadeStart(0.18);
this.setTabFadeEnd(0.18);
// Set button shaper to use "flat" design
this.buttonShaper = new ClassicButtonShaper()
{
@Override
public float getCornerRadius(AbstractButton button, float insets)
{
return 0;
}
};
this.watermark = null;
this.fillPainter = new FractionBasedFillPainter("RuneLite",
new float[]{0.0f, 0.5f, 1.0f},
new ColorSchemeSingleColorQuery[]{ColorSchemeSingleColorQuery.ULTRALIGHT,
ColorSchemeSingleColorQuery.LIGHT, ColorSchemeSingleColorQuery.LIGHT});
this.decorationPainter = new MatteDecorationPainter();
this.highlightPainter = new ClassicHighlightPainter();
this.borderPainter = new CompositeBorderPainter("RuneLite", new ClassicBorderPainter(),
new DelegateBorderPainter("RuneLite Inner", new ClassicBorderPainter(), 0x40FFFFFF,
0x20FFFFFF, 0x00FFFFFF,
(SubstanceColorScheme scheme) -> scheme.tint(0.2f)));
}
@Override
public String getDisplayName()
{
return NAME;
}
}

View File

@@ -0,0 +1,36 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* Copyright (c) 2018, Psikoi <https://github.com/psikoi>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.ui.skin;
import org.pushingpixels.substance.api.SubstanceLookAndFeel;
public class SubstanceRuneLiteLookAndFeel extends SubstanceLookAndFeel
{
public SubstanceRuneLiteLookAndFeel()
{
super(new ObsidianSkin());
}
}

View File

@@ -25,6 +25,7 @@
package net.runelite.client.util;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
@@ -79,6 +80,9 @@ public class SwingUtil
ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
UIManager.put("Button.foreground", Color.WHITE);
UIManager.put("MenuItem.foreground", Color.WHITE);
// Do not render shadows under popups/tooltips.
// Fixes black boxes under popups that are above the game applet.
System.setProperty("jgoodies.popupDropShadowEnabled", "false");
@@ -210,7 +214,7 @@ public class SwingUtil
result = JOptionPane.showConfirmDialog(
frame,
"Are you sure you want to exit?", "Exit",
JOptionPane .OK_CANCEL_OPTION,
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE);
}
}

View File

@@ -0,0 +1,166 @@
# Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
# Copyright (c) 2018, Psikoi <https://github.com/psikoi>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
RuneLite Enabled {
kind=Dark
colorUltraLight=#232323
colorExtraLight=#232323
colorLight=#232323
colorMid=#232323
colorDark=#232323
colorUltraDark=#232323
colorForeground=#C6C6C6
}
RuneLite Active {
kind=Light
colorUltraLight=#4e4e4e
colorExtraLight=#4e4e4e
colorLight=#4e4e4e
colorMid=#232323
colorDark=#232323
colorUltraDark=#232323
colorForeground=#000000
}
RuneLite Selected Disabled Border {
kind=Dark
colorUltraLight=#191919
colorExtraLight=#191919
colorLight=#191919
colorMid=#191919
colorDark=#191919
colorUltraDark=#191919
colorForeground=#C6C6C6
}
RuneLite Border {
kind=Dark
colorUltraLight=#191919
colorExtraLight=#191919
colorLight=#191919
colorMid=#191919
colorDark=#191919
colorUltraDark=#191919
colorForeground=#C6C6C6
}
RuneLite Tab Border {
kind=Light
colorUltraLight=#232323
colorExtraLight=#232323
colorLight=#232323
colorMid=#232323
colorDark=#232323
colorUltraDark=#232323
colorForeground=#232323
}
RuneLite Mark Active {
kind=Dark
colorUltraLight=#191919
colorExtraLight=#191919
colorLight=#191919
colorMid=#191919
colorDark=#191919
colorUltraDark=#191919
colorForeground=#191919
}
RuneLite Highlight {
kind=Light
colorUltraLight=#C6C6C6
colorExtraLight=#C6C6C6
colorLight=#C6C6C6
colorMid=#C6C6C6
colorDark=#C6C6C6
colorUltraDark=#C6C6C6
colorForeground=#191919
}
RuneLite Watermark {
kind=Light
colorUltraLight=#313131
colorExtraLight=#313131
colorLight=#313131
colorMid=#313131
colorDark=#313131
colorUltraDark=#313131
colorForeground=#C6C6C6
}
RuneLite Decorations Watermark {
kind=Light
colorUltraLight=#1e1e1e
colorExtraLight=#1e1e1e
colorLight=#1e1e1e
colorMid=#1e1e1e
colorDark=#1e1e1e
colorUltraDark=#1e1e1e
colorForeground=#1e1e1e
}
RuneLite Separator {
kind=Dark
colorUltraLight=#232323
colorExtraLight=#232323
colorLight=#232323
colorMid=#232323
colorDark=#232323
colorUltraDark=#232323
colorForeground=#232323
}
RuneLite Decorations Separator {
kind=Dark
colorUltraLight=#232323
colorExtraLight=#232323
colorLight=#232323
colorMid=#232323
colorDark=#232323
colorUltraDark=#232323
colorForeground=#232323
}
RuneLite Header Watermark {
kind=Dark
colorUltraLight=#1e1e1e
colorExtraLight=#1e1e1e
colorLight=#1e1e1e
colorMid=#1e1e1e
colorDark=#1e1e1e
colorUltraDark=#1e1e1e
colorForeground=#C6C6C6
}
RuneLite Header Border {
kind=Dark
colorUltraLight=#1e1e1e
colorExtraLight=#1e1e1e
colorLight=#1e1e1e
colorMid=#1e1e1e
colorDark=#1e1e1e
colorUltraDark=#1e1e1e
colorForeground=#C6C6C6
}