Compare commits

...

27 Commits

Author SHA1 Message Date
o9000
cc826cbcb5 Updated readme 2015-05-23 09:45:14 +00:00
o9000
f59702054d Updated changelog 2015-05-23 09:43:57 +00:00
o9000
06dfcf70be Updated localization file with new strings 2015-05-21 12:44:41 +02:00
o9000
44785a49da Updated tint2conf for localization 2015-05-21 12:34:52 +02:00
o9000
e20448d6b5 Annotate strings for translation 2015-05-21 10:57:50 +02:00
o9000
6014b51850 Better error handling in systray icon rendering 2015-05-20 15:42:27 +02:00
o9000
5acda6a0c0 Silence warning 2015-05-15 08:39:12 +02:00
o9000
f4f028a773 Updated changelog 2015-05-15 06:11:17 +00:00
o9000
66c98bc820 Fix bad include 2015-05-14 19:19:42 +00:00
o9000
de1d255088 Updated readme 2015-05-14 10:43:38 +00:00
o9000
b381ad2905 Updated changelog 2015-05-14 10:41:41 +00:00
o9000
a4894b8257 Workaround for empty systray icon in Google Chrome (misbehaving) - fix resize 2015-05-13 22:58:58 +02:00
o9000
b7dbb919a9 Merge branch 'title-race' 2015-05-13 22:41:52 +02:00
o9000
a08491c122 Workaround for empty systray icon in Google Chrome (misbehaving) - fix sorting 2015-05-13 21:17:02 +02:00
o9000
8795f50bb8 Workaround for empty systray icon in Google Chrome (misbehaving) - fix sorting 2015-05-13 21:02:40 +02:00
o9000
3ab42f9b72 Workaround for empty systray icon in Google Chrome (misbehaving) 2015-05-11 21:19:36 +02:00
o9000
7bce19452e Reduce memory footprint 2015-05-10 12:43:58 +02:00
o9000
1ff028e99f Fix some battery issues when unplugging/replugging 2015-05-08 23:35:44 +02:00
o9000
5450dcca0b Attempt to fix new window title race in fvwm 2015-05-08 21:49:26 +02:00
o9000
d2ee0a481f Adding missing icons 2015-05-05 11:18:55 +02:00
o9000
1d95e01882 tint2conf: Updated tooltips 2015-05-03 22:30:10 +02:00
o9000
ebc356d1c7 Updated tint2rc file header with link to docs 2015-05-03 20:01:58 +00:00
o9000
54708a6167 Updated desktop file 2015-05-03 17:21:43 +00:00
o9000
60f01f7fff Updated icons and desktop files 2015-05-03 19:17:24 +02:00
o9000
9f8860f003 Updated tint2.desktop 2015-05-03 16:34:12 +00:00
o9000
be19d1eeef Add tint2.desktop 2015-05-03 16:31:07 +00:00
o9000
1d02b8588b Fix icon loading with wrong image extension 2015-05-03 16:22:23 +02:00
26 changed files with 4297 additions and 505 deletions

View File

