Added support for xml

This commit is contained in:
NicklasVraa
2023-08-21 23:16:09 +02:00
parent fb655747f7
commit 31e9fe60a3
189 changed files with 99 additions and 15515 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
resources/demo.mp4
test_pack/theme/
*.egg-info/
__pycache__/

View File

@@ -9,23 +9,43 @@ from colormath.color_diff import delta_e_cie2000
from PIL import Image, ImageDraw
import os, re, shutil, json, subprocess
# Utility ----------------------------------------------------------------------
def expand_path(path:str) -> str:
""" Returns the absolute version of the given path, and expands unix notation like tilde for home folder. """
return os.path.abspath(os.path.expanduser(path))
def is_empty(list:List) -> bool:
""" Returns true if given list is empty, else false. """
return len(list) == 0
def load_json_file(path:str) -> Dict:
""" Return object defined in given json file. """
with open(path, 'r') as file:
obj = json.load(file)
return obj
# Color conversion -------------------------------------------------------------
def hex_to_rgb(hex:str) -> Tuple[int,int,int]:
""" Converts 6-digit hexadecimal color to rgb color. """
return int(hex[1:3], 16), int(hex[3:5], 16), int(hex[5:7], 16)
def hex_to_hsl(hex:str) -> Tuple[float,float,float]:
""" Converts 6-digit hexadecimal color to hsl color. """
return rgb_to_hsl(hex_to_rgb(hex))
def hex_to_gray(hex:str) -> str:
""" Grayscales a given 6-digit hexadecimal color. """
r, g, b = hex_to_rgb(hex)
return '#' + format(int(0.21*r + 0.72*g + 0.07*b), '02x')*3
def rgb_to_hex(rgb:Tuple[int,int,int]) -> str:
""" Converts rgb color to 6-digit hexadecimal color. """
r, g, b = rgb
return "#{:02x}{:02x}{:02x}".format(r, g, b)
def rgba_to_hex(rgba:Tuple[int,int,int,Optional[float]]) -> str:
""" Converts rgba color to 8-digit hexadecimal color. """
r, g, b = rgba[:3]
hex = "#{:02X}{:02X}{:02X}".format(r, g, b)
@@ -36,6 +56,7 @@ def rgba_to_hex(rgba:Tuple[int,int,int,Optional[float]]) -> str:
return hex
def rgb_to_hsl(rgb:Tuple[int,int,int]) -> Tuple[float,float,float]:
""" Converts rgb color to hsl color. """
r, g, b = rgb
r /= 255.0; g /= 255.0; b /= 255.0
max_val = max(r, g, b); min_val = min(r, g, b)
@@ -55,11 +76,13 @@ def rgb_to_hsl(rgb:Tuple[int,int,int]) -> Tuple[float,float,float]:
return h, s, l
def rgb_to_gray(rgb:Tuple[int,int,int]) -> Tuple[int,int,int]:
""" Grayscales a given rgb color. """
r, g, b = rgb
weighed_avg = int(0.21*r + 0.72*g + 0.07*b)
return weighed_avg, weighed_avg, weighed_avg
def hsl_to_rgb(hsl:Tuple[float,float,float]) -> Tuple[int,int,int]:
""" Converts hsl color to rgb color. """
h, s, l = hsl
if s == 0:
@@ -75,6 +98,7 @@ def hsl_to_rgb(hsl:Tuple[float,float,float]) -> Tuple[int,int,int]:
return int(round(r * 255)), int(round(g * 255)), int(round(b * 255))
def hue_to_rgb(p:float, q:float, t:float) -> float:
""" Converts hue to rgb values. Only used by the hsl_to_rgb function. """
if t < 0: t += 1
if t > 1: t -= 1
if t < 1 / 6: return p + (q - p) * 6 * t
@@ -83,15 +107,16 @@ def hue_to_rgb(p:float, q:float, t:float) -> float:
return p
def norm_hsl(h:int, s:int, l:int) -> Tuple[float,float,float]:
""" Normalize hsl color values. """
return h/360, s/100, l/100
# File conversion --------------------------------------------------------------
def svg_to_png(src_path:str, dest_path:str, width:int = 300) -> None:
"""Generate pngs from svgs with a given width."""
""" Generate pngs at given destination path from a given source folder with a given width. """
src_path = os.path.abspath(os.path.expanduser(src_path))
dest_path = os.path.abspath(os.path.expanduser(dest_path))
src_path = expand_path(src_path)
dest_path = expand_path(dest_path)
try:
subprocess.run(['inkscape', '--version'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
@@ -108,35 +133,39 @@ def svg_to_png(src_path:str, dest_path:str, width:int = 300) -> None:
command = ['inkscape', svg_path, '-o', png_path, '-w', str(width)]
subprocess.run(command)
# CSS handling -----------------------------------------------------------------
# Preprocessing ----------------------------------------------------------------
def expand_css_rgba(match) -> None:
def expand_css_rgba(match) -> str:
""" Used by the css_to_hex function. """
return rgba_to_hex((
int(match.group(1)), int(match.group(2)),
int(match.group(3)), float(match.group(4))
))
def css_to_hex(text:str):
""" Returns the given string with css rgba functions and named colors substituted for their corresponding hexadecimal codes. """
text = re.sub(r"rgba\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\)",
lambda match: expand_css_rgba(match), text)
expand_css_rgba, text)
for key in name_to_hex_dict:
text = re.sub(key + "([,;])", name_to_hex_dict[key] + "\\1", text)
text = re.sub(key + r"\b", name_to_hex_dict[key], text)
return text
def expand_hex(hex:str) -> str:
"""Returns 6-digit version of any hexadecimal color code."""
hex = hex.lstrip('#')
def expand_all_hex(text:str) -> str:
"""Expand all 3-digit hexadecimal codes in the input string to 6 digits."""
if len(hex) == 3:
hex = ''.join([c * 2 for c in hex])
return '#' + hex.ljust(6, '0')
return re.sub(
r"((?<!&)#[A-Fa-f0-9]{3})\b",
lambda match: ("#" + "".join([c * 2 for c in match.group(1)[1:]])),
text
)
# Color comparision ------------------------------------------------------------
def generate_palette_dict(colors:List[str]) -> Dict[str,LabColor]:
""" Returns a dictionary mapping hexadecimal colors to lab colors. """
palette_dict = {}
for color in colors:
@@ -145,13 +174,8 @@ def generate_palette_dict(colors:List[str]) -> Dict[str,LabColor]:
return palette_dict
def load_json_file(path:str) -> Dict:
with open(path, 'r') as file:
palette = json.load(file)
return palette
def get_input_colors(resource) -> Tuple[List[str],bool,bool]:
"""Returns an HSL tuple, or a list of colors, depending on the input, as well as a boolean indicating which one, as well as if the palettes specifies smoothing pngs/jpgs."""
""" Returns an HSL tuple, or a list of colors, depending on the input, as well as a boolean indicating which one, as well as if the palettes specifies smoothing pngs/jpgs. """
if isinstance(resource, tuple) and len(resource) == 3:
return resource, False, True
@@ -163,12 +187,11 @@ def get_input_colors(resource) -> Tuple[List[str],bool,bool]:
else:
return generate_palette_dict(resource["colors"]), palette_file["smooth"], False
def get_file_colors(file:str) -> Set[str]:
"""Return a set of all unique colors within a given string
representing an svg-file."""
def get_file_colors(text:str) -> Set[str]:
""" Return a set of all unique colors within a given string representing an svg-file. """
colors = set()
matches = re.findall(r"#[A-Fa-f0-9]{6}", file)
matches = re.findall(r"#[A-Fa-f0-9]{6}", text)
for match in matches:
colors.add(match)
@@ -176,9 +199,7 @@ def get_file_colors(file:str) -> Set[str]:
return colors
def closest_match(color:str, palette:Dict[str,LabColor]) -> str:
"""Compare the similarity of colors in the CIELAB colorspace. Return the
closest match, i.e. the palette entry with the smallest euclidian distance
to the given color."""
""" Compare the similarity of colors in the CIELAB colorspace. Return the closest match, i.e. the palette entry with the smallest euclidian distance to the given color. """
closest_color = None
min_distance = float('inf')
@@ -203,12 +224,8 @@ def closest_match(color:str, palette:Dict[str,LabColor]) -> str:
# Pack management --------------------------------------------------------------
def expand_path(path:str) -> str:
return os.path.abspath(os.path.expanduser(path))
def get_paths(folder: str, exts: List[str]) -> List[str]:
"""Return paths of every file with the given extensions within a folder
and its subfolders, excluding symbolic links."""
""" Return paths of every file with the given extensions within a folder and its subfolders, excluding symbolic links. """
paths = []
@@ -230,9 +247,7 @@ def get_paths(folder: str, exts: List[str]) -> List[str]:
return paths
def copy_file_structure(src_path:str, dest_path:str) -> None:
"""Copies a directory tree, but changes symbolic links to point
to files within the destination folder instead of the source.
Assumes that no link points to files outside the source folder."""
""" Copies a directory tree, but changes symbolic links to point to files within the destination folder instead of the source. Assumes that no link points to files outside the source folder. """
shutil.rmtree(dest_path, ignore_errors=True)
shutil.copytree(src_path, dest_path, symlinks=True)
@@ -257,8 +272,7 @@ def copy_file_structure(src_path:str, dest_path:str) -> None:
os.symlink(relative_target, file_path)
def rename_pack(src_path, dest_path:str, name:str) -> None:
"""If an index.theme file exists within the given folder, apply
appropiate naming."""
""" If an index.theme file exists within the given folder, apply appropiate naming. """
index_path = os.path.join(dest_path, "index.theme")
@@ -278,7 +292,7 @@ def rename_pack(src_path, dest_path:str, name:str) -> None:
file.write(text)
def copy_pack(src_path:str, dest_path:str, name:str) -> str:
"""Copy pack and return the resulting copy's directory path."""
""" Copy pack and return the resulting copy's directory path. """
src_path = expand_path(src_path)
dest_path = os.path.join(expand_path(dest_path), name)
@@ -291,9 +305,7 @@ def copy_pack(src_path:str, dest_path:str, name:str) -> str:
# SVG/CSS recoloring -----------------------------------------------------------
def monochrome_vec(svg:str, colors:Set[str], hsl:Tuple[float,float,float]) -> str:
"""Replace every instance of color within the given list with their
monochrome equivalent in the given string representing an svg-file,
determined by the given hue, saturation and lightness offset."""
""" Replace every instance of color within the given list with their monochrome equivalent in the given string representing an svg-file, determined by the given hue, saturation and lightness offset. """
h, s, l_offset = hsl
@@ -315,8 +327,7 @@ def monochrome_vec(svg:str, colors:Set[str], hsl:Tuple[float,float,float]) -> st
return svg
def multichrome_vec(svg:str, colors:Set[str], new_colors:Dict[str,LabColor]) -> str:
"""Replace colors in a given svg/css with the closest match within a given
color palette."""
""" Replace colors in a given svg/css with the closest match within a given color palette. """
for color in colors:
new_color = closest_match(color, new_colors)
@@ -327,8 +338,7 @@ def multichrome_vec(svg:str, colors:Set[str], new_colors:Dict[str,LabColor]) ->
# PNG/JPG recoloring -----------------------------------------------------------
def monochrome_img(img:Image, hsl:Tuple[float,float,float]) -> Image:
"""Replace every instance of color within the given list with their
monochrome equivalent in the given image, determined by the given hue, saturation and lightness offset."""
""" Replace every instance of color within the given list with their monochrome equivalent in the given image, determined by the given hue, saturation and lightness offset. """
mode = img.mode
h, s, l_offset = hsl
@@ -359,8 +369,7 @@ def monochrome_img(img:Image, hsl:Tuple[float,float,float]) -> Image:
return img
def multichrome_img(img:Image, new_colors:Dict[str,LabColor], smooth:bool) -> Image:
"""Replace colors in a given image with the closest match within a given
color palette."""
""" Replace colors in a given image with the closest match within a given color palette. """
if smooth: img = img.convert("P", palette=Image.ADAPTIVE, colors=256)
else: img = img.convert("P")
@@ -382,18 +391,19 @@ def multichrome_img(img:Image, new_colors:Dict[str,LabColor], smooth:bool) -> Im
# User interface functions -----------------------------------------------------
def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
"""Recursively copies and converts a source folder into a destination, given a either a color or a palette."""
""" Recursively copies and converts a source folder into a destination, given a either a color or a palette. """
new_colors, smooth, is_mono = get_input_colors(replacement)
dest_path = copy_pack(src_path, dest_path, name)
svg_paths = get_paths(dest_path, [".svg"])
svg_paths = get_paths(dest_path, [".svg", ".xml"])
png_paths = get_paths(dest_path, [".png"])
jpg_paths = get_paths(dest_path, [".jpg", ".jpeg"])
css_paths = get_paths(dest_path, [".css", "rc"])
for path in tqdm(svg_paths, desc="svg", unit="file"):
for path in tqdm(svg_paths, desc="svg", disable=is_empty(svg_paths)):
with open(path, 'r') as file: x = file.read()
x = expand_all_hex(x)
colors = get_file_colors(x)
if is_mono: x = monochrome_vec(x, colors, new_colors)
@@ -401,7 +411,7 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
with open(path, 'w') as file: file.write(x)
for path in tqdm(png_paths, desc="png", unit="file"):
for path in tqdm(png_paths, desc="png", disable=is_empty(png_paths)):
x = Image.open(path)
x = x.convert("RGBA")
a = x.split()[3] # Save original alpha channel.
@@ -414,7 +424,7 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
x = Image.merge("RGBA",(r,g,b,a)) # Restore original alpha channel.
x.save(path)
for path in tqdm(jpg_paths, desc="jpg", unit="file"):
for path in tqdm(jpg_paths, desc="jpg", disable=is_empty(jpg_paths)):
x = Image.open(path)
x = x.convert("RGB")
@@ -424,10 +434,12 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
x = x.convert("RGB")
x.save(path)
for path in tqdm(css_paths, desc="css", unit="file"):
for path in tqdm(css_paths, desc="css", disable=is_empty(css_paths)):
with open(path, 'r') as file: x = file.read()
x = css_to_hex(x)
x = expand_all_hex(x)
colors = get_file_colors(x)
if is_mono: x = monochrome_vec(x, colors, new_colors)
@@ -436,7 +448,7 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
with open(path, 'w') as file: file.write(x)
def extract_colors(img_path:str, num_colors:int=8, save_path:str=None, pixels:int=50, cols:int=10) -> List[str]:
"""Returns and optionally saves the color palette of the given image, finding the specified number of colors."""
""" Returns and optionally saves the color palette of the given image, finding the specified number of colors. """
_, ext = os.path.splitext(img_path)
@@ -475,7 +487,7 @@ def extract_colors(img_path:str, num_colors:int=8, save_path:str=None, pixels:in
return colors
def clean_svg(input_path:str, output_path:str=None) -> str:
"""Removes needless metadata from svgs and optionally saves as copy, if output path is specified."""
""" Removes needless metadata from svgs and optionally saves as copy, if output path is specified. """
with open(input_path, 'r') as f:
svg = f.read()
@@ -496,6 +508,7 @@ def clean_svg(input_path:str, output_path:str=None) -> str:
f.write(svg)
def add_backdrop(src_path:str, dest_path:str, name:str, color:str="#000000", padding=0, rounding=0):
""" Add a customizable backdrop to all svg-based icons. """
dest_path = copy_pack(src_path, dest_path, name)
svg_paths = get_paths(dest_path, [".svg"])
@@ -518,8 +531,6 @@ def add_backdrop(src_path:str, dest_path:str, name:str, color:str="#000000", pad
# Global constants -------------------------------------------------------------
this_path = os.path.dirname(os.path.abspath(__file__))
# A dynamic dictionary to avoid multiple color conversions.
hex_to_lab_dict = {
"#ffffff": LabColor(9341.568974319263, -0.037058350415009045, -0.6906417562959177), # White.
@@ -527,4 +538,9 @@ hex_to_lab_dict = {
}
# A static dictionary of named colors from the css standard.
name_to_hex_dict = load_json_file(os.path.join(this_path, "named_colors.json"))
name_to_hex_dict = load_json_file(
os.path.join(
os.path.dirname(os.path.abspath(__file__)),
"named_colors.json"
)
)

View File

@@ -41,6 +41,7 @@ Color Manager is a program for recoloring and manipulating existing icon packs,
- [x] Remove metadata from svgs.
- [x] Adding basic geometry to the backgrounds of svg icons.
- [x] Preserve transparency in pngs after multichrome recoloring.
- [ ] Add an option to map colors directly using a json dictionary.
- [ ] Optional automatic palette extending.
- [ ] Basic framework for manipulating GTK, Cinnamon and Metacity themes.
- [ ] Intelligent color inversion.

View File

@@ -14,17 +14,34 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/nv/Downloads/my_pack/index.theme\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"svg: 100%|██████████| 43/43 [00:00<00:00, 250.05it/s]\n",
"png: 100%|██████████| 439/439 [00:01<00:00, 360.71it/s]\n",
"css: 100%|██████████| 12/12 [00:00<00:00, 84.68it/s]\n"
]
}
],
"source": [
"src = \"test_pack\" # = \"test_theme\"\n",
"name = \"my_pack\" # = \"my_theme\"\n",
"src = \"test_theme\" # = \"test_theme\"\n",
"name = \"my_pack\" # = \"my_theme\"\n",
"dest = \"~/Downloads\"\n",
"hsl = (0.6, 0.54, 0.5) # = rc.normalize_hsl(180, 50, 50)\n",
"hsl = (0.6, 0.54, 0.5) # = rc.normalize_hsl(180, 50, 50)\n",
"palette = \"palettes/nord.json\"\n",
"\n",
"utils.recolor(src, dest, name, palette) # Either hsl or palette"
"utils.recolor(src, dest, name, hsl) # Either hsl or palette"
]
},
{

View File

@@ -1,50 +0,0 @@
# ==============================================================================
# CHROME/-UIM SPECIFIC SETTINGS
# ==============================================================================
# Chromium lets us define some colours and settings for better integration
style "chrome-gtk-frame"
{
ChromeGtkFrame::frame-color = @wm_color
ChromeGtkFrame::inactive-frame-color = @unfocused_wm_color
ChromeGtkFrame::frame-gradient-size = 16
ChromeGtkFrame::frame-gradient-color = shade(1.07, @wm_color)
ChromeGtkFrame::incognito-frame-color = shade(0.85, @wm_color)
ChromeGtkFrame::incognito-inactive-frame-color = @wm_color
ChromeGtkFrame::incognito-frame-gradient-color = @wm_color
ChromeGtkFrame::scrollbar-trough-color = shade(0.912, @wm_color)
ChromeGtkFrame::scrollbar-slider-prelight-color = shade(1.04, @wm_color)
ChromeGtkFrame::scrollbar-slider-normal-color = @wm_color
}
class "ChromeGtkFrame" style "chrome-gtk-frame"
# Chromium uses base as the fill colour of its own entries
# This would be fine but Gtk+ uses it to fill the surrounding space, so its set to bg
# That results in Chromium using it for the fill, so we need to handle that
style "chrome_entry" {
base[NORMAL] = @base_color
base[INSENSITIVE] = @base_color
}
widget_class "*Chrom*<GtkEntry>" style "chrome_entry"
# Chrome Menu item background
style "chrome_menu_item"
{
bg[SELECTED] = @wm_color
}
widget_class "*<GtkCustomMenu>*<GtkCustomMenuItem>*" style "chrome_menu_item"
# Chrome buttons
widget_class "*Chrom*Button*" style "button"

View File

@@ -1,83 +0,0 @@
# ==============================================================================
# GIMP SPECIFIC SETTINGS
# ==============================================================================
# TODO: This could really look nicer
style "gimp_spin_scale" {
# Spin background
bg[NORMAL] = @base_color
engine "pixmap" {
image {
function = BOX
state = NORMAL
detail = "spinbutton_up"
overlay_file = "assets/spin-up.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = PRELIGHT
detail = "spinbutton_up"
overlay_file = "assets/spin-up.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = ACTIVE
detail = "spinbutton_up"
overlay_file = "assets/spin-up.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = INSENSITIVE
detail = "spinbutton_up"
overlay_file = "assets/spin-up-insensitive.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = NORMAL
detail = "spinbutton_down"
overlay_file = "assets/spin-down.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = PRELIGHT
detail = "spinbutton_down"
overlay_file = "assets/spin-down.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = ACTIVE
detail = "spinbutton_down"
overlay_file = "assets/spin-down.png"
overlay_stretch = FALSE
}
image {
function = BOX
state = INSENSITIVE
detail = "spinbutton_down"
overlay_file = "assets/spin-down-insensitive.png"
overlay_stretch = FALSE
}
}
}
# Disable spin button assets for GimpSpinScale
class "GimpSpinScale" style "gimp_spin_scale"

View File

@@ -1,12 +0,0 @@
# ==============================================================================
# OPEN/LIBREOFFICE SPECIFIC SETTINGS
# ==============================================================================
style "ooo_stepper_hack"
{
GtkScrollbar::stepper-size = 13
GtkScrollbar::has-backward-stepper = 1
GtkScrollbar::has-forward-stepper = 1
}
widget "*openoffice-toplevel*" style "ooo_stepper_hack"

View File

@@ -1,48 +0,0 @@
# ==============================================================================
# GNOME TERMINAL SPECIFIC SETTINGS
# ==============================================================================
style "terminal_window" = "dark" {
}
style "terminal_menubar"
{
engine "murrine" {
}
}
style "terminal_notebook" = "dark"
{
fg[ACTIVE] = mix (0.8, "#DADBDB", "#DADBDB")
engine "murrine" {
}
}
style "terminal_scrollbar" = "scrollbar"
{
bg[NORMAL] = "#263238"
bg[PRELIGHT] = shade(1.08, "#263238")
bg[ACTIVE] = shade(0.94, "#263238")
bg[SELECTED] = shade(1.0, @selected_bg_color)
bg[INSENSITIVE] = "#263238"
engine "murrine" {
}
}
style "terminal_screen"
{
text[NORMAL] = "#DADBDB"
base[NORMAL] = "#384952"
TerminalScreen::background-darkness = 0.95
}
widget "*TerminalWindow*" style "terminal_window"
#widget "*TerminalWindow.*.*enu?ar" style "terminal_menubar"
widget "*TerminalWindow.*.GtkNotebook*" style "terminal_notebook"
widget "*TerminalWindow.*.GtkNotebook.*.GtkVScrollbar*" style "terminal_scrollbar"
#widget "*TerminalWindow.*.GtkNotebook*utton*" style "terminal_button"
widget "*TerminalWindow.*.TerminalScreen*" style "terminal_screen"

View File

@@ -1,24 +0,0 @@
# ==============================================================================
# THUNAR SPECIFIC SETTINGS
# ==============================================================================
style "sidepane" {
GtkTreeView::odd_row_color = @sidebar_bg
GtkTreeView::even_row_color = @sidebar_bg
base[NORMAL] = @bg_color
base[INSENSITIVE] = mix(0.4, shade(1.35, @selected_bg_color), shade(0.9, @base_color))
bg[NORMAL] = @bg_color
text[NORMAL] = mix(0.9, @fg_color, @bg_color)
}
style "thunar-frame" {
xthickness = 0
ythickness = 0
}
style "thunar-handle" { GtkPaned::handle-size = 2 }
widget_class "*ThunarWindow*.<GtkScrolledWindow>" style "thunar-frame"
widget_class "*ThunarWindow*.<GtkHPaned>" style "thunar-handle"
widget_class "*ThunarShortcutsView*" style "sidepane"
widget_class "*ThunarTreeView*" style "sidepane"

View File

@@ -1,90 +0,0 @@
style "theme-panel" = "dark" {
xthickness = 1
ythickness = 1
bg[NORMAL] = @panel_bg_color
}
style "xfdesktop-icon-view" {
XfdesktopIconView::label-alpha = 0
XfdesktopIconView::selected-label-alpha = 80
XfdesktopIconView::shadow-x-offset = 0
XfdesktopIconView::shadow-y-offset = 0
XfdesktopIconView::selected-shadow-x-offset = 0
XfdesktopIconView::selected-shadow-y-offset = 0
XfdesktopIconView::shadow-color = @tooltip_bg_color
XfdesktopIconView::selected-shadow-color = @tooltip_bg_color
XfdesktopIconView::cell-spacing = 2
XfdesktopIconView::cell-padding = 6
XfdesktopIconView::cell-text-width-proportion = 1.9
fg[NORMAL] = shade (0.9, @selected_fg_color)
fg[ACTIVE] = @selected_fg_color
}
style "theme-panel-text" = "dark" {
}
style "panel-entry" = "dark" {
}
style "theme-main-menu-text" = "theme-panel-text"
{
fg[PRELIGHT] = "#ffffff"
text[PRELIGHT] = "#ffffff"
}
style "workspace-switcher" = "dark"
{
bg[SELECTED] = shade (0.8, @selected_bg_color)
}
style "window-buttons" = "dark" {
}
style "indicator" = "theme-panel"
{
xthickness = 0
ythickness = 0
}
widget "*PanelWidget*" style "theme-panel"
widget "*PanelApplet*" style "theme-panel"
widget "*fast-user-switch*" style "theme-panel"
widget "*CPUFreq*Applet*" style "theme-panel"
class "PanelApp*" style "theme-panel"
class "PanelToplevel*" style "theme-panel"
widget_class "*PanelToplevel*" style "theme-panel"
widget_class "*notif*" style "theme-panel"
widget_class "*Notif*" style "theme-panel"
widget_class "*Tray*" style "theme-panel"
widget_class "*tray*" style "theme-panel"
widget_class "*computertemp*" style "theme-panel"
widget_class "*Applet*Tomboy*" style "theme-panel"
widget_class "*Applet*Netstatus*" style "theme-panel"
# Fixes for tooltip text in some apps.
widget_class "*Notif*Beagle*" style "theme-panel"
widget_class "*Notif*Brasero*" style "theme-panel"
# XFCE panel theming.
widget "*Xfce*Panel*" style "theme-panel"
class "*Xfce*Panel*" style "theme-panel"
widget "*WnckPager*" style "workspace-switcher"
widget "*XfdesktopIconView*" style "xfdesktop-icon-view"
# Fix gtk-entries in the panel
class "*SexyIconEntry*" style:highest "entry" # fixes dict-plugin
widget "*xfce4-verve-plugin*GtkEntry" style:highest "entry" # fixes verve-plugin
# Make sure panel text color doesn't change
widget_class "*Panel*MenuBar*" style "theme-main-menu-text"
widget_class "*Panel*<GtkMenuBar>*" style "theme-main-menu-text"
widget "*.clock-applet-button.*" style "theme-panel-text"
widget "*PanelApplet*" style "theme-panel-text"
# Override general panel-style with specific plugin-styles
widget "*indicator-applet*" style "indicator"
widget "*indicator-button*" style "indicator"
#widget "*XfceTasklist*" style "dark_button"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 B

View File

@@ -1 +0,0 @@
../../assets/checkbox-checked-active-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-checked-hover-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-checked-insensitive-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-checked-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-mixed-active-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-mixed-hover-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-mixed-insensitive-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-mixed-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-unchecked-active-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-unchecked-hover-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-unchecked-insensitive-dark.png

View File

@@ -1 +0,0 @@
../../assets/checkbox-unchecked-dark.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 325 B

Some files were not shown because too many files have changed in this diff Show More