Compare commits
20 Commits
panel-grow
...
v0.12-rc5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc826cbcb5 | ||
|
|
f59702054d | ||
|
|
06dfcf70be | ||
|
|
44785a49da | ||
|
|
e20448d6b5 | ||
|
|
6014b51850 | ||
|
|
5acda6a0c0 | ||
|
|
f4f028a773 | ||
|
|
66c98bc820 | ||
|
|
de1d255088 | ||
|
|
b381ad2905 | ||
|
|
a4894b8257 | ||
|
|
b7dbb919a9 | ||
|
|
a08491c122 | ||
|
|
8795f50bb8 | ||
|
|
3ab42f9b72 | ||
|
|
7bce19452e | ||
|
|
1ff028e99f | ||
|
|
5450dcca0b | ||
|
|
d2ee0a481f |
@@ -1,4 +1,4 @@
|
|||||||
2015-05-03 master
|
2015-05-23 master
|
||||||
- Note: the changes listed here are based on the previous release tint2 0.11, however some distributions (e.g. Debian)
|
- Note: the changes listed here are based on the previous release tint2 0.11, however some distributions (e.g. Debian)
|
||||||
offered packages using newer commits and/or patches; thus from the user's perspective some of these features are
|
offered packages using newer commits and/or patches; thus from the user's perspective some of these features are
|
||||||
already present. They are marked with '(already released by distros)'.
|
already present. They are marked with '(already released by distros)'.
|
||||||
@@ -11,6 +11,8 @@
|
|||||||
- Experimental, testing/feedback needed
|
- Experimental, testing/feedback needed
|
||||||
- Icons (system tray, task buttons, launcher):
|
- Icons (system tray, task buttons, launcher):
|
||||||
- Changed rendering method to fix icon corruptions (please report any problems)
|
- Changed rendering method to fix icon corruptions (please report any problems)
|
||||||
|
- System tray:
|
||||||
|
- Workaround for misbehaving applications leaving empty tray icons
|
||||||
- Many bugfixes
|
- Many bugfixes
|
||||||
- New config options (see https://gitlab.com/o9000/tint2/wikis/Configure):
|
- New config options (see https://gitlab.com/o9000/tint2/wikis/Configure):
|
||||||
- Panel:
|
- Panel:
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -1,14 +1,14 @@
|
|||||||
### New unstable release: 0.12-rc3
|
### New unstable release: 0.12-rc5
|
||||||
Changes: https://gitlab.com/o9000/tint2/blob/master/ChangeLog
|
Changes: https://gitlab.com/o9000/tint2/blob/master/ChangeLog
|
||||||
|
|
||||||
Documentation: https://gitlab.com/o9000/tint2/wikis/home
|
Documentation: https://gitlab.com/o9000/tint2/wikis/home
|
||||||
|
|
||||||
Try it out with (see also [dependencies](https://gitlab.com/o9000/tint2/wikis/Install#dependencies)):
|
Try it out with (see also [dependencies](https://gitlab.com/o9000/tint2/wikis/Install#dependencies)):
|
||||||
```
|
```
|
||||||
mkdir tint2-0.12-rc3
|
mkdir tint2-0.12-rc5
|
||||||
cd tint2-0.12-rc3
|
cd tint2-0.12-rc5
|
||||||
wget 'https://gitlab.com/o9000/tint2/repository/archive.tar.gz?ref=v0.12-rc3' --output-document tint2-0.12-rc3.tar.gz
|
wget 'https://gitlab.com/o9000/tint2/repository/archive.tar.gz?ref=v0.12-rc5' --output-document tint2-0.12-rc5.tar.gz
|
||||||
tar -xzf tint2-0.12-rc3.tar.gz
|
tar -xzf tint2-0.12-rc5.tar.gz
|
||||||
cd tint2.git
|
cd tint2.git
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
@@ -49,7 +49,7 @@ tint2 is a simple panel/taskbar made for modern X window managers. It was specif
|
|||||||
* [Configure](https://gitlab.com/o9000/tint2/wikis/Configure)
|
* [Configure](https://gitlab.com/o9000/tint2/wikis/Configure)
|
||||||
* [Add applet not supported by tint2](https://gitlab.com/o9000/tint2/wikis/ThirdPartyApplets)
|
* [Add applet not supported by tint2](https://gitlab.com/o9000/tint2/wikis/ThirdPartyApplets)
|
||||||
* [Other frequently asked questions](https://gitlab.com/o9000/tint2/wikis/FAQ)
|
* [Other frequently asked questions](https://gitlab.com/o9000/tint2/wikis/FAQ)
|
||||||
* [Debug](https://gitlab.com/o9000/tint2/wikis/Debug)
|
* [Debug](https://gitlab.com/o9000/tint2/wikis/Debug)
|
||||||
|
|
||||||
### How can I help out?
|
### How can I help out?
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,9 @@ void update_battery_tick(void* arg)
|
|||||||
int16_t old_hours = battery_state.time.hours;
|
int16_t old_hours = battery_state.time.hours;
|
||||||
int8_t old_minutes = battery_state.time.minutes;
|
int8_t old_minutes = battery_state.time.minutes;
|
||||||
|
|
||||||
|
if (!battery_found) {
|
||||||
|
init_battery();
|
||||||
|
}
|
||||||
if (update_battery() != 0) {
|
if (update_battery() != 0) {
|
||||||
// Reconfigure
|
// Reconfigure
|
||||||
init_battery();
|
init_battery();
|
||||||
@@ -103,15 +106,23 @@ void update_battery_tick(void* arg)
|
|||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < nb_panel; i++) {
|
for (i = 0; i < nb_panel; i++) {
|
||||||
if (!battery_found && panel1[i].battery.area.on_screen == 1) {
|
if (!battery_found) {
|
||||||
hide(&panel1[i].battery.area);
|
if (panel1[i].battery.area.on_screen == 1) {
|
||||||
panel_refresh = 1;
|
hide(&panel1[i].battery.area);
|
||||||
} else if (battery_state.percentage >= percentage_hide && panel1[i].battery.area.on_screen == 1) {
|
panel_refresh = 1;
|
||||||
hide(&panel1[i].battery.area);
|
}
|
||||||
panel_refresh = 1;
|
} else {
|
||||||
} else if (battery_state.percentage < percentage_hide && panel1[i].battery.area.on_screen == 0) {
|
if (battery_state.percentage >= percentage_hide) {
|
||||||
show(&panel1[i].battery.area);
|
if (panel1[i].battery.area.on_screen == 1) {
|
||||||
panel_refresh = 1;
|
hide(&panel1[i].battery.area);
|
||||||
|
panel_refresh = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (panel1[i].battery.area.on_screen == 0) {
|
||||||
|
show(&panel1[i].battery.area);
|
||||||
|
panel_refresh = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (panel1[i].battery.area.on_screen == 1) {
|
if (panel1[i].battery.area.on_screen == 1) {
|
||||||
panel1[i].battery.area.resize = 1;
|
panel1[i].battery.area.resize = 1;
|
||||||
@@ -279,7 +290,7 @@ void init_battery()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!battery_timeout)
|
if (!battery_timeout)
|
||||||
battery_timeout = add_timeout(10, 10000, update_battery_tick, 0, &battery_timeout);
|
battery_timeout = add_timeout(10, 30000, update_battery_tick, 0, &battery_timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -474,7 +485,7 @@ int update_battery() {
|
|||||||
battery_state.time.seconds = seconds;
|
battery_state.time.seconds = seconds;
|
||||||
|
|
||||||
if (energy_full > 0)
|
if (energy_full > 0)
|
||||||
new_percentage = ((energy_now <= energy_full ? energy_now : energy_full) * 100) / energy_full;
|
new_percentage = 0.5 + ((energy_now <= energy_full ? energy_now : energy_full) * 100.0) / energy_full;
|
||||||
|
|
||||||
battery_state.percentage = new_percentage;
|
battery_state.percentage = new_percentage;
|
||||||
|
|
||||||
|
|||||||
@@ -613,13 +613,13 @@ void add_entry (char *key, char *value)
|
|||||||
}
|
}
|
||||||
else if (strcmp(key, "systray_sort") == 0) {
|
else if (strcmp(key, "systray_sort") == 0) {
|
||||||
if (strcmp(value, "descending") == 0)
|
if (strcmp(value, "descending") == 0)
|
||||||
systray.sort = -1;
|
systray.sort = SYSTRAY_SORT_DESCENDING;
|
||||||
else if (strcmp(value, "ascending") == 0)
|
else if (strcmp(value, "ascending") == 0)
|
||||||
systray.sort = 1;
|
systray.sort = SYSTRAY_SORT_ASCENDING;
|
||||||
else if (strcmp(value, "left2right") == 0)
|
else if (strcmp(value, "left2right") == 0)
|
||||||
systray.sort = 2;
|
systray.sort = SYSTRAY_SORT_LEFT2RIGHT;
|
||||||
else if (strcmp(value, "right2left") == 0)
|
else if (strcmp(value, "right2left") == 0)
|
||||||
systray.sort = 3;
|
systray.sort = SYSTRAY_SORT_RIGHT2LEFT;
|
||||||
}
|
}
|
||||||
else if (strcmp(key, "systray_icon_size") == 0) {
|
else if (strcmp(key, "systray_icon_size") == 0) {
|
||||||
systray_max_icon_size = atoi(value);
|
systray_max_icon_size = atoi(value);
|
||||||
|
|||||||
@@ -536,6 +536,9 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
|||||||
char *next_larger = NULL;
|
char *next_larger = NULL;
|
||||||
GSList *next_larger_theme = NULL;
|
GSList *next_larger_theme = NULL;
|
||||||
|
|
||||||
|
int file_name_size = 4096;
|
||||||
|
char *file_name = calloc(file_name_size, 1);
|
||||||
|
|
||||||
for (theme = themes; theme; theme = g_slist_next(theme)) {
|
for (theme = themes; theme; theme = g_slist_next(theme)) {
|
||||||
((IconTheme*)theme->data)->list_directories = g_slist_sort_with_data(((IconTheme*)theme->data)->list_directories,
|
((IconTheme*)theme->data)->list_directories = g_slist_sort_with_data(((IconTheme*)theme->data)->list_directories,
|
||||||
compare_theme_directories,
|
compare_theme_directories,
|
||||||
@@ -560,8 +563,13 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
|||||||
char *theme_name = ((IconTheme*)theme->data)->name;
|
char *theme_name = ((IconTheme*)theme->data)->name;
|
||||||
char *dir_name = ((IconThemeDir*)dir->data)->name;
|
char *dir_name = ((IconThemeDir*)dir->data)->name;
|
||||||
char *extension = (char*) ext->data;
|
char *extension = (char*) ext->data;
|
||||||
char *file_name = calloc(strlen(base_name) + strlen(theme_name) +
|
if (strlen(base_name) + strlen(theme_name) +
|
||||||
strlen(dir_name) + strlen(icon_name) + strlen(extension) + 100, 1);
|
strlen(dir_name) + strlen(icon_name) + strlen(extension) + 100 > file_name_size) {
|
||||||
|
file_name_size = strlen(base_name) + strlen(theme_name) +
|
||||||
|
strlen(dir_name) + strlen(icon_name) + strlen(extension) + 100;
|
||||||
|
file_name = realloc(file_name, file_name_size);
|
||||||
|
}
|
||||||
|
file_name[0] = 0;
|
||||||
// filename = directory/$(themename)/subdirectory/iconname.extension
|
// filename = directory/$(themename)/subdirectory/iconname.extension
|
||||||
sprintf(file_name, "%s/%s/%s/%s%s", base_name, theme_name, dir_name, icon_name, extension);
|
sprintf(file_name, "%s/%s/%s/%s%s", base_name, theme_name, dir_name, icon_name, extension);
|
||||||
if (DEBUG_ICON_SEARCH)
|
if (DEBUG_ICON_SEARCH)
|
||||||
@@ -596,11 +604,12 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
|||||||
printf("next_larger = %s; next_larger_size = %d\n", next_larger, next_larger_size);
|
printf("next_larger = %s; next_larger_size = %d\n", next_larger, next_larger_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(file_name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(file_name);
|
||||||
|
file_name = NULL;
|
||||||
if (next_larger) {
|
if (next_larger) {
|
||||||
g_slist_free(extensions);
|
g_slist_free(extensions);
|
||||||
free(best_file_name);
|
free(best_file_name);
|
||||||
|
|||||||
@@ -31,6 +31,8 @@
|
|||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <glib/gstdio.h>
|
#include <glib/gstdio.h>
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
|
||||||
#ifdef HAVE_RSVG
|
#ifdef HAVE_RSVG
|
||||||
#include <librsvg/rsvg.h>
|
#include <librsvg/rsvg.h>
|
||||||
@@ -150,8 +152,7 @@ void cleanup_launcher_theme(Launcher *launcher)
|
|||||||
for (l = launcher->list_icons; l ; l = l->next) {
|
for (l = launcher->list_icons; l ; l = l->next) {
|
||||||
LauncherIcon *launcherIcon = (LauncherIcon*)l->data;
|
LauncherIcon *launcherIcon = (LauncherIcon*)l->data;
|
||||||
if (launcherIcon) {
|
if (launcherIcon) {
|
||||||
free_icon(launcherIcon->icon_scaled);
|
free_icon(launcherIcon->image);
|
||||||
free_icon(launcherIcon->icon_original);
|
|
||||||
free(launcherIcon->icon_name);
|
free(launcherIcon->icon_name);
|
||||||
free(launcherIcon->icon_path);
|
free(launcherIcon->icon_path);
|
||||||
free(launcherIcon->cmd);
|
free(launcherIcon->cmd);
|
||||||
@@ -186,7 +187,7 @@ int resize_launcher(void *obj)
|
|||||||
// Resize icons if necessary
|
// Resize icons if necessary
|
||||||
for (l = launcher->list_icons; l ; l = l->next) {
|
for (l = launcher->list_icons; l ; l = l->next) {
|
||||||
LauncherIcon *launcherIcon = (LauncherIcon *)l->data;
|
LauncherIcon *launcherIcon = (LauncherIcon *)l->data;
|
||||||
if (launcherIcon->icon_size != icon_size || !launcherIcon->icon_original) {
|
if (launcherIcon->icon_size != icon_size || !launcherIcon->image) {
|
||||||
launcherIcon->icon_size = icon_size;
|
launcherIcon->icon_size = icon_size;
|
||||||
launcherIcon->area.width = launcherIcon->icon_size;
|
launcherIcon->area.width = launcherIcon->icon_size;
|
||||||
launcherIcon->area.height = launcherIcon->icon_size;
|
launcherIcon->area.height = launcherIcon->icon_size;
|
||||||
@@ -195,69 +196,69 @@ int resize_launcher(void *obj)
|
|||||||
char *new_icon_path = get_icon_path(launcher->list_themes, launcherIcon->icon_name, launcherIcon->icon_size);
|
char *new_icon_path = get_icon_path(launcher->list_themes, launcherIcon->icon_name, launcherIcon->icon_size);
|
||||||
if (!new_icon_path) {
|
if (!new_icon_path) {
|
||||||
// Draw a blank icon
|
// Draw a blank icon
|
||||||
free_icon(launcherIcon->icon_original);
|
free_icon(launcherIcon->image);
|
||||||
launcherIcon->icon_original = NULL;
|
launcherIcon->image = NULL;
|
||||||
free_icon(launcherIcon->icon_scaled);
|
|
||||||
launcherIcon->icon_scaled = NULL;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (launcherIcon->icon_path && strcmp(new_icon_path, launcherIcon->icon_path) == 0) {
|
|
||||||
// If it's the same file just rescale
|
// Free the old files
|
||||||
free_icon(launcherIcon->icon_scaled);
|
free_icon(launcherIcon->image);
|
||||||
launcherIcon->icon_scaled = scale_icon(launcherIcon->icon_original, icon_size);
|
launcherIcon->image = NULL;
|
||||||
free(new_icon_path);
|
// Load the new file and scale
|
||||||
fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path);
|
launcherIcon->image = imlib_load_image_immediately(new_icon_path);
|
||||||
} else {
|
|
||||||
// Free the old files
|
|
||||||
free_icon(launcherIcon->icon_original);
|
|
||||||
free_icon(launcherIcon->icon_scaled);
|
|
||||||
launcherIcon->icon_original = launcherIcon->icon_scaled = NULL;
|
|
||||||
// Load the new file and scale
|
|
||||||
launcherIcon->icon_original = imlib_load_image_immediately(new_icon_path);
|
|
||||||
#ifdef HAVE_RSVG
|
#ifdef HAVE_RSVG
|
||||||
if (!launcherIcon->icon_original && g_str_has_suffix(new_icon_path, ".svg")) {
|
if (!launcherIcon->image && g_str_has_suffix(new_icon_path, ".svg")) {
|
||||||
|
char suffix[128];
|
||||||
|
sprintf(suffix, "tmpicon-%d.png", getpid());
|
||||||
|
// We fork here because librsvg allocates memory like crazy
|
||||||
|
pid_t pid = fork();
|
||||||
|
if (pid == 0) {
|
||||||
|
// Child
|
||||||
GError* err = NULL;
|
GError* err = NULL;
|
||||||
RsvgHandle* svg = rsvg_handle_new_from_file(new_icon_path, &err);
|
RsvgHandle* svg = rsvg_handle_new_from_file(new_icon_path, &err);
|
||||||
|
|
||||||
if (err != NULL) {
|
if (err != NULL) {
|
||||||
fprintf(stderr, "Could not load svg image!: %s", err->message);
|
fprintf(stderr, "Could not load svg image!: %s", err->message);
|
||||||
g_error_free(err);
|
g_error_free(err);
|
||||||
launcherIcon->icon_original = NULL;
|
launcherIcon->image = NULL;
|
||||||
} else {
|
} else {
|
||||||
char suffix[128];
|
|
||||||
sprintf(suffix, "tmpicon-%d.png", getpid());
|
|
||||||
gchar *name = g_build_filename(g_get_user_config_dir(), "tint2", suffix, NULL);
|
gchar *name = g_build_filename(g_get_user_config_dir(), "tint2", suffix, NULL);
|
||||||
GdkPixbuf *pixbuf = rsvg_handle_get_pixbuf(svg);
|
GdkPixbuf *pixbuf = rsvg_handle_get_pixbuf(svg);
|
||||||
gdk_pixbuf_save(pixbuf, name, "png", NULL, NULL);
|
gdk_pixbuf_save(pixbuf, name, "png", NULL, NULL);
|
||||||
launcherIcon->icon_original = imlib_load_image_immediately_without_cache(name);
|
|
||||||
g_remove(name);
|
|
||||||
g_free(name);
|
|
||||||
g_object_unref(G_OBJECT(pixbuf));
|
|
||||||
g_object_unref(G_OBJECT(svg));
|
|
||||||
}
|
}
|
||||||
} else
|
exit(0);
|
||||||
#endif
|
|
||||||
{
|
|
||||||
launcherIcon->icon_original = imlib_load_image_immediately(new_icon_path);
|
|
||||||
}
|
|
||||||
// On loading error, fallback to default
|
|
||||||
if (!launcherIcon->icon_original) {
|
|
||||||
free(new_icon_path);
|
|
||||||
new_icon_path = get_icon_path(launcher->list_themes, DEFAULT_ICON, launcherIcon->icon_size);
|
|
||||||
if (new_icon_path)
|
|
||||||
launcherIcon->icon_original = imlib_load_image_immediately(new_icon_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!launcherIcon->icon_original) {
|
|
||||||
// Loading default icon failed, draw a blank icon
|
|
||||||
free(new_icon_path);
|
|
||||||
} else {
|
} else {
|
||||||
// Loaded icon successfully
|
// Parent
|
||||||
launcherIcon->icon_scaled = scale_icon(launcherIcon->icon_original, launcherIcon->icon_size);
|
waitpid(pid, 0, 0);
|
||||||
free(launcherIcon->icon_path);
|
gchar *name = g_build_filename(g_get_user_config_dir(), "tint2", suffix, NULL);
|
||||||
launcherIcon->icon_path = new_icon_path;
|
launcherIcon->image = imlib_load_image_immediately_without_cache(name);
|
||||||
fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path);
|
g_remove(name);
|
||||||
|
g_free(name);
|
||||||
}
|
}
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
launcherIcon->image = imlib_load_image_immediately(new_icon_path);
|
||||||
|
}
|
||||||
|
// On loading error, fallback to default
|
||||||
|
if (!launcherIcon->image) {
|
||||||
|
free(new_icon_path);
|
||||||
|
new_icon_path = get_icon_path(launcher->list_themes, DEFAULT_ICON, launcherIcon->icon_size);
|
||||||
|
if (new_icon_path)
|
||||||
|
launcherIcon->image = imlib_load_image_immediately(new_icon_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!launcherIcon->image) {
|
||||||
|
// Loading default icon failed, draw a blank icon
|
||||||
|
free(new_icon_path);
|
||||||
|
} else {
|
||||||
|
// Loaded icon successfully
|
||||||
|
Imlib_Image original = launcherIcon->image;
|
||||||
|
launcherIcon->image = scale_icon(launcherIcon->image, launcherIcon->icon_size);
|
||||||
|
free_icon(original);
|
||||||
|
free(launcherIcon->icon_path);
|
||||||
|
launcherIcon->icon_path = new_icon_path;
|
||||||
|
fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -331,6 +332,7 @@ int resize_launcher(void *obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,9 +357,8 @@ void draw_launcher_icon(void *obj, cairo_t *c)
|
|||||||
{
|
{
|
||||||
LauncherIcon *launcherIcon = (LauncherIcon*)obj;
|
LauncherIcon *launcherIcon = (LauncherIcon*)obj;
|
||||||
|
|
||||||
Imlib_Image icon_scaled = launcherIcon->icon_scaled;
|
|
||||||
// Render
|
// Render
|
||||||
imlib_context_set_image(icon_scaled);
|
imlib_context_set_image(launcherIcon->image);
|
||||||
if (server.real_transparency) {
|
if (server.real_transparency) {
|
||||||
render_image(launcherIcon->area.pix, 0, 0);
|
render_image(launcherIcon->area.pix, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
@@ -403,7 +404,7 @@ void launcher_action(LauncherIcon *icon, XEvent* evt)
|
|||||||
char *cmd = calloc(strlen(icon->cmd) + 10, 1);
|
char *cmd = calloc(strlen(icon->cmd) + 10, 1);
|
||||||
sprintf(cmd, "(%s&)", icon->cmd);
|
sprintf(cmd, "(%s&)", icon->cmd);
|
||||||
#if HAVE_SN
|
#if HAVE_SN
|
||||||
SnLauncherContext* ctx;
|
SnLauncherContext* ctx = 0;
|
||||||
Time time;
|
Time time;
|
||||||
if (startup_notifications) {
|
if (startup_notifications) {
|
||||||
ctx = sn_launcher_context_new(server.sn_dsp, server.screen);
|
ctx = sn_launcher_context_new(server.sn_dsp, server.screen);
|
||||||
|
|||||||
@@ -23,8 +23,7 @@ typedef struct Launcher {
|
|||||||
typedef struct LauncherIcon {
|
typedef struct LauncherIcon {
|
||||||
// always start with area
|
// always start with area
|
||||||
Area area;
|
Area area;
|
||||||
Imlib_Image icon_scaled;
|
Imlib_Image image;
|
||||||
Imlib_Image icon_original;
|
|
||||||
char *cmd;
|
char *cmd;
|
||||||
char *icon_name;
|
char *icon_name;
|
||||||
char *icon_path;
|
char *icon_path;
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ void server_init_atoms ()
|
|||||||
server.atom._NET_SYSTEM_TRAY_ORIENTATION = XInternAtom(server.dsp, "_NET_SYSTEM_TRAY_ORIENTATION", False);
|
server.atom._NET_SYSTEM_TRAY_ORIENTATION = XInternAtom(server.dsp, "_NET_SYSTEM_TRAY_ORIENTATION", False);
|
||||||
server.atom._XEMBED = XInternAtom(server.dsp, "_XEMBED", False);
|
server.atom._XEMBED = XInternAtom(server.dsp, "_XEMBED", False);
|
||||||
server.atom._XEMBED_INFO = XInternAtom(server.dsp, "_XEMBED_INFO", False);
|
server.atom._XEMBED_INFO = XInternAtom(server.dsp, "_XEMBED_INFO", False);
|
||||||
|
server.atom._NET_WM_PID = XInternAtom(server.dsp, "_NET_WM_PID", True);
|
||||||
|
|
||||||
// drag 'n' drop
|
// drag 'n' drop
|
||||||
server.atom.XdndAware = XInternAtom(server.dsp, "XdndAware", False);
|
server.atom.XdndAware = XInternAtom(server.dsp, "XdndAware", False);
|
||||||
|
|||||||
@@ -15,9 +15,8 @@
|
|||||||
|
|
||||||
#ifdef HAVE_SN
|
#ifdef HAVE_SN
|
||||||
#include <libsn/sn.h>
|
#include <libsn/sn.h>
|
||||||
#include <glib.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
typedef struct Global_atom
|
typedef struct Global_atom
|
||||||
{
|
{
|
||||||
@@ -74,6 +73,7 @@ typedef struct Global_atom
|
|||||||
Atom _NET_SYSTEM_TRAY_ORIENTATION;
|
Atom _NET_SYSTEM_TRAY_ORIENTATION;
|
||||||
Atom _XEMBED;
|
Atom _XEMBED;
|
||||||
Atom _XEMBED_INFO;
|
Atom _XEMBED_INFO;
|
||||||
|
Atom _NET_WM_PID;
|
||||||
Atom _XSETTINGS_SCREEN;
|
Atom _XSETTINGS_SCREEN;
|
||||||
Atom _XSETTINGS_SETTINGS;
|
Atom _XSETTINGS_SETTINGS;
|
||||||
Atom XdndAware;
|
Atom XdndAware;
|
||||||
@@ -154,4 +154,4 @@ void get_monitors();
|
|||||||
void get_desktops();
|
void get_desktops();
|
||||||
int server_get_number_of_desktops();
|
int server_get_number_of_desktops();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -52,7 +52,7 @@ int refresh_systray;
|
|||||||
int systray_enabled;
|
int systray_enabled;
|
||||||
int systray_max_icon_size;
|
int systray_max_icon_size;
|
||||||
int systray_monitor;
|
int systray_monitor;
|
||||||
|
int chrono;
|
||||||
// background pixmap if we render ourselves the icons
|
// background pixmap if we render ourselves the icons
|
||||||
static Pixmap render_background;
|
static Pixmap render_background;
|
||||||
|
|
||||||
@@ -61,8 +61,9 @@ void default_systray()
|
|||||||
{
|
{
|
||||||
memset(&systray, 0, sizeof(Systraybar));
|
memset(&systray, 0, sizeof(Systraybar));
|
||||||
render_background = 0;
|
render_background = 0;
|
||||||
|
chrono = 0;
|
||||||
systray.alpha = 100;
|
systray.alpha = 100;
|
||||||
systray.sort = 3;
|
systray.sort = SYSTRAY_SORT_LEFT2RIGHT;
|
||||||
systray.area._draw_foreground = draw_systray;
|
systray.area._draw_foreground = draw_systray;
|
||||||
systray.area._on_change_layout = on_change_systray;
|
systray.area._on_change_layout = on_change_systray;
|
||||||
systray.area.size_mode = SIZE_BY_CONTENT;
|
systray.area.size_mode = SIZE_BY_CONTENT;
|
||||||
@@ -108,8 +109,9 @@ void init_systray_panel(void *p)
|
|||||||
GSList *l;
|
GSList *l;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (l = systray.list_icons; l ; l = l->next) {
|
for (l = systray.list_icons; l ; l = l->next) {
|
||||||
if (!((TrayWindow*)l->data)->hide)
|
if (((TrayWindow*)l->data)->hide)
|
||||||
count++;
|
continue;
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
if (count == 0)
|
if (count == 0)
|
||||||
hide(&systray.area);
|
hide(&systray.area);
|
||||||
@@ -146,8 +148,9 @@ int resize_systray(void *obj)
|
|||||||
sysbar->icon_size = systray_max_icon_size;
|
sysbar->icon_size = systray_max_icon_size;
|
||||||
count = 0;
|
count = 0;
|
||||||
for (l = systray.list_icons; l ; l = l->next) {
|
for (l = systray.list_icons; l ; l = l->next) {
|
||||||
if (!((TrayWindow*)l->data)->hide)
|
if (((TrayWindow*)l->data)->hide)
|
||||||
count++;
|
continue;
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
//printf("count %d\n", count);
|
//printf("count %d\n", count);
|
||||||
|
|
||||||
@@ -194,11 +197,12 @@ void on_change_systray (void *obj)
|
|||||||
GSList *l;
|
GSList *l;
|
||||||
for (i=1, l = systray.list_icons; l ; i++, l = l->next) {
|
for (i=1, l = systray.list_icons; l ; i++, l = l->next) {
|
||||||
traywin = (TrayWindow*)l->data;
|
traywin = (TrayWindow*)l->data;
|
||||||
if (traywin->hide) continue;
|
if (traywin->hide)
|
||||||
|
continue;
|
||||||
|
|
||||||
traywin->y = posy;
|
traywin->y = posy;
|
||||||
traywin->x = posx;
|
traywin->x = posx;
|
||||||
//printf("systray %d : %d,%d\n", i, posx, posy);
|
// printf("systray %d : pos %d, %d\n", traywin->tray_id, posx, posy);
|
||||||
traywin->width = sysbar->icon_size;
|
traywin->width = sysbar->icon_size;
|
||||||
traywin->height = sysbar->icon_size;
|
traywin->height = sysbar->icon_size;
|
||||||
if (panel_horizontal) {
|
if (panel_horizontal) {
|
||||||
@@ -336,21 +340,39 @@ static gint compare_traywindows(gconstpointer a, gconstpointer b)
|
|||||||
{
|
{
|
||||||
const TrayWindow * traywin_a = (TrayWindow*)a;
|
const TrayWindow * traywin_a = (TrayWindow*)a;
|
||||||
const TrayWindow * traywin_b = (TrayWindow*)b;
|
const TrayWindow * traywin_b = (TrayWindow*)b;
|
||||||
XTextProperty name_a, name_b;
|
|
||||||
|
|
||||||
if(XGetWMName(server.dsp, traywin_a->tray_id, &name_a) == 0) {
|
if (traywin_a->empty && !traywin_b->empty)
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
else if(XGetWMName(server.dsp, traywin_b->tray_id, &name_b) == 0) {
|
|
||||||
XFree(name_a.value);
|
|
||||||
return 1;
|
return 1;
|
||||||
|
if (!traywin_a->empty && traywin_b->empty)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (systray.sort == SYSTRAY_SORT_ASCENDING ||
|
||||||
|
systray.sort == SYSTRAY_SORT_DESCENDING) {
|
||||||
|
XTextProperty name_a, name_b;
|
||||||
|
|
||||||
|
if (XGetWMName(server.dsp, traywin_a->tray_id, &name_a) == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if (XGetWMName(server.dsp, traywin_b->tray_id, &name_b) == 0) {
|
||||||
|
XFree(name_a.value);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
gint retval = g_ascii_strncasecmp((char*)name_a.value, (char*)name_b.value, -1) *
|
||||||
|
(systray.sort == SYSTRAY_SORT_ASCENDING ? 1 : -1);
|
||||||
|
XFree(name_a.value);
|
||||||
|
XFree(name_b.value);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
gint retval = g_ascii_strncasecmp((char*)name_a.value, (char*)name_b.value, -1) * systray.sort;
|
if (systray.sort == SYSTRAY_SORT_LEFT2RIGHT ||
|
||||||
XFree(name_a.value);
|
systray.sort == SYSTRAY_SORT_RIGHT2LEFT) {
|
||||||
XFree(name_b.value);
|
return (traywin_a->chrono - traywin_b->chrono) *
|
||||||
return retval;
|
(systray.sort == SYSTRAY_SORT_LEFT2RIGHT ? 1 : -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -361,12 +383,42 @@ gboolean add_icon(Window id)
|
|||||||
Panel *panel = systray.area.panel;
|
Panel *panel = systray.area.panel;
|
||||||
int hide = 0;
|
int hide = 0;
|
||||||
|
|
||||||
|
int pid = 0;
|
||||||
|
{
|
||||||
|
Atom actual_type;
|
||||||
|
int actual_format;
|
||||||
|
unsigned long nitems;
|
||||||
|
unsigned long bytes_after;
|
||||||
|
unsigned char *prop = 0;
|
||||||
|
int ret = XGetWindowProperty(server.dsp, id, server.atom._NET_WM_PID, 0, 1024, False, AnyPropertyType, &actual_type, &actual_format, &nitems, &bytes_after, &prop);
|
||||||
|
if (ret == Success && prop) {
|
||||||
|
pid = prop[1] * 256;
|
||||||
|
pid += prop[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GSList *l;
|
GSList *l;
|
||||||
|
int num_empty_same_pid = 0;
|
||||||
for (l = systray.list_icons; l; l = l->next) {
|
for (l = systray.list_icons; l; l = l->next) {
|
||||||
if (((TrayWindow*)l->data)->tray_id == id)
|
if (((TrayWindow*)l->data)->tray_id == id)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
if (pid && ((TrayWindow*)l->data)->pid == pid && ((TrayWindow*)l->data)->empty)
|
||||||
|
num_empty_same_pid++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int max_num_empty_same_pid = 0;
|
||||||
|
if (num_empty_same_pid > max_num_empty_same_pid) {
|
||||||
|
for (l = systray.list_icons; l; l = l->next) {
|
||||||
|
if (pid && ((TrayWindow*)l->data)->pid == pid && ((TrayWindow*)l->data)->empty) {
|
||||||
|
num_empty_same_pid++;
|
||||||
|
fprintf(stderr, "Removing tray icon %lu from misbehaving application with pid=%d\n", ((TrayWindow*)l->data)->tray_id, pid);
|
||||||
|
remove_icon((TrayWindow*)l->data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//printf("add_icon: %d, pid %d, %d\n", id, pid, num_empty_same_pid);
|
||||||
|
|
||||||
error = FALSE;
|
error = FALSE;
|
||||||
XWindowAttributes attr;
|
XWindowAttributes attr;
|
||||||
if ( XGetWindowAttributes(server.dsp, id, &attr) == False ) return FALSE;
|
if ( XGetWindowAttributes(server.dsp, id, &attr) == False ) return FALSE;
|
||||||
@@ -445,16 +497,19 @@ gboolean add_icon(Window id)
|
|||||||
traywin->hide = hide;
|
traywin->hide = hide;
|
||||||
traywin->depth = attr.depth;
|
traywin->depth = attr.depth;
|
||||||
traywin->damage = 0;
|
traywin->damage = 0;
|
||||||
|
traywin->empty = 0;
|
||||||
|
traywin->pid = pid;
|
||||||
|
traywin->chrono = chrono;
|
||||||
|
chrono++;
|
||||||
|
|
||||||
if (systray.area.on_screen == 0)
|
if (systray.area.on_screen == 0)
|
||||||
show(&systray.area);
|
show(&systray.area);
|
||||||
|
|
||||||
if (systray.sort == 3)
|
if (systray.sort == SYSTRAY_SORT_RIGHT2LEFT)
|
||||||
systray.list_icons = g_slist_prepend(systray.list_icons, traywin);
|
systray.list_icons = g_slist_prepend(systray.list_icons, traywin);
|
||||||
else if (systray.sort == 2)
|
|
||||||
systray.list_icons = g_slist_append(systray.list_icons, traywin);
|
|
||||||
else
|
else
|
||||||
systray.list_icons = g_slist_insert_sorted(systray.list_icons, traywin, compare_traywindows);
|
systray.list_icons = g_slist_append(systray.list_icons, traywin);
|
||||||
|
systray.list_icons = g_slist_sort(systray.list_icons, compare_traywindows);
|
||||||
//printf("add_icon id %lx, %d\n", id, g_slist_length(systray.list_icons));
|
//printf("add_icon id %lx, %d\n", id, g_slist_length(systray.list_icons));
|
||||||
|
|
||||||
if (FORCE_COMPOSITED_RENDERING || server.real_transparency || systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0) {
|
if (FORCE_COMPOSITED_RENDERING || server.real_transparency || systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0) {
|
||||||
@@ -481,7 +536,7 @@ void remove_icon(TrayWindow *traywin)
|
|||||||
|
|
||||||
// remove from our list
|
// remove from our list
|
||||||
systray.list_icons = g_slist_remove(systray.list_icons, traywin);
|
systray.list_icons = g_slist_remove(systray.list_icons, traywin);
|
||||||
//printf("remove_icon id %lx, %d\n", traywin->id);
|
//printf("remove_icon: %d\n", traywin->tray_id);
|
||||||
|
|
||||||
XSelectInput(server.dsp, traywin->tray_id, NoEventMask);
|
XSelectInput(server.dsp, traywin->tray_id, NoEventMask);
|
||||||
if (traywin->damage)
|
if (traywin->damage)
|
||||||
@@ -503,8 +558,9 @@ void remove_icon(TrayWindow *traywin)
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
GSList *l;
|
GSList *l;
|
||||||
for (l = systray.list_icons; l; l = l->next) {
|
for (l = systray.list_icons; l; l = l->next) {
|
||||||
if (!((TrayWindow*)l->data)->hide)
|
if (((TrayWindow*)l->data)->hide)
|
||||||
count++;
|
continue;
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
if (count == 0)
|
if (count == 0)
|
||||||
hide(&systray.area);
|
hide(&systray.area);
|
||||||
@@ -546,6 +602,7 @@ void systray_render_icon_now(void* t)
|
|||||||
// we end up in this function only in real transparency mode or if systray_task_asb != 100 0 0
|
// we end up in this function only in real transparency mode or if systray_task_asb != 100 0 0
|
||||||
// we made also sure, that we always have a 32 bit visual, i.e. we can safely create 32 bit pixmaps here
|
// we made also sure, that we always have a 32 bit visual, i.e. we can safely create 32 bit pixmaps here
|
||||||
TrayWindow* traywin = t;
|
TrayWindow* traywin = t;
|
||||||
|
|
||||||
traywin->render_timeout = 0;
|
traywin->render_timeout = 0;
|
||||||
if ( traywin->width == 0 || traywin->height == 0 ) {
|
if ( traywin->width == 0 || traywin->height == 0 ) {
|
||||||
// reschedule rendering since the geometry information has not yet been processed (can happen on slow cpu)
|
// reschedule rendering since the geometry information has not yet been processed (can happen on slow cpu)
|
||||||
@@ -553,6 +610,30 @@ void systray_render_icon_now(void* t)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int empty = 1;
|
||||||
|
XImage *ximage = XGetImage(server.dsp, traywin->tray_id, 0, 0, traywin->width, traywin->height, AllPlanes, XYPixmap);
|
||||||
|
if (ximage) {
|
||||||
|
XColor color;
|
||||||
|
int x, y;
|
||||||
|
for (x = 0; empty && x < traywin->width; x++) {
|
||||||
|
for (y = 0; empty && y < traywin->height; y++) {
|
||||||
|
color.pixel = XGetPixel(ximage, x, y);
|
||||||
|
if (color.pixel != 0)
|
||||||
|
empty = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
XFree(ximage);
|
||||||
|
}
|
||||||
|
if (traywin->empty != empty) {
|
||||||
|
traywin->empty = empty;
|
||||||
|
systray.area.resize = 1;
|
||||||
|
panel_refresh = 1;
|
||||||
|
systray.list_icons = g_slist_sort(systray.list_icons, compare_traywindows);
|
||||||
|
}
|
||||||
|
//printf("systray_render_icon_now: %d empty %d\n", traywin->tray_id, empty);
|
||||||
|
if (empty)
|
||||||
|
return;
|
||||||
|
|
||||||
// good systray icons support 32 bit depth, but some icons are still 24 bit.
|
// good systray icons support 32 bit depth, but some icons are still 24 bit.
|
||||||
// We create a heuristic mask for these icons, i.e. we get the rgb value in the top left corner, and
|
// We create a heuristic mask for these icons, i.e. we get the rgb value in the top left corner, and
|
||||||
// mask out all pixel with the same rgb value
|
// mask out all pixel with the same rgb value
|
||||||
@@ -636,7 +717,8 @@ void refresh_systray_icon()
|
|||||||
GSList *l;
|
GSList *l;
|
||||||
for (l = systray.list_icons; l ; l = l->next) {
|
for (l = systray.list_icons; l ; l = l->next) {
|
||||||
traywin = (TrayWindow*)l->data;
|
traywin = (TrayWindow*)l->data;
|
||||||
if (traywin->hide) continue;
|
if (traywin->hide)
|
||||||
|
continue;
|
||||||
systray_render_icon(traywin);
|
systray_render_icon(traywin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
// Flags for _XEMBED_INFO
|
// Flags for _XEMBED_INFO
|
||||||
#define XEMBED_MAPPED (1 << 0)
|
#define XEMBED_MAPPED (1 << 0)
|
||||||
|
|
||||||
|
enum { SYSTRAY_SORT_ASCENDING, SYSTRAY_SORT_DESCENDING, SYSTRAY_SORT_LEFT2RIGHT, SYSTRAY_SORT_RIGHT2LEFT };
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
// always start with area
|
// always start with area
|
||||||
@@ -43,6 +44,9 @@ typedef struct
|
|||||||
int depth;
|
int depth;
|
||||||
Damage damage;
|
Damage damage;
|
||||||
timeout* render_timeout;
|
timeout* render_timeout;
|
||||||
|
int empty;
|
||||||
|
int pid;
|
||||||
|
int chrono;
|
||||||
} TrayWindow;
|
} TrayWindow;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ Task *add_task (Window win)
|
|||||||
if (!win) return 0;
|
if (!win) return 0;
|
||||||
if (window_is_hidden(win)) return 0;
|
if (window_is_hidden(win)) return 0;
|
||||||
|
|
||||||
|
XSelectInput(server.dsp, win, PropertyChangeMask|StructureNotifyMask);
|
||||||
|
XFlush(server.dsp);
|
||||||
|
|
||||||
int monitor;
|
int monitor;
|
||||||
if (nb_panel > 1) {
|
if (nb_panel > 1) {
|
||||||
monitor = window_get_monitor (win);
|
monitor = window_get_monitor (win);
|
||||||
@@ -75,8 +78,7 @@ Task *add_task (Window win)
|
|||||||
get_title(&new_tsk);
|
get_title(&new_tsk);
|
||||||
get_icon(&new_tsk);
|
get_icon(&new_tsk);
|
||||||
|
|
||||||
//printf("task %s : desktop %d, monitor %d\n", new_tsk->title, desktop, monitor);
|
//printf("new task %s win %u: desktop %d, monitor %d\n", new_tsk.title, win, new_tsk.desktop, monitor);
|
||||||
XSelectInput (server.dsp, new_tsk.win, PropertyChangeMask|StructureNotifyMask);
|
|
||||||
|
|
||||||
GPtrArray* task_group = g_ptr_array_new();
|
GPtrArray* task_group = g_ptr_array_new();
|
||||||
Taskbar *tskbar;
|
Taskbar *tskbar;
|
||||||
|
|||||||
@@ -727,6 +727,7 @@ void event_property_notify (XEvent *e)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tsk = task_get_task (win);
|
tsk = task_get_task (win);
|
||||||
|
//printf("change win = %u, task = %p\n", win, tsk);
|
||||||
if (!tsk) {
|
if (!tsk) {
|
||||||
if (at != server.atom._NET_WM_STATE)
|
if (at != server.atom._NET_WM_STATE)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -56,13 +56,17 @@ target_link_libraries( tint2conf ${X11_T2C_LIBRARIES}
|
|||||||
${RSVG_LIBRARIES} )
|
${RSVG_LIBRARIES} )
|
||||||
|
|
||||||
if ( NOT DATADIR )
|
if ( NOT DATADIR )
|
||||||
set( DATADIR share )
|
set(DATADIR share)
|
||||||
endif( NOT DATADIR )
|
endif( NOT DATADIR )
|
||||||
|
|
||||||
add_definitions( -DINSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\" )
|
add_definitions( -DINSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\" )
|
||||||
|
add_definitions( -DLOCALEDIR=\"${CMAKE_INSTALL_PREFIX}/${DATADIR}/locale\" )
|
||||||
|
add_definitions( -DGETTEXT_PACKAGE=\"tint2conf\" )
|
||||||
set_target_properties( tint2conf PROPERTIES COMPILE_FLAGS "-Wall -pthread" )
|
set_target_properties( tint2conf PROPERTIES COMPILE_FLAGS "-Wall -pthread" )
|
||||||
set_target_properties( tint2conf PROPERTIES LINK_FLAGS "-pthread" )
|
set_target_properties( tint2conf PROPERTIES LINK_FLAGS "-pthread" )
|
||||||
|
|
||||||
|
add_subdirectory(po)
|
||||||
|
|
||||||
install( TARGETS tint2conf DESTINATION bin )
|
install( TARGETS tint2conf DESTINATION bin )
|
||||||
install( FILES tint2conf.svg DESTINATION ${DATADIR}/icons/hicolor/scalable/apps )
|
install( FILES tint2conf.svg DESTINATION ${DATADIR}/icons/hicolor/scalable/apps )
|
||||||
install( FILES tint2conf.desktop DESTINATION ${DATADIR}/applications )
|
install( FILES tint2conf.desktop DESTINATION ${DATADIR}/applications )
|
||||||
|
|||||||
@@ -119,26 +119,12 @@ static const char *global_ui =
|
|||||||
" </popup>"
|
" </popup>"
|
||||||
"</ui>";
|
"</ui>";
|
||||||
|
|
||||||
|
|
||||||
// define menubar and toolbar action
|
|
||||||
static GtkActionEntry entries[] = {
|
|
||||||
{"ThemeMenu", NULL, _("Theme"), NULL, NULL, NULL},
|
|
||||||
{"ThemeAdd", GTK_STOCK_ADD, _("_Import theme..."), "<Control>N", _("Import theme"), G_CALLBACK(menuImport)},
|
|
||||||
{"ThemeDefault", GTK_STOCK_NEW, _("_Import default theme..."), NULL, _("Import default theme"), G_CALLBACK(menuImportDefault)},
|
|
||||||
{"ThemeSaveAs", GTK_STOCK_SAVE_AS, _("_Save as..."), NULL, _("Save theme as"), G_CALLBACK(menuSaveAs)},
|
|
||||||
{"ThemeDelete", GTK_STOCK_DELETE, _("_Delete"), NULL, _("Delete theme"), G_CALLBACK(menuDelete)},
|
|
||||||
{"ThemeProperties", GTK_STOCK_PROPERTIES, _("_Edit theme..."), NULL, _("Edit selected theme"), G_CALLBACK(edit_current_theme)},
|
|
||||||
{"ThemeQuit", GTK_STOCK_QUIT, _("_Quit"), "<control>Q", _("Quit"), G_CALLBACK(gtk_main_quit)},
|
|
||||||
{"EditMenu", NULL, "Edit", NULL, NULL, NULL},
|
|
||||||
{"EditRefresh", GTK_STOCK_REFRESH, _("Refresh"), NULL, _("Refresh"), G_CALLBACK(refresh_current_theme)},
|
|
||||||
{"EditRefreshAll", GTK_STOCK_REFRESH, _("Refresh all"), NULL, _("Refresh all"), G_CALLBACK(load_all_themes)},
|
|
||||||
{"HelpMenu", NULL, _("Help"), NULL, NULL, NULL},
|
|
||||||
{"HelpAbout", GTK_STOCK_ABOUT, _("_About"), "<Control>A", _("About"), G_CALLBACK(menuAbout)}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
|
||||||
|
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
||||||
|
textdomain(GETTEXT_PACKAGE);
|
||||||
|
|
||||||
GtkWidget *vBox = NULL, *scrollbar = NULL;
|
GtkWidget *vBox = NULL, *scrollbar = NULL;
|
||||||
GtkActionGroup *actionGroup;
|
GtkActionGroup *actionGroup;
|
||||||
|
|
||||||
@@ -167,6 +153,23 @@ int main(int argc, char **argv)
|
|||||||
gtk_container_add(GTK_CONTAINER(g_window), vBox);
|
gtk_container_add(GTK_CONTAINER(g_window), vBox);
|
||||||
|
|
||||||
actionGroup = gtk_action_group_new("menuActionGroup");
|
actionGroup = gtk_action_group_new("menuActionGroup");
|
||||||
|
|
||||||
|
// Menubar and toolbar entries
|
||||||
|
GtkActionEntry entries[] = {
|
||||||
|
{"ThemeMenu", NULL, _("Theme"), NULL, NULL, NULL},
|
||||||
|
{"ThemeAdd", GTK_STOCK_ADD, _("_Import theme..."), "<Control>N", _("Import theme"), G_CALLBACK(menuImport)},
|
||||||
|
{"ThemeDefault", GTK_STOCK_NEW, _("_Import default theme..."), NULL, _("Import default theme"), G_CALLBACK(menuImportDefault)},
|
||||||
|
{"ThemeSaveAs", GTK_STOCK_SAVE_AS, _("_Save as..."), NULL, _("Save theme as"), G_CALLBACK(menuSaveAs)},
|
||||||
|
{"ThemeDelete", GTK_STOCK_DELETE, _("_Delete"), NULL, _("Delete theme"), G_CALLBACK(menuDelete)},
|
||||||
|
{"ThemeProperties", GTK_STOCK_PROPERTIES, _("_Edit theme..."), NULL, _("Edit selected theme"), G_CALLBACK(edit_current_theme)},
|
||||||
|
{"ThemeQuit", GTK_STOCK_QUIT, _("_Quit"), "<control>Q", _("Quit"), G_CALLBACK(gtk_main_quit)},
|
||||||
|
{"EditMenu", NULL, _("Edit"), NULL, NULL, NULL},
|
||||||
|
{"EditRefresh", GTK_STOCK_REFRESH, _("Refresh"), NULL, _("Refresh"), G_CALLBACK(refresh_current_theme)},
|
||||||
|
{"EditRefreshAll", GTK_STOCK_REFRESH, _("Refresh all"), NULL, _("Refresh all"), G_CALLBACK(load_all_themes)},
|
||||||
|
{"HelpMenu", NULL, _("Help"), NULL, NULL, NULL},
|
||||||
|
{"HelpAbout", GTK_STOCK_ABOUT, _("_About"), "<Control>A", _("About"), G_CALLBACK(menuAbout)}
|
||||||
|
};
|
||||||
|
|
||||||
gtk_action_group_add_actions(actionGroup, entries, G_N_ELEMENTS(entries), NULL);
|
gtk_action_group_add_actions(actionGroup, entries, G_N_ELEMENTS(entries), NULL);
|
||||||
globalUIManager = gtk_ui_manager_new();
|
globalUIManager = gtk_ui_manager_new();
|
||||||
gtk_ui_manager_insert_action_group(globalUIManager, actionGroup, 0);
|
gtk_ui_manager_insert_action_group(globalUIManager, actionGroup, 0);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#include <glib/gi18n-lib.h>
|
#include <glib/gi18n-lib.h>
|
||||||
#else
|
#else
|
||||||
#define _(String) String
|
#define _(String) String
|
||||||
|
#define GETTEXT_PACKAGE "tint2conf"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SNAPSHOT_TICK 190
|
#define SNAPSHOT_TICK 190
|
||||||
|
|||||||
20
src/tint2conf/po/CMakeLists.txt
Normal file
20
src/tint2conf/po/CMakeLists.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
include(FindGettext)
|
||||||
|
if (GETTEXT_FOUND)
|
||||||
|
set(GETTEXT_PACKAGE tint2conf)
|
||||||
|
file(GLOB POTFILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.po")
|
||||||
|
string(REPLACE ".po" " " LANGUAGES ${POTFILES})
|
||||||
|
message(STATUS "gettext found languages: ${LANGUAGES}")
|
||||||
|
string(REPLACE " " ";" LANGUAGES ${LANGUAGES})
|
||||||
|
if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_LESS "2.8.8")
|
||||||
|
GETTEXT_CREATE_TRANSLATIONS("${CMAKE_CURRENT_SOURCE_DIR}/tint2conf.pot" ALL ${POTFILES})
|
||||||
|
else()
|
||||||
|
foreach(LANG ${LANGUAGES})
|
||||||
|
GETTEXT_PROCESS_PO_FILES(${LANG} ALL PO_FILES ${LANG}.po)
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.gmo"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/${DATADIR}/locale/${LANG}/LC_MESSAGES"
|
||||||
|
RENAME "${GETTEXT_PACKAGE}.mo")
|
||||||
|
endforeach ()
|
||||||
|
endif()
|
||||||
|
else ()
|
||||||
|
message(STATUS "gettext not found")
|
||||||
|
endif ()
|
||||||
1583
src/tint2conf/po/fr.po
Normal file
1583
src/tint2conf/po/fr.po
Normal file
File diff suppressed because it is too large
Load Diff
1583
src/tint2conf/po/tint2conf.pot
Normal file
1583
src/tint2conf/po/tint2conf.pot
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
509
src/tint2conf/tint2conf.svg
Normal file
509
src/tint2conf/tint2conf.svg
Normal file
@@ -0,0 +1,509 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
width="48"
|
||||||
|
height="48"
|
||||||
|
id="svg1325"
|
||||||
|
inkscape:version="0.48.3.1 r9886"
|
||||||
|
sodipodi:docname="tint2conf.svg"
|
||||||
|
inkscape:export-filename="/home/omega_dist/4_devel_open_source/9_tint/tint2/src/tint2conf/tint2conf.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90">
|
||||||
|
<metadata
|
||||||
|
id="metadata50">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1768"
|
||||||
|
inkscape:window-height="1056"
|
||||||
|
id="namedview48"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="16"
|
||||||
|
inkscape:cx="30.824904"
|
||||||
|
inkscape:cy="2.1959811"
|
||||||
|
inkscape:window-x="152"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g3841" />
|
||||||
|
<defs
|
||||||
|
id="defs1327">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 24 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="48 : 24 : 1"
|
||||||
|
inkscape:persp3d-origin="24 : 16 : 1"
|
||||||
|
id="perspective52" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4708">
|
||||||
|
<stop
|
||||||
|
id="stop4710"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop4712"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0.57954973" />
|
||||||
|
<stop
|
||||||
|
id="stop4714"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2270">
|
||||||
|
<stop
|
||||||
|
id="stop2272"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2274"
|
||||||
|
style="stop-color:white;stop-opacity:0"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="20"
|
||||||
|
y1="18"
|
||||||
|
x2="20"
|
||||||
|
y2="46"
|
||||||
|
id="linearGradient2851"
|
||||||
|
xlink:href="#linearGradient2270"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(0,-9.9999992)" />
|
||||||
|
<linearGradient
|
||||||
|
x1="30"
|
||||||
|
y1="17"
|
||||||
|
x2="30"
|
||||||
|
y2="47"
|
||||||
|
id="linearGradient2854"
|
||||||
|
xlink:href="#linearGradient2181"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(0,-9.9999992)" />
|
||||||
|
<linearGradient
|
||||||
|
x1="63.397362"
|
||||||
|
y1="-12.489107"
|
||||||
|
x2="63.397362"
|
||||||
|
y2="5.4675598"
|
||||||
|
id="linearGradient2685"
|
||||||
|
xlink:href="#linearGradient4873"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5436509,0,0,1.5436158,-80.015712,21.419381)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4873">
|
||||||
|
<stop
|
||||||
|
id="stop4875"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop4877"
|
||||||
|
style="stop-color:white;stop-opacity:0"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
cx="23.895569"
|
||||||
|
cy="3.9900031"
|
||||||
|
r="20.397499"
|
||||||
|
fx="23.895569"
|
||||||
|
fy="3.9900031"
|
||||||
|
id="radialGradient2688"
|
||||||
|
xlink:href="#linearGradient3242-187-536"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0,1.7008781,-2.245129,0,24.958071,-40.236051)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3242-187-536">
|
||||||
|
<stop
|
||||||
|
id="stop2778"
|
||||||
|
style="stop-color:#8badea;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2780"
|
||||||
|
style="stop-color:#6396cd;stop-opacity:1"
|
||||||
|
offset="0.26238" />
|
||||||
|
<stop
|
||||||
|
id="stop2782"
|
||||||
|
style="stop-color:#3b7caf;stop-opacity:1"
|
||||||
|
offset="0.66093999" />
|
||||||
|
<stop
|
||||||
|
id="stop2784"
|
||||||
|
style="stop-color:#194c70;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="18.379412"
|
||||||
|
y1="44.980297"
|
||||||
|
x2="18.379412"
|
||||||
|
y2="3.0816143"
|
||||||
|
id="linearGradient2690"
|
||||||
|
xlink:href="#linearGradient2490-182-124"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.7126612,0,0,0.7126613,-1.1038706,-1.1038704)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2490-182-124">
|
||||||
|
<stop
|
||||||
|
id="stop2788"
|
||||||
|
style="stop-color:#1f4b6a;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2790"
|
||||||
|
style="stop-color:#4083c2;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
cx="62.625"
|
||||||
|
cy="4.625"
|
||||||
|
r="10.625"
|
||||||
|
fx="62.625"
|
||||||
|
fy="4.625"
|
||||||
|
id="radialGradient2693"
|
||||||
|
xlink:href="#linearGradient8838"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5058824,0,0,0.37647,-78.305888,26.258824)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient8838">
|
||||||
|
<stop
|
||||||
|
id="stop8840"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop8842"
|
||||||
|
style="stop-color:black;stop-opacity:0"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2181">
|
||||||
|
<stop
|
||||||
|
id="stop2183"
|
||||||
|
style="stop-color:#f0f0f0;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2185"
|
||||||
|
style="stop-color:#d3d3d3;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="50.23077"
|
||||||
|
y1="22"
|
||||||
|
x2="53"
|
||||||
|
y2="22"
|
||||||
|
id="linearGradient4720"
|
||||||
|
xlink:href="#linearGradient4708"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(4.3333333,0,0,1,-176.66667,0)" />
|
||||||
|
<mask
|
||||||
|
id="mask4716">
|
||||||
|
<rect
|
||||||
|
width="52"
|
||||||
|
height="32"
|
||||||
|
x="1"
|
||||||
|
y="6"
|
||||||
|
id="rect4718"
|
||||||
|
style="fill:url(#linearGradient4720);fill-opacity:1;stroke:none" />
|
||||||
|
</mask>
|
||||||
|
<linearGradient
|
||||||
|
x1="50.23077"
|
||||||
|
y1="22"
|
||||||
|
x2="53"
|
||||||
|
y2="22"
|
||||||
|
id="linearGradient4726"
|
||||||
|
xlink:href="#linearGradient4708"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(4.3333333,0,0,1,-176.66667,0)" />
|
||||||
|
<mask
|
||||||
|
id="mask4722">
|
||||||
|
<rect
|
||||||
|
width="52"
|
||||||
|
height="32"
|
||||||
|
x="1"
|
||||||
|
y="6"
|
||||||
|
id="rect4724"
|
||||||
|
style="fill:url(#linearGradient4726);fill-opacity:1;stroke:none" />
|
||||||
|
</mask>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4873"
|
||||||
|
id="linearGradient2861"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.8085571,0,0,0.74493792,-86.459085,24.622683)"
|
||||||
|
x1="63.397362"
|
||||||
|
y1="-12.489107"
|
||||||
|
x2="63.397362"
|
||||||
|
y2="5.4675598" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3242-187-536"
|
||||||
|
id="radialGradient2864"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0,0.82083158,-2.630416,0,36.52927,-5.1317867)"
|
||||||
|
cx="23.895569"
|
||||||
|
cy="3.9900031"
|
||||||
|
fx="23.895569"
|
||||||
|
fy="3.9900031"
|
||||||
|
r="20.397499" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2490-182-124"
|
||||||
|
id="linearGradient2866"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.83496113,0,0,0.34392523,5.994833,13.753123)"
|
||||||
|
x1="18.379412"
|
||||||
|
y1="44.980297"
|
||||||
|
x2="18.379412"
|
||||||
|
y2="3.0816143" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8838"
|
||||||
|
id="radialGradient2869"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.7643072,0,0,0.18168172,-84.455838,26.958163)"
|
||||||
|
cx="62.625"
|
||||||
|
cy="4.625"
|
||||||
|
fx="62.625"
|
||||||
|
fy="4.625"
|
||||||
|
r="10.625" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8838"
|
||||||
|
id="radialGradient2876"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.7643072,0,0,0.18168172,-84.455838,26.958163)"
|
||||||
|
cx="62.625"
|
||||||
|
cy="4.625"
|
||||||
|
fx="62.625"
|
||||||
|
fy="4.625"
|
||||||
|
r="10.625" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3242-187-536"
|
||||||
|
id="radialGradient2878"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0,0.82083158,-2.630416,0,36.52927,-5.1317867)"
|
||||||
|
cx="23.895569"
|
||||||
|
cy="3.9900031"
|
||||||
|
fx="23.895569"
|
||||||
|
fy="3.9900031"
|
||||||
|
r="20.397499" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2490-182-124"
|
||||||
|
id="linearGradient2880"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.83496113,0,0,0.34392523,5.994833,13.753123)"
|
||||||
|
x1="18.379412"
|
||||||
|
y1="44.980297"
|
||||||
|
x2="18.379412"
|
||||||
|
y2="3.0816143" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4873"
|
||||||
|
id="linearGradient2882"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.8085571,0,0,0.74493792,-86.459085,24.622683)"
|
||||||
|
x1="63.397362"
|
||||||
|
y1="-12.489107"
|
||||||
|
x2="63.397362"
|
||||||
|
y2="5.4675598" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2924"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<linearGradient
|
||||||
|
x1="30"
|
||||||
|
y1="17"
|
||||||
|
x2="30"
|
||||||
|
y2="47"
|
||||||
|
id="linearGradient2854-0"
|
||||||
|
xlink:href="#linearGradient2181-7"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(0,-9.9999992)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2181-7">
|
||||||
|
<stop
|
||||||
|
id="stop2183-8"
|
||||||
|
style="stop-color:#f0f0f0;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2185-6"
|
||||||
|
style="stop-color:#d3d3d3;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<mask
|
||||||
|
id="mask4722-8">
|
||||||
|
<rect
|
||||||
|
width="52"
|
||||||
|
height="32"
|
||||||
|
x="1"
|
||||||
|
y="6"
|
||||||
|
id="rect4724-8"
|
||||||
|
style="fill:url(#linearGradient4726-4);fill-opacity:1;stroke:none" />
|
||||||
|
</mask>
|
||||||
|
<linearGradient
|
||||||
|
x1="50.23077"
|
||||||
|
y1="22"
|
||||||
|
x2="53"
|
||||||
|
y2="22"
|
||||||
|
id="linearGradient4726-4"
|
||||||
|
xlink:href="#linearGradient4708-3"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(4.3333333,0,0,1,-176.66667,0)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4708-3">
|
||||||
|
<stop
|
||||||
|
id="stop4710-1"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop4712-4"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0.57954973" />
|
||||||
|
<stop
|
||||||
|
id="stop4714-9"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="47"
|
||||||
|
x2="30"
|
||||||
|
y1="17"
|
||||||
|
x1="30"
|
||||||
|
gradientTransform="translate(0,-9.9999992)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient2940"
|
||||||
|
xlink:href="#linearGradient2181-7"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2894"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
</defs>
|
||||||
|
<rect
|
||||||
|
width="46"
|
||||||
|
height="29"
|
||||||
|
x="2.5"
|
||||||
|
y="7.5"
|
||||||
|
mask="url(#mask4722)"
|
||||||
|
id="rect1333"
|
||||||
|
style="fill:url(#linearGradient2854);fill-opacity:1;stroke:#2c2c2c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
transform="translate(-0.20338983,3.4237288)" />
|
||||||
|
<rect
|
||||||
|
width="45"
|
||||||
|
height="27"
|
||||||
|
x="3.5"
|
||||||
|
y="8.5"
|
||||||
|
mask="url(#mask4716)"
|
||||||
|
id="rect2210"
|
||||||
|
style="opacity:0.7;fill:none;stroke:url(#linearGradient2851);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
transform="translate(-0.20338983,3.4237288)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333424;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999999999999996"
|
||||||
|
id="rect6306"
|
||||||
|
width="29.45332"
|
||||||
|
height="9.5719652"
|
||||||
|
x="10.697065"
|
||||||
|
y="21.044527"
|
||||||
|
rx="1.4456253"
|
||||||
|
ry="1.6443363" />
|
||||||
|
<g
|
||||||
|
id="g3841"
|
||||||
|
transform="translate(130.875,44.5)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="csscccsscc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3833"
|
||||||
|
d="M -71.433946,14.735703 C -80.071947,4.6612321 -89.248707,-5.737975 -92.147263,-9.1977463 c -3.224562,-3.8488997 -3.263797,-3.3549747 -1.493188,-4.5254517 l 1.278694,-0.845292 14.113986,16.2862263 14.113987,16.2862257 -1.004295,0.889458 c -0.552362,0.489201 -1.149443,0.973153 -1.326848,1.075448 -0.259255,0.149489 -1.234399,-0.877491 -4.969019,-5.233165 z"
|
||||||
|
style="fill:#87aade" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cscsssc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3825"
|
||||||
|
d="m -98.105823,-13.116897 c -0.09278,-0.307786 -1.541317,-8.963836 -1.697567,-8.726554 -0.0244,0.03706 7.876058,3.167414 7.876435,3.661796 0.27526,-0.22635 0.628731,0.02647 0.174381,0.954172 -0.406614,0.830238 -0.712942,1.441488 -2.270947,2.615226 -0.993109,0.748168 -2.553662,1.682052 -2.971367,1.846131 -0.688741,0.270545 -1.081414,0.266981 -1.110935,-0.350771 z"
|
||||||
|
style="fill:#e9c6af" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="scscscsss"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3831"
|
||||||
|
d="m -77.291221,0.7427987 -14.60455,-16.3513767 0.637035,-0.730536 c 0.266185,-0.305255 0.324002,-1.389769 0.39974,-1.43161 0.07574,-0.04184 6.588518,8.0823714 14.511041,17.25171965 l 14.404588,16.67154235 -0.456991,0.486444 c -0.251345,0.267543 -0.509994,0.486443 -0.574776,0.486443 -0.06478,0 -6.507022,-7.3721814 -14.316087,-16.3826263 z"
|
||||||
|
style="fill:#afc6e9" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="sssssscs"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3835"
|
||||||
|
d="m -72.642373,17.731344 c -15.785516,-18.3468257 -22.67882,-27.078419 -24.317731,-29.175546 -0.237129,-0.303427 -0.02287,-0.396673 0.25262,-0.547032 0.446221,-0.24354 0.48891,-0.24519 1.064375,0.556916 0.626398,0.873099 10.342493,12.0396466 21.114327,24.608034 6.242539,7.283685 7.651572,8.214809 7.295404,8.484526 -0.209506,0.158654 -1.332932,1.444171 -1.357614,0.66226 -0.39968,0.56189 -2.205614,-2.443908 -4.051381,-4.589158 z"
|
||||||
|
style="fill:#3771c8" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3837"
|
||||||
|
d="m -99.864407,-18.915254 3.050848,-2.237288"
|
||||||
|
style="fill:#0b2822;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3049"
|
||||||
|
d="m -98.144068,-11.76536 29.460805,34.842161 7.728814,-6.711865 -29.898305,-34.576271"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3823"
|
||||||
|
d="m -98.112288,-12.03125 2.174788,-0.688559 3.864407,-2.847458 1.079449,-2.691208 -9.621826,-4.630826 z"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccscccsscc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3827"
|
||||||
|
d="m -80.955348,4.2773755 c -7.750968,-9.0443333 -14.97509,-16.8628515 -14.945966,-16.9543465 0.02912,-0.09149 1.512719,-0.624766 2.1979,-1.135322 l 1.426197,-1.062718 14.171177,16.60582 14.202426,16.387071 -0.88474,0.775212 c -0.486606,0.426368 -1.11724,0.948927 -1.401408,1.161244 l -0.516667,0.386032 z"
|
||||||
|
style="fill:#5f8dd3" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3829"
|
||||||
|
d="m -83.124992,5.0906125 c -7.869016,-9.1612493 -14.285686,-16.7328745 -14.259267,-16.8258325 0.02642,-0.09296 0.288522,-0.270134 0.582452,-0.393722 0.525603,-0.220999 0.770084,0.05025 14.820977,16.4434263 l 14.286559,16.6681317 -0.492096,0.387084 c -0.270652,0.212894 -0.523421,0.384976 -0.561709,0.382405 -0.03829,-0.0026 -6.507899,-7.500244 -14.376916,-16.6614925 l 0,0 z"
|
||||||
|
style="fill:#3771c8" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3051"
|
||||||
|
d="m -96.265889,-12.891949 29.350635,34.044492"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3053"
|
||||||
|
d="m -92.338983,-15.661017 29.084746,33.559322"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="scscccccs"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3839"
|
||||||
|
d="m -100.69352,-20.893751 c -0.0917,-0.34644 -0.71612,-3.00338 -0.8271,-3.157561 0.0437,-0.0437 2.636115,1.39898 2.993406,1.577103 l 1.143051,0.524237 -0.435163,0.963572 -0.709103,0.627398 -0.787319,0.476477 -1.110472,0.181053 c 0.17185,0.510627 -0.0972,-0.549821 -0.2673,-1.192279 z"
|
||||||
|
style="fill:#5f8dd3;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 18 KiB |
436
tint2.svg
Normal file
436
tint2.svg
Normal file
@@ -0,0 +1,436 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
width="48"
|
||||||
|
height="48"
|
||||||
|
id="svg1325"
|
||||||
|
inkscape:version="0.47 r22583"
|
||||||
|
sodipodi:docname="taskbar.svg"
|
||||||
|
inkscape:export-filename="/home/omega_dist/4_devel_open_source/9_tint/tint2/src/tint2conf/tint2conf.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90">
|
||||||
|
<metadata
|
||||||
|
id="metadata50">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1440"
|
||||||
|
inkscape:window-height="837"
|
||||||
|
id="namedview48"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="4.9166667"
|
||||||
|
inkscape:cx="-69.254237"
|
||||||
|
inkscape:cy="21.9661"
|
||||||
|
inkscape:window-x="-2"
|
||||||
|
inkscape:window-y="1"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg1325" />
|
||||||
|
<defs
|
||||||
|
id="defs1327">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 24 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="48 : 24 : 1"
|
||||||
|
inkscape:persp3d-origin="24 : 16 : 1"
|
||||||
|
id="perspective52" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4708">
|
||||||
|
<stop
|
||||||
|
id="stop4710"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop4712"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0.57954973" />
|
||||||
|
<stop
|
||||||
|
id="stop4714"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2270">
|
||||||
|
<stop
|
||||||
|
id="stop2272"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2274"
|
||||||
|
style="stop-color:white;stop-opacity:0"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="20"
|
||||||
|
y1="18"
|
||||||
|
x2="20"
|
||||||
|
y2="46"
|
||||||
|
id="linearGradient2851"
|
||||||
|
xlink:href="#linearGradient2270"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(0,-9.9999992)" />
|
||||||
|
<linearGradient
|
||||||
|
x1="30"
|
||||||
|
y1="17"
|
||||||
|
x2="30"
|
||||||
|
y2="47"
|
||||||
|
id="linearGradient2854"
|
||||||
|
xlink:href="#linearGradient2181"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(0,-9.9999992)" />
|
||||||
|
<linearGradient
|
||||||
|
x1="63.397362"
|
||||||
|
y1="-12.489107"
|
||||||
|
x2="63.397362"
|
||||||
|
y2="5.4675598"
|
||||||
|
id="linearGradient2685"
|
||||||
|
xlink:href="#linearGradient4873"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5436509,0,0,1.5436158,-80.015712,21.419381)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4873">
|
||||||
|
<stop
|
||||||
|
id="stop4875"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop4877"
|
||||||
|
style="stop-color:white;stop-opacity:0"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
cx="23.895569"
|
||||||
|
cy="3.9900031"
|
||||||
|
r="20.397499"
|
||||||
|
fx="23.895569"
|
||||||
|
fy="3.9900031"
|
||||||
|
id="radialGradient2688"
|
||||||
|
xlink:href="#linearGradient3242-187-536"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0,1.7008781,-2.245129,0,24.958071,-40.236051)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3242-187-536">
|
||||||
|
<stop
|
||||||
|
id="stop2778"
|
||||||
|
style="stop-color:#8badea;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2780"
|
||||||
|
style="stop-color:#6396cd;stop-opacity:1"
|
||||||
|
offset="0.26238" />
|
||||||
|
<stop
|
||||||
|
id="stop2782"
|
||||||
|
style="stop-color:#3b7caf;stop-opacity:1"
|
||||||
|
offset="0.66093999" />
|
||||||
|
<stop
|
||||||
|
id="stop2784"
|
||||||
|
style="stop-color:#194c70;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="18.379412"
|
||||||
|
y1="44.980297"
|
||||||
|
x2="18.379412"
|
||||||
|
y2="3.0816143"
|
||||||
|
id="linearGradient2690"
|
||||||
|
xlink:href="#linearGradient2490-182-124"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.7126612,0,0,0.7126613,-1.1038706,-1.1038704)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2490-182-124">
|
||||||
|
<stop
|
||||||
|
id="stop2788"
|
||||||
|
style="stop-color:#1f4b6a;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2790"
|
||||||
|
style="stop-color:#4083c2;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
cx="62.625"
|
||||||
|
cy="4.625"
|
||||||
|
r="10.625"
|
||||||
|
fx="62.625"
|
||||||
|
fy="4.625"
|
||||||
|
id="radialGradient2693"
|
||||||
|
xlink:href="#linearGradient8838"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5058824,0,0,0.37647,-78.305888,26.258824)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient8838">
|
||||||
|
<stop
|
||||||
|
id="stop8840"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop8842"
|
||||||
|
style="stop-color:black;stop-opacity:0"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2181">
|
||||||
|
<stop
|
||||||
|
id="stop2183"
|
||||||
|
style="stop-color:#f0f0f0;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2185"
|
||||||
|
style="stop-color:#d3d3d3;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
x1="50.23077"
|
||||||
|
y1="22"
|
||||||
|
x2="53"
|
||||||
|
y2="22"
|
||||||
|
id="linearGradient4720"
|
||||||
|
xlink:href="#linearGradient4708"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(4.3333333,0,0,1,-176.66667,0)" />
|
||||||
|
<mask
|
||||||
|
id="mask4716">
|
||||||
|
<rect
|
||||||
|
width="52"
|
||||||
|
height="32"
|
||||||
|
x="1"
|
||||||
|
y="6"
|
||||||
|
id="rect4718"
|
||||||
|
style="fill:url(#linearGradient4720);fill-opacity:1;stroke:none" />
|
||||||
|
</mask>
|
||||||
|
<linearGradient
|
||||||
|
x1="50.23077"
|
||||||
|
y1="22"
|
||||||
|
x2="53"
|
||||||
|
y2="22"
|
||||||
|
id="linearGradient4726"
|
||||||
|
xlink:href="#linearGradient4708"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(4.3333333,0,0,1,-176.66667,0)" />
|
||||||
|
<mask
|
||||||
|
id="mask4722">
|
||||||
|
<rect
|
||||||
|
width="52"
|
||||||
|
height="32"
|
||||||
|
x="1"
|
||||||
|
y="6"
|
||||||
|
id="rect4724"
|
||||||
|
style="fill:url(#linearGradient4726);fill-opacity:1;stroke:none" />
|
||||||
|
</mask>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4873"
|
||||||
|
id="linearGradient2861"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.8085571,0,0,0.74493792,-86.459085,24.622683)"
|
||||||
|
x1="63.397362"
|
||||||
|
y1="-12.489107"
|
||||||
|
x2="63.397362"
|
||||||
|
y2="5.4675598" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3242-187-536"
|
||||||
|
id="radialGradient2864"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0,0.82083158,-2.630416,0,36.52927,-5.1317867)"
|
||||||
|
cx="23.895569"
|
||||||
|
cy="3.9900031"
|
||||||
|
fx="23.895569"
|
||||||
|
fy="3.9900031"
|
||||||
|
r="20.397499" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2490-182-124"
|
||||||
|
id="linearGradient2866"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.83496113,0,0,0.34392523,5.994833,13.753123)"
|
||||||
|
x1="18.379412"
|
||||||
|
y1="44.980297"
|
||||||
|
x2="18.379412"
|
||||||
|
y2="3.0816143" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8838"
|
||||||
|
id="radialGradient2869"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.7643072,0,0,0.18168172,-84.455838,26.958163)"
|
||||||
|
cx="62.625"
|
||||||
|
cy="4.625"
|
||||||
|
fx="62.625"
|
||||||
|
fy="4.625"
|
||||||
|
r="10.625" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8838"
|
||||||
|
id="radialGradient2876"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.7643072,0,0,0.18168172,-84.455838,26.958163)"
|
||||||
|
cx="62.625"
|
||||||
|
cy="4.625"
|
||||||
|
fx="62.625"
|
||||||
|
fy="4.625"
|
||||||
|
r="10.625" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3242-187-536"
|
||||||
|
id="radialGradient2878"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0,0.82083158,-2.630416,0,36.52927,-5.1317867)"
|
||||||
|
cx="23.895569"
|
||||||
|
cy="3.9900031"
|
||||||
|
fx="23.895569"
|
||||||
|
fy="3.9900031"
|
||||||
|
r="20.397499" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2490-182-124"
|
||||||
|
id="linearGradient2880"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.83496113,0,0,0.34392523,5.994833,13.753123)"
|
||||||
|
x1="18.379412"
|
||||||
|
y1="44.980297"
|
||||||
|
x2="18.379412"
|
||||||
|
y2="3.0816143" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4873"
|
||||||
|
id="linearGradient2882"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.8085571,0,0,0.74493792,-86.459085,24.622683)"
|
||||||
|
x1="63.397362"
|
||||||
|
y1="-12.489107"
|
||||||
|
x2="63.397362"
|
||||||
|
y2="5.4675598" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2924"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<linearGradient
|
||||||
|
x1="30"
|
||||||
|
y1="17"
|
||||||
|
x2="30"
|
||||||
|
y2="47"
|
||||||
|
id="linearGradient2854-0"
|
||||||
|
xlink:href="#linearGradient2181-7"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(0,-9.9999992)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2181-7">
|
||||||
|
<stop
|
||||||
|
id="stop2183-8"
|
||||||
|
style="stop-color:#f0f0f0;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop2185-6"
|
||||||
|
style="stop-color:#d3d3d3;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<mask
|
||||||
|
id="mask4722-8">
|
||||||
|
<rect
|
||||||
|
width="52"
|
||||||
|
height="32"
|
||||||
|
x="1"
|
||||||
|
y="6"
|
||||||
|
id="rect4724-8"
|
||||||
|
style="fill:url(#linearGradient4726-4);fill-opacity:1;stroke:none" />
|
||||||
|
</mask>
|
||||||
|
<linearGradient
|
||||||
|
x1="50.23077"
|
||||||
|
y1="22"
|
||||||
|
x2="53"
|
||||||
|
y2="22"
|
||||||
|
id="linearGradient4726-4"
|
||||||
|
xlink:href="#linearGradient4708-3"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(4.3333333,0,0,1,-176.66667,0)" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4708-3">
|
||||||
|
<stop
|
||||||
|
id="stop4710-1"
|
||||||
|
style="stop-color:white;stop-opacity:1"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop4712-4"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0.57954973" />
|
||||||
|
<stop
|
||||||
|
id="stop4714-9"
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="47"
|
||||||
|
x2="30"
|
||||||
|
y1="17"
|
||||||
|
x1="30"
|
||||||
|
gradientTransform="translate(0,-9.9999992)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient2940"
|
||||||
|
xlink:href="#linearGradient2181-7"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2894"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
</defs>
|
||||||
|
<rect
|
||||||
|
width="46"
|
||||||
|
height="29"
|
||||||
|
x="2.5"
|
||||||
|
y="7.5"
|
||||||
|
mask="url(#mask4722)"
|
||||||
|
id="rect1333"
|
||||||
|
style="fill:url(#linearGradient2854);fill-opacity:1;stroke:#2c2c2c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
transform="translate(-0.20338983,3.4237288)" />
|
||||||
|
<rect
|
||||||
|
width="45"
|
||||||
|
height="27"
|
||||||
|
x="3.5"
|
||||||
|
y="8.5"
|
||||||
|
mask="url(#mask4716)"
|
||||||
|
id="rect2210"
|
||||||
|
style="opacity:0.7;fill:none;stroke:url(#linearGradient2851);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
transform="translate(-0.20338983,3.4237288)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333424;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999999999999996"
|
||||||
|
id="rect6306"
|
||||||
|
width="29.45332"
|
||||||
|
height="9.5719652"
|
||||||
|
x="10.697065"
|
||||||
|
y="21.044527"
|
||||||
|
rx="1.4456253"
|
||||||
|
ry="1.6443363" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 13 KiB |
Reference in New Issue
Block a user