@@ -145,6 +145,9 @@ set_target_properties( tint2 PROPERTIES COMPILE_FLAGS "-Wall -fno-strict-aliasin
set_target_properties( tint2 PROPERTIES LINK_FLAGS "-pthread -fno-strict-aliasing ${ASAN_L_FLAGS}" ) set_target_properties( tint2 PROPERTIES LINK_FLAGS "-pthread -fno-strict-aliasing ${ASAN_L_FLAGS}" )
install( TARGETS tint2 DESTINATION bin ) install( TARGETS tint2 DESTINATION bin )
install( FILES tint2.svg DESTINATION ${DATADIR}/icons/hicolor/scalable/apps )
install( FILES tint2.desktop DESTINATION ${DATADIR}/applications )
install( CODE "execute_process(COMMAND gtk-update-icon-cache -f -t ${DATADIR}/icons/hicolor WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX})" )
install( FILES sample/tint2rc DESTINATION ${SYSCONFDIR}/xdg/tint2 ) install( FILES sample/tint2rc DESTINATION ${SYSCONFDIR}/xdg/tint2 )
install( FILES default_icon.png DESTINATION ${DATADIR}/tint2 ) install( FILES default_icon.png DESTINATION ${DATADIR}/tint2 )
install( FILES AUTHORS ChangeLog README.md DESTINATION ${DOCDIR} ) install( FILES AUTHORS ChangeLog README.md DESTINATION ${DOCDIR} )

View File

@@ -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:

View File

@@ -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

View File

@@ -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,16 +106,24 @@ 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) {
if (panel1[i].battery.area.on_screen == 1) {
hide(&panel1[i].battery.area); hide(&panel1[i].battery.area);
panel_refresh = 1; panel_refresh = 1;
} else if (battery_state.percentage >= percentage_hide && panel1[i].battery.area.on_screen == 1) { }
} else {
if (battery_state.percentage >= percentage_hide) {
if (panel1[i].battery.area.on_screen == 1) {
hide(&panel1[i].battery.area); hide(&panel1[i].battery.area);
panel_refresh = 1; panel_refresh = 1;
} else if (battery_state.percentage < percentage_hide && panel1[i].battery.area.on_screen == 0) { }
} else {
if (panel1[i].battery.area.on_screen == 0) {
show(&panel1[i].battery.area); show(&panel1[i].battery.area);
panel_refresh = 1; 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;
panel_refresh = 1; panel_refresh = 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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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,71 +196,72 @@ 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_icon(launcherIcon->icon_scaled);
launcherIcon->icon_scaled = scale_icon(launcherIcon->icon_original, icon_size);
free(new_icon_path);
fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path);
} else {
// Free the old files // Free the old files
free_icon(launcherIcon->icon_original); free_icon(launcherIcon->image);
free_icon(launcherIcon->icon_scaled); launcherIcon->image = NULL;
launcherIcon->icon_original = launcherIcon->icon_scaled = NULL;
// Load the new file and scale // Load the new file and scale
launcherIcon->image = imlib_load_image_immediately(new_icon_path);
#ifdef HAVE_RSVG #ifdef HAVE_RSVG
if (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); }
exit(0);
} else {
// Parent
waitpid(pid, 0, 0);
gchar *name = g_build_filename(g_get_user_config_dir(), "tint2", suffix, NULL);
launcherIcon->image = imlib_load_image_immediately_without_cache(name);
g_remove(name); g_remove(name);
g_free(name); g_free(name);
g_object_unref(G_OBJECT(pixbuf));
g_object_unref(G_OBJECT(svg));
} }
} else } else
#endif #endif
{ {
launcherIcon->icon_original = imlib_load_image_immediately(new_icon_path); launcherIcon->image = imlib_load_image_immediately(new_icon_path);
} }
// On loading error, fallback to default // On loading error, fallback to default
if (!launcherIcon->icon_original) { if (!launcherIcon->image) {
free(new_icon_path); free(new_icon_path);
new_icon_path = get_icon_path(launcher->list_themes, DEFAULT_ICON, launcherIcon->icon_size); new_icon_path = get_icon_path(launcher->list_themes, DEFAULT_ICON, launcherIcon->icon_size);
if (new_icon_path) if (new_icon_path)
launcherIcon->icon_original = imlib_load_image_immediately(new_icon_path); launcherIcon->image = imlib_load_image_immediately(new_icon_path);
} }
if (!launcherIcon->icon_original) { if (!launcherIcon->image) {
// Loading default icon failed, draw a blank icon // Loading default icon failed, draw a blank icon
free(new_icon_path); free(new_icon_path);
} else { } else {
// Loaded icon successfully // Loaded icon successfully
launcherIcon->icon_scaled = scale_icon(launcherIcon->icon_original, launcherIcon->icon_size); Imlib_Image original = launcherIcon->image;
launcherIcon->image = scale_icon(launcherIcon->image, launcherIcon->icon_size);
free_icon(original);
free(launcherIcon->icon_path); free(launcherIcon->icon_path);
launcherIcon->icon_path = new_icon_path; launcherIcon->icon_path = new_icon_path;
fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path); fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path);
} }
} }
} }
}
count = g_slist_length(launcher->list_icons); count = g_slist_length(launcher->list_icons);
@@ -330,6 +332,7 @@ int resize_launcher(void *obj)
} }
} }
} }
return 1; return 1;
} }
@@ -354,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 {
@@ -402,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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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,7 +109,8 @@ 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)
continue;
count++; count++;
} }
if (count == 0) if (count == 0)
@@ -146,7 +148,8 @@ 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)
continue;
count++; 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,6 +340,14 @@ 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;
if (traywin_a->empty && !traywin_b->empty)
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; XTextProperty name_a, name_b;
if (XGetWMName(server.dsp, traywin_a->tray_id, &name_a) == 0) { if (XGetWMName(server.dsp, traywin_a->tray_id, &name_a) == 0) {
@@ -346,13 +358,23 @@ static gint compare_traywindows(gconstpointer a, gconstpointer b)
return 1; return 1;
} }
else { else {
gint retval = g_ascii_strncasecmp((char*)name_a.value, (char*)name_b.value, -1) * systray.sort; 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_a.value);
XFree(name_b.value); XFree(name_b.value);
return retval; return retval;
} }
} }
if (systray.sort == SYSTRAY_SORT_LEFT2RIGHT ||
systray.sort == SYSTRAY_SORT_RIGHT2LEFT) {
return (traywin_a->chrono - traywin_b->chrono) *
(systray.sort == SYSTRAY_SORT_LEFT2RIGHT ? 1 : -1);
}
return 0;
}
gboolean add_icon(Window id) gboolean add_icon(Window id)
{ {
@@ -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,7 +558,8 @@ 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)
continue;
count++; count++;
} }
if (count == 0) if (count == 0)
@@ -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);
} }
} }

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -60,11 +60,14 @@ if ( NOT DATADIR )
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( PROGRAMS tintwizard.py DESTINATION bin ) install( FILES tint2conf.svg DESTINATION ${DATADIR}/icons/hicolor/scalable/apps )
install( FILES taskbar.svg DESTINATION ${DATADIR}/icons/hicolor/scalable/apps )
install( FILES tint2conf.desktop DESTINATION ${DATADIR}/applications ) install( FILES tint2conf.desktop DESTINATION ${DATADIR}/applications )
install( CODE "execute_process(COMMAND gtk-update-icon-cache -f -t ${DATADIR}/icons/hicolor WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX})" ) install( CODE "execute_process(COMMAND gtk-update-icon-cache -f -t ${DATADIR}/icons/hicolor WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX})" )

