all repos — openbox @ 20b8fcfa33feeade5946bc7f3046705da5d164fe

openbox fork - make it a bit more like ryudo

Merge branch 'backport' into work

Conflicts:

	openbox/client.c
	openbox/config.c
	openbox/event.c
	openbox/extensions.c
	openbox/focus_cycle_indicator.c
	openbox/focus_cycle_popup.c
	openbox/menuframe.c
	openbox/moveresize.c
	openbox/openbox.c
	openbox/screen.c
	openbox/stacking.c
	openbox/startupnotify.c
Dana Jansens danakj@orodu.net
commit

20b8fcfa33feeade5946bc7f3046705da5d164fe

parent

dc94a241c30484611688a8bfb5515577f017529e

M .gitignore.gitignore

@@ -44,6 +44,9 @@ po/insert-header.sin

po/quot.sed po/remove-potcdate.sin po/stamp-po +po/en@boldquot.insert-header +po/en@quot.insert-header +po/remove-potcdate.sed *.gmo render/obrender-4.0.pc obt/obt-4.0.pc

@@ -51,3 +54,39 @@ tools/gnome-panel-control/gnome-panel-control

version.h .libs .deps +tests/aspect +tests/big +tests/borderchange +tests/confignotify +tests/confignotifymax +tests/duplicatesession +tests/extentsrequest +tests/fakeunmap +tests/fallback +tests/focusout +tests/fullscreen +tests/grav +tests/groupmodal +tests/grouptran +tests/grouptran2 +tests/grouptrancircular +tests/grouptrancircular2 +tests/icons +tests/mapiconic +tests/modal +tests/modal2 +tests/modal3 +tests/noresize +tests/override +tests/positioned +tests/resize +tests/restack +tests/shape +tests/showhide +tests/skiptaskbar +tests/skiptaskbar2 +tests/stacking +tests/strut +tests/title +tests/urgent +tests/usertimewin
M Makefile.amMakefile.am

@@ -301,6 +301,10 @@ clearlooks_themedir = $(themedir)/Clearlooks/openbox-3

dist_clearlooks_theme_DATA= \ themes/Clearlooks/openbox-3/themerc +clearlooks34_themedir = $(themedir)/Clearlooks/openbox-3 +dist_clearlooks34_theme_DATA= \ + themes/Clearlooks-3.4/openbox-3/themerc + clearlooksolive_themedir = $(themedir)/Clearlooks-Olive/openbox-3 dist_clearlooksolive_theme_DATA= \ themes/Clearlooks-Olive/openbox-3/themerc
M data/gnome-wm-properties/openbox.desktopdata/gnome-wm-properties/openbox.desktop

@@ -7,3 +7,6 @@ X-GNOME-WMName=Openbox

# our config tool ConfigExec=obconf + +[Window Manager] +SessionManaged=true
M data/rc.xmldata/rc.xml

@@ -35,16 +35,17 @@ <!-- 'Smart' or 'UnderMouse' -->

<center>yes</center> <!-- whether to place windows in the center of the free area found or the top left corner --> - <active>no</active> - <!-- force new windows ont the active monitor on a multi-head system, unless - they are part of an application already on another monitor --> + <monitor>Any</monitor> + <!-- with Smart placement on a multi-monitor system, try to place new windows + on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where + the active window is --> </placement> <theme> <name>Clearlooks</name> <titleLayout>NLIMC</titleLayout> <!-- - avaible characters are NDSLIMC, each can occur at most once. + available characters are NDSLIMC, each can occur at most once. N: window icon L: window label (AKA title). I: iconify
M data/rc.xsddata/rc.xsd

@@ -54,7 +54,7 @@ <xsd:documentation>defines how new windows are placed</xsd:documentation>

</xsd:annotation> <xsd:element name="policy" type="ob:placementpolicy"/> <xsd:element name="center" type="ob:bool"/> - <xsd:element name="active" type="ob:bool"/> + <xsd:element name="monitor" type="ob:placementmonitor"/> </xsd:complexType> <xsd:complexType name="margins"> <xsd:annotation>

@@ -400,6 +400,13 @@ <xsd:simpleType name="placementpolicy">

<xsd:restriction base="xsd:string"> <xsd:enumeration value="Smart"/> <xsd:enumeration value="UnderMouse"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="placementmonitor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Any"/> + <xsd:enumeration value="Mouse"/> + <xsd:enumeration value="Active"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="popupposition">
M openbox/actions.copenbox/actions.c

@@ -337,9 +337,7 @@ ignore_start = event_start_ignore_all_enters();

else if (config_focus_follow && data->context != OB_FRAME_CONTEXT_CLIENT) { - if (!data->button && data->client && !config_focus_under_mouse) - event_end_ignore_all_enters(ignore_start); - else { + if (data->uact == OB_USER_ACTION_MOUSE_PRESS) { struct _ObClient *c; /* usually this is sorta redundant, but with a press action

@@ -354,5 +352,7 @@ "mouse-event action");

event_enter_client(c); } } + else if (!data->button && !config_focus_under_mouse) + event_end_ignore_all_enters(ignore_start); } }
M openbox/actions/execute.copenbox/actions/execute.c

@@ -5,6 +5,10 @@ #include "openbox/screen.h"

#include "obt/paths.h" #include "gettext.h" +#ifdef HAVE_STDLIB_H +# include <stdlib.h> +#endif + typedef struct { gchar *cmd; gboolean sn;

@@ -101,6 +105,7 @@ if (o->sn) {

program = g_path_get_basename(argv[0]); /* sets up the environment */ sn_setup_spawn_environment(program, o->sn_name, o->sn_icon, + o->sn_wmclass, /* launch it on the current desktop */ screen_desktop); }
M openbox/client.copenbox/client.c

@@ -200,6 +200,9 @@ XFree(wmhints);

} } + /* manage windows in reverse order from how they were originally mapped. + this is an attempt to manage children windows before their parents, so + that when the parent is mapped, it can find the child */ for (i = 0; i < nchild; ++i) { if (children[i] == None) continue;

@@ -288,6 +291,11 @@

ob_debug("Window type: %d\n", self->type); ob_debug("Window group: 0x%x\n", self->group?self->group->leader:0); + /* now we have all of the window's information so we can set this up. + do this before creating the frame, so it can tell that we are still + mapping and doesn't go applying things right away */ + client_setup_decor_and_functions(self, FALSE); + /* specify that if we exit, the window should not be destroyed and should be reparented back to root automatically */ XChangeSaveSet(obt_display, window, SetModeInsert);

@@ -308,11 +316,8 @@ settings = client_get_settings_state(self);

/* the session should get the last say though */ client_restore_session_state(self); - /* now we have all of the window's information so we can set this up */ - client_setup_decor_and_functions(self, FALSE); - /* tell startup notification that this app started */ - launch_time = sn_app_started(self->startup_id, self->class); + launch_time = sn_app_started(self->startup_id, self->class, self->name); /* do this after we have a frame.. it uses the frame to help determine the WM_STATE to apply. */

@@ -797,6 +802,7 @@ for (j = 0; j < self->nicons; ++j)

g_free(self->icons[j].data); if (self->nicons > 0) g_free(self->icons); + g_free(self->startup_id); g_free(self->wm_command); g_free(self->title); g_free(self->icon_title);

@@ -1832,11 +1838,11 @@ actions[num++] = OBT_PROP_ATOM(OB_WM_ACTION_UNDECORATE);

OBT_PROP_SETA32(self->window, NET_WM_ALLOWED_ACTIONS, ATOM, actions, num); - /* make sure the window isn't breaking any rules now + /* make sure the window isn't breaking any rules now - don't check ICONIFY here. just cuz a window can't iconify doesnt mean - it can't be iconified with its parent - */ + don't check ICONIFY here. just cuz a window can't iconify doesnt mean + it can't be iconified with its parent + */ if (!(self->functions & OB_CLIENT_FUNC_SHADE) && self->shaded) { if (self->frame) client_shade(self, FALSE);

@@ -2069,11 +2075,17 @@ screen_update_areas();

} } +/* Avoid storing icons above this size if possible */ +#define AVOID_ABOVE 64 + void client_update_icons(ObClient *self) { guint num; guint32 *data; guint w, h, i, j; + guint num_seen; /* number of icons present */ + guint num_small_seen; /* number of icons small enough present */ + guint smallest, smallest_area; for (i = 0; i < self->nicons; ++i) g_free(self->icons[i].data);

@@ -2084,25 +2096,54 @@

if (OBT_PROP_GETA32(self->window, NET_WM_ICON, CARDINAL, &data, &num)) { /* figure out how many valid icons are in here */ i = 0; - while (num - i > 2) { - w = data[i++]; - h = data[i++]; - i += w * h; - if (i > num || w*h == 0) break; - ++self->nicons; - } + num_seen = num_small_seen = 0; + smallest = smallest_area = 0; + if (num > 2) + while (i < num) { + w = data[i++]; + h = data[i++]; + i += w * h; + /* watch for it being too small for the specified size, or for + zero sized icons. */ + if (i > num || w == 0 || h == 0) break; + + if (!smallest_area || w*h < smallest_area) { + smallest = num_seen; + smallest_area = w*h; + } + ++num_seen; + if (w <= AVOID_ABOVE && h <= AVOID_ABOVE) + ++num_small_seen; + } + if (num_small_seen > 0) + self->nicons = num_small_seen; + else if (num_seen) + self->nicons = 1; self->icons = g_new(ObClientIcon, self->nicons); /* store the icons */ i = 0; - for (j = 0; j < self->nicons; ++j) { + for (j = 0; j < self->nicons;) { guint x, y, t; w = self->icons[j].width = data[i++]; h = self->icons[j].height = data[i++]; - if (w*h == 0) continue; + /* if there are some icons smaller than the threshold, we're + skipping all the ones above */ + if (num_small_seen > 0) { + if (w > AVOID_ABOVE || h > AVOID_ABOVE) { + i += w*h; + continue; + } + } + /* if there were no icons smaller than the threshold, then we are + only taking the smallest available one we saw */ + else if (j != smallest) { + i += w*h; + continue; + } self->icons[j].data = g_new(RrPixel32, w * h); for (x = 0, y = 0, t = 0; t < w * h; ++t, ++x, ++i) {

@@ -2117,6 +2158,8 @@ (((data[i] >> 8) & 0xff) << RrDefaultGreenOffset) +

(((data[i] >> 0) & 0xff) << RrDefaultBlueOffset); } g_assert(i <= num); + + ++j; } g_free(data);

@@ -2179,11 +2222,13 @@

RECT_SET(self->icon_geometry, 0, 0, 0, 0); if (OBT_PROP_GETA32(self->window, NET_WM_ICON_GEOMETRY, CARDINAL, - &data, &num) && num == 4) + &data, &num)) { - /* don't let them set it with an area < 0 */ - RECT_SET(self->icon_geometry, data[0], data[1], - MAX(data[2],0), MAX(data[3],0)); + if (num == 4) + /* don't let them set it with an area < 0 */ + RECT_SET(self->icon_geometry, data[0], data[1], + MAX(data[2],0), MAX(data[3],0)); + g_free(data); } }
M openbox/client_list_combined_menu.copenbox/client_list_combined_menu.c

@@ -22,6 +22,7 @@ #include "menu.h"

#include "menuframe.h" #include "screen.h" #include "client.h" +#include "client_list_combined_menu.h" #include "focus.h" #include "config.h" #include "gettext.h"
M openbox/client_list_menu.copenbox/client_list_menu.c

@@ -22,6 +22,7 @@ #include "menu.h"

#include "menuframe.h" #include "screen.h" #include "client.h" +#include "client_list_menu.h" #include "focus.h" #include "config.h" #include "gettext.h"
M openbox/client_menu.copenbox/client_menu.c

@@ -22,6 +22,7 @@ #include "menuframe.h"

#include "config.h" #include "screen.h" #include "client.h" +#include "client_menu.h" #include "openbox.h" #include "frame.h" #include "moveresize.h"
M openbox/config.copenbox/config.c

@@ -35,9 +35,9 @@ gboolean config_focus_raise;

gboolean config_focus_last; gboolean config_focus_under_mouse; -ObPlacePolicy config_place_policy; -gboolean config_place_center; -gboolean config_place_active; +ObPlacePolicy config_place_policy; +gboolean config_place_center; +ObPlaceMonitor config_place_monitor; StrutPartial config_margins;

@@ -54,7 +54,7 @@ RrFont *config_font_menuitem;

RrFont *config_font_menutitle; RrFont *config_font_osd; -gint config_desktops_num; +guint config_desktops_num; GSList *config_desktops_names; guint config_screen_firstdesk; guint config_desktop_popup_time;

@@ -481,8 +481,12 @@ if (obt_parse_node_contains(n, "UnderMouse"))

config_place_policy = OB_PLACE_POLICY_MOUSE; if ((n = obt_parse_find_node(node, "center"))) config_place_center = obt_parse_node_bool(n); - if ((n = obt_parse_find_node(node, "active"))) - config_place_active = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "monitor"))) { + if (obt_parse_node_contains(n, "active")) + config_place_monitor = OB_PLACE_MONITOR_ACTIVE; + else if (obt_parse_node_contains(n, "mouse")) + config_place_monitor = OB_PLACE_MONITOR_MOUSE; + } } static void parse_margins(xmlNodePtr node, gpointer d)

@@ -592,7 +596,7 @@

if ((n = obt_parse_find_node(node, "number"))) { gint d = obt_parse_node_int(n); if (d > 0) - config_desktops_num = d; + config_desktops_num = (unsigned) d; } if ((n = obt_parse_find_node(node, "firstdesk"))) { gint d = obt_parse_node_int(n);

@@ -870,7 +874,7 @@ obt_parse_register(i, "focus", parse_focus, NULL);

config_place_policy = OB_PLACE_POLICY_SMART; config_place_center = TRUE; - config_place_active = FALSE; + config_place_monitor = OB_PLACE_MONITOR_ANY; obt_parse_register(i, "placement", parse_placement, NULL);

@@ -966,6 +970,7 @@ RrFontClose(config_font_activewindow);

RrFontClose(config_font_inactivewindow); RrFontClose(config_font_menuitem); RrFontClose(config_font_menutitle); + RrFontClose(config_font_osd); for (it = config_desktops_names; it; it = g_slist_next(it)) g_free(it->data);
M openbox/config.hopenbox/config.h

@@ -77,7 +77,7 @@ /*! Place windows in the center of the free area */

extern gboolean config_place_center; /*! Place windows on the active monitor (unless they are part of an application already on another monitor) */ -extern gboolean config_place_active; +extern ObPlaceMonitor config_place_monitor; /*! User-specified margins around the edge of the screen(s) */ extern StrutPartial config_margins;

@@ -142,7 +142,7 @@ /*! The font for on-screen-displays/popups */

extern RrFont *config_font_osd; /*! The number of desktops */ -extern gint config_desktops_num; +extern guint config_desktops_num; /*! Desktop to start on, put 5 to start in the center of a 3x3 grid */ extern guint config_screen_firstdesk; /*! Names for the desktops */
M openbox/dock.copenbox/dock.c

@@ -243,8 +243,10 @@ break;

} } - dock->area.width += l + r; - dock->area.height += t + b; + if (dock->dock_apps) { + dock->area.width += l + r; + dock->area.height += t + b; + } hspot = l; vspot = t;

@@ -421,11 +423,12 @@ /* set the strut */

if (!dock->dock_apps) { STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - } else if (config_dock_floating || config_dock_nostrut) - { + } + else if (config_dock_floating || config_dock_nostrut) { STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - } else { + } + else { switch (config_dock_pos) { case OB_DIRECTION_NORTHWEST: switch (config_dock_orient) {

@@ -523,9 +526,12 @@ XMapWindow(obt_display, dock->frame);

} else XUnmapWindow(obt_display, dock->frame); - /* but they are useful outside of this function! */ - dock->area.width += ob_rr_theme->obwidth * 2; - dock->area.height += ob_rr_theme->obwidth * 2; + /* but they are useful outside of this function! but don't add it if the + dock is actually not visible */ + if (dock->dock_apps) { + dock->area.width += ob_rr_theme->obwidth * 2; + dock->area.height += ob_rr_theme->obwidth * 2; + } screen_update_areas();
M openbox/event.copenbox/event.c

@@ -269,7 +269,8 @@ /* If XKB is present, then the modifiers are all strange from its

magic. Our X core protocol stuff won't work, so we use this to find what the modifier state is instead. */ if (XkbGetState(obt_display, XkbUseCoreKbd, &xkb_state) == Success) - e->xkey.state = xkb_state.compat_state; + e->xkey.state = + obt_keyboard_only_modmasks(xkb_state.compat_state); else #endif {

@@ -1929,8 +1930,7 @@ }

gulong event_start_ignore_all_enters(void) { - XSync(obt_display, FALSE); - return LastKnownRequestProcessed(obt_display); + return NextRequest(obt_display); } static void event_ignore_enter_range(gulong start, gulong end)

@@ -1949,13 +1949,18 @@ ob_debug_type(OB_DEBUG_FOCUS, "ignoring enters from %lu until %lu\n",

r->start, r->end); /* increment the serial so we don't ignore events we weren't meant to */ - XSync(obt_display, FALSE); + OBT_PROP_ERASE(screen_support_win, MOTIF_WM_HINTS); } void event_end_ignore_all_enters(gulong start) { - XSync(obt_display, FALSE); - event_ignore_enter_range(start, LastKnownRequestProcessed(obt_display)); + /* Use (NextRequest-1) so that we ignore up to the current serial only. + Inside event_ignore_enter_range, we increment the serial by one, but if + we ignore that serial too, then any enter events generated by mouse + movement will be ignored until we create some further network traffic. + Instead ignore up to NextRequest-1, then when we increment the serial, + we will be *past* the range of ignored serials */ + event_ignore_enter_range(start, NextRequest(obt_display)-1); } static gboolean is_enter_focus_event_ignored(XEvent *e)
M openbox/focus_cycle_indicator.copenbox/focus_cycle_indicator.c

@@ -158,6 +158,7 @@ frame_adjust_focus(c->frame, TRUE);

*/ gint x, y, w, h; gint wt, wl, wr, wb; + gulong ignore_start; wt = wl = wr = wb = FOCUS_INDICATOR_WIDTH;

@@ -165,6 +166,9 @@ x = c->frame->area.x;

y = c->frame->area.y; w = c->frame->area.width; h = wt; + + /* kill enter events cause by this moving */ + ignore_start = event_start_ignore_all_enters(); XMoveResizeWindow(obt_display, focus_indicator.top.window, x, y, w, h);

@@ -269,6 +273,8 @@ XMapWindow(obt_display, focus_indicator.top.window);

XMapWindow(obt_display, focus_indicator.left.window); XMapWindow(obt_display, focus_indicator.right.window); XMapWindow(obt_display, focus_indicator.bottom.window); + + event_end_ignore_all_enters(ignore_start); visible = TRUE; }
M openbox/focus_cycle_popup.copenbox/focus_cycle_popup.c

@@ -480,6 +480,7 @@ ObFocusCyclePopupTarget *t = popup.targets->data;

g_free(t->text); XDestroyWindow(obt_display, t->win); + g_free(t); popup.targets = g_list_delete_link(popup.targets, popup.targets); }
M openbox/frame.copenbox/frame.c

@@ -214,27 +214,10 @@ XResizeWindow(obt_display, self->tllresize,

ob_rr_theme->paddingx + 1, ob_rr_theme->title_height); XResizeWindow(obt_display, self->trrresize, ob_rr_theme->paddingx + 1, ob_rr_theme->title_height); - - /* set up the dynamic appearances */ - self->a_unfocused_title = RrAppearanceCopy(ob_rr_theme->a_unfocused_title); - self->a_focused_title = RrAppearanceCopy(ob_rr_theme->a_focused_title); - self->a_unfocused_label = RrAppearanceCopy(ob_rr_theme->a_unfocused_label); - self->a_focused_label = RrAppearanceCopy(ob_rr_theme->a_focused_label); - self->a_unfocused_handle = - RrAppearanceCopy(ob_rr_theme->a_unfocused_handle); - self->a_focused_handle = RrAppearanceCopy(ob_rr_theme->a_focused_handle); - self->a_icon = RrAppearanceCopy(ob_rr_theme->a_icon); } static void free_theme_statics(ObFrame *self) { - RrAppearanceFree(self->a_unfocused_title); - RrAppearanceFree(self->a_focused_title); - RrAppearanceFree(self->a_unfocused_label); - RrAppearanceFree(self->a_focused_label); - RrAppearanceFree(self->a_unfocused_handle); - RrAppearanceFree(self->a_focused_handle); - RrAppearanceFree(self->a_icon); } void frame_free(ObFrame *self)
M openbox/frame.hopenbox/frame.h

@@ -137,16 +137,6 @@ Window trrresize;

Colormap colormap; - RrAppearance *a_unfocused_title; - RrAppearance *a_focused_title; - RrAppearance *a_unfocused_label; - RrAppearance *a_focused_label; - RrAppearance *a_icon; - RrAppearance *a_unfocused_handle; - RrAppearance *a_focused_handle; - - GSList *clients; - gint icon_on; /* if the window icon button is on */ gint label_on; /* if the window title is on */ gint iconify_on; /* if the window iconify button is on */
M openbox/framerender.copenbox/framerender.c

@@ -124,10 +124,8 @@

if (self->decorations & OB_FRAME_DECOR_TITLEBAR) { RrAppearance *t, *l, *m, *n, *i, *d, *s, *c, *clear; if (self->focused) { - - t = self->a_focused_title; - l = self->a_focused_label; - + t = ob_rr_theme->a_focused_title; + l = ob_rr_theme->a_focused_label; m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ? ob_rr_theme->a_disabled_focused_max : (self->client->max_vert || self->client->max_horz ?

@@ -141,7 +139,7 @@ ob_rr_theme->a_focused_pressed_max :

(self->max_hover ? ob_rr_theme->a_hover_focused_max : ob_rr_theme->a_focused_unpressed_max)))); - n = self->a_icon; + n = ob_rr_theme->a_icon; i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ? ob_rr_theme->a_disabled_focused_iconify : (self->iconify_press ?

@@ -183,8 +181,8 @@ (self->close_hover ?

ob_rr_theme->a_hover_focused_close : ob_rr_theme->a_focused_unpressed_close))); } else { - t = self->a_unfocused_title; - l = self->a_unfocused_label; + t = ob_rr_theme->a_unfocused_title; + l = ob_rr_theme->a_unfocused_label; m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ? ob_rr_theme->a_disabled_unfocused_max : (self->client->max_vert || self->client->max_horz ?

@@ -198,7 +196,7 @@ ob_rr_theme->a_unfocused_pressed_max :

(self->max_hover ? ob_rr_theme->a_hover_unfocused_max : ob_rr_theme->a_unfocused_unpressed_max)))); - n = self->a_icon; + n = ob_rr_theme->a_icon; i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ? ob_rr_theme->a_disabled_unfocused_iconify : (self->iconify_press ?

@@ -318,7 +316,7 @@ {

RrAppearance *h, *g; h = (self->focused ? - self->a_focused_handle : self->a_unfocused_handle); + ob_rr_theme->a_focused_handle : ob_rr_theme->a_unfocused_handle); RrPaint(h, self->handle, self->width, ob_rr_theme->handle_height);
M openbox/menuframe.copenbox/menuframe.c

@@ -77,7 +77,7 @@ ObMenuFrame *self;

XSetWindowAttributes attr; self = g_new0(ObMenuFrame, 1); - self->type = OB_WINDOW_CLASS_MENUFRAME; + self->obwin.type = OB_WINDOW_CLASS_MENUFRAME; self->menu = menu; self->selected = NULL; self->client = client;

@@ -92,7 +92,6 @@ XSetWindowBorderWidth(obt_display, self->window, ob_rr_theme->mbwidth);

XSetWindowBorder(obt_display, self->window, RrColorPixel(ob_rr_theme->menu_border_color)); - self->a_title = RrAppearanceCopy(ob_rr_theme->a_menu_title); self->a_items = RrAppearanceCopy(ob_rr_theme->a_menu); window_add(&self->window, MENUFRAME_AS_WINDOW(self));

@@ -112,11 +111,10 @@

stacking_remove(MENUFRAME_AS_WINDOW(self)); window_remove(self->window); + RrAppearanceFree(self->a_items); + XDestroyWindow(obt_display, self->window); - RrAppearanceFree(self->a_items); - RrAppearanceFree(self->a_title); - g_free(self); } }

@@ -150,37 +148,6 @@

XMapWindow(obt_display, self->window); XMapWindow(obt_display, self->text); - self->a_normal = RrAppearanceCopy(ob_rr_theme->a_menu_normal); - self->a_selected = RrAppearanceCopy(ob_rr_theme->a_menu_selected); - self->a_disabled = RrAppearanceCopy(ob_rr_theme->a_menu_disabled); - self->a_disabled_selected = - RrAppearanceCopy(ob_rr_theme->a_menu_disabled_selected); - - if (entry->type == OB_MENU_ENTRY_TYPE_SEPARATOR) { - self->a_separator = RrAppearanceCopy(ob_rr_theme->a_clear_tex); - self->a_separator->texture[0].type = RR_TEXTURE_LINE_ART; - } else { - self->a_icon = RrAppearanceCopy(ob_rr_theme->a_clear_tex); - self->a_icon->texture[0].type = RR_TEXTURE_RGBA; - self->a_mask = RrAppearanceCopy(ob_rr_theme->a_clear_tex); - self->a_mask->texture[0].type = RR_TEXTURE_MASK; - self->a_bullet_normal = - RrAppearanceCopy(ob_rr_theme->a_menu_bullet_normal); - self->a_bullet_selected = - RrAppearanceCopy(ob_rr_theme->a_menu_bullet_selected); - } - - self->a_text_normal = - RrAppearanceCopy(ob_rr_theme->a_menu_text_normal); - self->a_text_selected = - RrAppearanceCopy(ob_rr_theme->a_menu_text_selected); - self->a_text_disabled = - RrAppearanceCopy(ob_rr_theme->a_menu_text_disabled); - self->a_text_disabled_selected = - RrAppearanceCopy(ob_rr_theme->a_menu_text_disabled_selected); - self->a_text_title = - RrAppearanceCopy(ob_rr_theme->a_menu_text_title); - window_add(&self->window, MENUFRAME_AS_WINDOW(self->frame)); return self;

@@ -206,22 +173,6 @@ XDestroyWindow(obt_display, self->bullet);

g_hash_table_remove(menu_frame_map, &self->bullet); } - RrAppearanceFree(self->a_normal); - RrAppearanceFree(self->a_selected); - RrAppearanceFree(self->a_disabled); - RrAppearanceFree(self->a_disabled_selected); - - RrAppearanceFree(self->a_separator); - RrAppearanceFree(self->a_icon); - RrAppearanceFree(self->a_mask); - RrAppearanceFree(self->a_text_normal); - RrAppearanceFree(self->a_text_selected); - RrAppearanceFree(self->a_text_disabled); - RrAppearanceFree(self->a_text_disabled_selected); - RrAppearanceFree(self->a_text_title); - RrAppearanceFree(self->a_bullet_normal); - RrAppearanceFree(self->a_bullet_selected); - g_free(self); } }

@@ -367,18 +318,20 @@ item_a = (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&

!self->entry->data.normal.enabled ? /* disabled */ (self == self->frame->selected ? - self->a_disabled_selected : self->a_disabled) : + ob_rr_theme->a_menu_disabled_selected : + ob_rr_theme->a_menu_disabled) : /* enabled */ (self == self->frame->selected ? - self->a_selected : self->a_normal)); + ob_rr_theme->a_menu_selected : + ob_rr_theme->a_menu_normal)); th = ITEM_HEIGHT; break; case OB_MENU_ENTRY_TYPE_SEPARATOR: if (self->entry->data.separator.label) { - item_a = self->frame->a_title; + item_a = ob_rr_theme->a_menu_title; th = ob_rr_theme->menu_title_height; } else { - item_a = self->a_normal; + item_a = ob_rr_theme->a_menu_normal; th = SEPARATOR_HEIGHT + 2*PADDING; } break;

@@ -399,10 +352,12 @@ text_a = (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&

!self->entry->data.normal.enabled ? /* disabled */ (self == self->frame->selected ? - self->a_text_disabled_selected : self->a_text_disabled) : + ob_rr_theme->a_menu_text_disabled_selected : + ob_rr_theme->a_menu_text_disabled) : /* enabled */ (self == self->frame->selected ? - self->a_text_selected : self->a_text_normal)); + ob_rr_theme->a_menu_text_selected : + ob_rr_theme->a_menu_text_normal)); text_a->texture[0].data.text.string = self->entry->data.normal.label; if (self->entry->data.normal.shortcut && (self->frame->menu->show_all_shortcuts ||

@@ -417,8 +372,8 @@ text_a->texture[0].data.text.shortcut = FALSE;

break; case OB_MENU_ENTRY_TYPE_SUBMENU: text_a = (self == self->frame->selected ? - self->a_text_selected : - self->a_text_normal); + ob_rr_theme->a_menu_text_selected : + ob_rr_theme->a_menu_text_normal); sub = self->entry->data.submenu.submenu; text_a->texture[0].data.text.string = sub ? sub->title : ""; if (sub->shortcut && (self->frame->menu->show_all_shortcuts ||

@@ -432,9 +387,9 @@ text_a->texture[0].data.text.shortcut = FALSE;

break; case OB_MENU_ENTRY_TYPE_SEPARATOR: if (self->entry->data.separator.label != NULL) - text_a = self->a_text_title; + text_a = ob_rr_theme->a_menu_text_title; else - text_a = self->a_text_normal; + text_a = ob_rr_theme->a_menu_text_normal; break; }

@@ -477,20 +432,24 @@ self->area.width - 2*ob_rr_theme->paddingx,

ob_rr_theme->menu_title_height - 2*ob_rr_theme->paddingy); } else { + RrAppearance *clear; + /* unlabeled separaator */ XMoveResizeWindow(obt_display, self->text, PADDING, PADDING, self->area.width - 2*PADDING, SEPARATOR_HEIGHT); - self->a_separator->surface.parent = item_a; - self->a_separator->surface.parentx = PADDING; - self->a_separator->surface.parenty = PADDING; - self->a_separator->texture[0].data.lineart.color = + + clear = ob_rr_theme->a_clear_tex; + clear->texture[0].type = RR_TEXTURE_LINE_ART; + clear->surface.parent = item_a; + clear->surface.parentx = PADDING; + clear->surface.parenty = PADDING; + clear->texture[0].data.lineart.color = text_a->texture[0].data.text.color; - self->a_separator->texture[0].data.lineart.x1 = 2*PADDING; - self->a_separator->texture[0].data.lineart.y1 = SEPARATOR_HEIGHT/2; - self->a_separator->texture[0].data.lineart.x2 = - self->area.width - 4*PADDING; - self->a_separator->texture[0].data.lineart.y2 = SEPARATOR_HEIGHT/2; - RrPaint(self->a_separator, self->text, + clear->texture[0].data.lineart.x1 = 2*PADDING; + clear->texture[0].data.lineart.y1 = SEPARATOR_HEIGHT/2; + clear->texture[0].data.lineart.x2 = self->area.width - 4*PADDING; + clear->texture[0].data.lineart.y2 = SEPARATOR_HEIGHT/2; + RrPaint(clear, self->text, self->area.width - 2*PADDING, SEPARATOR_HEIGHT); } break;

@@ -499,24 +458,29 @@

if (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL && self->entry->data.normal.icon_data) { + RrAppearance *clear; + XMoveResizeWindow(obt_display, self->icon, PADDING, frame->item_margin.top, ITEM_HEIGHT - frame->item_margin.top - frame->item_margin.bottom, ITEM_HEIGHT - frame->item_margin.top - frame->item_margin.bottom); - self->a_icon->texture[0].data.rgba.width = + + clear = ob_rr_theme->a_clear_tex; + clear->texture[0].type = RR_TEXTURE_RGBA; + clear->texture[0].data.rgba.width = self->entry->data.normal.icon_width; - self->a_icon->texture[0].data.rgba.height = + clear->texture[0].data.rgba.height = self->entry->data.normal.icon_height; - self->a_icon->texture[0].data.rgba.alpha = + clear->texture[0].data.rgba.alpha = self->entry->data.normal.icon_alpha; - self->a_icon->texture[0].data.rgba.data = + clear->texture[0].data.rgba.data = self->entry->data.normal.icon_data; - self->a_icon->surface.parent = item_a; - self->a_icon->surface.parentx = PADDING; - self->a_icon->surface.parenty = frame->item_margin.top; - RrPaint(self->a_icon, self->icon, + clear->surface.parent = item_a; + clear->surface.parentx = PADDING; + clear->surface.parenty = frame->item_margin.top; + RrPaint(clear, self->icon, ITEM_HEIGHT - frame->item_margin.top - frame->item_margin.bottom, ITEM_HEIGHT - frame->item_margin.top

@@ -526,6 +490,7 @@ } else if (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&

self->entry->data.normal.mask) { RrColor *c; + RrAppearance *clear; XMoveResizeWindow(obt_display, self->icon, PADDING, frame->item_margin.top,

@@ -533,7 +498,10 @@ ITEM_HEIGHT - frame->item_margin.top

- frame->item_margin.bottom, ITEM_HEIGHT - frame->item_margin.top - frame->item_margin.bottom); - self->a_mask->texture[0].data.mask.mask = + + clear = ob_rr_theme->a_clear_tex; + clear->texture[0].type = RR_TEXTURE_MASK; + clear->texture[0].data.mask.mask = self->entry->data.normal.mask; c = (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&

@@ -546,12 +514,12 @@ /* enabled */

(self == self->frame->selected ? self->entry->data.normal.mask_selected_color : self->entry->data.normal.mask_normal_color)); - self->a_mask->texture[0].data.mask.color = c; + clear->texture[0].data.mask.color = c; - self->a_mask->surface.parent = item_a; - self->a_mask->surface.parentx = PADDING; - self->a_mask->surface.parenty = frame->item_margin.top; - RrPaint(self->a_mask, self->icon, + clear->surface.parent = item_a; + clear->surface.parentx = PADDING; + clear->surface.parenty = frame->item_margin.top; + RrPaint(clear, self->icon, ITEM_HEIGHT - frame->item_margin.top - frame->item_margin.bottom, ITEM_HEIGHT - frame->item_margin.top

@@ -568,8 +536,8 @@ ITEM_HEIGHT + PADDING, PADDING,

ITEM_HEIGHT - 2*PADDING, ITEM_HEIGHT - 2*PADDING); bullet_a = (self == self->frame->selected ? - self->a_bullet_selected : - self->a_bullet_normal); + ob_rr_theme->a_menu_bullet_selected : + ob_rr_theme->a_menu_bullet_normal); bullet_a->surface.parent = item_a; bullet_a->surface.parentx = self->frame->text_x + self->frame->text_w - ITEM_HEIGHT + PADDING;

@@ -645,31 +613,31 @@ if (self->entries) {

gint l, t, r, b; e = self->entries->data; - e->a_text_normal->texture[0].data.text.string = ""; - tw = RrMinWidth(e->a_text_normal); + ob_rr_theme->a_menu_text_normal->texture[0].data.text.string = ""; + tw = RrMinWidth(ob_rr_theme->a_menu_text_normal); tw += 2*PADDING; th = ITEM_HEIGHT; - RrMargins(e->a_normal, &l, &t, &r, &b); + RrMargins(ob_rr_theme->a_menu_normal, &l, &t, &r, &b); STRUT_SET(self->item_margin, MAX(self->item_margin.left, l), MAX(self->item_margin.top, t), MAX(self->item_margin.right, r), MAX(self->item_margin.bottom, b)); - RrMargins(e->a_selected, &l, &t, &r, &b); + RrMargins(ob_rr_theme->a_menu_selected, &l, &t, &r, &b); STRUT_SET(self->item_margin, MAX(self->item_margin.left, l), MAX(self->item_margin.top, t), MAX(self->item_margin.right, r), MAX(self->item_margin.bottom, b)); - RrMargins(e->a_disabled, &l, &t, &r, &b); + RrMargins(ob_rr_theme->a_menu_disabled, &l, &t, &r, &b); STRUT_SET(self->item_margin, MAX(self->item_margin.left, l), MAX(self->item_margin.top, t), MAX(self->item_margin.right, r), MAX(self->item_margin.bottom, b)); - RrMargins(e->a_disabled_selected, &l, &t, &r, &b); + RrMargins(ob_rr_theme->a_menu_disabled_selected, &l, &t, &r, &b); STRUT_SET(self->item_margin, MAX(self->item_margin.left, l), MAX(self->item_margin.top, t),

@@ -710,10 +678,12 @@ text_a = (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&

!e->entry->data.normal.enabled ? /* disabled */ (e == self->selected ? - e->a_text_disabled_selected : e->a_text_disabled) : + ob_rr_theme->a_menu_text_disabled_selected : + ob_rr_theme->a_menu_text_disabled) : /* enabled */ (e == self->selected ? - e->a_text_selected : e->a_text_normal)); + ob_rr_theme->a_menu_text_selected : + ob_rr_theme->a_menu_text_normal)); switch (e->entry->type) { case OB_MENU_ENTRY_TYPE_NORMAL: text_a->texture[0].data.text.string = e->entry->data.normal.label;

@@ -740,9 +710,10 @@ tw += ITEM_HEIGHT - PADDING;

break; case OB_MENU_ENTRY_TYPE_SEPARATOR: if (e->entry->data.separator.label != NULL) { - e->a_text_title->texture[0].data.text.string = + ob_rr_theme->a_menu_text_title->texture[0].data.text.string = e->entry->data.separator.label; - tw = RrMinWidth(e->a_text_title) + 2*ob_rr_theme->paddingx; + tw = RrMinWidth(ob_rr_theme->a_menu_text_title) + + 2*ob_rr_theme->paddingx; tw = MIN(tw, MAX_MENU_WIDTH); th = ob_rr_theme->menu_title_height + (ob_rr_theme->mbwidth - PADDING) *2;
M openbox/menuframe.hopenbox/menuframe.h

@@ -38,7 +38,7 @@

struct _ObMenuFrame { /* stuff to be an ObWindow */ - ObWindow type; + ObWindow obwin; Window window; struct _ObMenu *menu;

@@ -71,7 +71,9 @@ gint text_h; /* height of the items */

gint monitor; /* monitor on which to show the menu in xinerama */ - RrAppearance *a_title; + /* We make a copy of this for each menu, so that we don't have to re-render + the background of the entire menu each time we render an item inside it. + */ RrAppearance *a_items; gboolean got_press; /* don't allow a KeyRelease event to run things in the

@@ -94,22 +96,6 @@ Window window;

Window icon; Window text; Window bullet; - - RrAppearance *a_normal; - RrAppearance *a_selected; - RrAppearance *a_disabled; - RrAppearance *a_disabled_selected; - - RrAppearance *a_icon; - RrAppearance *a_mask; - RrAppearance *a_bullet_normal; - RrAppearance *a_bullet_selected; - RrAppearance *a_separator; - RrAppearance *a_text_normal; - RrAppearance *a_text_selected; - RrAppearance *a_text_disabled; - RrAppearance *a_text_disabled_selected; - RrAppearance *a_text_title; }; extern GHashTable *menu_frame_map;
M openbox/moveresize.copenbox/moveresize.c

@@ -256,7 +256,8 @@ moveresize_in_progress = TRUE;

#ifdef SYNC if (config_resize_redraw && !moving && obt_display_extension_sync && - moveresize_client->sync_request && moveresize_client->sync_counter) + moveresize_client->sync_request && moveresize_client->sync_counter && + !moveresize_client->not_responding) { /* Initialize values for the resize syncing, and create an alarm for the client's xsync counter */

@@ -371,7 +372,8 @@ }

#ifdef SYNC if (config_resize_redraw && obt_display_extension_sync && - moveresize_client->sync_request && moveresize_client->sync_counter) + moveresize_client->sync_request && moveresize_client->sync_counter && + !moveresize_client->not_responding) { XEvent ce; XSyncValue val;
M openbox/openbox.copenbox/openbox.c

@@ -33,6 +33,7 @@ #include "focus_cycle_indicator.h"

#include "focus_cycle_popup.h" #include "moveresize.h" #include "frame.h" +#include "framerender.h" #include "keyboard.h" #include "mouse.h" #include "menuframe.h"

@@ -177,7 +178,7 @@ g_message(_("Cannot set locale modifiers for the X server."));

/* set the DISPLAY environment variable for any lauched children, to the display we're using, so they open in the right place. */ - putenv(g_strdup_printf("DISPLAY=%s", DisplayString(obt_display))); + setenv("DISPLAY", DisplayString(obt_display), TRUE); /* create available cursors */ cursors[OB_CURSOR_NONE] = None;

@@ -490,9 +491,7 @@

static void parse_env() { /* unset this so we don't pass it on unknowingly */ - gchar *s = g_strdup("DESKTOP_STARTUP_ID"); - putenv(s); - g_free(s); + unsetenv("DESKTOP_STARTUP_ID"); } static void parse_args(gint *argc, gchar **argv)
M openbox/place.copenbox/place.c

@@ -108,7 +108,10 @@ }

} } - if (focus_client && client_normal(focus_client)) { + /* skip this if placing by the mouse position */ + if (focus_client && client_normal(focus_client) && + config_place_monitor != OB_PLACE_MONITOR_MOUSE) + { add_choice(choice, client_monitor(focus_client)); ob_debug("placement adding choice %d for normal focused window\n", client_monitor(focus_client));

@@ -146,7 +149,8 @@ Rect **areas;

guint i; areas = pick_head(client); - i = config_place_active ? 0 : g_random_int_range(0, screen_num_monitors); + i = (config_place_monitor != OB_PLACE_MONITOR_ANY) ? + 0 : g_random_int_range(0, screen_num_monitors); l = areas[i]->x; t = areas[i]->y;

@@ -255,9 +259,9 @@

/* try ignoring different things to find empty space */ for (ignore = 0; ignore < IGNORE_END && !ret; ignore++) { /* try all monitors in order of preference, but only the first one - if config_place_active is true */ - for (i = 0; (i < (config_place_active ? 1 : screen_num_monitors) && - !ret); ++i) + if config_place_monitor is MOUSE or ACTIVE */ + for (i = 0; (i < (config_place_monitor != OB_PLACE_MONITOR_ANY ? + 1 : screen_num_monitors) && !ret); ++i) { GList *it;
M openbox/place.hopenbox/place.h

@@ -31,6 +31,13 @@ OB_PLACE_POLICY_SMART,

OB_PLACE_POLICY_MOUSE } ObPlacePolicy; +typedef enum +{ + OB_PLACE_MONITOR_ANY, + OB_PLACE_MONITOR_ACTIVE, + OB_PLACE_MONITOR_MOUSE +} ObPlaceMonitor; + gboolean place_client(struct _ObClient *client, gint *x, gint *y, struct _ObAppSettings *settings);
M openbox/popup.copenbox/popup.c

@@ -256,6 +256,8 @@

x=MAX(MIN(x, area->x+area->width-w),area->x); y=MAX(MIN(y, area->y+area->height-h),area->y); + g_free(area); + if (m == screen_num_monitors) { RECT_SET(mon, x, y, w, h); m = screen_find_monitor(&mon);

@@ -265,6 +267,8 @@ area = screen_physical_area_monitor(m);

x=MAX(MIN(x, area->x+area->width-w),area->x); y=MAX(MIN(y, area->y+area->height-h),area->y); + + g_free(area); } /* set the windows/appearances up */

@@ -300,8 +304,6 @@ } else {

popup_show_timeout(self); } } - - g_free(area); } void popup_hide(ObPopup *self)
M openbox/screen.copenbox/screen.c

@@ -391,7 +391,13 @@ desktops that don't have names yet */

screen_num_desktops = 0; if (OBT_PROP_GET32(obt_root(ob_screen), NET_NUMBER_OF_DESKTOPS, CARDINAL, &d)) + { + if (d != config_desktops_num) { + g_warning(_("Openbox is configured for %d desktops, but the current session has %d. Overriding the Openbox configuration."), + config_desktops_num, d); + } screen_set_num_desktops(d); + } /* restore from session if possible */ else if (session_num_desktops) screen_set_num_desktops(session_num_desktops);

@@ -1284,7 +1290,6 @@ guint i;

gint l, r, t, b; if (ob_debug_xinerama) { - g_print("Using fake xinerama !\n"); gint w = WidthOfScreen(ScreenOfDisplay(obt_display, ob_screen)); gint h = HeightOfScreen(ScreenOfDisplay(obt_display, ob_screen)); *nxin = 2;
M openbox/stacking.copenbox/stacking.c

@@ -24,6 +24,7 @@ #include "client.h"

#include "group.h" #include "frame.h" #include "window.h" +#include "event.h" #include "debug.h" #include "obt/prop.h"

@@ -114,6 +115,7 @@ void stacking_temp_raise(ObWindow *window)

{ Window win[2]; GList *it; + gulong start; /* don't use this for internal windows..! it would lower them.. */ g_assert(window_layer(window) < OB_STACKING_LAYER_INTERNAL);

@@ -129,7 +131,9 @@ break;

} win[1] = window_top(window); + start = event_start_ignore_all_enters(); XRestackWindows(obt_display, win, 2); + event_end_ignore_all_enters(start); pause_changes = TRUE; }

@@ -139,12 +143,15 @@ {

Window *win; GList *it; gint i; + gulong start; win = g_new(Window, g_list_length(stacking_list) + 1); win[0] = screen_support_win; for (i = 1, it = stacking_list; it; ++i, it = g_list_next(it)) win[i] = window_top(it->data); + start = event_start_ignore_all_enters(); XRestackWindows(obt_display, win, i); + event_end_ignore_all_enters(start); g_free(win); pause_changes = FALSE;
M openbox/startupnotify.copenbox/startupnotify.c

@@ -21,20 +21,23 @@ #include "startupnotify.h"

#include "gettext.h" #include "event.h" -#include <stdlib.h> +#ifdef HAVE_STDLIB_H +# include <stdlib.h> +#endif #ifndef USE_LIBSN void sn_startup(gboolean reconfig) {} void sn_shutdown(gboolean reconfig) {} gboolean sn_app_starting() { return FALSE; } -Time sn_app_started(const gchar *id, const gchar *wmclass) +Time sn_app_started(const gchar *id, const gchar *wmclass, const gchar *name) { return CurrentTime; } gboolean sn_get_desktop(gchar *id, guint *desktop) { return FALSE; } -void sn_setup_spawn_environment(gchar *program, gchar *name, - gchar *icon_name, gint desktop) {} +void sn_setup_spawn_environment(const gchar *program, const gchar *name, + const gchar *icon_name, const gchar *wmclass, + gint desktop) {} void sn_spawn_cancel() {} #else

@@ -57,14 +60,7 @@ static void sn_event_func(SnMonitorEvent *event, gpointer data);

void sn_startup(gboolean reconfig) { - gchar *s; - if (reconfig) return; - - /* unset this so we don't pass it on unknowingly */ - s = g_strdup("DESKTOP_STARTUP_ID"); - putenv(s); - g_free(s); sn_display = sn_display_new(obt_display, NULL, NULL); sn_context = sn_monitor_context_new(sn_display, ob_screen,

@@ -168,7 +164,7 @@ if (change)

screen_set_root_cursor(); } -Time sn_app_started(const gchar *id, const gchar *wmclass) +Time sn_app_started(const gchar *id, const gchar *wmclass, const gchar *name) { GSList *it; Time t = CurrentTime;

@@ -179,10 +175,9 @@

for (it = sn_waits; it; it = g_slist_next(it)) { SnStartupSequence *seq = it->data; gboolean found = FALSE; - const gchar *seqid, *seqclass, *seqname, *seqbin; + const gchar *seqid, *seqclass, *seqbin; seqid = sn_startup_sequence_get_id(seq); seqclass = sn_startup_sequence_get_wmclass(seq); - seqname = sn_startup_sequence_get_name(seq); seqbin = sn_startup_sequence_get_binary_name(seq); if (id && seqid) {

@@ -190,15 +185,21 @@ /* if the app has a startup id, then look for that for highest

accuracy */ if (!strcmp(seqid, id)) found = TRUE; - } else { - seqclass = sn_startup_sequence_get_wmclass(seq); - seqname = sn_startup_sequence_get_name(seq); - seqbin = sn_startup_sequence_get_binary_name(seq); - - if ((seqname && !g_ascii_strcasecmp(seqname, wmclass)) || - (seqbin && !g_ascii_strcasecmp(seqbin, wmclass)) || - (seqclass && !strcmp(seqclass, wmclass))) - found = TRUE; + } + else if (seqclass) { + /* seqclass = "a string to match against the "resource name" or + "resource class" hints. These are WM_CLASS[0] and WM_CLASS[1]" + - from the startup-notification spec + */ + found = (seqclass && !strcmp(seqclass, wmclass)) || + (seqclass && !strcmp(seqclass, name)); + } + else if (seqbin) { + /* Check the binary name against the class and name hints + as well, to help apps that don't have the class set + correctly */ + found = (seqbin && !g_ascii_strcasecmp(seqbin, wmclass)) || + (seqbin && !g_ascii_strcasecmp(seqbin, name)); } if (found) {

@@ -231,8 +232,9 @@ sn_launcher_context_complete(sn);

return FALSE; /* don't repeat */ } -void sn_setup_spawn_environment(gchar *program, gchar *name, - gchar *icon_name, gint desktop) +void sn_setup_spawn_environment(const gchar *program, const gchar *name, + const gchar *icon_name, const gchar *wmclass, + gint desktop) { gchar *desc; const char *id;

@@ -249,6 +251,7 @@ sn_launcher_context_set_description(sn_launcher, desc);

sn_launcher_context_set_icon_name(sn_launcher, icon_name ? icon_name : program); sn_launcher_context_set_binary_name(sn_launcher, program); + if (wmclass) sn_launcher_context_set_wmclass(sn_launcher, wmclass); if (desktop >= 0 && (unsigned) desktop < screen_num_desktops) sn_launcher_context_set_workspace(sn_launcher, (signed) desktop); sn_launcher_context_initiate(sn_launcher, "openbox", program,

@@ -262,7 +265,7 @@ sn_launch_wait_timeout, sn_launcher,

g_direct_equal, (GDestroyNotify)sn_launcher_context_unref); - putenv(g_strdup_printf("DESKTOP_STARTUP_ID=%s", id)); + setenv("DESKTOP_STARTUP_ID", id, TRUE); g_free(desc); }
M openbox/startupnotify.hopenbox/startupnotify.h

@@ -27,16 +27,20 @@ void sn_shutdown(gboolean reconfig);

gboolean sn_app_starting(); -/*! Notify that an app has started */ -Time sn_app_started(const gchar *id, const gchar *wmclass); +/*! Notify that an app has started + @param wmclass the WM_CLASS[1] hint + @param name the WM_CLASS[0] hint + */ +Time sn_app_started(const gchar *id, const gchar *wmclass, const gchar *name); /*! Get the desktop requested via the startup-notiication protocol if one was requested */ gboolean sn_get_desktop(gchar *id, guint *desktop); /* Get the environment to run the program in, with startup notification */ -void sn_setup_spawn_environment(gchar *program, gchar *name, - gchar *icon_name, gint desktop); +void sn_setup_spawn_environment(const gchar *program, const gchar *name, + const gchar *icon_name, const gchar *wmclass, + gint desktop); /* Tell startup notification we're not actually running the program we told it we were
M po/ar.popo/ar.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-21 14:43+0300\n" "Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n" "Language-Team: Arabic <doc@arabeyes.org>\n"

@@ -28,7 +28,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "فشلت في تحويل المسار '%s' من utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "فشلت في تنفيذ '%s': %s"

@@ -287,7 +287,7 @@ msgstr ""

"\n" "من فضلك أبلغ عن العلل إلى %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "معامل سطر أوامر غير سليم '%s'\n"

@@ -307,7 +307,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "مدير النوافذ على الشاشة %Id لا وجود له" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "سطح المكتب %Ii"

@@ -327,7 +334,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "خطأ أثناء حفظ الجلسة إلى '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "تشغيل %s\n"
M po/bn_IN.popo/bn_IN.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.2\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-06-01 19:02+0530\n" "Last-Translator: Runa Bhattacharjee <runabh@gmail.com>\n" "Language-Team: Bengali (India) <en@li.org>\n"

@@ -28,7 +28,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "'%s' পাথটি utf8 থেকে রূপান্তর করতে ব্যর্থ" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "'%s' সঞ্চালন করতে ব্যর্থ: %s"

@@ -290,7 +290,7 @@ msgstr ""

"\n" "অনুগ্রহ করে %s-এ বাগ সংক্রান্ত সূচনা দায়ের করুন\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "অবৈধ কমান্ড-লাইন আর্গুমেন্ট '%s'\n"

@@ -310,7 +310,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "পর্দা %d-র উপর চলমান উইন্ডো পরিচালন ব্যবস্থাটি বন্ধ করতে ব্যর্থ" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "desktop %i"

@@ -330,7 +337,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "'%s'-এ সেশান সংরক্ষণকালে সমস্যা: %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "%s সঞ্চালিত হচ্ছে\n"
M po/ca.popo/ca.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.2\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-05-28 15:54+0200\n" "Last-Translator: David Majà Martínez <davidmaja@gmail.com>\n" "Language-Team: catalan\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "No s'ha pogut convertir el camí '%s' des de utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "No s'ha pogut executar '%s': %s"

@@ -296,7 +296,7 @@ msgstr ""

"\n" "Informeu dels errors a %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Opció '%s' no vàlida a la línia d'ordres\n"

@@ -317,7 +317,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "El gestor de finestres de la pantalla %d no està sortint" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "escriptori %i"

@@ -337,7 +344,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "S'ha produït un error mentre es desava la sessió a '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Executant %s\n"
M po/cs.popo/cs.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-21 00:15+0200\n" "Last-Translator: tezlo <tezlo@gmx.net>\n" "Language-Team: Czech <cs@li.org>\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Nepodařilo se převést cestu '%s' z utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Nepodařilo se spustit '%s': %s"

@@ -286,7 +286,7 @@ msgstr ""

"\n" "Prosím hlašte chyby na %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Neplatný argument příkazové řádky '%s'\n"

@@ -306,7 +306,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Window manager na obrazovce %d ne a ne skončit" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "plochu %i"

@@ -326,7 +333,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Chyba během ukládání session do '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Spouštím %s\n"
M po/de.popo/de.po

@@ -8,9 +8,9 @@ # Finn Zirngibl <finn@s23.org>, 2008"

# msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.6\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2008-01-17 22:49+0100\n" "Last-Translator: Finn Zirngibl <finn@s23.org>\n" "Language-Team: <de@li.org>\n"

@@ -28,7 +28,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Konnte Pfad '%s' nicht von utf8 konvertieren" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Konnte '%s' nicht ausführen: %s"

@@ -292,7 +292,7 @@ msgstr ""

"\n" "Bitte melden Sie Bugreports an: %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Ungültiges Kommandozeilen Argument '%s'\n"

@@ -312,7 +312,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Der Fenstermanager auf Bildschirm %d beendet sich nicht" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "desktop %i"

@@ -332,7 +339,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Fehler beim Speichern der Sitzung nach '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Starte %s\n"
M po/en@boldquot.popo/en@boldquot.po

@@ -30,10 +30,10 @@ # bold face, assuming the VT100/XTerm escape sequences.

# msgid "" msgstr "" -"Project-Id-Version: openbox 3.999.0\n" +"Project-Id-Version: openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" +"PO-Revision-Date: 2008-01-25 03:51+0100\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "MIME-Version: 1.0\n"

@@ -51,7 +51,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Failed to convert the path ‘%s’ from utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Failed to execute '%s': %s"

@@ -310,7 +310,7 @@ msgstr ""

"\n" "Please report bugs at %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Invalid command line argument ‘%s’\n"

@@ -330,7 +330,16 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "The WM on screen %d is not exiting" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "desktop %i"

@@ -350,7 +359,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Error while saving the session to '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Running %s\n"
M po/en@quot.popo/en@quot.po

@@ -27,10 +27,10 @@ # transliterated to 0x22.

# msgid "" msgstr "" -"Project-Id-Version: openbox 3.999.0\n" +"Project-Id-Version: openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" +"PO-Revision-Date: 2008-01-25 03:51+0100\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "MIME-Version: 1.0\n"

@@ -48,7 +48,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Failed to convert the path ‘%s’ from utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Failed to execute '%s': %s"

@@ -307,7 +307,7 @@ msgstr ""

"\n" "Please report bugs at %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Invalid command line argument ‘%s’\n"

@@ -327,7 +327,16 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "The WM on screen %d is not exiting" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "desktop %i"

@@ -347,7 +356,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Error while saving the session to '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Running %s\n"
M po/es.popo/es.po

@@ -8,7 +8,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-21 21:26+0200\n" "Last-Translator: David Merino <rastiazul at yahoo . com>\n" "Language-Team: None\n"

@@ -27,7 +27,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Falló al convertir el path '%s' desde utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Falló al ejecutar '%s': %s"

@@ -293,7 +293,7 @@ msgstr ""

"\n" "Por favor reportar errores a %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Argumento de linea de comando inválido '%s'\n"

@@ -314,7 +314,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "El WM en la pantalla %d no esta saliendo" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "Escritorio %i"

@@ -334,7 +341,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Error mientras se salvaba la sesión a '%s': '%s'" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Ejecutando %s\n"
M po/et.popo/et.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-20 16:54+0200\n" "Last-Translator: Andres Järv <andresjarv@gmail.com>\n" "Language-Team: Estonian <et@li.org>\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Raja '%s' ümberkodeerimine UTF8-st ebaõnnestus" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "'%s' käivitamine ebaõnnestus: %s"

@@ -287,7 +287,7 @@ msgstr ""

"\n" "Palun teata vigadest siia %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Vigane käsurea argument '%s'\n"

@@ -307,7 +307,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Aknahaldur ekraanil %d ei sulgu" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "töölaud %i"

@@ -327,7 +334,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Seansi '%s' salvestamisel ilmnes viga: %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Jooksev %s\n"
M po/eu.popo/eu.po

@@ -5,9 +5,9 @@ # Inko Illarramendi Arancibia <inkoia@gmail.com>, 2008.

# msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.6\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2008-01-19 14:34+0100\n" "Last-Translator: Inko I. A. <inkoia@gmail.com>\n" "Language-Team: Inko I. A. <inkoia@gmail.com>\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Hutsegitea '%s' helbidea utf8-tik bihurtzean" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Hutsegitea '%s' exekutatzean: %s"

@@ -287,7 +287,7 @@ msgstr ""

"\n" "%s helbidean erroreen berri eman mesedez\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "'%s' komando lerro argumentu baliogabea\n"

@@ -310,7 +310,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "%d bistaratze pantailako leiho-kudeatzailea ez da irteten" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "%i Idazmahaia"

@@ -330,7 +337,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Errorea saioa '%s'-n gordetzean: %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Egikaritzen %s\n"
M po/fi.popo/fi.po

@@ -8,9 +8,9 @@ # Jarkko Piiroinen <jarkkop@iki.fi>, 2008.

# msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.6\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2008-01-18 14:55+0100\n" "Last-Translator: Jarkko Piiroinen <jarkkop@iki.fi>\n" "Language-Team: None\n"

@@ -28,7 +28,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Polun muuntaminen utf8:sta epäonnistui: '%s'" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Ohjelman suorittaminen epäonnistui '%s': %s"

@@ -202,7 +202,8 @@

#: openbox/openbox.c:405 #, c-format msgid "Restart failed to execute new executable '%s': %s" -msgstr "Uudelleenkäynnistys ei onnistunut käynnistämään uutta ohjelmaa '%s': %s" +msgstr "" +"Uudelleenkäynnistys ei onnistunut käynnistämään uutta ohjelmaa '%s': %s" #: openbox/openbox.c:475 openbox/openbox.c:477 msgid "Copyright (c)"

@@ -289,7 +290,7 @@ msgstr ""

"\n" "Ilmoita virheistä: %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Virheellinen valitsin '%s'\n"

@@ -309,7 +310,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Ikkunointiohjelma ruudulla %d ei sulkeudu" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "työtila %i"

@@ -329,7 +337,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Virhe tallennettaessa istuntoa hakemistoon '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Suoritetaan %s\n"
M po/fr.popo/fr.po

@@ -9,9 +9,9 @@ # ric Lassauge <lassauge@users.sf.net>, 2008

# msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.6\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2008-01-17 22:53+0100\n" "Last-Translator: Cyrille Bagard <nocbos@gmail.com>\n" "Language-Team: franais <fr@li.org>\n"

@@ -29,7 +29,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "chec de la conversion du chemin %s depuis l'UTF-8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "chec de l'excution de %s: %s"

@@ -300,7 +300,7 @@ msgstr ""

"\n" "Veuillez soumettre les rapports de bogues %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Argument de la ligne de commande invalide %s\n"

@@ -323,7 +323,14 @@ msgid "The WM on screen %d is not exiting"

msgstr "" "Le gestionnaire de fentres sur l'cran %d n'est pas en train de se terminer" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "bureau %i"

@@ -343,7 +350,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Erreur lors de la sauvegarde de la session depuis %s: %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Excution de %s\n"
M po/hu.popo/hu.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-12-21 14:33+0100\n" "Last-Translator: Robert Kuszinger <hiding@freemail.hu>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Az útvonalat nem sikerült átalakítani utf8-ból: '%s'" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Nem sikerült futtatni ezt a programot '%s': %s"

@@ -287,7 +287,7 @@ msgstr ""

"\n" "Légyszi jelentsd a hibát itt: %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Érvénytelen parancssori opció: '%s'\n"

@@ -307,7 +307,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Ezen a képernyőn: %d az ablakkezelő nem lép ki" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "%i. munkaasztal"

@@ -327,7 +334,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Hiba a futási környezet mentése közben '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Futtatás %s\n"
M po/it.popo/it.po

@@ -8,7 +8,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-20 15:18+0200\n" "Last-Translator: Davide Truffa <davide@catoblepa.org>\n" "Language-Team: Italian <tp@lists.linux.it>\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Impossibile convertire il percorso utf8 '%s'" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Impossibile eseguire il comando '%s': %s"

@@ -293,7 +293,7 @@ msgstr ""

"\n" "Segnalate eventuali bug a %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Argomento da linea di comando non valido '%s'\n"

@@ -313,7 +313,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Il WM sullo schermo %d non è terminato" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "desktop %i"

@@ -333,7 +340,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Errore durante il salvataggio della sessione in '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Sto eseguendo %s\n"
M po/ja.popo/ja.po

@@ -8,7 +8,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-06-07 14:49+0200\n" "Last-Translator: Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>\n" "Language-Team: Japanese <ja@li.org>\n"

@@ -28,7 +28,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "パス'%s'を utf8 から変換するのに失敗しました。" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "'%s'の実行に失敗しました: %s"

@@ -280,7 +280,7 @@ "\n"

"Please report bugs at %s\n" msgstr "" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "不正なコマンドライン引数 '%s'\n"

@@ -300,7 +300,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "スクリーン%dのWMが終了しません。" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "デスクトップ%i"

@@ -320,7 +327,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "セッションを'%s'に保存中にエラーが起きました: %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "起動中 %s\n"
M po/nl.popo/nl.po

@@ -8,7 +8,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-12 13:01+0200\n" "Last-Translator: Jochem Kossen <jkossen@xs4all.nl>\n" "Language-Team: Dutch <nl@li.org>\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Converteren van het pad '%s' vanuit utf8 mislukt" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Uitvoeren van '%s' mislukt: %s"

@@ -287,7 +287,7 @@ msgstr ""

"\n" "Gelieve bugs te melden bij %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Onbekende optie '%s'\n"

@@ -307,7 +307,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "De window manager op scherm %d sluit zichzelf niet af" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "bureaublad %i"

@@ -327,7 +334,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Fout tijdens het opslaan van de sessie naar '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Starten %s\n"
M po/no.popo/no.po

@@ -2,14 +2,14 @@ # Norwegian messages for openbox

# Copyright (C) 2007 Dana Jansens # This file is distributed under the same license as the openbox package. # -# Michael Kjelbergvik Thung <postlogic@switch-case.org>, 2007. +# Michael Kjelbergvik Thung <postlogic@gmail.com>, 2008. msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.3\n" +"Project-Id-Version: Openbox 3.4.6\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2007-05-20 18:41+0200\n" -"Last-Translator: Michael Kjelbergvik Thung <postlogic@switch-case.org>\n" +"POT-Creation-Date: 2008-01-29 13:43+0100\n" +"PO-Revision-Date: 2008-01-29 13:37+0100\n" +"Last-Translator: Michael Kjelbergvik Thung <postlogic@gmail.com>\n" "Language-Team: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n"

@@ -20,109 +20,109 @@ #, c-format

msgid "Invalid action '%s' requested. No such action exists." msgstr "Ugyldig operasjon '%s' etterspurt. Operasjonen finnes ikke." -#: openbox/actions/execute.c:88 +#: openbox/actions/execute.c:92 #, c-format msgid "Failed to convert the path '%s' from utf8" msgstr "Feil ved konvertering av '%s' fra utf8 " -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:101 openbox/actions/execute.c:120 #, c-format msgid "Failed to execute '%s': %s" msgstr "Kunne ikke kjøre '%s': %s" -#: openbox/client.c:1973 openbox/client.c:2005 +#: openbox/client.c:1979 openbox/client.c:2011 msgid "Killing..." -msgstr "" +msgstr "Dreper..." -#: openbox/client.c:1975 openbox/client.c:2007 +#: openbox/client.c:1981 openbox/client.c:2013 msgid "Not Responding" -msgstr "" +msgstr "Svarer Ikke" -#: openbox/client_list_combined_menu.c:90 openbox/client_list_menu.c:93 +#: openbox/client_list_combined_menu.c:91 openbox/client_list_menu.c:94 msgid "Go there..." msgstr "Gå dit..." -#: openbox/client_list_combined_menu.c:96 +#: openbox/client_list_combined_menu.c:97 msgid "Manage desktops" msgstr "Behandle skrivebord" -#: openbox/client_list_combined_menu.c:97 openbox/client_list_menu.c:156 +#: openbox/client_list_combined_menu.c:98 openbox/client_list_menu.c:157 msgid "_Add new desktop" msgstr "_Nytt skrivebord" -#: openbox/client_list_combined_menu.c:98 openbox/client_list_menu.c:157 +#: openbox/client_list_combined_menu.c:99 openbox/client_list_menu.c:158 msgid "_Remove last desktop" msgstr "_Fjern siste skrivebord" -#: openbox/client_list_combined_menu.c:150 +#: openbox/client_list_combined_menu.c:151 msgid "Windows" msgstr "Vinduer" -#: openbox/client_list_menu.c:203 +#: openbox/client_list_menu.c:204 msgid "Desktops" msgstr "Skrivebord" -#: openbox/client_menu.c:256 +#: openbox/client_menu.c:257 msgid "All desktops" msgstr "Alle skrivebord" -#: openbox/client_menu.c:360 +#: openbox/client_menu.c:361 msgid "_Layer" msgstr "La_g" -#: openbox/client_menu.c:365 +#: openbox/client_menu.c:366 msgid "Always on _top" msgstr "Alltid ø_verst" -#: openbox/client_menu.c:366 +#: openbox/client_menu.c:367 msgid "_Normal" msgstr "Nor_mal" -#: openbox/client_menu.c:367 +#: openbox/client_menu.c:368 msgid "Always on _bottom" msgstr "Alltid _nederst" -#: openbox/client_menu.c:370 +#: openbox/client_menu.c:371 msgid "_Send to desktop" msgstr "_Send til" -#: openbox/client_menu.c:374 +#: openbox/client_menu.c:375 msgid "Client menu" msgstr "Klient-meny" -#: openbox/client_menu.c:384 +#: openbox/client_menu.c:385 msgid "R_estore" msgstr "Tilbak_estill" -#: openbox/client_menu.c:392 +#: openbox/client_menu.c:393 msgid "_Move" msgstr "_Flytt" -#: openbox/client_menu.c:394 +#: openbox/client_menu.c:395 msgid "Resi_ze" msgstr "Endre s_tørrelse" -#: openbox/client_menu.c:396 +#: openbox/client_menu.c:397 msgid "Ico_nify" msgstr "_Minimer" -#: openbox/client_menu.c:404 +#: openbox/client_menu.c:405 msgid "Ma_ximize" msgstr "Ma_ximer" -#: openbox/client_menu.c:412 +#: openbox/client_menu.c:413 msgid "_Roll up/down" msgstr "_Rull opp/ned" -#: openbox/client_menu.c:414 +#: openbox/client_menu.c:415 msgid "Un/_Decorate" msgstr "Fjern/Legg til _dekorasjon" -#: openbox/client_menu.c:418 +#: openbox/client_menu.c:419 msgid "_Close" msgstr "_Lukk" -#: openbox/config.c:746 +#: openbox/config.c:750 #, c-format msgid "Invalid button '%s' specified in config file" msgstr "Ugyldig tast '%s' spesifisert i konfigurasjonsfilen"

@@ -165,49 +165,49 @@ #, c-format

msgid "Invalid context '%s' in mouse binding" msgstr "Ugyldig innhold '%s' i binding for mus" -#: openbox/openbox.c:130 +#: openbox/openbox.c:131 #, c-format msgid "Unable to change to home directory '%s': %s" msgstr "Kan ikke endre til hjemmekatalogen '%s': %s" -#: openbox/openbox.c:150 +#: openbox/openbox.c:151 msgid "Failed to open the display from the DISPLAY environment variable." msgstr "Kunne ikke åpne displayet fra DISPLAY-miljøvariabelen" -#: openbox/openbox.c:181 +#: openbox/openbox.c:182 msgid "Failed to initialize the obrender library." msgstr "Kunne ikke starte obrender-biblioteket." -#: openbox/openbox.c:187 +#: openbox/openbox.c:188 msgid "X server does not support locale." msgstr "X-serveren støtter ikke lokalisering." -#: openbox/openbox.c:189 +#: openbox/openbox.c:190 msgid "Cannot set locale modifiers for the X server." msgstr "Kan ikke stille inn lokaliseringsmodifikatorene for X-serveren." -#: openbox/openbox.c:252 +#: openbox/openbox.c:253 msgid "Unable to find a valid config file, using some simple defaults" msgstr "Kunne ikke finne en gyldig konfigurasjonsfil, bruker standardverdier" -#: openbox/openbox.c:278 +#: openbox/openbox.c:279 msgid "Unable to load a theme." msgstr "Kan ikke laste et tema." -#: openbox/openbox.c:405 +#: openbox/openbox.c:406 #, c-format msgid "Restart failed to execute new executable '%s': %s" msgstr "Restart kunne ikke starte nytt program '%s': %s" -#: openbox/openbox.c:475 openbox/openbox.c:477 +#: openbox/openbox.c:476 openbox/openbox.c:478 msgid "Copyright (c)" -msgstr "" +msgstr "Copyright (c)" -#: openbox/openbox.c:486 +#: openbox/openbox.c:487 msgid "Syntax: openbox [options]\n" msgstr "Syntax: openbox [alternativer\n" -#: openbox/openbox.c:487 +#: openbox/openbox.c:488 msgid "" "\n" "Options:\n"

@@ -215,23 +215,23 @@ msgstr ""

"\n" "Alternativ:\n" -#: openbox/openbox.c:488 +#: openbox/openbox.c:489 msgid " --help Display this help and exit\n" msgstr " --help Vise denne hjelpeteksten og avslutt\n" -#: openbox/openbox.c:489 +#: openbox/openbox.c:490 msgid " --version Display the version and exit\n" msgstr " --version Vis versjonsnummeret og avslutt\n" -#: openbox/openbox.c:490 +#: openbox/openbox.c:491 msgid " --replace Replace the currently running window manager\n" msgstr " --replace Erstatt den kjørende vindusbehandleren\n" -#: openbox/openbox.c:491 +#: openbox/openbox.c:492 msgid " --sm-disable Disable connection to the session manager\n" msgstr " --sm-disable Deaktiver tilkobling til sesjonsbehandleren\n" -#: openbox/openbox.c:492 +#: openbox/openbox.c:493 msgid "" "\n" "Passing messages to a running Openbox instance:\n"

@@ -239,19 +239,19 @@ msgstr ""

"\n" "Sender beskjeder til en kjørende Openbox-instans:\n" -#: openbox/openbox.c:493 +#: openbox/openbox.c:494 msgid " --reconfigure Reload Openbox's configuration\n" msgstr " --reconfigure Oppdater Openbox' konfigurasjon\n" -#: openbox/openbox.c:494 +#: openbox/openbox.c:495 msgid " --restart Restart Openbox\n" msgstr " --restart Start Openbox på nytt\n" -#: openbox/openbox.c:495 +#: openbox/openbox.c:496 msgid " --exit Exit Openbox\n" -msgstr "" +msgstr " --exit Avslutt Openbox\n" -#: openbox/openbox.c:496 +#: openbox/openbox.c:497 msgid "" "\n" "Debugging options:\n"

@@ -259,23 +259,23 @@ msgstr ""

"\n" "Debug-alternativ:\n" -#: openbox/openbox.c:497 +#: openbox/openbox.c:498 msgid " --sync Run in synchronous mode\n" msgstr " --sync Kjør i synkron-modus\n" -#: openbox/openbox.c:498 +#: openbox/openbox.c:499 msgid " --debug Display debugging output\n" msgstr " --debug Vis debuggingsinformasjon\n" -#: openbox/openbox.c:499 +#: openbox/openbox.c:500 msgid " --debug-focus Display debugging output for focus handling\n" msgstr " --debug-focus Vis debuggingsinformasjon for fokus-håndtering\n" -#: openbox/openbox.c:500 +#: openbox/openbox.c:501 msgid " --debug-xinerama Split the display into fake xinerama screens\n" msgstr " -debug-xinerama Splitt displayet for falske xinerama-skjermer\n" -#: openbox/openbox.c:501 +#: openbox/openbox.c:502 #, c-format msgid "" "\n"

@@ -284,7 +284,7 @@ msgstr ""

"\n" "Vennligst rapporter bugs til %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:603 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Ugyldig kommandolinje-argument '%s'\n"

@@ -304,7 +304,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Vindusbehandleren på skjerm %d vil ikke avslutte" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "Openbox er innstillt til %d skrivebord, men nåværende sesjon har %d. Benytter sesjonens innstilling." + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "skrivebord %i"

@@ -324,7 +331,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Feil ved lagring av sesjon til '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:243 #, c-format msgid "Running %s\n" msgstr "Kjører %s\n"
M po/openbox.potpo/openbox.pot

@@ -8,7 +8,7 @@ msgid ""

msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr ""

@@ -277,7 +277,7 @@ "\n"

"Please report bugs at %s\n" msgstr "" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr ""

@@ -297,7 +297,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr ""

@@ -317,7 +324,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr ""
M po/pl.popo/pl.po

@@ -9,7 +9,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-14 00:43+0200\n" "Last-Translator: Piotr Drąg <raven@pmail.pl>\n" "Language-Team: Polish <pl@li.org>\n"

@@ -27,7 +27,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Nie można przekonwertować ścieżki '%s' z UTF-8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Wykonanie '%s' nie powiodło się: %s"

@@ -291,7 +291,7 @@ msgstr ""

"\n" "Proszę zgłaszać błędy (w języku angielskim) pod adresem %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Nieprawidłowy argument wiersza poleceń '%s'\n"

@@ -311,7 +311,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Menedżer okien na ekranie %d nie kończy działania" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "pulpit %i"

@@ -331,7 +338,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Wystąpił błąd podczas zapisywania sesji do '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Uruchamianie %s\n"
M po/pt.popo/pt.po

@@ -2,14 +2,14 @@ # Portuguese messages for openbox

# Copyright (C) 2007 Mikael Magnusson # This file is distributed under the same license as the openbox package. # Gonalo Ferreira <gonsas@gmail.com>, 2006. -# Althaser <Althaser@gmail.com>, 2007. +# Althaser <Althaser@gmail.com>, 2008. # msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.3\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2007-07-21 18:03+0200\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" +"PO-Revision-Date: 2008-01-22 22:17+0100\n" "Last-Translator: Althaser <Althaser@gmail.com>\n" "Language-Team: None\n" "MIME-Version: 1.0\n"

@@ -26,18 +26,18 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Falha a converter o caminho '%s' do utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Falha a executar '%s': %s" #: openbox/client.c:1973 openbox/client.c:2005 msgid "Killing..." -msgstr "" +msgstr "Terminando..." #: openbox/client.c:1975 openbox/client.c:2007 msgid "Not Responding" -msgstr "" +msgstr "No est a responder" #: openbox/client_list_combined_menu.c:90 openbox/client_list_menu.c:93 msgid "Go there..."

@@ -113,7 +113,7 @@ msgstr "Ma_ximizar"

#: openbox/client_menu.c:412 msgid "_Roll up/down" -msgstr "En/Desen_rolar" +msgstr "Des/en_rolar" #: openbox/client_menu.c:414 msgid "Un/_Decorate"

@@ -252,7 +252,7 @@ msgstr " --restart Reinicia o Openbox\n"

#: openbox/openbox.c:495 msgid " --exit Exit Openbox\n" -msgstr "" +msgstr " --saida Sai do Openbox\n" #: openbox/openbox.c:496 msgid ""

@@ -289,7 +289,7 @@ msgstr ""

"\n" "Por favor reporte erros em %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Argumento invlido na linha de comandos '%s'\n"

@@ -307,9 +307,16 @@

#: openbox/screen.c:145 #, c-format msgid "The WM on screen %d is not exiting" -msgstr "O gestor de janelas no ecr %d no est fechando" +msgstr "O gestor de janelas no ecr %d no est a fechar" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "rea de trabalho %i"

@@ -329,7 +336,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Erro enquanto guardava a sesso em '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Executando %s\n"
M po/pt_BR.popo/pt_BR.po

@@ -2,15 +2,15 @@ # Portuguese Brazil (pt_BR) messages for openbox

# Copyright (C) 2007 Mikael Magnusson # This file is distributed under the same license as the openbox package. # crimeboy, 2007. -# Og Maciel <ogmaciel@ubuntu.com>, 2007. +# Og Maciel <ogmaciel@gnome.org>, 2007, 2008. # msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.3\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2007-07-20 16:43+0200\n" -"Last-Translator: Og Maciel <ogmaciel@ubuntu.com>\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" +"PO-Revision-Date: 2008-01-22 21:42+0100\n" +"Last-Translator: Og Maciel <ogmaciel@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-l10n-br@listas.cipsga.org.br>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n"

@@ -27,18 +27,18 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Falha ao converter o caminho '%s' do utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Falha ao executar '%s': %s" #: openbox/client.c:1973 openbox/client.c:2005 msgid "Killing..." -msgstr "" +msgstr "Terminando..." #: openbox/client.c:1975 openbox/client.c:2007 msgid "Not Responding" -msgstr "" +msgstr "Não Responsivo" #: openbox/client_list_combined_menu.c:90 openbox/client_list_menu.c:93 msgid "Go there..."

@@ -255,7 +255,7 @@ msgstr " --restart Reinicia o Openbox\n"

#: openbox/openbox.c:495 msgid " --exit Exit Openbox\n" -msgstr "" +msgstr " --exit Sai do Openbox\n" #: openbox/openbox.c:496 msgid ""

@@ -293,7 +293,7 @@ msgstr ""

"\n" "Por favor reporte erros em %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Argumento de linha de comando inválido '%s'\n"

@@ -314,7 +314,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "O gerenciador de janelas na tela %d não está saindo" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "área de trabalho %i"

@@ -334,7 +341,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Erro enquanto salvando a sessão em '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Executando %s\n"
M po/ru.popo/ru.po

@@ -6,10 +6,10 @@ # Nikita Bukhvostov <dragon.djanic@gmail.com>, 2007.

# msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.3\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2007-08-17 22:36+0200\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" +"PO-Revision-Date: 2008-01-22 07:56+0100\n" "Last-Translator: Nikita Bukhvostov <dragon.djanic@gmail.com>\n" "Language-Team: Russian <ru@li.org>\n" "MIME-Version: 1.0\n"

@@ -19,25 +19,25 @@

#: openbox/actions.c:149 #, c-format msgid "Invalid action '%s' requested. No such action exists." -msgstr "" +msgstr "Запрошенное действие '%s' не найдено." #: openbox/actions/execute.c:88 #, c-format msgid "Failed to convert the path '%s' from utf8" msgstr "Не удалось сконвертировать путь '%s' из utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Не удалось запустить '%s': %s" #: openbox/client.c:1973 openbox/client.c:2005 msgid "Killing..." -msgstr "" +msgstr "Завершение..." #: openbox/client.c:1975 openbox/client.c:2007 msgid "Not Responding" -msgstr "" +msgstr "Не отвечает" #: openbox/client_list_combined_menu.c:90 openbox/client_list_menu.c:93 msgid "Go there..."

@@ -252,7 +252,7 @@ msgstr " --restart Перезапустить Openbox\n"

#: openbox/openbox.c:495 msgid " --exit Exit Openbox\n" -msgstr "" +msgstr " --exit Выход из Openbox\n" #: openbox/openbox.c:496 msgid ""

@@ -289,7 +289,7 @@ msgstr ""

"\n" "Пожалуйста, сообщайте об ошибках на %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Некорректный командный параметр '%s'\n"

@@ -309,7 +309,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Менеджер окон на экране %d не завершается" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "рабочий стол %i"

@@ -329,7 +336,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Ошибка при сохранении сессии в '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Запущен %s\n"
M po/sk.popo/sk.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox-3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-12-7 13:43Central Europe Daylight Time\n" "Last-Translator: Jozef Riha <jose1711@gmail.com\n" "Language-Team: Slovak <sk@sk.org>\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Nepodarilo sa skonvertovať cestu '%s' z utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Nepodarilo sa spustiť '%s': %s"

@@ -251,9 +251,8 @@ msgid " --restart Restart Openbox\n"

msgstr " --restart Restartuje Openbox\n" #: openbox/openbox.c:495 -#, fuzzy msgid " --exit Exit Openbox\n" -msgstr " --restart Restartuje Openbox\n" +msgstr "" #: openbox/openbox.c:496 msgid ""

@@ -289,7 +288,7 @@ msgstr ""

"\n" "Prosim hlaste chyby na %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Neplatny parameter prikazoveho riadku '%s'\n"

@@ -309,7 +308,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Okenný manažér na obrazovke %d sa neukončuje" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "plocha %i"

@@ -329,7 +335,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Chyba pri ukladaní sedenia do '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Spúšťam %s\n"
M po/sv.popo/sv.po

@@ -7,8 +7,8 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.6\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" -"PO-Revision-Date: 2008-01-17 22:19+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" +"PO-Revision-Date: 2008-01-25 03:52+0100\n" "Last-Translator: Mikael Magnusson <mikachu@icculus.org>\n" "Language-Team: None\n" "MIME-Version: 1.0\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Lyckades inte konvertera skvgen '%s' frn utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Kunde inte exekvera '%s': %s"

@@ -285,7 +285,7 @@ msgstr ""

"\n" "Rapportera buggar till %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Ogiltigt kommandoradsargument '%s'\n"

@@ -305,7 +305,16 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Fnsterhanteraren p skrm %d avslutar inte" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" +"Openbox r instllt p %d skrivbord, men nuvarande session har %d. Anvnder " +"sessionens instllning." + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "skrivbord %i"

@@ -325,7 +334,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Fel intrffade nr sessionen skulle sparas till '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Kr %s\n"
M po/ua.popo/ua.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.2\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-06-16 13:02+0200\n" "Last-Translator: Dmitriy Moroz <zux@dimaka.org.ua>\n" "Language-Team: Ukrainian <root@archlinux.org.ua>\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Не вдалося сконвертувати шлях '%s' з utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Невдалося виконати '%s': %s"

@@ -288,7 +288,7 @@ msgstr ""

"\n" "Будь-ласка, повідомляйте про помилки на %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Некоректний командний аргумент '%s'\n"

@@ -308,7 +308,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Менеджео вікон на дисплеї %d не завершується" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "стільниця %i"

@@ -328,7 +335,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Помилка при збереженні сесії в '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Виконується %s\n"
M po/vi.popo/vi.po

@@ -5,9 +5,9 @@ # Quan Tran <qeed.quan@gmail.com>, 2007.

# msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.6\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2008-01-17 23:08+0100\n" "Last-Translator: Quan Tran <qeed.quan@gmail.com>\n" "Language-Team: None\n"

@@ -25,7 +25,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "Không thể chuyển chỗ '%s' từ utf8" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "Làm không được '%s': %s"

@@ -286,7 +286,7 @@ msgstr ""

"\n" "Làm ơn báo cáo bugs ở chỗ %s\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "Mệnh lệnh viết sai '%s'\n"

@@ -306,7 +306,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "Chương trình quản lý cửa sổ trên màn hình %d không đi ra" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "chỗ làm việc %i"

@@ -326,7 +333,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "Bĩ trục chật lúc tiết kiệm thời kỳ cho '%s': %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "Đan Chạy %s\n"
M po/zh_CN.popo/zh_CN.po

@@ -6,9 +6,9 @@ # Xiaoyu PENG <peng.xiaoyu@gmail.com>, 2007.

# Shaodong Di <gnuyhlfh@gmail.com>, 2008. msgid "" msgstr "" -"Project-Id-Version: Openbox 3.4.6\n" +"Project-Id-Version: Openbox 3.4.5\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2008-01-18 15:02+0100\n" "Last-Translator: Shaodong Di <gnuyhlfh@gmail.com>\n" "Language-Team: 简体中文\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "从 utf8 转换路径 '%s' 时失败" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "执行 '%s' 时失败: %s"

@@ -285,7 +285,7 @@ msgstr ""

"\n" "请向 %s 报告错误\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "无效的命令行参数 '%s'\n"

@@ -305,7 +305,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "屏幕 %d 的窗口管理器没有退出" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "桌面 %i"

@@ -325,7 +332,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "在保存会话到 '%s' 时出错: %s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "运行 %s\n"
M po/zh_TW.popo/zh_TW.po

@@ -7,7 +7,7 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.3\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-01-17 22:13+0100\n" +"POT-Creation-Date: 2008-01-25 03:51+0100\n" "PO-Revision-Date: 2007-07-23 23:22+0200\n" "Last-Translator: Wei-Lun Chao <chaoweilun@gmail.com>\n" "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"

@@ -26,7 +26,7 @@ #, c-format

msgid "Failed to convert the path '%s' from utf8" msgstr "轉換路徑「%s」自 utf8 時失敗" -#: openbox/actions/execute.c:97 openbox/actions/execute.c:115 +#: openbox/actions/execute.c:97 openbox/actions/execute.c:116 #, c-format msgid "Failed to execute '%s': %s" msgstr "執行「%s」時失敗:%s"

@@ -285,7 +285,7 @@ msgstr ""

"\n" "請向 %s 報告錯誤\n" -#: openbox/openbox.c:604 +#: openbox/openbox.c:602 #, c-format msgid "Invalid command line argument '%s'\n" msgstr "無效的命令列引數「%s」\n"

@@ -305,7 +305,14 @@ #, c-format

msgid "The WM on screen %d is not exiting" msgstr "螢幕 %d 中的視窗管理員並未離開" -#: openbox/screen.c:1162 +#: openbox/screen.c:407 +#, c-format +msgid "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr "" + +#: openbox/screen.c:1168 #, c-format msgid "desktop %i" msgstr "桌面 %i"

@@ -325,7 +332,7 @@ #, c-format

msgid "Error while saving the session to '%s': %s" msgstr "當儲存執行階段「%s」時發生錯誤:%s" -#: openbox/startupnotify.c:237 +#: openbox/startupnotify.c:241 #, c-format msgid "Running %s\n" msgstr "正在運行 %s\n"
M render/gradient.crender/gradient.c

@@ -2,7 +2,7 @@ /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-

gradient.c for the Openbox window manager Copyright (c) 2006 Mikael Magnusson - Copyright (c) 2003-2007 Dana Jansens + Copyright (c) 2003-2008 Dana Jansens Copyright (c) 2003 Derek Foreman This program is free software; you can redistribute it and/or modify

@@ -22,6 +22,7 @@ #include "render.h"

#include "gradient.h" #include "color.h" #include <glib.h> +#include <string.h> static void highlight(RrSurface *s, RrPixel32 *x, RrPixel32 *y, gboolean raised);

@@ -483,64 +484,60 @@ static void gradient_horizontal(RrSurface *sf, gint w, gint h)

{ gint x, y; RrPixel32 *data = sf->pixel_data, *datav; - RrPixel32 current; VARS(x); SETUP(x, sf->primary, sf->secondary, w); - for (x = w - 1; x > 0; --x) { /* 0 -> w-1 */ - current = COLOR(x); - datav = data; - for (y = h - 1; y >= 0; --y) { /* 0 -> h */ - *datav = current; - datav += w; - } - ++data; + datav = data; + for (x = w - 1; x > 0; --x) { /* 0 -> w - 1 */ + *datav = COLOR(x); + ++datav; + NEXT(x); + } + *datav = COLOR(x); + ++datav; - NEXT(x); + for (y = h - 1; y > 0; --y) { /* 1 -> h */ + memcpy(datav, data, w * sizeof(RrPixel32)); + datav += w; } - current = COLOR(x); - for (y = h - 1; y >= 0; --y) /* 0 -> h */ - *(data + y * w) = current; } static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h) { - gint x, y; + gint x, y, half1, half2; RrPixel32 *data = sf->pixel_data, *datav; - RrPixel32 current; VARS(x); - SETUP(x, sf->primary, sf->secondary, w/2); - if (w > 1) { - for (x = w - 1; x > w/2-1; --x) { /* 0 -> w-1 */ - current = COLOR(x); - datav = data; - for (y = h - 1; y >= 0; --y) { /* 0 -> h */ - *datav = current; - datav += w; - } - ++data; + half1 = (w + 1) / 2; + half2 = w / 2; + SETUP(x, sf->primary, sf->secondary, half1); + datav = data; + for (x = half1 - 1; x > 0; --x) { /* 0 -> half1 - 1 */ + *datav = COLOR(x); + ++datav; + NEXT(x); + } + *datav = COLOR(x); + ++datav; + + if (half2 > 0) { + SETUP(x, sf->secondary, sf->primary, half2); + for (x = half2 - 1; x > 0; --x) { /* 0 -> half2 - 1 */ + *datav = COLOR(x); + ++datav; NEXT(x); } - SETUP(x, sf->secondary, sf->primary, w/2); - for (x = w/2 - 1; x > 0; --x) { /* 0 -> w-1 */ - current = COLOR(x); - datav = data; - for (y = h - 1; y >= 0; --y) { /* 0 -> h */ - *datav = current; - datav += w; - } - ++data; + *datav = COLOR(x); + ++datav; + } - NEXT(x); - } + for (y = h - 1; y > 0; --y) { /* 1 -> h */ + memcpy(datav, data, w * sizeof(RrPixel32)); + datav += w; } - current = COLOR(x); - for (y = h - 1; y >= 0; --y) /* 0 -> h */ - *(data + y * w) = current; } static void gradient_vertical(RrSurface *sf, gint w, gint h)
M render/theme.crender/theme.c

@@ -1455,6 +1455,7 @@ RrFontClose(theme->win_font_focused);

RrFontClose(theme->win_font_unfocused); RrFontClose(theme->menu_title_font); RrFontClose(theme->menu_font); + RrFontClose(theme->osd_font); RrAppearanceFree(theme->a_disabled_focused_max); RrAppearanceFree(theme->a_disabled_unfocused_max);
A themes/Clearlooks-3.4/openbox-3/themerc

@@ -0,0 +1,126 @@

+# Name: Clearlooks +# Author: John McKnight <jmcknight@gmail.com> +# Note: This is a port of the Clearlooks metacity theme to Openbox. + +### Menu +#menu.border.color: #b5aa99 + +menu.title.bg: Flat Border Gradient Vertical +menu.title.bg.color: #589bda +menu.title.bg.colorTo: #3c7cb7 +menu.title.bg.border.color: #7cb6ec +menu.title.text.color: #ffffff +menu.title.text.justify: Center + +menu.items.bg: Flat Solid +menu.items.bg.color: #fcfbfa +menu.items.text.color: #000000 +menu.items.disable.text.color: #b5b3ac + +menu.items.active.bg: Flat Gradient Vertical +menu.items.active.bg.color: #5c9edb +menu.items.active.bg.colorTo: #4489ca +menu.items.active.text.color: #ffffff + + +### Window active +window.active.title.bg: Flat Border Gradient Vertical +window.active.title.bg.color: #589bda +window.active.title.bg.colorTo: #3c7cb7 +window.active.title.bg.border.color: #7cb6ec +window.active.title.separator.color: #334c62 + +window.active.label.bg: Parentrelative +window.active.label.text.color: #ffffff + +window.active.handle.bg: Flat Border Solid +window.active.handle.bg.color: #3c7cb7 +window.active.handle.bg.border.color: #7cb6ec + +window.active.grip.bg: Flat Border Solid +window.active.grip.bg.color: #3c7cb7 +window.active.grip.bg.border.color: #7cb6ec + +window.active.button.unpressed.bg: Flat Border Gradient Vertical +window.active.button.unpressed.bg.color: #5ea0dd +window.active.button.unpressed.bg.colorTo: #3f85c5 +window.active.button.unpressed.bg.border.color: #36536f +window.active.button.unpressed.image.color: #ffffff + +window.active.button.pressed.bg: Flat Border Gradient Vertical +window.active.button.pressed.bg.color: #3c82c3 +window.active.button.pressed.bg.colorTo: #3c7ab5 +window.active.button.pressed.bg.border.color: #36536f +window.active.button.pressed.image.color: #ffffff + +window.active.button.disabled.bg: Flat Border Gradient Vertical +window.active.button.disabled.bg.color: #3c82c3 +window.active.button.disabled.bg.colorTo: #3c7ab5 +window.active.button.disabled.bg.border.color: #36536f +window.active.button.disabled.image.color: #36536f + +window.active.button.toggled.bg: Flat Border Gradient Vertical +window.active.button.toggled.bg.color: #5ea0dd +window.active.button.toggled.bg.colorTo: #3f85c5 +window.active.button.toggled.bg.border.color: #36536f +window.active.button.toggled.image.color: #dcd4c9 + + +### Window inactive +window.inactive.border.color: #3d3a37 + +window.inactive.title.bg: Flat Border Gradient Vertical +window.inactive.title.bg.color: #efece6 +window.inactive.title.bg.colorTo: #d9d2c7 +window.inactive.title.bg.border.color: #ffffff +window.inactive.title.separator.color: #9a8e7c + +window.inactive.label.bg: Parentrelative +window.inactive.label.text.color: #000000 + +window.inactive.handle.bg: Flat Border Solid +window.inactive.handle.bg.color: #d9d2c7 +window.inactive.handle.bg.border.color: #ffffff + +window.inactive.grip.bg: Flat Border Solid +window.inactive.grip.bg.color: #d9d2c7 +window.inactive.grip.bg.border.color: #ffffff + +window.inactive.button.unpressed.bg: Flat Border Gradient Vertical +window.inactive.button.unpressed.bg.color: #ede9e3 +window.inactive.button.unpressed.bg.colorTo: #dbd5ca +window.inactive.button.unpressed.bg.border.color: #8f8370 +window.inactive.button.unpressed.image.color: #000000 + +window.inactive.button.pressed.bg: Flat Border Gradient Vertical +window.inactive.button.pressed.bg.color: #ede9e3 +window.inactive.button.pressed.bg.colorTo: #dbd5ca +window.inactive.button.pressed.bg.border.color: #8f8370 +window.inactive.button.pressed.image.color: #000000 + +window.inactive.button.disabled.bg: Flat Border Gradient Vertical +window.inactive.button.disabled.bg.color: #ede9e3 +window.inactive.button.disabled.bg.colorTo: #dbd5ca +window.inactive.button.disabled.bg.border.color: #8f8370 +window.inactive.button.disabled.image.color: #000000 + +window.inactive.button.toggled.bg: Flat Border Gradient Vertical +window.inactive.button.toggled.bg.color: #ede9e3 +window.inactive.button.toggled.bg.colorTo: #dbd5ca +window.inactive.button.toggled.bg.border.color: #8f8370 +window.inactive.button.toggled.image.color: #000000 + + +### Everything else +border.width: 1 +padding.width: 2 +window.handle.width: 4 +window.client.padding.width: 0 +border.color: #1f252b +menu.overlap: 0 + +### Fonts +window.active.label.text.font: +window.inactive.label.text.font: +menu.items.font: +menu.title.text.font:
M themes/Clearlooks/openbox-3/themercthemes/Clearlooks/openbox-3/themerc

@@ -1,126 +1,159 @@

-# Name: Clearlooks -# Author: John McKnight <jmcknight@gmail.com> -# Note: This is a port of the Clearlooks metacity theme to Openbox. +! Clearlooks Evolving +! Clearlooks as it evolves in gnome-svn... -### Menu -#menu.border.color: #b5aa99 +# Fonts +# these are really halos, but who cares? -menu.title.bg: Flat Border Gradient Vertical -menu.title.bg.color: #589bda -menu.title.bg.colorTo: #3c7cb7 -menu.title.bg.border.color: #7cb6ec +window.active.label.text.font:shadow=y:shadowtint=45:shadowoffset=1 +window.inactive.label.text.font:shadow=y:shadowtint=00:shadowoffset=0 +menu.title.text.font:shadow=y:shadowtint=20:shadowoffset=1 +menu.items.font:shadow=y:shadowtint=0:shadowoffset=2 +# lettuce set some stuff + +border.width: 1 +padding.width: 3 +padding.height: 2 +window.handle.width: 3 +window.client.padding.width: 0 +menu.overlap: 0 +*.justify: center +*.bg.highlight: 50 +*.bg.shadow: 01 + +# Menu settings + +menu.border.color: #aaaaaa +menu.border.width: 1 + +*.title.bg: Raised Gradient splitvertical +*.title.bg.color: #8fb2de +*.title.bg.color.splitTo: #9ebde5 +*.title.bg.colorTo: #86abd9 +*.title.bg.colorTo.splitTo: #749dcf + menu.title.text.color: #ffffff -menu.title.text.justify: Center menu.items.bg: Flat Solid -menu.items.bg.color: #fcfbfa -menu.items.text.color: #000000 -menu.items.disable.text.color: #b5b3ac +menu.items.bg.color: #ffffff +menu.items.text.color: #444444 +menu.items.disabled.text.color: #aaaaaa -menu.items.active.bg: Flat Gradient Vertical -menu.items.active.bg.color: #5c9edb -menu.items.active.bg.colorTo: #4489ca +menu.items.active.bg: Flat Gradient splitvertical border + +menu.items.active.bg.color: #97b8e2 +menu.items.active.bg.color.splitTo: #a8c5e9 + +menu.items.active.bg.colorTo: #91b3de +menu.items.active.bg.colorTo.splitTo: #80a7d6 +menu.items.active.bg.border.color: #4b6e99 menu.items.active.text.color: #ffffff +# start with the active +!# no handles +#window.active.border.color: #455d7c +!# handles +window.active.border.color: #686a6d +window.active.title.separator.color: #4e76a8 +!!! -### Window active -window.active.title.bg: Flat Border Gradient Vertical -window.active.title.bg.color: #589bda -window.active.title.bg.colorTo: #3c7cb7 -window.active.title.bg.border.color: #7cb6ec -window.active.title.separator.color: #334c62 +#window.active.title.bg: Raised Gradient splitvertical +#window.active.title.bg.color: #8db0dd +#window.active.title.bg.color.splitTo: #9ebde5 +#window.active.title.bg.colorTo: #86abd9 +#window.active.title.bg.colorTo.splitTo: #749dcf + + +window.active.title.bg: Raised Gradient splitvertical +window.active.title.bg.color: #8fb2de +window.active.title.bg.color.splitTo: #9ebde5 +window.active.title.bg.colorTo: #86abd9 +window.active.title.bg.colorTo.splitTo: #749dcf + + +window.active.title.bg.highlight: 35 +window.active.title.bg.shadow: 00 window.active.label.bg: Parentrelative window.active.label.text.color: #ffffff -window.active.handle.bg: Flat Border Solid -window.active.handle.bg.color: #3c7cb7 -window.active.handle.bg.border.color: #7cb6ec -window.active.grip.bg: Flat Border Solid -window.active.grip.bg.color: #3c7cb7 -window.active.grip.bg.border.color: #7cb6ec +window.active.button.*.bg: Flat Gradient splitvertical Border -window.active.button.unpressed.bg: Flat Border Gradient Vertical -window.active.button.unpressed.bg.color: #5ea0dd -window.active.button.unpressed.bg.colorTo: #3f85c5 -window.active.button.unpressed.bg.border.color: #36536f -window.active.button.unpressed.image.color: #ffffff +#window.active.button.*.bg.color: #94B5E0 +window.active.button.*.bg.color: #97b8e1 +window.active.button.*.bg.color.splitTo: #B7D0EF +window.active.button.*.bg.colorTo: #86ABD9 +window.active.button.*.bg.colorTo.splitTo: #7099CC +#window.active.button.*.bg.border.color: #4F77A9 +!#this is the real colour, but hey... +window.active.button.*.bg.border.color: #49678B +window.active.button.*.image.color: #F4F5F6 -window.active.button.pressed.bg: Flat Border Gradient Vertical -window.active.button.pressed.bg.color: #3c82c3 -window.active.button.pressed.bg.colorTo: #3c7ab5 -window.active.button.pressed.bg.border.color: #36536f -window.active.button.pressed.image.color: #ffffff +window.active.button.hover.bg.color: #b5d3ef +window.active.button.hover.bg.color.splitTo: #b5d3ef +window.active.button.hover.bg.colorTo: #9cbae7 +window.active.button.hover.bg.colorTo.splitTo: #8caede +window.active.button.hover.bg.border.color: #4A658C +window.active.button.hover.image.color: #ffffff -window.active.button.disabled.bg: Flat Border Gradient Vertical -window.active.button.disabled.bg.color: #3c82c3 -window.active.button.disabled.bg.colorTo: #3c7ab5 -window.active.button.disabled.bg.border.color: #36536f -window.active.button.disabled.image.color: #36536f +window.active.button.pressed.bg: Flat solid Border +window.active.button.pressed.bg.color: #7aa1d2 -window.active.button.toggled.bg: Flat Border Gradient Vertical -window.active.button.toggled.bg.color: #5ea0dd -window.active.button.toggled.bg.colorTo: #3f85c5 -window.active.button.toggled.bg.border.color: #36536f -window.active.button.toggled.image.color: #dcd4c9 +window.active.button.hover.bg.border.color: #4A658C +# inactive -### Window inactive -window.inactive.border.color: #3d3a37 +window.inactive.border.color: #7e8285 +window.inactive.title.separator.color: #96999d -window.inactive.title.bg: Flat Border Gradient Vertical -window.inactive.title.bg.color: #efece6 -window.inactive.title.bg.colorTo: #d9d2c7 -window.inactive.title.bg.border.color: #ffffff -window.inactive.title.separator.color: #9a8e7c +window.inactive.title.bg: Raised Gradient splitvertical +window.inactive.title.bg.color: #e0e2e3 +window.inactive.title.bg.color.splitTo: #e9eaeb +window.inactive.title.bg.colorTo: #dadcde +window.inactive.title.bg.colorTo.splitTo: #d0d2d4 +window.inactive.title.bg.highlight: 30 +window.inactive.title.bg.shadow: 00 window.inactive.label.bg: Parentrelative -window.inactive.label.text.color: #000000 +window.inactive.label.text.color: #70747d -window.inactive.handle.bg: Flat Border Solid -window.inactive.handle.bg.color: #d9d2c7 -window.inactive.handle.bg.border.color: #ffffff +window.*.handle.bg: Raised solid +window.*.handle.bg.color: #eaebec -window.inactive.grip.bg: Flat Border Solid -window.inactive.grip.bg.color: #d9d2c7 -window.inactive.grip.bg.border.color: #ffffff +window.*.grip.bg: Raised solid +window.*.grip.bg.color: #eaebec -window.inactive.button.unpressed.bg: Flat Border Gradient Vertical -window.inactive.button.unpressed.bg.color: #ede9e3 -window.inactive.button.unpressed.bg.colorTo: #dbd5ca -window.inactive.button.unpressed.bg.border.color: #8f8370 -window.inactive.button.unpressed.image.color: #000000 +window.inactive.button.*.bg: Flat Gradient splitVertical Border +window.inactive.button.*.bg.color: #ffffff +window.inactive.button.*.bg.color.splitto: #f8f8f9 +window.inactive.button.*.bg.colorTo: #f4f4f5 +window.inactive.button.*.bg.colorTo.splitto: #dfe1e2 +window.inactive.button.*.bg.border.color: #8a8e91 +window.inactive.button.*.image.color: #757676 -window.inactive.button.pressed.bg: Flat Border Gradient Vertical -window.inactive.button.pressed.bg.color: #ede9e3 -window.inactive.button.pressed.bg.colorTo: #dbd5ca -window.inactive.button.pressed.bg.border.color: #8f8370 -window.inactive.button.pressed.image.color: #000000 -window.inactive.button.disabled.bg: Flat Border Gradient Vertical -window.inactive.button.disabled.bg.color: #ede9e3 -window.inactive.button.disabled.bg.colorTo: #dbd5ca -window.inactive.button.disabled.bg.border.color: #8f8370 -window.inactive.button.disabled.image.color: #000000 +!#osd -window.inactive.button.toggled.bg: Flat Border Gradient Vertical -window.inactive.button.toggled.bg.color: #ede9e3 -window.inactive.button.toggled.bg.colorTo: #dbd5ca -window.inactive.button.toggled.bg.border.color: #8f8370 -window.inactive.button.toggled.image.color: #000000 +osd.border.width: 1 +osd.border.color: #5c5e5c + +osd.bg: flat border gradient splitvertical +osd.bg.color: #EEEFF0 +osd.bg.color.splitto: #EEEFF0 +osd.bg.colorTo: #EAEBEC +osd.bg.colorTo.splitto: #EAEBEC +osd.bg.border.color: #ffffff -### Everything else -border.width: 1 -padding.width: 2 -window.handle.width: 4 -window.client.padding.width: 0 -border.color: #1f252b -menu.overlap: 0 +osd.label.bg: parentrelative +osd.label.bg.color: #efefef +osd.label.bg.border.color: #9c9e9c -### Fonts -window.active.label.text.font: -window.inactive.label.text.font: -menu.items.font: -menu.title.text.font: +osd.label.text.color: #444 +!# yeah whatever, this is fine anyhoo? +osd.hilight.bg: flat vertical gradient +osd.hilight.bg.color: #9ebde5 +osd.hilight.bg.colorTo: #749dcf +osd.unhilight.bg: flat vertical gradient +osd.unhilight.bg.color: #BABDB6 +osd.unhilight.bg.colorTo: #efefef