Fixed alpha channel on pngs.
@@ -1,30 +0,0 @@
|
||||
# Documentation functions ------------------------------------------------------
|
||||
import subprocess
|
||||
from os.path import join, abspath, expanduser, splitext
|
||||
from os import listdir, makedirs
|
||||
|
||||
def generate_entry(base:str, name:str) -> str:
|
||||
"""Return a string for copy-pasting into the project readme."""
|
||||
|
||||
return '| ' + name.capitalize() + ' | <img src="previews/' + base + '/' + name + '/colors.png" width="50"/> <img src="previews/' + base + '/' + name + '/firefox.png" width="50"/> <img src="previews/' + base + '/' + name + '/vscode.png" width="50"/> <img src="previews/' + base + '/' + name + '/account.png" width="50"/> <img src="previews/' + base + '/' + name + '/video.png" width="50"/> <img src="previews/' + base + '/' + name + '/git.png" width="50"/> | Finished |'
|
||||
|
||||
def generate_previews(src_path:str, dest_path:str, width:int = 300) -> None:
|
||||
"""Generate png previews of an icon_pack. Convert all svgs in a folder to pngs in another, using the external program called ImageMagick."""
|
||||
|
||||
in_path = abspath(expanduser(src_path))
|
||||
out_path = abspath(expanduser(dest_path))
|
||||
|
||||
try:
|
||||
subprocess.run(['inkscape', '--version'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
except FileNotFoundError:
|
||||
raise RuntimeError("Inkscape is not installed.")
|
||||
|
||||
makedirs(out_path, exist_ok=True)
|
||||
svgs = [file for file in listdir(in_path) if file.endswith('.svg')]
|
||||
|
||||
for svg in svgs:
|
||||
svg_path = join(in_path, svg)
|
||||
png = splitext(svg)[0] + '.png'
|
||||
png_path = join(out_path, png)
|
||||
command = ['inkscape', svg_path, '-o', png_path, '-w', str(width)]
|
||||
subprocess.run(command)
|
||||
@@ -7,7 +7,7 @@ from colormath.color_objects import sRGBColor, LabColor
|
||||
from colormath.color_conversions import convert_color
|
||||
from colormath.color_diff import delta_e_cie2000
|
||||
from PIL import Image, ImageDraw
|
||||
import os, re, shutil, json
|
||||
import os, re, shutil, json, subprocess
|
||||
|
||||
# Color conversion -------------------------------------------------------------
|
||||
|
||||
@@ -85,6 +85,29 @@ def hue_to_rgb(p:float, q:float, t:float) -> float:
|
||||
def norm_hsl(h:int, s:int, l:int) -> Tuple[float,float,float]:
|
||||
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."""
|
||||
|
||||
src_path = os.path.abspath(os.path.expanduser(src_path))
|
||||
dest_path = os.path.abspath(os.path.expanduser(dest_path))
|
||||
|
||||
try:
|
||||
subprocess.run(['inkscape', '--version'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
except FileNotFoundError:
|
||||
raise RuntimeError("Inkscape is not installed.")
|
||||
|
||||
os.makedirs(dest_path, exist_ok=True)
|
||||
svgs = [file for file in os.listdir(src_path) if file.endswith('.svg')]
|
||||
|
||||
for svg in svgs:
|
||||
svg_path = os.path.join(src_path, svg)
|
||||
png = os.path.splitext(svg)[0] + '.png'
|
||||
png_path = os.path.join(dest_path, png)
|
||||
command = ['inkscape', svg_path, '-o', png_path, '-w', str(width)]
|
||||
subprocess.run(command)
|
||||
|
||||
# CSS handling -----------------------------------------------------------------
|
||||
|
||||
def expand_css_rgba(match) -> None:
|
||||
@@ -237,12 +260,10 @@ def rename_pack(src_path, dest_path:str, name:str) -> None:
|
||||
"""If an index.theme file exists within the given folder, apply
|
||||
appropiate naming."""
|
||||
|
||||
print("rename called")
|
||||
index_path = os.path.join(dest_path, "index.theme")
|
||||
|
||||
print(index_path)
|
||||
if os.path.exists(index_path):
|
||||
print("index.theme found")
|
||||
with open(index_path, 'r') as file:
|
||||
text = file.read()
|
||||
|
||||
@@ -356,7 +377,6 @@ def multichrome_img(img:Image, new_colors:Dict[str,LabColor], smooth:bool) -> Im
|
||||
new_palette.extend(new_color)
|
||||
|
||||
img.putpalette(new_palette)
|
||||
img = img.convert("RGB")
|
||||
return img
|
||||
|
||||
# User interface functions -----------------------------------------------------
|
||||
@@ -369,7 +389,7 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
|
||||
svg_paths = get_paths(dest_path, [".svg"])
|
||||
png_paths = get_paths(dest_path, [".png"])
|
||||
jpg_paths = get_paths(dest_path, [".jpg", ".jpeg"])
|
||||
css_paths = get_paths(dest_path, [".css"])
|
||||
css_paths = get_paths(dest_path, [".css", "rc"])
|
||||
|
||||
for path in tqdm(svg_paths, desc="svg", unit="file"):
|
||||
with open(path, 'r') as file: x = file.read()
|
||||
@@ -384,10 +404,14 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
|
||||
for path in tqdm(png_paths, desc="png", unit="file"):
|
||||
x = Image.open(path)
|
||||
x = x.convert("RGBA")
|
||||
a = x.split()[3] # Save original alpha channel.
|
||||
|
||||
if is_mono: x = monochrome_img(x, new_colors)
|
||||
else: x = multichrome_img(x, new_colors, smooth)
|
||||
|
||||
x = x.convert("RGBA")
|
||||
r,g,b,_ = x.split()
|
||||
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"):
|
||||
@@ -397,6 +421,7 @@ def recolor(src_path:str, dest_path:str, name:str, replacement) -> None:
|
||||
if is_mono: x = monochrome_img(x, new_colors)
|
||||
else: x = multichrome_img(x, new_colors, smooth)
|
||||
|
||||
x = x.convert("RGB")
|
||||
x.save(path)
|
||||
|
||||
for path in tqdm(css_paths, desc="css", unit="file"):
|
||||
|
||||
@@ -40,6 +40,7 @@ Color Manager is a program for recoloring and manipulating existing icon packs,
|
||||
- [x] Generate palette from source image or svg.
|
||||
- [x] Remove metadata from svgs.
|
||||
- [x] Adding basic geometry to the backgrounds of svg icons.
|
||||
- [x] Preserve transparency in pngs after multichrome recoloring.
|
||||
- [ ] Optional automatic palette extending.
|
||||
- [ ] Basic framework for manipulating GTK, Cinnamon and Metacity themes.
|
||||
- [ ] Intelligent color inversion.
|
||||
|
||||
118
test.ipynb
@@ -2,130 +2,36 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"%autoreload 2"
|
||||
"%autoreload 2\n",
|
||||
"\n",
|
||||
"from color_manager import utils"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"svgs: 100%|██████████| 6/6 [00:00<00:00, 2730.07file/s]\n",
|
||||
"pngs: 100%|██████████| 1/1 [00:05<00:00, 5.13s/file]\n",
|
||||
"jpgs: 100%|██████████| 1/1 [00:04<00:00, 4.37s/file]\n",
|
||||
"css': 0file [00:00, ?file/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from color_manager import utils\n",
|
||||
"\n",
|
||||
"src = \"test_pack\"\n",
|
||||
"name = \"my_pack\"\n",
|
||||
"src = \"test_pack\" # = \"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, hsl) # Either hsl or palette"
|
||||
"utils.recolor(src, dest, name, palette) # Either hsl or palette"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from color_manager import utils\n",
|
||||
"\n",
|
||||
"image = \"test_pack/imgs/lake_cabin.png\" # Also try an svg.\n",
|
||||
"num_colors = 10\n",
|
||||
"output = \"resources/palette.png\" # Optional - saves colors as image.\n",
|
||||
"\n",
|
||||
"utils.extract_colors(image, num_colors, output)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from color_manager import utils\n",
|
||||
"\n",
|
||||
"svg_path = \"resources/icon.svg\"\n",
|
||||
"save_path = \"resources/icon_cleaned.svg\" # Optional.\n",
|
||||
"\n",
|
||||
"utils.clean_svg(svg_path, save_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from color_manager import utils\n",
|
||||
"\n",
|
||||
"src = \"test_pack\"\n",
|
||||
"name = \"my_pack\"\n",
|
||||
"dest = \"~/Downloads\"\n",
|
||||
"color = \"#000000\" # Optional - Defaults to black.\n",
|
||||
"padding = 0 # Optional - Between backdrop and edge.\n",
|
||||
"rounding = 0.5 # Optional - Between 0 and 1, i.e. rectangle and ellipse.\n",
|
||||
"\n",
|
||||
"utils.add_backdrop(src, dest, name, color, padding, rounding)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 27,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"rename called\n",
|
||||
"/home/nv/Downloads/my_theme/index.theme\n",
|
||||
"index.theme found\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"svg: 0file [00:00, ?file/s]\n",
|
||||
"png: 0%| | 0/1 [00:00<?, ?file/s]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"png: 100%|██████████| 1/1 [00:00<00:00, 33.59file/s]\n",
|
||||
"jpg: 0file [00:00, ?file/s]\n",
|
||||
"css: 100%|██████████| 1/1 [00:00<00:00, 18.40file/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from color_manager import utils\n",
|
||||
"src = \"test_theme\"\n",
|
||||
"name = \"my_theme\"\n",
|
||||
"dest = \"~/Downloads\"\n",
|
||||
"hsl = (0.6, 0.54, 0.5) # = rc.normalize_hsl(180, 50, 50)\n",
|
||||
"palette = \"palettes/nord.json\"\n",
|
||||
"\n",
|
||||
"colors = utils.recolor(src, dest, name, hsl) # Either hsl or palette"
|
||||
"Priority: Preserve transparency in PNGs after multichrome recoloring."
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
BIN
test_pack/pngs/account.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
test_pack/pngs/colors.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
test_pack/pngs/firefox.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
test_pack/pngs/git.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
test_pack/pngs/video.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
test_pack/pngs/vscode.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 577 KiB After Width: | Height: | Size: 577 KiB |
|
Before Width: | Height: | Size: 2.2 MiB After Width: | Height: | Size: 2.2 MiB |
50
test_theme/gtk-2.0/apps/chrome.rc
Executable file
@@ -0,0 +1,50 @@
|
||||
# ==============================================================================
|
||||
# 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"
|
||||
83
test_theme/gtk-2.0/apps/gimp.rc
Executable file
@@ -0,0 +1,83 @@
|
||||
# ==============================================================================
|
||||
# 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"
|
||||
12
test_theme/gtk-2.0/apps/libreoffice.rc
Executable file
@@ -0,0 +1,12 @@
|
||||
# ==============================================================================
|
||||
# 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"
|
||||
48
test_theme/gtk-2.0/apps/terminal.rc
Executable file
@@ -0,0 +1,48 @@
|
||||
# ==============================================================================
|
||||
# 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"
|
||||
24
test_theme/gtk-2.0/apps/thunar.rc
Executable file
@@ -0,0 +1,24 @@
|
||||
# ==============================================================================
|
||||
# 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"
|
||||
90
test_theme/gtk-2.0/apps/xfce.rc
Executable file
@@ -0,0 +1,90 @@
|
||||
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"
|
||||
BIN
test_theme/gtk-2.0/assets/border.png
Normal file
|
After Width: | Height: | Size: 290 B |
BIN
test_theme/gtk-2.0/assets/button-active.png
Normal file
|
After Width: | Height: | Size: 348 B |
BIN
test_theme/gtk-2.0/assets/button-hover.png
Normal file
|
After Width: | Height: | Size: 348 B |
BIN
test_theme/gtk-2.0/assets/button-insensitive.png
Normal file
|
After Width: | Height: | Size: 419 B |
BIN
test_theme/gtk-2.0/assets/button.png
Normal file
|
After Width: | Height: | Size: 407 B |
1
test_theme/gtk-2.0/assets/checkbox-checked-active.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-checked-active-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-checked-hover.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-checked-hover-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-checked-insensitive.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-checked-insensitive-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-checked.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-checked-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-mixed-active.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-mixed-active-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-mixed-hover.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-mixed-hover-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-mixed-insensitive.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-mixed-insensitive-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-mixed.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-mixed-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-unchecked-active.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-unchecked-active-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-unchecked-hover.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-unchecked-hover-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-unchecked-insensitive.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-unchecked-insensitive-dark.png
|
||||
1
test_theme/gtk-2.0/assets/checkbox-unchecked.png
Symbolic link
@@ -0,0 +1 @@
|
||||
../../assets/checkbox-unchecked-dark.png
|
||||
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-button-active.png
Normal file
|
After Width: | Height: | Size: 378 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-button-hover.png
Normal file
|
After Width: | Height: | Size: 367 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-button-insensitive.png
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-button.png
Normal file
|
After Width: | Height: | Size: 371 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-entry-active.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-entry-insensitive.png
Normal file
|
After Width: | Height: | Size: 372 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-ltr-entry.png
Normal file
|
After Width: | Height: | Size: 372 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-button-active.png
Normal file
|
After Width: | Height: | Size: 378 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-button-hover.png
Normal file
|
After Width: | Height: | Size: 369 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-button-insensitive.png
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-button.png
Normal file
|
After Width: | Height: | Size: 365 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-entry-active.png
Normal file
|
After Width: | Height: | Size: 376 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-entry-insensitive.png
Normal file
|
After Width: | Height: | Size: 372 B |
BIN
test_theme/gtk-2.0/assets/combo-entry-rtl-entry.png
Normal file
|
After Width: | Height: | Size: 403 B |
BIN
test_theme/gtk-2.0/assets/entry-active.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
test_theme/gtk-2.0/assets/entry-background-insensitive.png
Normal file
|
After Width: | Height: | Size: 302 B |
BIN
test_theme/gtk-2.0/assets/entry-background.png
Normal file
|
After Width: | Height: | Size: 302 B |
BIN
test_theme/gtk-2.0/assets/entry-insensitive.png
Normal file
|
After Width: | Height: | Size: 367 B |
BIN
test_theme/gtk-2.0/assets/entry.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
test_theme/gtk-2.0/assets/focus.png
Normal file
|
After Width: | Height: | Size: 314 B |
BIN
test_theme/gtk-2.0/assets/frame-inline.png
Normal file
|
After Width: | Height: | Size: 307 B |
BIN
test_theme/gtk-2.0/assets/frame-notebook.png
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
test_theme/gtk-2.0/assets/frame.png
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
test_theme/gtk-2.0/assets/handle-horz.png
Normal file
|
After Width: | Height: | Size: 356 B |
BIN
test_theme/gtk-2.0/assets/handle-vert.png
Normal file
|
After Width: | Height: | Size: 352 B |
BIN
test_theme/gtk-2.0/assets/handle.png
Normal file
|
After Width: | Height: | Size: 304 B |
BIN
test_theme/gtk-2.0/assets/line.png
Normal file
|
After Width: | Height: | Size: 289 B |
BIN
test_theme/gtk-2.0/assets/menu-border.png
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-checked-hover.png
Normal file
|
After Width: | Height: | Size: 402 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-checked-insensitive.png
Normal file
|
After Width: | Height: | Size: 509 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-checked.png
Normal file
|
After Width: | Height: | Size: 509 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-hover.png
Normal file
|
After Width: | Height: | Size: 363 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-insensitive.png
Normal file
|
After Width: | Height: | Size: 380 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-mixed-hover.png
Normal file
|
After Width: | Height: | Size: 366 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-mixed-insensitive.png
Normal file
|
After Width: | Height: | Size: 380 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox-mixed.png
Normal file
|
After Width: | Height: | Size: 375 B |
BIN
test_theme/gtk-2.0/assets/menu-checkbox.png
Normal file
|
After Width: | Height: | Size: 363 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-down-insensitive.png
Normal file
|
After Width: | Height: | Size: 347 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-down.png
Normal file
|
After Width: | Height: | Size: 328 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-left-hover.png
Normal file
|
After Width: | Height: | Size: 344 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-left-insensitive.png
Normal file
|
After Width: | Height: | Size: 351 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-left.png
Normal file
|
After Width: | Height: | Size: 344 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-right-hover.png
Normal file
|
After Width: | Height: | Size: 344 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-right-insensitive.png
Normal file
|
After Width: | Height: | Size: 354 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-right.png
Normal file
|
After Width: | Height: | Size: 344 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-up-insensitive.png
Normal file
|
After Width: | Height: | Size: 348 B |
BIN
test_theme/gtk-2.0/assets/menu-pan-up.png
Normal file
|
After Width: | Height: | Size: 324 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-checked-hover.png
Normal file
|
After Width: | Height: | Size: 540 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-checked-insensitive.png
Normal file
|
After Width: | Height: | Size: 540 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-checked.png
Normal file
|
After Width: | Height: | Size: 540 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-hover.png
Normal file
|
After Width: | Height: | Size: 501 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-insensitive.png
Normal file
|
After Width: | Height: | Size: 569 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-mixed-hover.png
Normal file
|
After Width: | Height: | Size: 450 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-mixed-insensitive.png
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
test_theme/gtk-2.0/assets/menu-radio-mixed.png
Normal file
|
After Width: | Height: | Size: 450 B |
BIN
test_theme/gtk-2.0/assets/menu-radio.png
Normal file
|
After Width: | Height: | Size: 501 B |
BIN
test_theme/gtk-2.0/assets/menubar-item-active.png
Normal file
|
After Width: | Height: | Size: 301 B |
|
After Width: | Height: | Size: 337 B |
|
After Width: | Height: | Size: 358 B |
BIN
test_theme/gtk-2.0/assets/notebook-combo-entry-ltr-entry.png
Normal file
|
After Width: | Height: | Size: 358 B |
|
After Width: | Height: | Size: 344 B |
|
After Width: | Height: | Size: 356 B |
BIN
test_theme/gtk-2.0/assets/notebook-combo-entry-rtl-entry.png
Normal file
|
After Width: | Height: | Size: 348 B |
BIN
test_theme/gtk-2.0/assets/notebook-entry-active.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
test_theme/gtk-2.0/assets/notebook-entry-insensitive.png
Normal file
|
After Width: | Height: | Size: 367 B |