View File

@@ -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);

View File

@@ -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

View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,3 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@@ -625,6 +624,8 @@ void config_save_file(const char *path) {
unsigned short checksum = 0; unsigned short checksum = 0;
fprintf(fp, "#---- Generated by tint2conf %04x ----\n", checksum); fprintf(fp, "#---- Generated by tint2conf %04x ----\n", checksum);
fprintf(fp, "# See https://gitlab.com/o9000/tint2/wikis/Configure for \n");
fprintf(fp, "# full documentation of the configuration options.\n");
config_write_backgrounds(fp); config_write_backgrounds(fp);
config_write_panel(fp); config_write_panel(fp);

View File

@@ -1,148 +1,58 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Name=Panel tint2 Name=Tint2 panel settings
Name[am]=ፓነል tint2 Name[am]=ፓነል አስተዳዳሪ
Name[ar]=الشريط tint2 Name[ar]=مدير الائحة :
Name[ast]=Panel tint2 Name[ast]=Alministrador de panel
Name[be]=Панэль tint2 Name[be]=Кіраўнік Панэляў
Name[ca]=Quadre tint2 Name[ca]=Gestor de quadres
Name[cs]=Panel tint2 Name[cs]=Správce panelu
Name[da]=Panel tint2 Name[da]=Panelhåndtering
Name[de]=Leiste tint2 Name[de]=Leistenverwaltung
Name[dz]=པེ་ནཱལ། tint2 Name[dz]=པེ་ནཱལ་འཛིན་སྐྱོང་པ།
Name[el]=Ταμπλό tint2 Name[el]=Διαχειριστής ταμπλό
Name[en_GB]=Panel tint2 Name[en_GB]=Panel Manager
Name[eo]=Panelo tint2 Name[eo]=Administrilo de Panelo
Name[es]=Panel tint2 Name[es]=Administrador de panel
Name[et]=Ääreriba tint2 Name[et]=Paneelihaldur
Name[eu]=Panela tint2 Name[eu]=Panel Kudeatzailea:
Name[fi]=Paneeli tint2 Name[fi]=Paneelin hallinta
Name[fr]=Panneau tint2 Name[fr]=Gestionnaire de panneau
Name[gl]=Panel tint2 Name[gl]=Xestor de paneis
Name[he]=לוח tint2 Name[he]=מנהל הלוח
Name[hu]=Panel tint2 Name[hu]=Panelkezelő
Name[id]=Panel tint2 Name[id]=Manajer Panel
Name[it]=Pannello tint2 Name[it]=Gestore dei pannelli
Name[ja]=パネル tint2 Name[ja]=パネルマネージャ
Name[kk]=Панель tint2 Name[kk]=Панель менеджері
Name[ko]=패널 tint2 Name[ko]=패널 관리자
Name[ku]=Panel tint2 Name[ku]=Gerinendeyê panelan
Name[lv]=Panelis tint2 Name[lv]=Paneļu pārvaldnieks
Name[mk]=Панел tint2 Name[mk]=Менаџер за панели
Name[nb]=Panel tint2 Name[nb]=Panelbehandler
Name[nl]=Paneel tint2 Name[nl]=Paneel Manager
Name[nn]=Panel tint2 Name[nn]=Panelhandsamar
Name[pa]=ਪੈਨਲ tint2 Name[pa]=ਪੈਨਲ ਮੈਨੇਜਰ
Name[pl]=Panel tint2 Name[pl]=Panel
Name[pt]=Painel tint2 Name[pt]=Gestor do Painel
Name[pt_BR]=Painel tint2 Name[pt_BR]=Gerenciador do painel
Name[ro]=Panou tint2 Name[ro]=Manager de panouri
Name[ru]=Панель tint2 Name[ru]=Диспетчер панелей
Name[si]=පුවරුව tint2 Name[si]=පුවරු කළමණාකරු
Name[sk]=Panel tint2 Name[sk]=Nastavenie panelu
Name[sq]=Panel tint2 Name[sq]=Përgjegjës Panelesh
Name[sv]=Panel tint2 Name[sv]=Panelhanterare
Name[ta]=பலகை tint2 Name[ta]=பலகை மேளாலர்:
Name[tr]=Panel tint2 Name[tr]=Panel Yöneticisi
Name[ug]=panel tint2 Name[ug]=Panel باشقۇرغۇ
Name[uk]=Панель tint2 Name[uk]=Менеджер панелей
Name[ur]=پینل tint2 Name[ur]=پینل منیجر
Name[ur_PK]=پینل tint2 Name[ur_PK]=پینل منیجر
Name[vi]=Panel tint2 Name[vi]=Quản lý panel
Name[zh_CN]=面板 tint2 Name[zh_CN]=面板管理器
Name[zh_TW]=面板 tint2 Name[zh_TW]=面板管理程式
GenericName=Panel Manager
GenericName[am]=ፓነል አስተዳዳሪ
GenericName[ar]=مدير الائحة :
GenericName[ast]=Alministrador de panel
GenericName[be]=Кіраўнік Панэляў
GenericName[ca]=Gestor de quadres
GenericName[cs]=Správce panelu
GenericName[da]=Panelhåndtering
GenericName[de]=Leistenverwaltung
GenericName[dz]=པེ་ནཱལ་འཛིན་སྐྱོང་པ།
GenericName[el]=Διαχειριστής ταμπλό
GenericName[en_GB]=Panel Manager
GenericName[eo]=Administrilo de Panelo
GenericName[es]=Administrador de panel
GenericName[et]=Paneelihaldur
GenericName[eu]=Panel Kudeatzailea:
GenericName[fi]=Paneelin hallinta
GenericName[fr]=Gestionnaire de panneau
GenericName[gl]=Xestor de paneis
GenericName[he]=מנהל הלוח
GenericName[hu]=Panelkezelő
GenericName[id]=Manajer Panel
GenericName[it]=Gestore dei pannelli
GenericName[ja]=パネルマネージャ
GenericName[kk]=Панель менеджері
GenericName[ko]=패널 관리자
GenericName[ku]=Gerinendeyê panelan
GenericName[lv]=Paneļu pārvaldnieks
GenericName[mk]=Менаџер за панели
GenericName[nb]=Panelbehandler
GenericName[nl]=Paneel Manager
GenericName[nn]=Panelhandsamar
GenericName[pa]=ਪੈਨਲ ਮੈਨੇਜਰ
GenericName[pl]=Panel
GenericName[pt]=Gestor do Painel
GenericName[pt_BR]=Gerenciador do painel
GenericName[ro]=Manager de panouri
GenericName[ru]=Диспетчер панелей
GenericName[si]=පුවරු කළමණාකරු
GenericName[sk]=Nastavenie panelu
GenericName[sq]=Përgjegjës Panelesh
GenericName[sv]=Panelhanterare
GenericName[ta]=பலகை மேளாலர்:
GenericName[tr]=Panel Yöneticisi
GenericName[ug]=Panel باشقۇرغۇ
GenericName[uk]=Менеджер панелей
GenericName[ur]=پینل منیجر
GenericName[ur_PK]=پینل منیجر
GenericName[vi]=Quản lý panel
GenericName[zh_CN]=面板管理器
GenericName[zh_TW]=面板管理程式
Comment=Customize the panel settings
Comment[ast]=Personalice la configuración del panel
Comment[ca]=Personalitza els ajustaments del quadre
Comment[cs]=Přizpůsobit nastavení panelu
Comment[da]=Tilpas panelets indstillinger
Comment[de]=Leiste anpassen
Comment[el]=Προσαρμογή ρυθμίσεων ταμπλό
Comment[en_GB]=Customise the panel settings
Comment[es]=Personalice la configuración del panel
Comment[et]=Ääreriba seadistamine käepäraseks
Comment[eu]=Pertsonalizatu panel ezapenak
Comment[fi]=Mukauta paneelin asetuksia
Comment[fr]=Configurer le panneau
Comment[gl]=Personalizar a configuración do panel
Comment[hu]=A panel beállításainak személyre szabása
Comment[id]=Kustomisasi pengaturan panel
Comment[it]=Personalizzazione delle impostazioni del pannello
Comment[ja]=パネルの設定をカスタマイズします
Comment[kk]=Панельді баптау
Comment[lv]=Pielāgot paneļa uzstādījumus
Comment[nb]=Tilpass panelet
Comment[nl]=Paneel configureren
Comment[nn]=Tilpass innstillingane for panelet
Comment[pl]=Konfiguruje ustawienia paneli
Comment[pt]=Personalizar as definições do painel
Comment[pt_BR]=Personalizar as configurações do painel
Comment[ro]=Schimbați opțiunile panoului
Comment[ru]=Настроить панель
Comment[si]=පුවරු සිටුවම් සකසන්න
Comment[sk]=Prispôsobiť nastavenia panelu
Comment[sq]=Përshtasni rregullimet për panelin
Comment[sv]=Anpassa panelinställningarna
Comment[ta]=நிரல்பலகை அமைப்பை தன்விருப்பமாற்றம் செய்க
Comment[tr]=Panel ayarlarını özelleştir
Comment[ug]=panel تەڭشىكىنى Customize قىلىش
Comment[uk]=Налаштувати властивості панелі
Comment[ur]=پینل کی ترتیبات
Comment[ur_PK]=پینل کی ترتیبات
Comment[zh_CN]=自定义面板设置
Exec=tint2conf Exec=tint2conf
Icon=taskbar Icon=tint2conf
Terminal=false Terminal=false
Categories=Settings;DesktopSettings; Categories=Settings;DesktopSettings;

509
src/tint2conf/tint2conf.svg Normal file
View 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

60
tint2.desktop Normal file
View File

@@ -0,0 +1,60 @@
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Tint2 panel
Name[am]=ፓነል tint2
Name[ar]=الشريط tint2
Name[ast]=Panel tint2
Name[be]=Панэль tint2
Name[ca]=Quadre tint2
Name[cs]=Panel tint2
Name[da]=Panel tint2
Name[de]=Leiste tint2
Name[dz]=པེ་ནཱལ། tint2
Name[el]=Ταμπλό tint2
Name[en_GB]=Panel tint2
Name[eo]=Panelo tint2
Name[es]=Panel tint2
Name[et]=Ääreriba tint2
Name[eu]=Panela tint2
Name[fi]=Paneeli tint2
Name[fr]=Panneau tint2
Name[gl]=Panel tint2
Name[he]=לוח tint2
Name[hu]=Panel tint2
Name[id]=Panel tint2
Name[it]=Pannello tint2
Name[ja]=パネル tint2
Name[kk]=Панель tint2
Name[ko]=패널 tint2
Name[ku]=Panel tint2
Name[lv]=Panelis tint2
Name[mk]=Панел tint2
Name[nb]=Panel tint2
Name[nl]=Paneel tint2
Name[nn]=Panel tint2
Name[pa]=ਪੈਨਲ tint2
Name[pl]=Panel tint2
Name[pt]=Painel tint2
Name[pt_BR]=Painel tint2
Name[ro]=Panou tint2
Name[ru]=Панель tint2
Name[si]=පුවරුව tint2
Name[sk]=Panel tint2
Name[sq]=Panel tint2
Name[sv]=Panel tint2
Name[ta]=பலகை tint2
Name[tr]=Panel tint2
Name[ug]=panel tint2
Name[uk]=Панель tint2
Name[ur]=پینل tint2
Name[ur_PK]=پینل tint2
Name[vi]=Panel tint2
Name[zh_CN]=面板 tint2
Name[zh_TW]=面板 tint2
Comment=Lightweight panel
Comment[fr_FR]=Panel léger
Exec=tint2
Icon=taskbar
Terminal=false
Categories=System;

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB