# Run GNOME with Openbox as its window manager
export WINDOW_MANAGER="@bindir@/openbox"
-exec gnome-session "$@"
+exec gnome-session --choose-session=openbox-session "$@"
XWMHints *wmhint;
gboolean activate = FALSE;
ObAppSettings *settings;
+ gint placex, placey;
grab_server(TRUE);
activate = TRUE;
}
+ /* adjust the frame to the client's size before showing or placing
+ the window */
+ frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
+ frame_adjust_client_area(self->frame);
+
+ /* where the frame was placed is where the window was originally */
+ placex = self->area.x;
+ placey = self->area.y;
+
/* figure out placement for the window */
if (ob_state() == OB_STATE_RUNNING) {
gboolean transient;
(self->positioned == USPosition ? "user specified" :
"BADNESS !?"))), self->area.x, self->area.y);
- transient = place_client(self, &self->area.x, &self->area.y, settings);
+ transient = place_client(self, &placex, &placey, settings);
/* make sure the window is visible. */
- client_find_onscreen(self, &self->area.x, &self->area.y,
+ client_find_onscreen(self, &placex, &placey,
self->area.width, self->area.height,
/* non-normal clients has less rules, and
windows that are being restored from a
}
ob_debug("placing window 0x%x at %d, %d with size %d x %d\n",
- self->window, self->area.x, self->area.y,
+ self->window, placex, placey,
self->area.width, self->area.height);
if (self->session)
ob_debug(" but session requested %d %d instead, overriding\n",
self->session->x, self->session->y);
- /* adjust the frame to the client's size before showing the window */
- frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
- frame_adjust_client_area(self->frame);
-
+ /* do this after the window is placed, so the premax/prefullscreen numbers
+ won't be all wacko!!
+ also, this moves the window to the position where it has been placed
+ */
+ client_apply_startup_state(self);
/* move the client to its placed position, or it it's already there,
generate a ConfigureNotify telling the client where it is.
do this after adjusting the frame. otherwise it gets all weird and
- clients don't work right */
- client_configure(self, self->area.x, self->area.y,
+ clients don't work right
+
+ also do this after applying the startup state so maximize and fullscreen
+ will get the right sizes and positions if the client is starting with
+ those states
+ */
+ client_configure(self, placex, placey,
self->area.width, self->area.height,
FALSE, TRUE);
- /* do this after the window is placed, so the premax/prefullscreen numbers
- won't be all wacko!!
- also, this moves the window to the position where it has been placed
- */
- client_apply_startup_state(self);
if (activate) {
guint32 last_time = focus_client ?
}
self->fullscreen = self->max_horz = self->max_vert = FALSE;
+ /* let it be moved and resized no matter what */
+ self->functions = OB_CLIENT_FUNC_MOVE | OB_CLIENT_FUNC_RESIZE;
self->decorations = 0; /* unmanaged windows have no decor */
client_move_resize(self, a.x, a.y, a.width, a.height);
POINT_SET(newbl, newtl.x, newbr.y);
/* is it moving or just resizing from some corner? */
- stationary_l = oldtl.x == oldtl.x;
- stationary_r = oldtr.x == oldtr.x;
- stationary_t = oldtl.y == oldtl.y;
- stationary_b = oldbl.y == oldbl.y;
+ stationary_l = oldtl.x == newtl.x;
+ stationary_r = oldtr.x == newtr.x;
+ stationary_t = oldtl.y == newtl.y;
+ stationary_b = oldbl.y == newbl.y;
/* if left edge is growing and didnt move right edge */
if (stationary_r && newtl.x < oldtl.x)
}
}
+/*! This needs to be followed by a call to client_configure to make
+ the changes show */
void client_setup_decor_and_functions(ObClient *self)
{
/* start with everything (cept fullscreen) */
do with them is move them */
self->decorations = 0;
self->functions = OB_CLIENT_FUNC_MOVE;
+ break;
case OB_CLIENT_TYPE_DESKTOP:
/* these windows are not manipulated by the window manager */
self->decorations = 0;
self->functions = 0;
+ break;
case OB_CLIENT_TYPE_DOCK:
/* these windows are not manipulated by the window manager, but they
self->decorations &= ~OB_FRAME_DECOR_MAXIMIZE;
}
- /* kill the handle on fully maxed windows */
- if (self->max_vert && self->max_horz)
+ if (self->max_horz && self->max_vert)
+ /* kill the handle on fully maxed windows */
self->decorations &= ~(OB_FRAME_DECOR_HANDLE | OB_FRAME_DECOR_GRIPS);
/* If there are no decorations to remove, don't allow the user to try
}
client_change_allowed_actions(self);
-
- if (self->frame) {
- /* adjust the client's decorations, etc. */
- client_reconfigure(self);
- }
}
static void client_change_allowed_actions(ObClient *self)
gboolean fmoved, fresized;
guint fdecor = self->frame->decorations;
gboolean fhorz = self->frame->max_horz;
+ gboolean fvert = self->frame->max_vert;
gint logicalw, logicalh;
/* find the new x, y, width, and height (and logical size) */
/* find the frame's dimensions and move/resize it */
fmoved = moved;
fresized = resized;
- if (self->decorations != fdecor || self->max_horz != fhorz)
+ if (self->decorations != fdecor ||
+ self->max_horz != fhorz || self->max_vert != fvert)
+ {
fmoved = fresized = TRUE;
+ }
if (fmoved || fresized)
frame_adjust_area(self->frame, fmoved, fresized, FALSE);
guint old;
GSList *it;
- if (target != self->desktop) {
+ if (target != self->desktop && self->type != OB_CLIENT_TYPE_DESKTOP) {
ob_debug("Setting desktop %u\n", target+1);
self->window, event_curtime, last_time,
(user ? "user" : "application"), allow);
- if (allow) {
- if (event_curtime != CurrentTime)
- self->user_time = event_curtime;
-
+ if (allow)
client_present(self, here, TRUE);
- } else
+ else
/* don't focus it but tell the user it wants attention */
client_hilite(self, TRUE);
}
{
self->undecorated = undecorated;
client_setup_decor_and_functions(self);
+ client_reconfigure(self); /* show the lack of decorations */
client_change_state(self); /* reflect this in the state hints */
}
}
e->xmotion.x, e->xmotion.y);
switch (con) {
case OB_FRAME_CONTEXT_TITLEBAR:
+ case OB_FRAME_CONTEXT_TLCORNER:
+ case OB_FRAME_CONTEXT_TRCORNER:
/* we've left the button area inside the titlebar */
if (client->frame->max_hover || client->frame->desk_hover ||
client->frame->shade_hover || client->frame->iconify_hover ||
con = frame_context(client, e->xcrossing.window,
e->xcrossing.x, e->xcrossing.y);
switch (con) {
+ case OB_FRAME_CONTEXT_TITLEBAR:
+ case OB_FRAME_CONTEXT_TLCORNER:
+ case OB_FRAME_CONTEXT_TRCORNER:
+ /* we've left the button area inside the titlebar */
+ if (client->frame->max_hover || client->frame->desk_hover ||
+ client->frame->shade_hover || client->frame->iconify_hover ||
+ client->frame->close_hover)
+ {
+ client->frame->max_hover = FALSE;
+ client->frame->desk_hover = FALSE;
+ client->frame->shade_hover = FALSE;
+ client->frame->iconify_hover = FALSE;
+ client->frame->close_hover = FALSE;
+ frame_adjust_state(client->frame);
+ }
+ break;
case OB_FRAME_CONTEXT_MAXIMIZE:
client->frame->max_hover = FALSE;
frame_adjust_state(client->frame);
*/
gint x, y, w, h;
+ gboolean move = FALSE;
+ gboolean resize = FALSE;
- /* if nothing is changed, then a configurenotify is needed */
- gboolean config = TRUE;
-
- x = client->area.x;
- y = client->area.y;
- w = client->area.width;
- h = client->area.height;
+ /* get the current area */
+ RECT_TO_DIMS(client->area, x, y, w, h);
ob_debug("ConfigureRequest desktop %d wmstate %d visibile %d\n",
screen_desktop, client->wmstate, client->frame->visible);
if (e->xconfigurerequest.value_mask & CWBorderWidth)
if (client->border_width != e->xconfigurerequest.border_width) {
client->border_width = e->xconfigurerequest.border_width;
- /* if only the border width is changing, then it's not needed*/
- config = FALSE;
+
+ /* if the border width is changing then that is the same
+ as requesting a resize, but we don't actually change
+ the client's border, so it will change their root
+ coordiantes (since they include the border width) and
+ we need to a notify then */
+ move = TRUE;
}
stacking_restack_request(client, sibling,
e->xconfigurerequest.detail, TRUE);
- /* if a stacking change is requested then it is needed */
- config = TRUE;
+ /* if a stacking change moves the window without resizing */
+ move = TRUE;
}
/* don't allow clients to move shaded windows (fvwm does this) */
/* if the client tried to move and we aren't letting it then a
synthetic event is needed */
- config = TRUE;
+ move = TRUE;
}
if (e->xconfigurerequest.value_mask & CWX ||
e->xconfigurerequest.value_mask & CWWidth ||
e->xconfigurerequest.value_mask & CWHeight)
{
- if (e->xconfigurerequest.value_mask & CWX)
+ if (e->xconfigurerequest.value_mask & CWX) {
x = e->xconfigurerequest.x;
- if (e->xconfigurerequest.value_mask & CWY)
+ move = TRUE;
+ }
+ if (e->xconfigurerequest.value_mask & CWY) {
y = e->xconfigurerequest.y;
- if (e->xconfigurerequest.value_mask & CWWidth)
+ move = TRUE;
+ }
+ if (e->xconfigurerequest.value_mask & CWWidth) {
w = e->xconfigurerequest.width;
- if (e->xconfigurerequest.value_mask & CWHeight)
+ resize = TRUE;
+ }
+ if (e->xconfigurerequest.value_mask & CWHeight) {
h = e->xconfigurerequest.height;
-
- /* if a new position or size is requested, then a configure is
- needed */
- config = TRUE;
+ resize = TRUE;
+ }
}
- ob_debug("ConfigureRequest x(%d) %d y(%d) %d w(%d) %d h(%d) %d\n",
+ ob_debug("ConfigureRequest x(%d) %d y(%d) %d w(%d) %d h(%d) %d "
+ "move %d resize %d\n",
e->xconfigurerequest.value_mask & CWX, x,
e->xconfigurerequest.value_mask & CWY, y,
e->xconfigurerequest.value_mask & CWWidth, w,
- e->xconfigurerequest.value_mask & CWHeight, h);
+ e->xconfigurerequest.value_mask & CWHeight, h,
+ move, resize);
/* check for broken apps moving to their root position
desktop. eg. open amarok window on desktop 1, switch to desktop
2, click amarok tray icon. it will move by its decoration size.
*/
- if (x != client->area.x &&
+ if (move && !resize &&
+ x != client->area.x &&
x == (client->frame->area.x + client->frame->size.left -
(gint)client->border_width) &&
y != client->area.y &&
/* don't move it */
x = client->area.x;
y = client->area.y;
+
+ /* they still requested a move, so don't change whether a
+ notify is sent or not */
}
- if (config) {
+ if (move || resize) {
+ gint lw,lh;
+
client_find_onscreen(client, &x, &y, w, h, FALSE);
- client_configure(client, x, y, w, h, FALSE, TRUE);
+ client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
+ /* if they requested something that moves the window, or if
+ the window is actually being changed then configure it and
+ send a configure notify to them */
+ if (move || !RECT_EQUAL_DIMS(client->area, x, y, w, h)) {
+ ob_debug("Doing configure\n");
+ client_configure(client, x, y, w, h, FALSE, TRUE);
+ }
/* ignore enter events caused by these like ob actions do */
event_ignore_all_queued_enters();
static void set_theme_statics(ObFrame *self);
static void free_theme_statics(ObFrame *self);
static gboolean frame_animate_iconify(gpointer self);
+static void frame_adjust_cursors(ObFrame *self);
static Window createWindow(Window parent, Visual *visual,
gulong mask, XSetWindowAttributes *attrib)
oldsize = self->size;
if (resized) {
+ /* do this before changing the frame's status like max_horz max_vert */
+ frame_adjust_cursors(self);
+
+ self->functions = self->client->functions;
self->decorations = self->client->decorations;
self->max_horz = self->client->max_horz;
+ self->max_vert = self->client->max_vert;
if (self->decorations & OB_FRAME_DECOR_BORDER) {
self->bwidth = ob_rr_theme->fbwidth;
self->bwidth = self->cbwidth_x = self->cbwidth_y = 0;
}
self->rbwidth = self->bwidth;
- self->leftb = self->rightb = TRUE;
if (self->max_horz) {
- self->leftb = self->rightb = FALSE;
self->cbwidth_x = 0;
- }
-
- self->width = self->client->area.width + self->cbwidth_x * 2;
- self->width = MAX(self->width, 1); /* no lower than 1 */
+ self->width = self->client->area.width - self->bwidth * 2;
+ } else
+ self->width = self->client->area.width + self->cbwidth_x * 2;
STRUT_SET(self->size,
- self->cbwidth_x + (self->leftb ? self->bwidth : 0),
+ self->cbwidth_x + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_y + self->bwidth,
- self->cbwidth_x + (self->rightb ? self->bwidth : 0),
+ self->cbwidth_x + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_y + self->bwidth);
if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
if (self->bwidth) {
XMoveResizeWindow(ob_display, self->titletop,
ob_rr_theme->grip_width + self->bwidth, 0,
- self->client->area.width +
- self->cbwidth_x * 2 + self->bwidth * 2 -
- (ob_rr_theme->grip_width + self->bwidth) * 2,
+ /* width + bwidth*2 - bwidth*2 - grips*2 */
+ self->width + ob_rr_theme->grip_width * 2,
self->bwidth);
XMoveResizeWindow(ob_display, self->titletopleft,
0, 0,
self->bwidth);
XMoveResizeWindow(ob_display, self->titletopright,
self->client->area.width +
- self->cbwidth_x * 2 + self->bwidth * 2 -
+ self->size.left + self->size.right -
ob_rr_theme->grip_width - self->bwidth,
0,
ob_rr_theme->grip_width + self->bwidth,
XMoveResizeWindow(ob_display, self->titleleft,
0, self->bwidth,
self->bwidth,
- (self->leftb ?
+ (!self->max_horz ?
ob_rr_theme->grip_width :
self->size.top - self->bwidth));
XMoveResizeWindow(ob_display, self->titleright,
self->client->area.width +
- self->cbwidth_x * 2 + self->bwidth,
+ self->size.left + self->size.right -
+ self->bwidth,
self->bwidth,
self->bwidth,
- (self->rightb ?
+ (!self->max_horz ?
ob_rr_theme->grip_width :
self->size.top - self->bwidth));
XMoveResizeWindow(ob_display, self->titlebottom,
self->bwidth,
ob_rr_theme->title_height + self->bwidth,
- self->client->area.width +
- self->cbwidth_x * 2,
+ self->width,
self->rbwidth);
XMapWindow(ob_display, self->titlebottom);
0,
self->size.top + self->client->area.height +
self->size.bottom -
- (self->leftb ?
+ (!self->max_horz ?
ob_rr_theme->grip_width :
self->size.bottom),
self->bwidth,
- (self->leftb ?
+ (!self->max_horz ?
ob_rr_theme->grip_width :
self->size.bottom));
XMoveResizeWindow(ob_display, self->rgripright,
self->size.right - self->bwidth,
self->size.top + self->client->area.height +
self->size.bottom -
- (self->leftb ?
+ (!self->max_horz ?
ob_rr_theme->grip_width :
self->size.bottom),
self->bwidth,
- (self->rightb ?
+ (!self->max_horz ?
ob_rr_theme->grip_width :
self->size.bottom));
XUnmapWindow(ob_display, self->handle);
}
- if (self->bwidth && self->leftb) {
+ if (self->bwidth && !self->max_horz) {
XMoveResizeWindow(ob_display, self->left,
0,
self->bwidth + ob_rr_theme->grip_width,
} else
XUnmapWindow(ob_display, self->left);
- if (self->bwidth && self->rightb) {
+ if (self->bwidth && !self->max_horz) {
XMoveResizeWindow(ob_display, self->right,
self->client->area.width +
self->cbwidth_x * 2 + self->bwidth,
self->size.top - self->cbwidth_y,
self->client->area.width +
self->cbwidth_x * 2 +
- (self->leftb ? self->bwidth : 0) +
- (self->rightb ? self->bwidth : 0),
+ (!self->max_horz ? self->bwidth * 2 : 0),
self->client->area.height +
self->cbwidth_y * 2);
/* move the plate */
XMoveWindow(ob_display, self->plate,
- (self->leftb ? self->bwidth : 0) + self->cbwidth_x,
+ (!self->max_horz ? self->bwidth : 0) + self->cbwidth_x,
self->cbwidth_y);
/* when the client has StaticGravity, it likes to move around. */
if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
XResizeWindow(ob_display, self->label, self->label_width,
ob_rr_theme->label_height);
+}
- /* set up cursors */
- if (!fake &&
- (self->functions & OB_CLIENT_FUNC_RESIZE) !=
- (self->client->functions & OB_CLIENT_FUNC_RESIZE))
+static void frame_adjust_cursors(ObFrame *self)
+{
+ if ((self->functions & OB_CLIENT_FUNC_RESIZE) !=
+ (self->client->functions & OB_CLIENT_FUNC_RESIZE) ||
+ ((self->max_horz && self->max_vert) !=
+ (self->client->max_horz && self->client->max_vert)))
{
- gboolean r = self->client->functions & OB_CLIENT_FUNC_RESIZE;
+ gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
+ !(self->client->max_horz && self->client->max_vert);
XSetWindowAttributes a;
a.cursor = ob_cursor(r ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
XChangeWindowAttributes(ob_display, self->rgripright, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->rgriptop, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->rgripbottom, CWCursor, &a);
-
- self->functions = self->client->functions;
}
}
return OB_FRAME_CONTEXT_CLIENT;
}
- if (win == self->title) {
- /* when the user clicks in the corners of the titlebar and the client
- is fully maximized, then treat it like they clicked in the
- button that is there */
- if (self->client->max_horz && self->client->max_vert &&
- y < ob_rr_theme->paddingy + 1 + ob_rr_theme->button_size)
+ /* when the user clicks in the corners of the titlebar and the client
+ is fully maximized, then treat it like they clicked in the
+ button that is there */
+ if (self->max_horz && self->max_vert &&
+ (win == self->title ||
+ win == self->titleleft || win == self->titletopleft ||
+ win == self->titleright || win == self->titletopright))
+ {
+ /* get the mouse coords in reference to the whole frame */
+ gint fx = x;
+ gint fy = y;
+
+ /* these windows are down a border width from the top of the frame */
+ if (win == self->title ||
+ win == self->titleleft || win == self->titleright)
+ fy += self->bwidth;
+
+ /* title is a border width in from the edge */
+ if (win == self->title)
+ fx += self->bwidth;
+ /* titletopright is way to the right edge */
+ else if (win == self->titletopright)
+ fx += self->area.width - (ob_rr_theme->grip_width + self->bwidth);
+ /* titleright is even more way to the right edge */
+ else if (win == self->titleright)
+ fx += self->area.width - self->bwidth;
+
+ /* figure out if we're over the area that should be considered a
+ button */
+ if (fy < self->bwidth + ob_rr_theme->paddingy + 1 +
+ ob_rr_theme->button_size)
{
- if (x < ((ob_rr_theme->paddingx + 1) * 2 +
- ob_rr_theme->button_size)) {
+ if (fx < (self->bwidth + ob_rr_theme->paddingx + 1 +
+ ob_rr_theme->button_size))
+ {
if (self->leftmost != OB_FRAME_CONTEXT_NONE)
return self->leftmost;
}
- else if (x > (self->width -
- (ob_rr_theme->paddingx + 1 +
- ob_rr_theme->button_size)))
+ else if (fx >= (self->area.width -
+ (self->bwidth + ob_rr_theme->paddingx + 1 +
+ ob_rr_theme->button_size)))
{
if (self->rightmost != OB_FRAME_CONTEXT_NONE)
return self->rightmost;
}
}
- return OB_FRAME_CONTEXT_TITLEBAR;
}
if (win == self->window) return OB_FRAME_CONTEXT_FRAME;
if (win == self->rgripright) return OB_FRAME_CONTEXT_BLCORNER;
if (win == self->rgriptop) return OB_FRAME_CONTEXT_BLCORNER;
if (win == self->rgripbottom) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->title) return OB_FRAME_CONTEXT_TITLEBAR;
+ if (win == self->titleleft) return OB_FRAME_CONTEXT_TLCORNER;
+ if (win == self->titletopleft) return OB_FRAME_CONTEXT_TLCORNER;
+ if (win == self->titleright) return OB_FRAME_CONTEXT_TRCORNER;
+ if (win == self->titletopright) return OB_FRAME_CONTEXT_TRCORNER;
if (win == self->titletop) return OB_FRAME_CONTEXT_TOP;
if (win == self->topresize) return OB_FRAME_CONTEXT_TOP;
if (win == self->tltresize) return OB_FRAME_CONTEXT_TLCORNER;
if (win == self->tllresize) return OB_FRAME_CONTEXT_TLCORNER;
- if (win == self->titleleft) return OB_FRAME_CONTEXT_TLCORNER;
- if (win == self->titletopleft) return OB_FRAME_CONTEXT_TLCORNER;
if (win == self->trtresize) return OB_FRAME_CONTEXT_TRCORNER;
if (win == self->trrresize) return OB_FRAME_CONTEXT_TRCORNER;
- if (win == self->titleright) return OB_FRAME_CONTEXT_TRCORNER;
- if (win == self->titletopright) return OB_FRAME_CONTEXT_TRCORNER;
if (win == self->left) return OB_FRAME_CONTEXT_LEFT;
if (win == self->right) return OB_FRAME_CONTEXT_RIGHT;
if (win == self->max) return OB_FRAME_CONTEXT_MAXIMIZE;
guint functions;
guint decorations;
- gboolean max_horz;
Window inner; /*!< The window for drawing the inner client border */
Window title;
gint rbwidth; /* border width between the title and client */
gint cbwidth_x; /* client border width */
gint cbwidth_y; /* client border width */
- gboolean leftb; /* is there a border to the left of the client? */
- gboolean rightb; /* is there a border to the right of the client?*/
+ gboolean max_horz; /* when maxed some decorations are hidden */
+ gboolean max_vert; /* when maxed some decorations are hidden */
/* the leftmost and rightmost elements in the titlebar */
ObFrameContext leftmost;
#define RECT_EQUAL(r1, r2) ((r1).x == (r2).x && (r1).y == (r2).y && \
(r1).width == (r2).width && \
(r1).height == (r2).height)
+#define RECT_EQUAL_DIMS(r, x, y, w, h) \
+ ((r).x == (x) && (r).y == (y) && (r).width == (w) && (r).height == (h))
+
+#define RECT_TO_DIMS(r, x, y, w, h) \
+ (x) = (r).x, (y) = (r).y, (w) = (r).width, (h) = (r).height
#define RECT_CONTAINS(r, px, py) \
((px) >= (r).x && (px) < (r).x + (r).width && \
gboolean ob_sm_use = TRUE;
gchar *ob_sm_id = NULL;
gchar *ob_sm_save_file = NULL;
+gboolean ob_sm_restore = TRUE;
gboolean ob_debug_xinerama = FALSE;
static ObState state;
}
}
- /* we remove the session arguments from argv, so put them back */
+ /* we remove the session arguments from argv, so put them back,
+ also don't restore the session on restart */
if (ob_sm_save_file != NULL || ob_sm_id != NULL) {
gchar **nargv;
gint i, l;
- l = argc +
+ l = argc + 1 +
(ob_sm_save_file != NULL ? 2 : 0) +
(ob_sm_id != NULL ? 2 : 0);
nargv = g_new0(gchar*, l+1);
nargv[i++] = g_strdup("--sm-client-id");
nargv[i++] = ob_sm_id;
}
+ nargv[i++] = g_strdup("--sm-no-load");
g_assert(i == l);
argv = nargv;
}
else if (!strcmp(argv[i], "--sm-disable")) {
ob_sm_use = FALSE;
}
+ else if (!strcmp(argv[i], "--sm-no-load")) {
+ ob_sm_restore = FALSE;
+ remove_args(argc, argv, i, 1);
+ --i; /* this arg was removed so go back */
+ }
else {
/* this is a memleak.. oh well.. heh */
gchar *err = g_strdup_printf
/* This save_file will get pass to ourselves if we restart too! So we won't
make a new file every time, yay. */
extern gchar *ob_sm_save_file;
+extern gboolean ob_sm_restore;
extern gboolean ob_replace_wm;
extern gboolean ob_debug_xinerama;
}
if (ob_sm_save_file != NULL) {
- ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n",
- ob_sm_save_file);
- session_load_file(ob_sm_save_file);
+ if (ob_sm_restore) {
+ ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n",
+ ob_sm_save_file);
+ session_load_file(ob_sm_save_file);
+ }
} else {
gchar *filename;
fprintf(f, "\t<role>%s</role>\n", t);
g_free(t);
- fprintf(f, "\t<windowtype>%d</windowtype>\n", c->type);
-
fprintf(f, "\t<desktop>%d</desktop>\n", c->desktop);
fprintf(f, "\t<x>%d</x>\n", prex);
fprintf(f, "\t<y>%d</y>\n", prey);
ob_debug_type(OB_DEBUG_SM, " client name: %s \n", c->name);
ob_debug_type(OB_DEBUG_SM, " client class: %s \n", c->class);
ob_debug_type(OB_DEBUG_SM, " client role: %s \n", c->role);
- ob_debug_type(OB_DEBUG_SM, " client type: %s \n", c->type);
ob_debug_type(OB_DEBUG_SM, " client command: %s \n",
c->wm_command ? c->wm_command : "(null)");
ob_debug_type(OB_DEBUG_SM, " state id: %s \n", s->id);
ob_debug_type(OB_DEBUG_SM, " state name: %s \n", s->name);
ob_debug_type(OB_DEBUG_SM, " state class: %s \n", s->class);
ob_debug_type(OB_DEBUG_SM, " state role: %s \n", s->role);
- ob_debug_type(OB_DEBUG_SM, " state type: %s \n", s->type);
ob_debug_type(OB_DEBUG_SM, " state command: %s \n",
s->command ? s->command : "(null)");
{
return (!strcmp(s->name, c->name) &&
!strcmp(s->class, c->class) &&
- !strcmp(s->role, c->role) &&
- /* the check for type is to catch broken clients, like
- firefox, which open a different window on startup
- with the same info as the one we saved. only do this
- check for old windows that dont use xsmp, others should
- know better ! */
- (!s->command || c->type == s->type));
+ !strcmp(s->role, c->role));
}
return FALSE;
}
{
xmlDocPtr doc;
xmlNodePtr node, n;
+ GList *it, *inext;
if (!parse_load(path, "openbox_session", &doc, &node))
return;
if (!(n = parse_find_node("role", node->children)))
goto session_load_bail;
state->role = parse_string(doc, n);
- if (!(n = parse_find_node("windowtype", node->children)))
- goto session_load_bail;
- state->type = parse_int(doc, n);
if (!(n = parse_find_node("desktop", node->children)))
goto session_load_bail;
state->desktop = parse_int(doc, n);
session_state_free(state);
}
+ /* Remove any duplicates. This means that if two windows (or more) are
+ saved with the same session state, we won't restore a session for any
+ of them because we don't know what window to put what on. AHEM FIREFOX.
+
+ This is going to be an O(2^n) kind of operation unfortunately.
+ */
+ for (it = session_saved_state; it; it = inext) {
+ GList *jt, *jnext;
+ gboolean founddup = FALSE;
+ ObSessionState *s1 = it->data;
+
+ inext = g_list_next(it);
+
+ for (jt = g_list_next(it); jt; jt = jnext) {
+ ObSessionState *s2 = jt->data;
+ gboolean match;
+
+ jnext = g_list_next(jt);
+
+ if (s1->id && s2->id)
+ match = strcmp(s1->id, s2->id) == 0;
+ else if (s1->command && s2->command)
+ match = strcmp(s1->command, s2->command) == 0;
+ else
+ match = FALSE;
+
+ if (match &&
+ !strcmp(s1->name, s2->name) &&
+ !strcmp(s1->class, s2->class) &&
+ !strcmp(s1->role, s2->role))
+ {
+ session_state_free(s2);
+ session_saved_state =
+ g_list_delete_link(session_saved_state, jt);
+ founddup = TRUE;
+ }
+ }
+
+ if (founddup) {
+ session_state_free(s1);
+ session_saved_state = g_list_delete_link(session_saved_state, it);
+ }
+ }
+
xmlFreeDoc(doc);
}
struct _ObSessionState {
gchar *id, *command, *name, *class, *role;
- ObClientType type;
guint desktop;
gint x, y, w, h;
gboolean shaded, iconic, skip_pager, skip_taskbar, fullscreen;
pt_BR
fi
en@quot en@boldquot
-it_IT
+it
+et
--- /dev/null
+# translation of openbox to Estonian
+# Copyright (C) 2007 Dana Jansens
+# This file is distributed under the same license as the Openbox 3 package.
+#
+# Andres Järv <andresjarv@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Openbox 3.4\n"
+"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
+"POT-Creation-Date: 2007-05-14 22:09-0400\n"
+"PO-Revision-Date: 2007-05-21 20:11+0300\n"
+"Last-Translator: Andres Järv <andresjarv@gmail.com>\n"
+"Language-Team: Estonian <et@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: openbox/action.c:956
+#, c-format
+msgid "Invalid action '%s' requested. No such action exists."
+msgstr "Taotleti kehtetut käsklust '%s'. Sellist käsklust pole olemas."
+
+#: openbox/action.c:959
+#, c-format
+msgid "Invalid use of action '%s'. Action will be ignored."
+msgstr "Käskluse '%s' kasutus on kehtetu. Käsklust ignoreeritakse."
+
+#: openbox/action.c:1222 openbox/action.c:1240 openbox/action.c:1253
+#, c-format
+msgid "Failed to execute '%s': %s"
+msgstr "'%s' käivitamine ebaõnnestus: %s"
+
+#: openbox/action.c:1261
+#, c-format
+msgid "Failed to convert the path '%s' from utf8"
+msgstr "Raja '%s' ümberkodeerimine UTF8-st ebaõnnestus"
+
+#: openbox/client_list_combined_menu.c:102 openbox/client_list_menu.c:104
+msgid "Go there..."
+msgstr "Mine sinna..."
+
+#: openbox/client_list_combined_menu.c:148
+msgid "Windows"
+msgstr "Aknad"
+
+#: openbox/client_list_menu.c:199
+msgid "Desktops"
+msgstr "Töölauad"
+
+#: openbox/client_menu.c:241
+msgid "All desktops"
+msgstr "Kõik töölauad"
+
+#: openbox/client_menu.c:346
+msgid "&Layer"
+msgstr "&Kiht"
+
+#: openbox/client_menu.c:351
+msgid "Always on &top"
+msgstr "Aken teiste &peal"
+
+#: openbox/client_menu.c:352
+msgid "&Normal"
+msgstr "&Normaalne"
+
+#: openbox/client_menu.c:353
+msgid "Always on &bottom"
+msgstr "Aken teiste &all"
+
+#: openbox/client_menu.c:356
+msgid "&Send to desktop"
+msgstr "&Saada töölauale"
+
+#: openbox/client_menu.c:360
+msgid "Client menu"
+msgstr "Kliendi menüü"
+
+#: openbox/client_menu.c:366
+msgid "R&estore"
+msgstr "&Taasta"
+
+#: openbox/client_menu.c:374
+msgid "&Move"
+msgstr "&Liiguta"
+
+#: openbox/client_menu.c:376
+msgid "Resi&ze"
+msgstr "Muuda &suurust"
+
+#: openbox/client_menu.c:378
+msgid "Ico&nify"
+msgstr "Muuda &ikooniks"
+
+#: openbox/client_menu.c:386
+msgid "Ma&ximize"
+msgstr "Ma&ksimeeri"
+
+#: openbox/client_menu.c:394
+msgid "&Roll up/down"
+msgstr "&Rulli üles/alla"
+
+#: openbox/client_menu.c:396
+msgid "Un/&Decorate"
+msgstr "Äär&ed sisse/välja"
+
+#: openbox/client_menu.c:406
+msgid "&Close"
+msgstr "S&ulge"
+
+#: openbox/config.c:667
+#, c-format
+msgid "Invalid button '%s' specified in config file"
+msgstr "Vigane nupp '%s' määratletud konfiguratsioonifailis"
+
+#: openbox/keyboard.c:162
+msgid "Conflict with key binding in config file"
+msgstr "Konflikt kiirklahviga konfiguratsioonifailis"
+
+#: openbox/menu.c:98 openbox/menu.c:106
+#, c-format
+msgid "Unable to find a valid menu file '%s'"
+msgstr "Ei suudetud leida kehtivat menüüfaili '%s'"
+
+#: openbox/menu.c:149
+#, c-format
+msgid "Failed to execute command for pipe-menu '%s': %s"
+msgstr "Ei suudetud käivitada torumenüü '%s' käsku: %s"
+
+#: openbox/menu.c:166
+#, c-format
+msgid "Invalid output from pipe-menu '%s'"
+msgstr "Vigane väljund torumenüüst '%s'"
+
+#: openbox/menu.c:179
+#, c-format
+msgid "Attempted to access menu '%s' but it does not exist"
+msgstr "Üritati ligi pääseda menüüle '%s', aga seda pole olemas"
+
+#: openbox/menu.c:331 openbox/menu.c:332
+msgid "More..."
+msgstr "Rohkem..."
+
+#: openbox/mouse.c:321
+#, c-format
+msgid "Invalid button '%s' in mouse binding"
+msgstr "Vigane nupp '%s' hiire kiirklahvides"
+
+#: openbox/mouse.c:327
+#, c-format
+msgid "Invalid context '%s' in mouse binding"
+msgstr "Vigane kontekst '%s' hiire kiirklahvides"
+
+#: openbox/openbox.c:125
+#, c-format
+msgid "Unable to change to home directory '%s': %s"
+msgstr "Ei suudetud siseneda kodukataloogi '%s': %s"
+
+#: openbox/openbox.c:145
+msgid "Failed to open the display from the DISPLAY environment variable."
+msgstr "DISPLAY keskkonnamuutujas oleva ekraani avamine ebaõnnestus."
+
+#: openbox/openbox.c:176
+msgid "Failed to initialize the render library."
+msgstr "Renderdamisteegi käivitamine ebaõnnestus."
+
+#: openbox/openbox.c:182
+msgid "X server does not support locale."
+msgstr "X server ei toeta lokaati."
+
+#: openbox/openbox.c:184
+msgid "Cannot set locale modifiers for the X server."
+msgstr "Ei suudetud sättida lokaadimuutujaid X serveri jaoks."
+
+#: openbox/openbox.c:244
+msgid "Unable to find a valid config file, using some simple defaults"
+msgstr "Ei suudetud leida kehtivat konfiguratsioonifaili, kasutatakse lihtsaid vaikimisi seadeid"
+
+#: openbox/openbox.c:270
+msgid "Unable to load a theme."
+msgstr "Ei suudetud laadida teemat."
+
+#: openbox/openbox.c:383
+#, c-format
+msgid "Restart failed to execute new executable '%s': %s"
+msgstr "Taaskäivitusel ebaõnnestus uue käivitusfaili '%s' käivitamine: %s"
+
+#: openbox/openbox.c:451 openbox/openbox.c:453
+msgid "Copyright (c)"
+msgstr "Autoriõigused (c)"
+
+#: openbox/openbox.c:462
+msgid "Syntax: openbox [options]\n"
+msgstr "Süntaks: openbox [seaded]\n"
+
+#: openbox/openbox.c:463
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Seaded:\n"
+
+#: openbox/openbox.c:464
+msgid " --help Display this help and exit\n"
+msgstr " --help Selle abi kuvamine ja väljumine\n"
+
+#: openbox/openbox.c:465
+msgid " --version Display the version and exit\n"
+msgstr " --version Versiooni kuvamine ja väljumine\n"
+
+#: openbox/openbox.c:466
+msgid " --replace Replace the currently running window manager\n"
+msgstr " --replace Hetkel töötava aknahalduri asendamine\n"
+
+#: openbox/openbox.c:467
+msgid " --sm-disable Disable connection to the session manager\n"
+msgstr " --sm-disable Seansihalduriga ühenduse keelamine\n"
+
+#: openbox/openbox.c:468
+msgid ""
+"\n"
+"Passing messages to a running Openbox instance:\n"
+msgstr ""
+"\n"
+"Jooksvale Openboxi seansile sõnumite edastamine:\n"
+
+#: openbox/openbox.c:469
+msgid " --reconfigure Reload Openbox's configuration\n"
+msgstr " --reconfigure Openboxi konfiguratsioon uuesti laadimine\n"
+
+#: openbox/openbox.c:470
+msgid ""
+"\n"
+"Debugging options:\n"
+msgstr ""
+"\n"
+"Silumise seaded:\n"
+
+#: openbox/openbox.c:471
+msgid " --sync Run in synchronous mode\n"
+msgstr " --sync Sünkroonselt jooksutamine\n"
+
+#: openbox/openbox.c:472
+msgid " --debug Display debugging output\n"
+msgstr " --debug Silumisväljundi kuvamine\n"
+
+#: openbox/openbox.c:473
+msgid " --debug-focus Display debugging output for focus handling\n"
+msgstr " --debug-focus Fookusekäsitluse siluriväljundi kuvamine\n"
+
+#: openbox/openbox.c:474
+msgid " --debug-xinerama Split the display into fake xinerama screens\n"
+msgstr " --debug-xinerama Ekraani võlts-Xinerama ekraanideks jagamine\n"
+
+#: openbox/openbox.c:475
+#, c-format
+msgid ""
+"\n"
+"Please report bugs at %s\n"
+msgstr ""
+"\n"
+"Palun teata vigadest siia %s\n"
+
+#: openbox/openbox.c:569
+#, c-format
+msgid "Invalid command line argument '%s'\n"
+msgstr "Vigane käsurea argument '%s'\n"
+
+#: openbox/screen.c:85 openbox/screen.c:186
+#, c-format
+msgid "A window manager is already running on screen %d"
+msgstr "Ekraanil %d juba jookseb aknahaldur"
+
+#: openbox/screen.c:122
+#, c-format
+msgid "Could not acquire window manager selection on screen %d"
+msgstr "Ei suuda hankida aknahaldurite loetelu ekraanil %d"
+
+#: openbox/screen.c:143
+#, c-format
+msgid "The WM on screen %d is not exiting"
+msgstr "Aknahaldur ekraanil %d ei sulgu"
+
+#: openbox/session.c:100
+#, c-format
+msgid "Unable to make directory '%s': %s"
+msgstr "Kausta '%s' tegemine ebaõnnestus: %s"
+
+#: openbox/session.c:442
+#, c-format
+msgid "Unable to save the session to '%s': %s"
+msgstr "Seansi '%s' salvestamine ebaõnnestus: %s"
+
+#: openbox/session.c:550
+#, c-format
+msgid "Error while saving the session to '%s': %s"
+msgstr "Seansi '%s' salvestamisel ilmnes viga: %s"
+
+#: openbox/startupnotify.c:237
+#, c-format
+msgid "Running %s\n"
+msgstr "Jooksev %s\n"
+
+#: openbox/translate.c:58
+#, c-format
+msgid "Invalid modifier key '%s' in key/mouse binding"
+msgstr "Vigane muutujaklahv '%s' hiire/klaviatuuri kiirklahvides"
+
+#: openbox/translate.c:135
+#, c-format
+msgid "Invalid key code '%s' in key binding"
+msgstr "Vigane klahvikood '%s' kiirklahvil"
+
+#: openbox/translate.c:142
+#, c-format
+msgid "Invalid key name '%s' in key binding"
+msgstr "Vigane klahvinimi '%s' kiirklahvil"
+
+#: openbox/translate.c:148
+#, c-format
+msgid "Requested key '%s' does not exist on the display"
+msgstr "Soovitud klahvi '%s' ei ole sellel ekraanil"
+
+#: openbox/xerror.c:39
+#, c-format
+msgid "X Error: %s"
+msgstr "X-i viga: %s"
+
# Polish translation of Openbox 3.
-# Copyright (C) 2004 Mikael Magnusson
+# Copyright (C) 2007 Mikael Magnusson
# This file is distributed under the same license as the Openbox 3 package.
# Madej <madej@afn.no-ip.org>, 2004.
+# Paweł Rusinek <p.rusinek@gmail.com>, 2007.
#
msgid ""
msgstr ""
-"Project-Id-Version: Openbox 3.2\n"
+"Project-Id-Version: Openbox 3.4\n"
"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
"POT-Creation-Date: 2007-05-21 00:08-0400\n"
-"PO-Revision-Date: 2004-09-07 21:17+0200\n"
-"Last-Translator: Madej <madej@afn.no-ip.org>\n"
-"Language-Team: NONE\n"
+"PO-Revision-Date: 2007-05-21 18:09+0100\n"
+"Last-Translator: Paweł Rusinek <p.rusinek@gmail.com>\n"
+"Language-Team: None\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: openbox/action.c:954
#, c-format
msgid "Invalid action '%s' requested. No such action exists."
-msgstr ""
+msgstr "Wywołano niepoprawną akcję '%s'. Taka akcja nie istnieje."
#: openbox/action.c:957
#, c-format
msgid "Invalid use of action '%s'. Action will be ignored."
-msgstr ""
+msgstr "Niepoprawne użycie akcji '%s'. Akcja zostanie pominięta."
-#: openbox/action.c:1226 openbox/action.c:1244 openbox/action.c:1257
+#: openbox/action.c:1226
+#: openbox/action.c:1244
+#: openbox/action.c:1257
#, c-format
msgid "Failed to execute '%s': %s"
-msgstr ""
+msgstr "Nie udało się uruchomić '%s': %s"
#: openbox/action.c:1265
#, c-format
msgid "Failed to convert the path '%s' from utf8"
-msgstr ""
+msgstr "Nie można przekonwertować ścieżki '%s' z kodowania utf8"
-#: openbox/client_list_combined_menu.c:102 openbox/client_list_menu.c:104
+#: openbox/client_list_combined_menu.c:102
+#: openbox/client_list_menu.c:104
msgid "Go there..."
msgstr "Przejdź..."
#: openbox/client_list_combined_menu.c:148
msgid "Windows"
-msgstr ""
+msgstr "Okna"
#: openbox/client_list_menu.c:199
msgid "Desktops"
-msgstr "Pulpit"
+msgstr "Pulpity"
#: openbox/client_menu.c:246
msgid "All desktops"
#: openbox/client_menu.c:351
msgid "&Layer"
-msgstr ""
+msgstr "&Warstwa"
#: openbox/client_menu.c:356
msgid "Always on &top"
#: openbox/client_menu.c:361
msgid "&Send to desktop"
-msgstr "Wyślij na &pulpit"
+msgstr "Wyślij na p&ulpit"
#: openbox/client_menu.c:365
msgid "Client menu"
#: openbox/client_menu.c:371
msgid "R&estore"
-msgstr "Prz&ywróć"
+msgstr "&Przywróć"
#: openbox/client_menu.c:379
msgid "&Move"
-msgstr "Prz&esuń"
+msgstr "Prze&suń"
#: openbox/client_menu.c:381
msgid "Resi&ze"
#: openbox/client_menu.c:399
msgid "&Roll up/down"
-msgstr "Ro/&Zwiń"
+msgstr "&Zwiń/Rozwiń"
#: openbox/client_menu.c:401
msgid "Un/&Decorate"
-msgstr ""
+msgstr "Pokaż/Ukryj &dekoracje"
#: openbox/client_menu.c:411
msgid "&Close"
#: openbox/config.c:701
#, c-format
msgid "Invalid button '%s' specified in config file"
-msgstr ""
+msgstr "Niepoprawny klawisz '%s' użyty w pliku konfiguracyjnym"
#: openbox/keyboard.c:162
msgid "Conflict with key binding in config file"
-msgstr ""
+msgstr "Konflikt z powiązaniem klawiaturowym w pliku konfiguracyjnym"
-#: openbox/menu.c:98 openbox/menu.c:106
+#: openbox/menu.c:98
+#: openbox/menu.c:106
#, c-format
msgid "Unable to find a valid menu file '%s'"
-msgstr ""
+msgstr "Nie można odnaleźć poprawnego pliku menu '%s'"
#: openbox/menu.c:149
#, c-format
msgid "Failed to execute command for pipe-menu '%s': %s"
-msgstr ""
+msgstr "Nie udało się wykonać polecenia dla pipe-menu '%s': %s"
#: openbox/menu.c:166
#, c-format
msgid "Invalid output from pipe-menu '%s'"
-msgstr ""
+msgstr "Niepoprawny wynik z pipe-menu '%s'"
#: openbox/menu.c:179
#, c-format
msgid "Attempted to access menu '%s' but it does not exist"
-msgstr ""
+msgstr "Plik menu '%s' nie istnieje"
-#: openbox/menu.c:331 openbox/menu.c:332
+#: openbox/menu.c:331
+#: openbox/menu.c:332
msgid "More..."
-msgstr ""
+msgstr "Więcej..."
#: openbox/mouse.c:338
#, c-format
msgid "Invalid button '%s' in mouse binding"
-msgstr ""
+msgstr "Niepoprawny klawisz '%s' w powiązaniu myszy"
#: openbox/mouse.c:344
#, c-format
msgid "Invalid context '%s' in mouse binding"
-msgstr ""
+msgstr "Niepoprawny kontekst '%s' w powiązaniu myszy"
#: openbox/openbox.c:128
#, c-format
msgid "Unable to change to home directory '%s': %s"
-msgstr ""
+msgstr "Nie można przejść do katalogu domowego '%s': %s"
#: openbox/openbox.c:148
msgid "Failed to open the display from the DISPLAY environment variable."
-msgstr ""
+msgstr "Nie udało się otworzyć ekranu na podstawie zmiennej środowiskowej DISPLAY."
#: openbox/openbox.c:179
msgid "Failed to initialize the render library."
-msgstr ""
+msgstr "Nie udało się zainicjować biblioteki render."
#: openbox/openbox.c:185
msgid "X server does not support locale."
-msgstr ""
+msgstr "Serwer X nie obsługuje ustawień lokalnych."
#: openbox/openbox.c:187
msgid "Cannot set locale modifiers for the X server."
-msgstr ""
+msgstr "Nie można ustawić modyfikatorów lokalnych dla serwera X."
#: openbox/openbox.c:248
msgid "Unable to find a valid config file, using some simple defaults"
-msgstr ""
+msgstr "Nie można odnaleźć poprawnego pliku konfiguracyjnego, użyte domyślne wartości"
#: openbox/openbox.c:274
msgid "Unable to load a theme."
-msgstr ""
+msgstr "Nie można załadować motywu."
#: openbox/openbox.c:393
#, c-format
msgid "Restart failed to execute new executable '%s': %s"
-msgstr ""
+msgstr "Podczas restartu nie udało się uruchomić nowego pliku '%s': %s"
-#: openbox/openbox.c:461 openbox/openbox.c:463
+#: openbox/openbox.c:461
+#: openbox/openbox.c:463
msgid "Copyright (c)"
-msgstr ""
+msgstr "Copyright (c)"
#: openbox/openbox.c:472
msgid "Syntax: openbox [options]\n"
-msgstr ""
+msgstr "Składnia: openbox [opcje]\n"
#: openbox/openbox.c:473
msgid ""
"\n"
"Options:\n"
msgstr ""
+"\n"
+"Opcje:\n"
#: openbox/openbox.c:474
msgid " --help Display this help and exit\n"
-msgstr ""
+msgstr " --help Wypisuje tę pomoc i kończy\n"
#: openbox/openbox.c:475
msgid " --version Display the version and exit\n"
-msgstr ""
+msgstr " --version Wypisuje informację o wersji i kończy\n"
#: openbox/openbox.c:476
msgid " --replace Replace the currently running window manager\n"
-msgstr ""
+msgstr " --replace Zastępuje aktualnie działający menedżer okien\n"
#: openbox/openbox.c:477
msgid " --sm-disable Disable connection to the session manager\n"
-msgstr ""
+msgstr " --sm-disable Nie tworzy połączenia z menedżerem sesji\n"
#: openbox/openbox.c:478
msgid ""
"\n"
"Passing messages to a running Openbox instance:\n"
msgstr ""
+"\n"
+"Przekazywanie komunikatów do działającej instancji Openboksa:\n"
#: openbox/openbox.c:479
msgid " --reconfigure Reload Openbox's configuration\n"
-msgstr ""
+msgstr " --reconfigure Ponownie odczytuje pliki konfiguracyjne\n"
#: openbox/openbox.c:480
msgid " --restart Restart Openbox\n"
-msgstr ""
+msgstr " --restart Ponownie uruchamia Openboksa\n"
#: openbox/openbox.c:481
msgid ""
"\n"
"Debugging options:\n"
msgstr ""
+"\n"
+"Opcje debugowania:\n"
#: openbox/openbox.c:482
msgid " --sync Run in synchronous mode\n"
-msgstr ""
+msgstr " --sync Uruchamia w trybie synchronicznym\n"
#: openbox/openbox.c:483
msgid " --debug Display debugging output\n"
-msgstr ""
+msgstr " --debug Wypisuje informacje dotyczące debugowania\n"
#: openbox/openbox.c:484
msgid " --debug-focus Display debugging output for focus handling\n"
-msgstr ""
+msgstr " --debug Wypisuje informacje dotyczące debugowania, związane z obsługą aktywacji\n"
#: openbox/openbox.c:485
msgid " --debug-xinerama Split the display into fake xinerama screens\n"
-msgstr ""
+msgstr " --debug-xinerama Dzieli obszar wyświetlania na sztuczne ekrany xineramy\n"
#: openbox/openbox.c:486
#, c-format
"\n"
"Please report bugs at %s\n"
msgstr ""
+"\n"
+"Proszę zgłaszać błędy (w języku angielskim) w serwisie %s\n"
#: openbox/openbox.c:578
#, c-format
msgid "Invalid command line argument '%s'\n"
-msgstr ""
+msgstr "Niepoprawny argument '%s'\n"
-#: openbox/screen.c:85 openbox/screen.c:186
+#: openbox/screen.c:85
+#: openbox/screen.c:186
#, c-format
msgid "A window manager is already running on screen %d"
-msgstr ""
+msgstr "Menedżer okien jest już uruchomiony na ekranie %d"
#: openbox/screen.c:122
#, c-format
msgid "Could not acquire window manager selection on screen %d"
-msgstr ""
+msgstr "Nie można uzyskać wyboru menedżera okien na ekranie %d"
#: openbox/screen.c:143
#, c-format
msgid "The WM on screen %d is not exiting"
-msgstr ""
+msgstr "Menedżer okien na ekranie %d nie kończy działania"
#: openbox/session.c:100
#, c-format
msgid "Unable to make directory '%s': %s"
-msgstr "Nie mogę utworzyć katalogu '%s': %s"
+msgstr "Nie można utworzyć katalogu '%s': %s"
#: openbox/session.c:442
#, c-format
msgid "Unable to save the session to '%s': %s"
-msgstr ""
+msgstr "Nie można zapisać sesji do '%s': %s"
#: openbox/session.c:552
#, c-format
msgid "Error while saving the session to '%s': %s"
-msgstr ""
+msgstr "Wystąpił błąd podczas zapisywania sesji do '%s': %s"
#: openbox/startupnotify.c:237
#, c-format
msgid "Running %s\n"
-msgstr ""
+msgstr "Uruchamianie %s\n"
#: openbox/translate.c:58
#, c-format
msgid "Invalid modifier key '%s' in key/mouse binding"
-msgstr ""
+msgstr "Niepoprawny modyfikator '%s' w powiązaniu klawiaturowym lub myszy"
#: openbox/translate.c:135
#, c-format
msgid "Invalid key code '%s' in key binding"
-msgstr ""
+msgstr "Niepoprawny kod '%s' w powiązaniu klawiaturowym"
#: openbox/translate.c:142
#, c-format
msgid "Invalid key name '%s' in key binding"
-msgstr ""
+msgstr "Niepoprawna nazwa '%s' w powiązaniu klawiaturowym"
#: openbox/translate.c:148
#, c-format
msgid "Requested key '%s' does not exist on the display"
-msgstr ""
+msgstr "Żądany klawisz '%s' nie istnieje na ekranie"
#: openbox/xerror.c:39
#, c-format
msgid "X Error: %s"
-msgstr ""
+msgstr "Błąd serwera X: %s"
+
msgstr ""
"Project-Id-Version: openbox 3.4\n"
"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
-"POT-Creation-Date: 2007-05-21 00:08-0400\n"
-"PO-Revision-Date: 2007-05-06 13:44+0200\n"
+"POT-Creation-Date: 2007-05-21 15:39+0200\n"
+"PO-Revision-Date: 2007-05-22 00:29+0200\n"
"Last-Translator: Mikael Magnusson <mikachu@icculus.org>\n"
"Language-Team: None\n"
"MIME-Version: 1.0\n"
#: openbox/action.c:954
#, c-format
msgid "Invalid action '%s' requested. No such action exists."
-msgstr "Ogiltig action '%s' efterfrågades, men finns inte."
+msgstr "Ogiltig action '%s' efterfrågades, men den finns inte."
#: openbox/action.c:957
#, c-format
#: openbox/client_list_combined_menu.c:102 openbox/client_list_menu.c:104
msgid "Go there..."
-msgstr "Gå dit"
+msgstr "Gå dit..."
#: openbox/client_list_combined_menu.c:148
msgid "Windows"
#: openbox/client_menu.c:361
msgid "&Send to desktop"
-msgstr "&Skicka till"
+msgstr "&Skicka till skrivbord"
#: openbox/client_menu.c:365
msgid "Client menu"
#: openbox/client_menu.c:401
msgid "Un/&Decorate"
-msgstr "(Av)&Dekorera"
+msgstr "&Dekorationer"
#: openbox/client_menu.c:411
msgid "&Close"
#: openbox/openbox.c:148
msgid "Failed to open the display from the DISPLAY environment variable."
-msgstr "Kunde inte öppna en display från DISPLAY-miljövariabeln."
+msgstr "Kunde inte öppna en display från miljövariabeln DISPLAY."
#: openbox/openbox.c:179
msgid "Failed to initialize the render library."
#: openbox/openbox.c:187
msgid "Cannot set locale modifiers for the X server."
-msgstr ""
+msgstr "Kan inte sätta lokaliseringsmodifierare för X-servern."
#: openbox/openbox.c:248
msgid "Unable to find a valid config file, using some simple defaults"
-msgstr "Kunde inte hitta en giltig konfiguration, använder standardvärden"
+msgstr "Kunde inte hitta en giltig konfigurationsfil, använder enkla standardvärden"
#: openbox/openbox.c:274
msgid "Unable to load a theme."
#: openbox/openbox.c:461 openbox/openbox.c:463
msgid "Copyright (c)"
-msgstr ""
+msgstr "Copyright (c)"
#: openbox/openbox.c:472
msgid "Syntax: openbox [options]\n"
#: openbox/openbox.c:477
msgid " --sm-disable Disable connection to the session manager\n"
-msgstr " --sm-disable Avaktivera anslutning till sessions-hanteraren\n"
+msgstr " --sm-disable Avaktivera anslutning till sessionshanteraren\n"
#: openbox/openbox.c:478
msgid ""
#: openbox/openbox.c:485
msgid " --debug-xinerama Split the display into fake xinerama screens\n"
-msgstr " --debug-xinerama Dela skärmen i fejkade xinerama-skärmar\n"
+msgstr " --debug-xinerama Dela skärmen i simulerade xinerama-skärmar\n"
#: openbox/openbox.c:486
#, c-format
#: openbox/translate.c:58
#, c-format
msgid "Invalid modifier key '%s' in key/mouse binding"
-msgstr "Ogiltig modifikationstangent '%s' i tangent/musbindning"
+msgstr "Ogiltig modifikationstangent '%s' i tangent-/musbindning"
#: openbox/translate.c:135
#, c-format
#: openbox/xerror.c:39
#, c-format
msgid "X Error: %s"
-msgstr "X Fel: %s"
+msgstr "X-fel: %s"