all repos — openbox @ 308478e4a5f4dc76d69395dda8a9bc42cb69eec4

openbox fork - make it a bit more like ryudo

Merge branch 'backport' into work

Conflicts:
	openbox/actions/desktop.c
	openbox/client.c
	openbox/event.c
	openbox/extensions.c
	openbox/popup.c
	openbox/screen.c
	parser/parse.c
Mikael Magnusson mikachu@gmail.com
commit

308478e4a5f4dc76d69395dda8a9bc42cb69eec4

parent

3f72b9d67f21781e513a9c058e8624b8b86b92ea

M configure.acconfigure.ac

@@ -94,7 +94,7 @@ if test "$SED" = "no"; then

AC_MSG_ERROR([The program "sed" is not available. This program is required to build Openbox.]) fi -PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.6.0]) +PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.14.0]) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS)
M data/menu.xsddata/menu.xsd

@@ -2,60 +2,214 @@ <?xml version="1.0" encoding="UTF-8"?>

<!-- XML Schema for the Openbox window manager menu file --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" +<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" + "http://www.w3.org/2001/XMLSchema.dtd" [ +<!ATTLIST schema xmlns:ob CDATA #IMPLIED> +<!ENTITY % p "xsd:"> +<!ENTITY % s ":xsd"> +]> + +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://openbox.org/3.4/menu" xmlns:ob="http://openbox.org/3.4/menu" - elementFormDefault="qualified"> + elementFormDefault="qualified" + attributeFormDefault="unqualified"> <!-- root node --> - <xs:element name="openbox_menu"> - <xs:complexType mixed="false"> - <xs:sequence maxOccurs="unbounded" minOccurs="1"> - <xs:element name="menu" type="ob:menu"/> - </xs:sequence> - </xs:complexType> - </xs:element> + <xsd:element name="openbox_menu"> + <xsd:complexType mixed="false"> + <xsd:sequence maxOccurs="unbounded" minOccurs="1"> + <xsd:element name="menu" type="ob:menu"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> <!-- complex types --> - <xs:complexType name="menu"> - <xs:choice maxOccurs="unbounded" minOccurs="0"> - <xs:element maxOccurs="unbounded" minOccurs="0" name="menu" type="ob:menu"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="item" type="ob:item"/> - <xs:element maxOccurs="unbounded" minOccurs="0" name="separator" type="ob:empty"/> - </xs:choice> - <xs:attribute name="label" type="xs:string" use="optional"/> - <xs:attribute name="execute" type="xs:string" use="optional"/> - <xs:attribute name="id" type="xs:string" use="required"/> - </xs:complexType> - <xs:complexType name="empty"> - <xs:complexContent> - <xs:restriction base="xs:anyType"/> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="item"> - <xs:sequence> - <xs:element minOccurs="0" name="action"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" name="execute" type="xs:string"/> - </xs:sequence> - <xs:attribute name="name" type="ob:actionname" use="required"/> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="label" type="xs:string" use="required"/> - </xs:complexType> + <!-- menu --> + <xsd:complexType name="menu"> + <xsd:choice maxOccurs="unbounded" minOccurs="0"> + <xsd:element name="menu" type="ob:menu"/> + <xsd:element name="item" type="ob:item"/> + <xsd:element name="separator" type="ob:separator"/> + </xsd:choice> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + <xsd:attribute name="execute" type="xsd:string" use="optional"/> + <xsd:attribute name="id" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- separator --> + <xsd:complexType name="separator"> + <xsd:attribute name="label" type="xsd:string" use="optional"/> + </xsd:complexType> + + <!-- empty --> + <xsd:complexType name="empty"> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"/> + </xsd:complexContent> + </xsd:complexType> + + <!-- item --> + <xsd:complexType name="item"> + <xsd:sequence> + <xsd:element name="action"> + <xsd:complexType> + <xsd:all> + <xsd:element minOccurs="0" name="execute" type="xsd:string"/> + <xsd:element minOccurs="0" name="startupnotify" type="ob:notify"/> + <xsd:element minOccurs="0" name="command" type="xsd:string"/> + <xsd:element minOccurs="0" name="allDesktops" type="ob:bool"/> + <xsd:element minOccurs="0" name="menu" type="xsd:string"/> + <xsd:element minOccurs="0" name="delta" type="xsd:integer"/> + <xsd:element minOccurs="0" name="x" type="xsd:integer"/> + <xsd:element minOccurs="0" name="y" type="xsd:integer"/> + <xsd:element minOccurs="0" name="left" type="xsd:integer"/> + <xsd:element minOccurs="0" name="right" type="xsd:integer"/> + <xsd:element minOccurs="0" name="up" type="xsd:integer"/> + <xsd:element minOccurs="0" name="down" type="xsd:integer"/> + <xsd:element minOccurs="0" name="desktop"> + <xsd:simpleType> + <xsd:union memberTypes="xsd:integer ob:bool"/> + </xsd:simpleType> + </xsd:element> + <xsd:element minOccurs="0" name="edge" type="xsd:string"/> + <xsd:element minOccurs="0" name="wrap" type="ob:bool"/> + <xsd:element minOccurs="0" name="follow" type="ob:bool"/> + <xsd:element minOccurs="0" name="dialog" type="ob:bool"/> + <xsd:element minOccurs="0" name="panels" type="ob:bool"/> + <xsd:element minOccurs="0" name="here" type="ob:bool"/> + <xsd:element minOccurs="0" name="linear" type="ob:bool"/> + <xsd:element minOccurs="0" name="group" type="ob:bool"/> + </xsd:all> + <xsd:attribute name="name" type="ob:actionname" use="required"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="label" type="xsd:string" use="required"/> + </xsd:complexType> + + <!-- startupnotify --> + <xsd:complexType name="startupnotify"> + <xsd:all> + <xsd:element minOccurs="1" name="enabled" type="xsd:string"/> + <xsd:element minOccurs="0" name="icon" type="xsd:string"/> + <xsd:element minOccurs="0" name="wmclass" type="xsd:string"/> + </xsd:all> + </xsd:complexType> + <xsd:simpleType name="bool"> + <!-- this is copied to maximization. Keep that in sync. --> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="yes"/> + <xsd:enumeration value="no"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="notify"> + <xsd:all> + <xsd:element minOccurs="0" name="enabled" type="ob:bool"/> + <xsd:element minOccurs="0" name="name" type="xsd:string"/> + <xsd:element minOccurs="0" name="icon" type="xsd:string"/> + </xsd:all> + </xsd:complexType> <!-- simple types / restrictions --> - <xs:simpleType name="actionname"> - <xs:restriction base="xs:string"> - <xs:enumeration value="Execute"/> - <xs:enumeration value="Restart"/> - <xs:enumeration value="Reconfigure"/> - <xs:enumeration value="Exit"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> + <xsd:simpleType name="actionname"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="[Aa][Cc][Tt][Ii][Vv][Aa][Tt][Ee]"/> + <xsd:pattern value="[Bb][Rr][Ee][Aa][Kk][Cc][Hh][Rr][Oo][Oo][Tt]"/> + <xsd:pattern value="[Cc][Ll][Oo][Ss][Ee]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Dd][Oo][Ww][Nn]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Ll][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Ll][Ee][Ff][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Nn][Ee][Xx][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Pp][Rr][Ee][Vv][Ii][Oo][Uu][Ss]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Rr][Ii][Gg][Hh][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Uu][Pp]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Nn][Oo][Rr][Tt][Hh][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Nn][Oo][Rr][Tt][Hh][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ss][Oo][Uu][Tt][Hh][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ss][Oo][Uu][Tt][Hh][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Ee][Xx][Ee][Cc][Uu][Tt][Ee]"/> + <xsd:pattern value="[Ee][Xx][Ii][Tt]"/> + <xsd:pattern value="[Ss][Ee][Ss][Ss][Ii][Oo][Nn][Ll][Oo][Gg][Oo][Uu][Tt]"/> + <xsd:pattern value="[Ff][Oo][Cc][Uu][Ss]"/> + <xsd:pattern value="[Ff][Oo][Cc][Uu][Ss][Tt][Oo][Bb][Oo][Tt][Tt][Oo][Mm]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Ii][Cc][Oo][Nn][Ii][Ff][Yy]"/> + <xsd:pattern value="[Kk][Ii][Ll][Ll]"/> + <xsd:pattern value="[Ll][Oo][Ww][Ee][Rr]"/> + <xsd:pattern value="[Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Ff][Uu][Ll][Ll]"/> + <xsd:pattern value="[Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Cc][Ee][Nn][Tt][Ee][Rr]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Nn][Ee][Xx][Tt][Ww][Ii][Nn][Dd][Oo][Ww]"/> + <xsd:pattern value="[Pp][Rr][Ee][Vv][Ii][Oo][Uu][Ss][Ww][Ii][Nn][Dd][Oo][Ww]"/> + <xsd:pattern value="[Rr][Aa][Ii][Ss][Ee]"/> + <xsd:pattern value="[Rr][Aa][Ii][Ss][Ee][Ll][Oo][Ww][Ee][Rr]"/> + <xsd:pattern value="[Rr][Ee][Cc][Oo][Nn][Ff][Ii][Gg][Uu][Rr][Ee]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Rr][Ee][Ss][Tt][Aa][Rr][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Bb][Oo][Tt][Tt][Oo][Mm][Ll][Aa][Yy][Ee][Rr]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Dd][Oo][Ww][Nn]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Ll][Ee][Ff][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Nn][Ee][Xx][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Pp][Rr][Ee][Vv][Ii][Oo][Uu][Ss]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Rr][Ii][Gg][Hh][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Uu][Pp]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Nn][Oo][Rr][Mm][Aa][Ll][Ll][Aa][Yy][Ee][Rr]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Tt][Oo][Pp][Ll][Aa][Yy][Ee][Rr]"/> + <xsd:pattern value="[Ss][Hh][Aa][Dd][Ee]"/> + <xsd:pattern value="[Ss][Hh][Aa][Dd][Ee][Ll][Oo][Ww][Ee][Rr]"/> + <xsd:pattern value="[Ss][Hh][Oo][Ww][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Ss][Hh][Oo][Ww][Mm][Ee][Nn][Uu]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Aa][Ll][Ww][Aa][Yy][Ss][Oo][Nn][Bb][Oo][Tt][Tt][Oo][Mm]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Aa][Ll][Ww][Aa][Yy][Ss][Oo][Nn][Tt][Oo][Pp]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Dd][Ee][Cc][Oo][Rr][Aa][Tt][Ii][Oo][Nn][Ss]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Dd][Oo][Cc][Kk][Aa][Uu][Tt][Oo][Hh][Ii][Dd][Ee]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Ff][Uu][Ll][Ll][Ss][Cc][Rr][Ee][Ee][Nn]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Ff][Uu][Ll][Ll]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Oo][Mm][Nn][Ii][Pp][Rr][Ee][Ss][Ee][Nn][Tt]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Ss][Hh][Aa][Dd][Ee]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Ss][Hh][Oo][Ww][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Uu][Nn][Ff][Oo][Cc][Uu][Ss]"/> + <xsd:pattern value="[Uu][Nn][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Ff][Uu][Ll][Ll]"/> + <xsd:pattern value="[Uu][Nn][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Uu][Nn][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Uu][Nn][Ss][Hh][Aa][Dd][Ee]"/> + <xsd:pattern value="[Uu][Nn][Ss][Hh][Aa][Dd][Ee][Rr][Aa][Ii][Ss][Ee]"/> + <xsd:pattern value="[Uu][Nn][Ss][Hh][Oo][Ww][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema>
M data/rc.xsddata/rc.xsd

@@ -2,10 +2,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- -*- nxml -*- -->

<!-- XML Schema for the Openbox window manager configuration file --> +<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" + "http://www.w3.org/2001/XMLSchema.dtd" [ +<!ATTLIST schema xmlns:ob CDATA #IMPLIED> +<!ENTITY % p "xsd:"> +<!ENTITY % s ":xsd"> +]> + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://openbox.org/4.0/rc" xmlns:ob="http://openbox.org/4.0/rc" - elementFormDefault="qualified"> + elementFormDefault="qualified" + attributeFormDefault="unqualified"> <!-- root node -->

@@ -14,17 +22,20 @@ <xsd:annotation>

<xsd:documentation>all these elements are expected in a openbox config file</xsd:documentation> </xsd:annotation> <xsd:complexType> - <xsd:element name="resistance" type="ob:resistance"/> - <xsd:element name="focus" type="ob:focus"/> - <xsd:element name="placement" type="ob:placement"/> - <xsd:element name="theme" type="ob:theme"/> - <xsd:element name="desktops" type="ob:desktops"/> - <xsd:element name="resize" type="ob:resize"/> - <xsd:element name="dock" type="ob:dock"/> - <xsd:element name="keyboard" type="ob:keyboard"/> - <xsd:element name="mouse" type="ob:mouse"/> - <xsd:element name="menu" type="ob:menu"/> - <xsd:element name="applications" type="ob:applications"/> + <xsd:all> + <xsd:element name="resistance" type="ob:resistance"/> + <xsd:element name="focus" type="ob:focus"/> + <xsd:element name="placement" type="ob:placement"/> + <xsd:element name="theme" type="ob:theme"/> + <xsd:element name="desktops" type="ob:desktops"/> + <xsd:element name="resize" type="ob:resize"/> + <xsd:element minOccurs="0" name="margins" type="ob:margins"/> + <xsd:element name="dock" type="ob:dock"/> + <xsd:element name="keyboard" type="ob:keyboard"/> + <xsd:element name="mouse" type="ob:mouse"/> + <xsd:element name="menu" type="ob:menu"/> + <xsd:element name="applications" type="ob:applications"/> + </xsd:all> </xsd:complexType> </xsd:element> <!--

@@ -34,105 +45,136 @@ <xsd:complexType name="resistance">

<xsd:annotation> <xsd:documentation>defines behaviour of windows when close to each other or the screen edge</xsd:documentation> </xsd:annotation> - <xsd:element minOccurs="0" name="strength" type="xsd:integer"/> - <xsd:element minOccurs="0" name="screen_edge_strength" type="xsd:integer"/> + <xsd:all> + <xsd:element minOccurs="0" name="strength" type="xsd:integer"/> + <xsd:element minOccurs="0" name="screen_edge_strength" type="xsd:integer"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="focus"> <xsd:annotation> <xsd:documentation>defines aspects of window focus</xsd:documentation> </xsd:annotation> - <xsd:element minOccurs="0" name="focusNew" type="ob:bool"/> - <xsd:element minOccurs="0" name="focusLast" type="ob:bool"/> - <xsd:element minOccurs="0" name="followMouse" type="ob:bool"/> - <xsd:element minOccurs="0" name="underMouse" type="ob:bool"/> - <xsd:element minOccurs="0" name="focusDelay" type="xsd:integer"/> - <xsd:element minOccurs="0" name="raiseOnFocus" type="ob:bool"/> + <xsd:all> + <xsd:element minOccurs="0" name="focusNew" type="ob:bool"/> + <xsd:element minOccurs="0" name="focusLast" type="ob:bool"/> + <xsd:element minOccurs="0" name="followMouse" type="ob:bool"/> + <xsd:element minOccurs="0" name="underMouse" type="ob:bool"/> + <xsd:element minOccurs="0" name="focusDelay" type="xsd:integer"/> + <xsd:element minOccurs="0" name="raiseOnFocus" type="ob:bool"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="placement"> <xsd:annotation> <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="monitor" type="ob:placementmonitor"/> + <xsd:sequence> + <xsd:element minOccurs="0" name="policy" type="ob:placementpolicy"/> + <xsd:element minOccurs="0" name="center" type="ob:bool"/> + <xsd:element minOccurs="0" name="monitor" type="ob:placementmonitor"/> + </xsd:sequence> </xsd:complexType> <xsd:complexType name="margins"> <xsd:annotation> <xsd:documentation>defines desktop margins</xsd:documentation> </xsd:annotation> - <xsd:element minOccurs="0" name="top" type="xsd:integer"/> - <xsd:element minOccurs="0" name="left" type="xsd:integer"/> - <xsd:element minOccurs="0" name="right" type="xsd:integer"/> - <xsd:element minOccurs="0" name="bottom" type="xsd:integer"/> + <xsd:all> + <xsd:element minOccurs="0" name="top" type="xsd:integer"/> + <xsd:element minOccurs="0" name="left" type="xsd:integer"/> + <xsd:element minOccurs="0" name="right" type="xsd:integer"/> + <xsd:element minOccurs="0" name="bottom" type="xsd:integer"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="theme"> - <xsd:element minOccurs="0" name="name" type="xsd:string"/> - <xsd:element minOccurs="0" name="titleLayout" type="xsd:string"/> - <xsd:element minOccurs="0" name="keepBorder" type="ob:bool"/> - <xsd:element minOccurs="0" name="animateIconify" type="ob:bool"/> - <xsd:element minOccurs="0" name="font" type="ob:font"/> + <xsd:sequence> + <xsd:element minOccurs="0" name="name" type="xsd:string"/> + <xsd:element minOccurs="0" name="titleLayout" type="xsd:string"/> + <xsd:element minOccurs="0" name="keepBorder" type="ob:bool"/> + <xsd:element minOccurs="0" name="animateIconify" type="ob:bool"/> + <xsd:element minOccurs="0" maxOccurs="unbounded" name="font" type="ob:font"/> + </xsd:sequence> </xsd:complexType> <xsd:complexType name="font"> - <xsd:element minOccurs="0" name="name" type="xsd:string"/> - <xsd:element minOccurs="0" name="size" type="xsd:integer"/> - <xsd:element minOccurs="0" name="weight" type="ob:fontweight"/> - <xsd:element minOccurs="0" name="slant" type="ob:fontslant"/> + <xsd:all> + <xsd:element minOccurs="0" name="name" type="xsd:string"/> + <xsd:element minOccurs="0" name="size" type="xsd:integer"/> + <xsd:element minOccurs="0" name="weight" type="ob:fontweight"/> + <xsd:element minOccurs="0" name="slant" type="ob:fontslant"/> + </xsd:all> <xsd:attribute name="place" type="ob:fontplace" use="required"/> </xsd:complexType> <xsd:complexType name="desktops"> <xsd:annotation> <xsd:documentation>defines the number and names of desktops</xsd:documentation> </xsd:annotation> - <xsd:element minOccurs="0" name="number" type="xsd:integer"/> - <xsd:element minOccurs="0" name="firstdesk" type="xsd:integer"/> - <xsd:element minOccurs="0" name="names"> - <xsd:complexType> - <xsd:element maxOccurs="unbounded" name="name" type="xsd:string"/> - </xsd:complexType> - </xsd:element> - <xsd:element minOccurs="0" name="popupTime" type="xsd:integer"/> + <xsd:all> + <xsd:element minOccurs="0" name="number" type="xsd:integer"/> + <xsd:element minOccurs="0" name="firstdesk" type="xsd:integer"/> + <xsd:element minOccurs="0" name="names"> + <xsd:complexType> + <xsd:sequence> + <xsd:element minOccurs="0" maxOccurs="unbounded" name="name" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element minOccurs="0" name="popupTime" type="xsd:integer"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="resize"> - <xsd:element minOccurs="0" name="drawContents" type="ob:bool"/> - <xsd:element minOccurs="0" name="popupShow" type="ob:popupshow"/> - <xsd:element minOccurs="0" name="popupPosition" type="ob:popupposition"/> - <xsd:element minOccurs="0" name="popupPosition" type="ob:popupfixedposition"/> + <xsd:all> + <xsd:element minOccurs="0" name="drawContents" type="ob:bool"/> + <xsd:element minOccurs="0" name="popupShow" type="ob:popupshow"/> + <xsd:element minOccurs="0" name="popupPosition" type="ob:popupposition"/> + <xsd:element minOccurs="0" name="popupFixedPosition" type="ob:popupfixedposition"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="popupfixedposition"> - <xsd:element minOccurs="0" name="x" type="ob:center_or_int"/> - <xsd:element minOccurs="0" name="y" type="ob:center_or_int"/> + <xsd:all> + <xsd:element minOccurs="0" name="x" type="ob:center_or_int"/> + <xsd:element minOccurs="0" name="y" type="ob:center_or_int"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="dock"> - <xsd:element minOccurs="0" name="position" type="ob:dock_position"/> - <xsd:element minOccurs="0" name="floatingX" type="xsd:integer"/> - <xsd:element minOccurs="0" name="floatingY" type="xsd:integer"/> - <xsd:element minOccurs="0" name="noStrut" type="ob:bool"/> - <xsd:element minOccurs="0" name="stacking" type="ob:layer"/> - <xsd:element minOccurs="0" name="direction" type="ob:direction"/> - <xsd:element minOccurs="0" name="autoHide" type="ob:bool"/> - <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/> - <xsd:element minOccurs="0" name="showDelay" type="xsd:integer"/> - <xsd:element minOccurs="0" name="moveButton" type="ob:button"/> + <xsd:all> + <xsd:element minOccurs="0" name="position" type="ob:dock_position"/> + <xsd:element minOccurs="0" name="floatingX" type="xsd:integer"/> + <xsd:element minOccurs="0" name="floatingY" type="xsd:integer"/> + <xsd:element minOccurs="0" name="noStrut" type="ob:bool"/> + <xsd:element minOccurs="0" name="stacking" type="ob:layer"/> + <xsd:element minOccurs="0" name="direction" type="ob:direction"/> + <xsd:element minOccurs="0" name="autoHide" type="ob:bool"/> + <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/> + <xsd:element minOccurs="0" name="showDelay" type="xsd:integer"/> + <xsd:element minOccurs="0" name="moveButton" type="ob:button"/> + </xsd:all> </xsd:complexType> <xsd:complexType name="action"> - <xsd:element minOccurs="0" name="execute" type="xsd:string"/> - <xsd:element minOccurs="0" name="command" type="xsd:string"/> - <xsd:element minOccurs="0" name="menu" type="xsd:string"/> - <xsd:element minOccurs="0" name="delta" type="xsd:integer"/> - <xsd:element minOccurs="0" name="x" type="xsd:integer"/> - <xsd:element minOccurs="0" name="y" type="xsd:integer"/> - <xsd:element minOccurs="0" name="left" type="xsd:integer"/> - <xsd:element minOccurs="0" name="right" type="xsd:integer"/> - <xsd:element minOccurs="0" name="up" type="xsd:integer"/> - <xsd:element minOccurs="0" name="down" type="xsd:integer"/> - <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/> - <xsd:element minOccurs="0" name="wrap" type="ob:bool"/> - <xsd:element minOccurs="0" name="follow" type="ob:bool"/> - <xsd:element minOccurs="0" name="dialog" type="ob:bool"/> - <xsd:element minOccurs="0" name="panels" type="ob:bool"/> - <xsd:element minOccurs="0" name="here" type="ob:bool"/> - <xsd:element minOccurs="0" name="linear" type="ob:bool"/> - <xsd:element minOccurs="0" name="group" type="ob:bool"/> + <xsd:all> + <xsd:element minOccurs="0" name="execute" type="xsd:string"/> + <xsd:element minOccurs="0" name="startupnotify" type="ob:notify"/> + <xsd:element minOccurs="0" name="command" type="xsd:string"/> + <xsd:element minOccurs="0" name="allDesktops" type="ob:bool"/> + <xsd:element minOccurs="0" name="menu" type="xsd:string"/> + <xsd:element minOccurs="0" name="delta" type="xsd:integer"/> + <xsd:element minOccurs="0" name="x" type="xsd:integer"/> + <xsd:element minOccurs="0" name="y" type="xsd:integer"/> + <xsd:element minOccurs="0" name="left" type="xsd:integer"/> + <xsd:element minOccurs="0" name="right" type="xsd:integer"/> + <xsd:element minOccurs="0" name="up" type="xsd:integer"/> + <xsd:element minOccurs="0" name="down" type="xsd:integer"/> + <xsd:element minOccurs="0" name="desktop"> + <xsd:simpleType> + <xsd:union memberTypes="xsd:integer ob:bool"/> + </xsd:simpleType> + </xsd:element> + <xsd:element minOccurs="0" name="edge" type="xsd:string"/> + <xsd:element minOccurs="0" name="wrap" type="ob:bool"/> + <xsd:element minOccurs="0" name="follow" type="ob:bool"/> + <xsd:element minOccurs="0" name="dialog" type="ob:bool"/> + <xsd:element minOccurs="0" name="panels" type="ob:bool"/> + <xsd:element minOccurs="0" name="here" type="ob:bool"/> + <xsd:element minOccurs="0" name="linear" type="ob:bool"/> + <xsd:element minOccurs="0" name="group" type="ob:bool"/> + </xsd:all> <xsd:attribute name="name" type="ob:actionname" use="required"/> </xsd:complexType> <xsd:complexType name="keybind">

@@ -144,51 +186,65 @@ <xsd:attribute name="chroot" type="ob:bool"/>

<xsd:attribute name="key" type="ob:keyname" use="required"/> </xsd:complexType> <xsd:complexType name="keyboard"> - <xsd:element minOccurs="0" name="chainQuitKey" type="ob:keyname"/> - <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/> + <xsd:sequence> + <xsd:element minOccurs="0" name="chainQuitKey" type="ob:keyname"/> + <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/> + </xsd:sequence> </xsd:complexType> <xsd:complexType name="mousebind"> - <xsd:element maxOccurs="unbounded" name="action" type="ob:action"/> + <xsd:sequence> + <xsd:element maxOccurs="unbounded" name="action" type="ob:action"/> + </xsd:sequence> <xsd:attribute name="action" type="ob:mouseaction" use="required"/> <xsd:attribute name="button" type="ob:button" use="required"/> </xsd:complexType> <xsd:complexType name="context"> - <xsd:element maxOccurs="unbounded" name="mousebind" type="ob:mousebind"/> + <xsd:sequence> + <xsd:element maxOccurs="unbounded" name="mousebind" type="ob:mousebind"/> + </xsd:sequence> <xsd:attribute name="name" type="ob:contextname" use="required"/> </xsd:complexType> <xsd:complexType name="mouse"> - <xsd:element minOccurs="0" name="dragThreshold" type="xsd:integer"/> - <xsd:element minOccurs="0" name="doubleClickTime" type="xsd:integer"/> - <xsd:element minOccurs="0" name="screenEdgeWarpTime" type="xsd:integer"/> - <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/> + <xsd:sequence> + <xsd:element minOccurs="0" name="dragThreshold" type="xsd:integer"/> + <xsd:element minOccurs="0" name="doubleClickTime" type="xsd:integer"/> + <xsd:element minOccurs="0" name="screenEdgeWarpTime" type="xsd:integer"/> + <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/> + </xsd:sequence> </xsd:complexType> <xsd:complexType name="menu"> - <xsd:element maxOccurs="unbounded" name="file" type="xsd:string"/> - <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/> - <xsd:element minOccurs="0" name="middle" type="ob:bool"/> - <xsd:element minOccurs="0" name="submenuShowDelay" type="xsd:integer"/> - <xsd:element minOccurs="0" name="applicationIcons" type="ob:bool"/> - <xsd:element minOccurs="0" name="manageDesktops" type="ob:bool"/> + <xsd:sequence> + <xsd:element maxOccurs="unbounded" name="file" type="xsd:string"/> + <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/> + <xsd:element minOccurs="0" name="middle" type="ob:bool"/> + <xsd:element minOccurs="0" name="submenuShowDelay" type="xsd:integer"/> + <xsd:element minOccurs="0" name="applicationIcons" type="ob:bool"/> + <xsd:element minOccurs="0" name="manageDesktops" type="ob:bool"/> + </xsd:sequence> </xsd:complexType> <xsd:complexType name="window_position"> - <xsd:element name="x" type="ob:center_or_int"/> - <xsd:element name="y" type="ob:center_or_int"/> - <xsd:element name="monitor" type="ob:mouse_or_int"/> - <xsd:element minOccurs="0" name="head" type="xsd:string"/> + <xsd:all> + <xsd:element name="x" type="ob:center_or_int"/> + <xsd:element name="y" type="ob:center_or_int"/> + <xsd:element minOccurs="0" name="monitor" type="ob:mouse_or_int"/> + <xsd:element minOccurs="0" name="head" type="xsd:string"/> + </xsd:all> <xsd:attribute name="force" type="ob:bool"/> </xsd:complexType> <xsd:complexType name="application"> - <xsd:element minOccurs="0" name="decor" type="xsd:bool"/> - <xsd:element minOccurs="0" name="shade" type="ob:bool"/> - <xsd:element minOccurs="0" name="position" type="ob:window_position"/> - <xsd:element minOccurs="0" name="focus" type="xsd:string"/> - <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/> - <xsd:element minOccurs="0" name="layer" type="ob:layer"/> - <xsd:element minOccurs="0" name="iconic" type="ob:bool"/> - <xsd:element minOccurs="0" name="skip_pager" type="ob:bool"/> - <xsd:element minOccurs="0" name="skip_taskbar" type="ob:bool"/> - <xsd:element minOccurs="0" name="fullscreen" type="ob:bool"/> - <xsd:element minOccurs="0" name="maximized" type="ob:maximization"/> + <xsd:all> + <xsd:element minOccurs="0" name="decor" type="ob:bool"/> + <xsd:element minOccurs="0" name="shade" type="ob:bool"/> + <xsd:element minOccurs="0" name="position" type="ob:window_position"/> + <xsd:element minOccurs="0" name="focus" type="xsd:string"/> + <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/> + <xsd:element minOccurs="0" name="layer" type="ob:layer"/> + <xsd:element minOccurs="0" name="iconic" type="ob:bool"/> + <xsd:element minOccurs="0" name="skip_pager" type="ob:bool"/> + <xsd:element minOccurs="0" name="skip_taskbar" type="ob:bool"/> + <xsd:element minOccurs="0" name="fullscreen" type="ob:bool"/> + <xsd:element minOccurs="0" name="maximized" type="ob:maximization"/> + </xsd:all> <xsd:attribute name="role" type="xsd:string"/> <xsd:attribute name="type" type="ob:clienttype"/> <!-- at least one of these must be present -->

@@ -196,61 +252,112 @@ <xsd:attribute name="name" type="xsd:string"/>

<xsd:attribute name="class" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="applications"> - <xsd:element minOccurs="0" maxOccurs="unbounded" name="application" type="ob:application"/> + <xsd:sequence> + <xsd:element minOccurs="0" maxOccurs="unbounded" name="application" type="ob:application"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="notify"> + <xsd:all> + <xsd:element minOccurs="0" name="enabled" type="ob:bool"/> + <xsd:element minOccurs="0" name="name" type="xsd:string"/> + <xsd:element minOccurs="0" name="icon" type="xsd:string"/> + </xsd:all> </xsd:complexType> <!-- simple types / restrictions --> <xsd:simpleType name="actionname"> <xsd:restriction base="xsd:string"> - <xsd:enumeration value="AddDesktop"/> - <xsd:enumeration value="BreakChroot"/> - <xsd:enumeration value="Close"/> - <xsd:enumeration value="Debug"/> - <xsd:enumeration value="Decorate"/> - <xsd:enumeration value="DirectionalCycleWindows"/> - <xsd:enumeration value="DirectionalTargetWindow"/> - <xsd:enumeration value="Execute"/> - <xsd:enumeration value="Exit"/> - <xsd:enumeration value="Focus"/> - <xsd:enumeration value="FocusToBottom"/> - <xsd:enumeration value="GoToDesktop"/> - <xsd:enumeration value="GrowToEdge"/> - <xsd:enumeration value="Iconify"/> - <xsd:enumeration value="If"/> - <xsd:enumeration value="Kill"/> - <xsd:enumeration value="Lower"/> - <xsd:enumeration value="Maximize"/> - <xsd:enumeration value="Move"/> - <xsd:enumeration value="MoveRelative"/> - <xsd:enumeration value="MoveResizeTo"/> - <xsd:enumeration value="MoveToEdge"/> - <xsd:enumeration value="NextWindow"/> - <xsd:enumeration value="PreviousWindow"/> - <xsd:enumeration value="Raise"/> - <xsd:enumeration value="RaiseLower"/> - <xsd:enumeration value="Reconfigure"/> - <xsd:enumeration value="RemoveDesktop"/> - <xsd:enumeration value="Resize"/> - <xsd:enumeration value="ResizeRelative"/> - <xsd:enumeration value="Restart"/> - <xsd:enumeration value="SendToDesktop"/> - <xsd:enumeration value="SendToLayer"/> - <xsd:enumeration value="Shade"/> - <xsd:enumeration value="ShowMenu"/> - <xsd:enumeration value="ToggleAlwaysOnBottom"/> - <xsd:enumeration value="ToggleAlwaysOnTop"/> - <xsd:enumeration value="ToggleDecorations"/> - <xsd:enumeration value="ToggleDockAutoHide"/> - <xsd:enumeration value="ToggleFullscreen"/> - <xsd:enumeration value="ToggleMaximize"/> - <xsd:enumeration value="ToggleOmnipresent"/> - <xsd:enumeration value="ToggleShade"/> - <xsd:enumeration value="ToggleShowDesktop"/> - <xsd:enumeration value="Undecorate"/> - <xsd:enumeration value="Unfocus"/> - <xsd:enumeration value="Unmaximize"/> - <xsd:enumeration value="Unshade"/> + <xsd:pattern value="[Ii][Ff]"/> + <xsd:pattern value="[Aa][Cc][Tt][Ii][Vv][Aa][Tt][Ee]"/> + <xsd:pattern value="[Bb][Rr][Ee][Aa][Kk][Cc][Hh][Rr][Oo][Oo][Tt]"/> + <xsd:pattern value="[Cc][Ll][Oo][Ss][Ee]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Dd][Oo][Ww][Nn]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Ll][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Ll][Ee][Ff][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Nn][Ee][Xx][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Pp][Rr][Ee][Vv][Ii][Oo][Uu][Ss]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Rr][Ii][Gg][Hh][Tt]"/> + <xsd:pattern value="[Dd][Ee][Ss][Kk][Tt][Oo][Pp][Uu][Pp]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Nn][Oo][Rr][Tt][Hh][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Nn][Oo][Rr][Tt][Hh][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ss][Oo][Uu][Tt][Hh][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ss][Oo][Uu][Tt][Hh][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Dd][Ii][Rr][Ee][Cc][Tt][Ii][Oo][Nn][Aa][Ll][Ff][Oo][Cc][Uu][Ss][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Ee][Xx][Ee][Cc][Uu][Tt][Ee]"/> + <xsd:pattern value="[Ee][Xx][Ii][Tt]"/> + <xsd:pattern value="[Ss][Ee][Ss][Ss][Ii][Oo][Nn][Ll][Oo][Gg][Oo][Uu][Tt]"/> + <xsd:pattern value="[Ff][Oo][Cc][Uu][Ss]"/> + <xsd:pattern value="[Ff][Oo][Cc][Uu][Ss][Tt][Oo][Bb][Oo][Tt][Tt][Oo][Mm]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Gg][Rr][Oo][Ww][Tt][Oo][Ee][Dd][Gg][Ee][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Ii][Cc][Oo][Nn][Ii][Ff][Yy]"/> + <xsd:pattern value="[Kk][Ii][Ll][Ll]"/> + <xsd:pattern value="[Ll][Oo][Ww][Ee][Rr]"/> + <xsd:pattern value="[Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Ff][Uu][Ll][Ll]"/> + <xsd:pattern value="[Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Cc][Ee][Nn][Tt][Ee][Rr]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Ff][Rr][Oo][Mm][Ee][Dd][Gg][Ee][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Ee][Aa][Ss][Tt]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Nn][Oo][Rr][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Ss][Oo][Uu][Tt][Hh]"/> + <xsd:pattern value="[Mm][Oo][Vv][Ee][Tt][Oo][Ee][Dd][Gg][Ee][Ww][Ee][Ss][Tt]"/> + <xsd:pattern value="[Nn][Ee][Xx][Tt][Ww][Ii][Nn][Dd][Oo][Ww]"/> + <xsd:pattern value="[Pp][Rr][Ee][Vv][Ii][Oo][Uu][Ss][Ww][Ii][Nn][Dd][Oo][Ww]"/> + <xsd:pattern value="[Rr][Aa][Ii][Ss][Ee]"/> + <xsd:pattern value="[Rr][Aa][Ii][Ss][Ee][Ll][Oo][Ww][Ee][Rr]"/> + <xsd:pattern value="[Rr][Ee][Cc][Oo][Nn][Ff][Ii][Gg][Uu][Rr][Ee]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Rr][Ee][Ss][Ii][Zz][Ee][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Rr][Ee][Ss][Tt][Aa][Rr][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Bb][Oo][Tt][Tt][Oo][Mm][Ll][Aa][Yy][Ee][Rr]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Dd][Oo][Ww][Nn]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Ll][Ee][Ff][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Nn][Ee][Xx][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Pp][Rr][Ee][Vv][Ii][Oo][Uu][Ss]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Rr][Ii][Gg][Hh][Tt]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Dd][Ee][Ss][Kk][Tt][Oo][Pp][Uu][Pp]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Nn][Oo][Rr][Mm][Aa][Ll][Ll][Aa][Yy][Ee][Rr]"/> + <xsd:pattern value="[Ss][Ee][Nn][Dd][Tt][Oo][Tt][Oo][Pp][Ll][Aa][Yy][Ee][Rr]"/> + <xsd:pattern value="[Ss][Hh][Aa][Dd][Ee]"/> + <xsd:pattern value="[Ss][Hh][Aa][Dd][Ee][Ll][Oo][Ww][Ee][Rr]"/> + <xsd:pattern value="[Ss][Hh][Oo][Ww][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Ss][Hh][Oo][Ww][Mm][Ee][Nn][Uu]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Aa][Ll][Ww][Aa][Yy][Ss][Oo][Nn][Bb][Oo][Tt][Tt][Oo][Mm]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Aa][Ll][Ww][Aa][Yy][Ss][Oo][Nn][Tt][Oo][Pp]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Dd][Ee][Cc][Oo][Rr][Aa][Tt][Ii][Oo][Nn][Ss]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Dd][Oo][Cc][Kk][Aa][Uu][Tt][Oo][Hh][Ii][Dd][Ee]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Ff][Uu][Ll][Ll][Ss][Cc][Rr][Ee][Ee][Nn]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Ff][Uu][Ll][Ll]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Oo][Mm][Nn][Ii][Pp][Rr][Ee][Ss][Ee][Nn][Tt]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Ss][Hh][Aa][Dd][Ee]"/> + <xsd:pattern value="[Tt][Oo][Gg][Gg][Ll][Ee][Ss][Hh][Oo][Ww][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> + <xsd:pattern value="[Uu][Nn][Ff][Oo][Cc][Uu][Ss]"/> + <xsd:pattern value="[Uu][Nn][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Ff][Uu][Ll][Ll]"/> + <xsd:pattern value="[Uu][Nn][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Hh][Oo][Rr][Zz]"/> + <xsd:pattern value="[Uu][Nn][Mm][Aa][Xx][Ii][Mm][Ii][Zz][Ee][Vv][Ee][Rr][Tt]"/> + <xsd:pattern value="[Uu][Nn][Ss][Hh][Aa][Dd][Ee]"/> + <xsd:pattern value="[Uu][Nn][Ss][Hh][Aa][Dd][Ee][Rr][Aa][Ii][Ss][Ee]"/> + <xsd:pattern value="[Uu][Nn][Ss][Hh][Oo][Ww][Dd][Ee][Ss][Kk][Tt][Oo][Pp]"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="clienttype">

@@ -300,29 +407,14 @@ </xsd:restriction>

</xsd:simpleType> <xsd:simpleType name="button"> <xsd:restriction base="xsd:string"> - <!-- FIXME what??? --> - <xsd:enumeration value="Left"/> - <xsd:enumeration value="Middle"/> - <xsd:enumeration value="Right"/> - <xsd:enumeration value="Up"/> - <xsd:enumeration value="Down"/> - <xsd:enumeration value="A-Left"/> - <xsd:enumeration value="A-Middle"/> - <xsd:enumeration value="A-Right"/> - <xsd:enumeration value="A-Up"/> - <xsd:enumeration value="A-Down"/> - <xsd:enumeration value="C-A-Left"/> - <xsd:enumeration value="C-A-Middle"/> - <xsd:enumeration value="C-A-Right"/> - <xsd:enumeration value="C-A-Up"/> - <xsd:enumeration value="C-A-Down"/> + <xsd:pattern value="(([ACMSW]|Mod[1-5])-){,5}(Left|Middle|Right|Up|Down|Button[0-9]+)"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="center_or_int"> <xsd:restriction base="xsd:string"> <!-- ob: atoi($_) unless $_ eq 'center'; --> <!-- I think the regexp DTRT WRT atoi. --> - <xsd:pattern value="center|0|[1-9][0-9]*"/> + <xsd:pattern value="center|-?(0|[1-9][0-9]*)"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="mouse_or_int">

@@ -379,14 +471,14 @@ <xsd:simpleType name="keyname">

<xsd:restriction base="xsd:string"> <!-- FIXME: M, Mod2, Mod5 in addition to S, A, C --> <!-- how do we do all substrings and permutations? --> - <xsd:pattern value="(A-)?(S-)?(A-)?(C-)?(A-)?(S-)?(A-)?[a-zA-Z0-9]*"/> + <xsd:pattern value="(([ACMSW]|Mod[1-5])-){,5}[a-zA-Z0-9]*"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="layer"> <xsd:restriction base="xsd:string"> - <xsd:enumeration value="Above"/> - <xsd:enumeration value="Normal"/> - <xsd:enumeration value="Below"/> + <xsd:pattern value="[Aa][Bb][Oo][Vv][Ee]"/> + <xsd:pattern value="[Nn][Oo][Rr][Mm][Aa][Ll]"/> + <xsd:pattern value="[Bb][Ee][Ll][Oo][Ww]"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="maximization">
M obt/paths.cobt/paths.c

@@ -169,14 +169,16 @@ }

gchar *obt_paths_expand_tilde(const gchar *f) { - gchar **spl; gchar *ret; + GRegex *regex; if (!f) return NULL; - spl = g_strsplit(f, "~", 0); - ret = g_strjoinv(g_get_home_dir(), spl); - g_strfreev(spl); + + regex = g_regex_new("(?:^|(?<=[ \\t]))~(?=[/ \\t$])", G_REGEX_MULTILINE | G_REGEX_RAW, 0, NULL); + ret = g_regex_replace_literal(regex, f, -1, 0, g_get_home_dir(), 0, NULL); + g_regex_unref(regex); + return ret; }
M openbox/actions/desktop.copenbox/actions/desktop.c

@@ -21,7 +21,7 @@ gboolean linear;

gboolean wrap; ObDirection dir; } rel; - }; + } u; gboolean send; gboolean follow; } Options;

@@ -46,9 +46,9 @@

o = g_new0(Options, 1); /* don't go anywhere if theres no options given */ o->type = ABSOLUTE; - o->abs.desktop = screen_desktop; + o->u.abs.desktop = screen_desktop; /* wrap by default - it's handy! */ - o->rel.wrap = TRUE; + o->u.rel.wrap = TRUE; if ((n = obt_parse_find_node(node, "to"))) { gchar *s = obt_parse_node_string(n);

@@ -56,43 +56,43 @@ if (!g_ascii_strcasecmp(s, "last"))

o->type = LAST; else if (!g_ascii_strcasecmp(s, "next")) { o->type = RELATIVE; - o->rel.linear = TRUE; - o->rel.dir = OB_DIRECTION_EAST; + o->u.rel.linear = TRUE; + o->u.rel.dir = OB_DIRECTION_EAST; } else if (!g_ascii_strcasecmp(s, "previous")) { o->type = RELATIVE; - o->rel.linear = TRUE; - o->rel.dir = OB_DIRECTION_WEST; + o->u.rel.linear = TRUE; + o->u.rel.dir = OB_DIRECTION_WEST; } else if (!g_ascii_strcasecmp(s, "north") || !g_ascii_strcasecmp(s, "up")) { o->type = RELATIVE; - o->rel.dir = OB_DIRECTION_NORTH; + o->u.rel.dir = OB_DIRECTION_NORTH; } else if (!g_ascii_strcasecmp(s, "south") || !g_ascii_strcasecmp(s, "down")) { o->type = RELATIVE; - o->rel.dir = OB_DIRECTION_SOUTH; + o->u.rel.dir = OB_DIRECTION_SOUTH; } else if (!g_ascii_strcasecmp(s, "west") || !g_ascii_strcasecmp(s, "left")) { o->type = RELATIVE; - o->rel.dir = OB_DIRECTION_WEST; + o->u.rel.dir = OB_DIRECTION_WEST; } else if (!g_ascii_strcasecmp(s, "east") || !g_ascii_strcasecmp(s, "right")) { o->type = RELATIVE; - o->rel.dir = OB_DIRECTION_EAST; + o->u.rel.dir = OB_DIRECTION_EAST; } else { o->type = ABSOLUTE; - o->abs.desktop = atoi(s) - 1; + o->u.abs.desktop = atoi(s) - 1; } g_free(s); } if ((n = obt_parse_find_node(node, "wrap"))) - o->rel.wrap = obt_parse_node_bool(n); + o->u.rel.wrap = obt_parse_node_bool(n); return o; }

@@ -123,11 +123,11 @@ case LAST:

d = screen_last_desktop; break; case ABSOLUTE: - d = o->abs.desktop; + d = o->u.abs.desktop; break; case RELATIVE: d = screen_find_desktop(screen_desktop, - o->rel.dir, o->rel.wrap, o->rel.linear); + o->u.rel.dir, o->u.rel.wrap, o->u.rel.linear); break; }
M openbox/actions/moveresizeto.copenbox/actions/moveresizeto.c

@@ -6,7 +6,9 @@ #include <stdlib.h> /* for atoi */

enum { CURRENT_MONITOR = -1, - ALL_MONITORS = -2 + ALL_MONITORS = -2, + NEXT_MONITOR = -3, + PREV_MONITOR = -4 }; typedef struct {

@@ -84,6 +86,10 @@ gchar *s = obt_parse_node_string(n);

if (g_ascii_strcasecmp(s, "current") != 0) { if (!g_ascii_strcasecmp(s, "all")) o->monitor = ALL_MONITORS; + else if(!g_ascii_strcasecmp(s, "next")) + o->monitor = NEXT_MONITOR; + else if(!g_ascii_strcasecmp(s, "prev")) + o->monitor = PREV_MONITOR; else o->monitor = obt_parse_node_int(n) - 1; }

@@ -109,6 +115,9 @@ mon = o->monitor;

cmon = client_monitor(c); if (mon == CURRENT_MONITOR) mon = cmon; else if (mon == ALL_MONITORS) mon = SCREEN_AREA_ALL_MONITORS; + else if (mon == NEXT_MONITOR) mon = (cmon + 1 > screen_num_monitors - 1) ? 0 : (cmon + 1); + else if (mon == PREV_MONITOR) mon = (cmon == 0) ? (screen_num_monitors - 1) : (cmon - 1); + area = screen_area(c->desktop, mon, NULL); carea = screen_area(c->desktop, cmon, NULL);
M openbox/client.copenbox/client.c

@@ -233,7 +233,12 @@ client_get_all(self, TRUE);

ob_debug("Window type: %d", self->type); ob_debug("Window group: 0x%x", self->group?self->group->leader:0); - ob_debug("Window name: %s class: %s", self->name, self->class); + ob_debug("Window name: %s class: %s role: %s", self->name, self->class, self->role); + + /* per-app settings override stuff from client_get_all, and return the + settings for other uses too. the returned settings is a shallow copy, + that needs to be freed with g_free(). */ + settings = client_get_settings_state(self); /* 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

@@ -255,10 +260,6 @@ /* we've grabbed everything and set everything that we need to at mapping

time now */ grab_server(FALSE); - /* per-app settings override stuff from client_get_all, and return the - settings for other uses too. the returned settings is a shallow copy, - that needs to be freed with g_free(). */ - settings = client_get_settings_state(self); /* the session should get the last say though */ client_restore_session_state(self);

@@ -3538,18 +3539,37 @@ }

return NULL; } +static gboolean client_validate_unmap(ObClient *self, int n) +{ + XEvent e; + gboolean ret = TRUE; + + if (XCheckTypedWindowEvent(obt_display, self->window, UnmapNotify, &e)) { + if (n < self->ignore_unmaps) // ignore this one, but look for more + ret = client_validate_unmap(self, n+1); + else + ret = FALSE; // the window is going to become unmanaged + + /* put them back on the event stack so they end up in the same order */ + XPutBackEvent(obt_display, &e); + } + + return ret; +} + gboolean client_validate(ObClient *self) { XEvent e; XSync(obt_display, FALSE); /* get all events on the server */ - if (XCheckTypedWindowEvent(obt_display, self->window, DestroyNotify, &e) || - XCheckTypedWindowEvent(obt_display, self->window, UnmapNotify, &e)) - { + if (XCheckTypedWindowEvent(obt_display, self->window, DestroyNotify, &e)) { XPutBackEvent(obt_display, &e); return FALSE; } + + if (!client_validate_unmap(self, 0)) + return FALSE; return TRUE; }
M openbox/event.copenbox/event.c

@@ -656,7 +656,7 @@ window_manage(window);

else if (e->type == MappingNotify) { /* keyboard layout changes for modifier mapping changes. reload the modifier map, and rebind all the key bindings as appropriate */ - ob_debug("Kepboard map changed. Reloading keyboard bindings."); + ob_debug("Keyboard map changed. Reloading keyboard bindings."); ob_set_state(OB_STATE_RECONFIGURING); obt_keyboard_reload(); keyboard_rebind();
M openbox/frame.copenbox/frame.c

@@ -339,7 +339,8 @@ self->max_vert = self->client->max_vert;

self->shaded = self->client->shaded; if (self->decorations & OB_FRAME_DECOR_BORDER || - (self->client->undecorated && config_theme_keepborder)) + (self->client->undecorated && config_theme_keepborder + && !self->client->fullscreen)) self->bwidth = ob_rr_theme->fbwidth; else self->bwidth = 0;
M openbox/menu.copenbox/menu.c

@@ -232,10 +232,13 @@

/* you have to use a printable ascii character for shortcuts don't allow space either, so you can have like "a _ b" */ - if (VALID_SHORTCUT(*(i+1))) { - shortcut = g_unichar_tolower(g_utf8_get_char(i+1)); - *position = i - *strippedlabel; - *always_show = TRUE; + if (VALID_SHORTCUT(*(i+1)) || *(i+1) == '_') { + /* Allow you to escape the first _ by putting __ */ + if (*(i+1) != '_') { + shortcut = g_unichar_tolower(g_utf8_get_char(i+1)); + *position = i - *strippedlabel; + *always_show = TRUE; + } /* remove the '_' from the string */ for (; *i != '\0'; ++i)
M openbox/popup.copenbox/popup.c

@@ -319,7 +319,7 @@ self->mapped = FALSE;

event_end_ignore_all_enters(ignore_start); } else if (self->delay_mapped) { - obt_main_loop_timeout_remove(ob_main_loop, popup_show_timeout); + obt_main_loop_timeout_remove_data(ob_main_loop, popup_show_timeout, self, FALSE); self->delay_mapped = FALSE; } }
M openbox/screen.copenbox/screen.c

@@ -77,7 +77,7 @@ static GSList *struts_left = NULL;

static GSList *struts_right = NULL; static GSList *struts_bottom = NULL; -static ObPagerPopup *desktop_popup; +static ObPagerPopup **desktop_popup; /*! The number of microseconds that you need to be on a desktop before it will replace the remembered "last desktop" */

@@ -344,15 +344,22 @@ gchar **names = NULL;

guint32 d; gboolean namesexist = FALSE; - desktop_popup = pager_popup_new(); - pager_popup_height(desktop_popup, POPUP_HEIGHT); + if (reconfig) { + guint i; + desktop_popup = g_new(ObPagerPopup*, screen_num_monitors); + for (i = 0; i < screen_num_monitors; i++) { + desktop_popup[i] = pager_popup_new(); + pager_popup_height(desktop_popup[i], POPUP_HEIGHT); + + /* update the pager popup's width */ + pager_popup_text_width_to_strings(desktop_popup[i], + screen_desktop_names, + screen_num_desktops); + } - if (reconfig) { - /* update the pager popup's width */ - pager_popup_text_width_to_strings(desktop_popup, - screen_desktop_names, - screen_num_desktops); return; + } else { + desktop_popup = NULL; } /* get the initial size */

@@ -441,7 +448,12 @@ }

void screen_shutdown(gboolean reconfig) { - pager_popup_free(desktop_popup); + guint i; + + for (i = 0; i < screen_num_monitors; i++) { + pager_popup_free(desktop_popup[i]); + } + g_free(desktop_popup); if (reconfig) return;

@@ -911,39 +923,52 @@ }

static gboolean hide_desktop_popup_func(gpointer data) { - pager_popup_hide(desktop_popup); + guint i; + + for (i = 0; i < screen_num_monitors; i++) { + pager_popup_hide(desktop_popup[i]); + } return FALSE; /* don't repeat */ } void screen_show_desktop_popup(guint d) { Rect *a; + guint i; /* 0 means don't show the popup */ if (!config_desktop_popup_time) return; - a = screen_physical_area_active(); - pager_popup_position(desktop_popup, CenterGravity, - a->x + a->width / 2, a->y + a->height / 2); - pager_popup_icon_size_multiplier(desktop_popup, - (screen_desktop_layout.columns / - screen_desktop_layout.rows) / 2, - (screen_desktop_layout.rows/ - screen_desktop_layout.columns) / 2); - pager_popup_max_width(desktop_popup, - MAX(a->width/3, POPUP_WIDTH)); - pager_popup_show(desktop_popup, screen_desktop_names[d], d); + for (i = 0; i < screen_num_monitors; i++) { + a = screen_physical_area_monitor(i); + pager_popup_position(desktop_popup[i], CenterGravity, + a->x + a->width / 2, a->y + a->height / 2); + pager_popup_icon_size_multiplier(desktop_popup[i], + (screen_desktop_layout.columns / + screen_desktop_layout.rows) / 2, + (screen_desktop_layout.rows/ + screen_desktop_layout.columns) / 2); + pager_popup_max_width(desktop_popup[i], + MAX(a->width/3, POPUP_WIDTH)); + pager_popup_show(desktop_popup[i], screen_desktop_names[d], d); - obt_main_loop_timeout_remove(ob_main_loop, hide_desktop_popup_func); - obt_main_loop_timeout_add(ob_main_loop, config_desktop_popup_time * 1000, - hide_desktop_popup_func, NULL, NULL, NULL); - g_free(a); + obt_main_loop_timeout_remove(ob_main_loop, hide_desktop_popup_func); + obt_main_loop_timeout_add(ob_main_loop, config_desktop_popup_time * 1000, + hide_desktop_popup_func, desktop_popup[i], + g_direct_equal, NULL); + g_free(a); + } } void screen_hide_desktop_popup(void) { - obt_main_loop_timeout_remove(ob_main_loop, hide_desktop_popup_func); - pager_popup_hide(desktop_popup); + guint i; + + for (i = 0; i < screen_num_monitors; i++) { + obt_main_loop_timeout_remove_data(ob_main_loop, hide_desktop_popup_func, + desktop_popup[i], FALSE); + pager_popup_hide(desktop_popup[i]); + } } guint screen_find_desktop(guint from, ObDirection dir,

@@ -1178,9 +1203,11 @@ utf8, (const gchar**)screen_desktop_names);

} /* resize the pager for these names */ - pager_popup_text_width_to_strings(desktop_popup, - screen_desktop_names, - screen_num_desktops); + for (i = 0; i < screen_num_monitors; i++) { + pager_popup_text_width_to_strings(desktop_popup[i], + screen_desktop_names, + screen_num_desktops); + } } void screen_show_desktop(gboolean show, ObClient *show_only)

@@ -1302,7 +1329,10 @@

static void get_xinerama_screens(Rect **xin_areas, guint *nxin) { guint i; - gint l, r, t, b; + gint n, l, r, t, b; +#ifdef XINERAMA + XineramaScreenInfo *info; +#endif if (ob_debug_xinerama) { gint w = WidthOfScreen(ScreenOfDisplay(obt_display, ob_screen));

@@ -1313,10 +1343,8 @@ RECT_SET((*xin_areas)[0], 0, 0, w/2, h);

RECT_SET((*xin_areas)[1], w/2, 0, w-(w/2), h); } #ifdef XINERAMA - else if (obt_display_extension_xinerama) { - guint i; - gint n; - XineramaScreenInfo *info = XineramaQueryScreens(obt_display, &n); + else if (obt_display_extension_xinerama && + (info = XineramaQueryScreens(obt_display, &n))) { *nxin = n; *xin_areas = g_new(Rect, *nxin + 1); for (i = 0; i < *nxin; ++i)

@@ -1357,6 +1385,20 @@

g_free(monitor_area); get_xinerama_screens(&monitor_area, &screen_num_monitors); + if (!desktop_popup) { + desktop_popup = g_new(ObPagerPopup*, screen_num_monitors); + for (i = 0; i < screen_num_monitors; i++) { + desktop_popup[i] = pager_popup_new(); + pager_popup_height(desktop_popup[i], POPUP_HEIGHT); + + if (screen_desktop_names) + /* update the pager popup's width */ + pager_popup_text_width_to_strings(desktop_popup[i], + screen_desktop_names, + screen_num_desktops); + } + } + /* set up the user-specified margins */ config_margins.top_start = RECT_LEFT(monitor_area[screen_num_monitors]); config_margins.top_end = RECT_RIGHT(monitor_area[screen_num_monitors]);

@@ -1454,6 +1496,15 @@ STRUT_BOTTOM_ON_MONITOR(s->strut, i))

b = MAX(b, s->strut->bottom); } + if (l) l += RECT_LEFT (monitor_area[screen_num_monitors]) + - RECT_LEFT (monitor_area[i]); + if (t) t += RECT_TOP (monitor_area[screen_num_monitors]) + - RECT_TOP (monitor_area[i]); + if (r) r -= RECT_RIGHT (monitor_area[screen_num_monitors]) + - RECT_RIGHT (monitor_area[i]); + if (b) b -= RECT_BOTTOM(monitor_area[screen_num_monitors]) + - RECT_BOTTOM(monitor_area[i]); + /* based on these margins, set the work area for the monitor/desktop */ dims[(i * screen_num_desktops + j) * 4 + 0] += l;

@@ -1594,28 +1645,32 @@ ObScreenStrut *s = it->data;

if ((s->desktop == d || s->desktop == DESKTOP_ALL) && STRUT_LEFT_IN_SEARCH(s->strut, search) && !STRUT_LEFT_IGNORE(s->strut, us, search)) - l = MAX(l, al + s->strut->left); + l = MAX(l, RECT_LEFT(monitor_area[screen_num_monitors]) + + s->strut->left); } for (it = struts_top; it; it = g_slist_next(it)) { ObScreenStrut *s = it->data; if ((s->desktop == d || s->desktop == DESKTOP_ALL) && STRUT_TOP_IN_SEARCH(s->strut, search) && !STRUT_TOP_IGNORE(s->strut, us, search)) - t = MAX(t, at + s->strut->top); + t = MAX(t, RECT_TOP(monitor_area[screen_num_monitors]) + + s->strut->top); } for (it = struts_right; it; it = g_slist_next(it)) { ObScreenStrut *s = it->data; if ((s->desktop == d || s->desktop == DESKTOP_ALL) && STRUT_RIGHT_IN_SEARCH(s->strut, search) && !STRUT_RIGHT_IGNORE(s->strut, us, search)) - r = MIN(r, ar - s->strut->right); + r = MIN(r, RECT_RIGHT(monitor_area[screen_num_monitors]) + - s->strut->right); } for (it = struts_bottom; it; it = g_slist_next(it)) { ObScreenStrut *s = it->data; if ((s->desktop == d || s->desktop == DESKTOP_ALL) && STRUT_BOTTOM_IN_SEARCH(s->strut, search) && !STRUT_BOTTOM_IGNORE(s->strut, us, search)) - b = MIN(b, ab - s->strut->bottom); + b = MIN(b, RECT_BOTTOM(monitor_area[screen_num_monitors]) + - s->strut->bottom); } /* limit to this monitor */
M openbox/startupnotify.copenbox/startupnotify.c

@@ -239,7 +239,7 @@ {

gchar *desc; const char *id; - desc = g_strdup_printf(_("Running %s\n"), program); + desc = g_strdup_printf(_("Running %s"), program); if (sn_launcher_context_get_initiated(sn_launcher)) { sn_launcher_context_unref(sn_launcher);
M po/LINGUASpo/LINGUAS

@@ -23,10 +23,10 @@ bn_IN

it vi ja -ua +uk hu lt +lv tr da - -#hr +hr
M po/ar.popo/ar.po

@@ -443,8 +443,8 @@ msgstr ""

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "تشغيل %s\n" +msgid "Running %s" +msgstr "تشغيل %s" #: openbox/translate.c:59 #, c-format
M po/bn_IN.popo/bn_IN.po

@@ -444,8 +444,8 @@ msgstr ""

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "%s সঞ্চালিত হচ্ছে\n" +msgid "Running %s" +msgstr "%s সঞ্চালিত হচ্ছে" #: openbox/translate.c:59 #, c-format
M po/ca.popo/ca.po

@@ -468,8 +468,8 @@ msgstr "No esteu connectats al gestor de sessions"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Executant %s\n" +msgid "Running %s" +msgstr "Executant %s" #: openbox/translate.c:59 #, c-format
M po/cs.popo/cs.po

@@ -450,8 +450,8 @@ msgstr "Nepřipojen k session manageru"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Spouštím %s\n" +msgid "Running %s" +msgstr "Spouštím %s" #: openbox/translate.c:59 #, c-format
M po/da.popo/da.po

@@ -458,8 +458,8 @@ msgstr "Ikke forbundet til en sessionsbehandler"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Kører %s\n" +msgid "Running %s" +msgstr "Kører %s" #: openbox/translate.c:59 #, c-format
M po/de.popo/de.po

@@ -463,8 +463,8 @@ msgstr "Nicht mit einem Sitzungsmanager verbunden"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Starte %s\n" +msgid "Running %s" +msgstr "Starte %s" #: openbox/translate.c:59 #, c-format
M po/en@boldquot.popo/en@boldquot.po

@@ -477,8 +477,8 @@ msgstr "Not connected to a session manager"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Running %s\n" +msgid "Running %s" +msgstr "Running %s" #: openbox/translate.c:59 #, c-format
M po/en@quot.popo/en@quot.po

@@ -474,8 +474,8 @@ msgstr "Not connected to a session manager"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Running %s\n" +msgid "Running %s" +msgstr "Running %s" #: openbox/translate.c:59 #, c-format
M po/es.popo/es.po

@@ -468,8 +468,8 @@ msgstr "Sin conexión a un manejador de sesiones"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Ejecutando %s\n" +msgid "Running %s" +msgstr "Ejecutando %s" #: openbox/translate.c:59 #, c-format
M po/et.popo/et.po

@@ -441,8 +441,8 @@ msgstr ""

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Jooksev %s\n" +msgid "Running %s" +msgstr "Jooksev %s" #: openbox/translate.c:59 #, c-format
M po/eu.popo/eu.po

@@ -458,8 +458,8 @@ msgstr "Saio kudeatzaile batera ez konektatua"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Egikaritzen %s\n" +msgid "Running %s" +msgstr "Egikaritzen %s" #: openbox/translate.c:59 #, c-format
M po/fi.popo/fi.po

@@ -457,8 +457,8 @@ msgstr "Ei yhteyttä istunnon hallintaan"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Suoritetaan %s\n" +msgid "Running %s" +msgstr "Suoritetaan %s" #: openbox/translate.c:59 #, c-format
M po/fr.popo/fr.po

@@ -474,8 +474,8 @@ msgstr "Non connect un gestionnaire de session"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Excution de %s\n" +msgid "Running %s" +msgstr "Excution de %s" #: openbox/translate.c:59 #, c-format
M po/hr.popo/hr.po

@@ -1,133 +1,135 @@

# Croatian messages for openbox. -# Copyright (C) 2006 Mikael Magnusson +# Copyright (C) 2009 Mikael Magnusson # This file is distributed under the same license as the openbox package. -# Daniel Radetic <drade@boobah.info>, 2006. # msgid "" msgstr "" -"Project-Id-Version: Openbox 3.3\n" +"Project-Id-Version: Openbox 3.4.7.2\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-03-03 02:10+0100\n" -"PO-Revision-Date: 2006-09-05 16:45+0100\n" -"Last-Translator: Daniel Radetic <drade@boobah.info>\n" -"Language-Team: None\n" +"POT-Creation-Date: 2009-03-31 19:16+0200\n" +"PO-Revision-Date: 2009-04-05 16:53+0200\n" +"Last-Translator: boljsa <asjlob AT vip.hr>\n" +"Language-Team: <asjlob AT vip.hr>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: openbox/actions.c:150 +#: openbox/actions.c:149 #, c-format msgid "Invalid action \"%s\" requested. No such action exists." -msgstr "" +msgstr "Nevažeća akcija \"%s\" zatražena. Takva akcija ne postoji." #: openbox/actions/execute.c:128 msgid "No" -msgstr "" +msgstr "Ne" #: openbox/actions/execute.c:129 msgid "Yes" -msgstr "" +msgstr "Da" #: openbox/actions/execute.c:133 msgid "Execute" -msgstr "" +msgstr "Izvrši" #: openbox/actions/execute.c:142 #, c-format msgid "Failed to convert the path \"%s\" from utf8" -msgstr "" +msgstr "Neuspio pokušaj pretvorbe putanje \"%s\" iz utf8" -#: openbox/actions/exit.c:52 openbox/actions/session.c:62 -#: openbox/client.c:3460 +#: openbox/actions/exit.c:52 openbox/actions/session.c:64 +#: openbox/client.c:3465 msgid "Cancel" -msgstr "" +msgstr "Odustani" #: openbox/actions/exit.c:53 msgid "Exit" -msgstr "" +msgstr "Izađi" #: openbox/actions/exit.c:56 msgid "Are you sure you want to exit Openbox?" -msgstr "" +msgstr "Jeste li sigurni da želite zatvoriti Openbox?" #: openbox/actions/exit.c:57 msgid "Exit Openbox" -msgstr "" +msgstr "Zatvori Openbox" -#: openbox/actions/session.c:41 +#. TRANSLATORS: Don't translate the word "SessionLogout" as it's the +#. name of the action you write in rc.xml +#: openbox/actions/session.c:43 msgid "" "The SessionLogout action is not available since Openbox was built without " "session management support" msgstr "" +"Akcija SessionLogout nije dostupna otkad je Openbox izgrađen bez podrške " +"upravljanja sesijama" -#: openbox/actions/session.c:63 openbox/actions/session.c:68 +#: openbox/actions/session.c:65 openbox/actions/session.c:70 msgid "Log Out" -msgstr "" +msgstr "Odjava" -#: openbox/actions/session.c:67 +#: openbox/actions/session.c:69 msgid "Are you sure you want to log out?" -msgstr "" +msgstr "Jeste li sigurni da se želite odjaviti?" -#: openbox/client.c:2004 +#: openbox/client.c:2012 msgid "Unnamed Window" -msgstr "" +msgstr "Neimenovan Prozor" -#: openbox/client.c:2018 openbox/client.c:2050 +#: openbox/client.c:2026 openbox/client.c:2058 msgid "Killing..." -msgstr "" +msgstr "Ubijanje..." -#: openbox/client.c:2020 openbox/client.c:2052 +#: openbox/client.c:2028 openbox/client.c:2060 msgid "Not Responding" -msgstr "" +msgstr "Ne Odgovara" -#: openbox/client.c:3449 +#: openbox/client.c:3454 #, c-format msgid "" "The window \"%s\" does not seem to be responding. Do you want to force it " "to exit by sending the %s signal?" msgstr "" +"Prozor \"%s\" ne reagira. Želite li forsirati izlaženje šaljući %s signal?" -#: openbox/client.c:3451 +#: openbox/client.c:3456 msgid "End Process" -msgstr "" +msgstr "Završetak Procesa" -#: openbox/client.c:3455 +#: openbox/client.c:3460 #, c-format msgid "" "The window \"%s\" does not seem to be responding. Do you want to disconnect " "it from the X server?" msgstr "" +"Prozor \"%s\" ne reagira. Želite li prekinuti njegovu vezu sa X serverom?" -#: openbox/client.c:3457 +#: openbox/client.c:3462 msgid "Disconnect" -msgstr "" +msgstr "Prekid veze" #: openbox/client_list_combined_menu.c:87 openbox/client_list_menu.c:91 msgid "Go there..." -msgstr "Odi na..." +msgstr "Idi tamo..." #: openbox/client_list_combined_menu.c:94 -#, fuzzy msgid "Manage desktops" -msgstr "Sve radne površine" +msgstr "Upravljanje radnim površinama" #: openbox/client_list_combined_menu.c:95 openbox/client_list_menu.c:155 -#, fuzzy msgid "_Add new desktop" -msgstr "_Pošalji na radnu površinu" +msgstr "_Dodaj novu radnu površinu" #: openbox/client_list_combined_menu.c:96 openbox/client_list_menu.c:156 -#, fuzzy msgid "_Remove last desktop" -msgstr "_Pošalji na radnu površinu" +msgstr "_Ukloni zadnju radnu površinu" #: openbox/client_list_combined_menu.c:149 msgid "Windows" -msgstr "" +msgstr "Prozori" #: openbox/client_list_menu.c:203 msgid "Desktops" -msgstr "Radne površine" +msgstr "Radne Površine" #: openbox/client_menu.c:258 msgid "All desktops"

@@ -135,7 +137,7 @@ msgstr "Sve radne površine"

#: openbox/client_menu.c:370 msgid "_Layer" -msgstr "" +msgstr "_Sloj" #: openbox/client_menu.c:375 msgid "Always on _top"

@@ -151,311 +153,336 @@ msgstr "Uvijek na _dnu"

#: openbox/client_menu.c:379 msgid "_Send to desktop" -msgstr "_Pošalji na radnu površinu" +msgstr "Pošalji na _radnu površinu" #: openbox/client_menu.c:383 msgid "Client menu" -msgstr "Meni klijenta" +msgstr "Izbornik klijenta" #: openbox/client_menu.c:393 msgid "R_estore" -msgstr "Ponovno uspostav_i" +msgstr "O_bnovi" #: openbox/client_menu.c:397 msgid "_Move" -msgstr "Po_makni" +msgstr "_Pomicanje" #: openbox/client_menu.c:399 msgid "Resi_ze" -msgstr "Prom_jeni veličinu" +msgstr "Prom_jena veličine" #: openbox/client_menu.c:401 msgid "Ico_nify" -msgstr "Iko_nificiraj" +msgstr "Mi_nimizacija" #: openbox/client_menu.c:405 msgid "Ma_ximize" -msgstr "M_aksimiziraj" +msgstr "M_aksimizacija" #: openbox/client_menu.c:409 msgid "_Roll up/down" -msgstr "" +msgstr "_Okretanje gore/dolje" #: openbox/client_menu.c:411 msgid "Un/_Decorate" -msgstr "" +msgstr "Ne/_Dekoriranje" #: openbox/client_menu.c:415 msgid "_Close" msgstr "_Zatvori" -#: openbox/config.c:781 +#: openbox/config.c:782 #, c-format msgid "Invalid button \"%s\" specified in config file" -msgstr "" +msgstr "Nevažeće dugme \"%s\" specificirano u konfiguracijskoj datoteci" #: openbox/keyboard.c:157 msgid "Conflict with key binding in config file" -msgstr "" +msgstr "Konflikt sa povezivanjem tipki u konfiguracijskoj datoteci" -#: openbox/menu.c:103 openbox/menu.c:111 +#: openbox/menu.c:102 openbox/menu.c:110 #, c-format msgid "Unable to find a valid menu file \"%s\"" -msgstr "" +msgstr "Ne mogu pronaći važeću datoteku izbornika \"%s\"" -#: openbox/menu.c:171 +#: openbox/menu.c:170 #, c-format msgid "Failed to execute command for pipe-menu \"%s\": %s" -msgstr "" +msgstr "Neuspio pokušaj izvršavanja naredbe za cijev-izbornik \"%s\": %s" -#: openbox/menu.c:185 +#: openbox/menu.c:184 #, c-format msgid "Invalid output from pipe-menu \"%s\"" -msgstr "" +msgstr "Nevažeći izlaz za cijev-izbornik \"%s\"" -#: openbox/menu.c:198 +#: openbox/menu.c:197 #, c-format msgid "Attempted to access menu \"%s\" but it does not exist" -msgstr "" +msgstr "Pokušavam pristupiti izborniku \"%s\" ali on ne postoji" -#: openbox/menu.c:368 openbox/menu.c:369 +#: openbox/menu.c:367 openbox/menu.c:368 msgid "More..." -msgstr "" +msgstr "Više..." #: openbox/mouse.c:373 #, c-format msgid "Invalid button \"%s\" in mouse binding" -msgstr "" +msgstr "Nevažeće dugme \"%s\" u povezivanju miša" #: openbox/mouse.c:379 #, c-format msgid "Invalid context \"%s\" in mouse binding" -msgstr "" +msgstr "Nevažeći kontekst \"%s\" u povezivanju miša" -#: openbox/openbox.c:134 +#: openbox/openbox.c:133 #, c-format msgid "Unable to change to home directory \"%s\": %s" -msgstr "" +msgstr "Ne mogu doći u home direktorij \"%s\": %s" -#: openbox/openbox.c:154 +#: openbox/openbox.c:152 msgid "Failed to open the display from the DISPLAY environment variable." -msgstr "" +msgstr "Neuspio pokušaj otvaranja zaslona iz DISPLAY varijable okruženja." -#: openbox/openbox.c:185 +#: openbox/openbox.c:183 msgid "Failed to initialize the obrender library." -msgstr "" +msgstr "Neuspio pokušaj inicijalizacije obrender biblioteke." -#: openbox/openbox.c:196 +#: openbox/openbox.c:194 msgid "X server does not support locale." -msgstr "" +msgstr "X server ne podržava lokalno." -#: openbox/openbox.c:198 +#: openbox/openbox.c:196 msgid "Cannot set locale modifiers for the X server." -msgstr "" +msgstr "Ne mogu postaviti lokalne modifikatore za X server." -#: openbox/openbox.c:266 +#: openbox/openbox.c:263 msgid "Unable to find a valid config file, using some simple defaults" msgstr "" +"Ne mogu pronaći važeću konfiguracijsku datoteku, koriteći neke jednostavne " +"standarde" -#: openbox/openbox.c:300 +#: openbox/openbox.c:297 msgid "Unable to load a theme." -msgstr "" +msgstr "Ne mogu pokrenuti temu." -#: openbox/openbox.c:380 +#: openbox/openbox.c:377 #, c-format msgid "" "One or more XML syntax errors were found while parsing the Openbox " "configuration files. See stdout for more information. The last error seen " "was in file \"%s\" line %d, with message: %s" msgstr "" +"Jedna ili više XML pogreški u sintaksi su pronađene prilikom analize Openbox " +"konfiguracijskih datoteka. Pogledajte stdout za više informacija. Zadnja " +"pogreška je u datoteci \"%s\" u liniji %d, sa porukom: %s" -#: openbox/openbox.c:382 +#: openbox/openbox.c:379 msgid "Openbox Syntax Error" -msgstr "" +msgstr "Openbox Pogreška u Sintaksi" -#: openbox/openbox.c:382 -#, fuzzy +#: openbox/openbox.c:379 msgid "Close" -msgstr "_Zatvori" +msgstr "Zatvori" -#: openbox/openbox.c:451 +#: openbox/openbox.c:448 #, c-format msgid "Restart failed to execute new executable \"%s\": %s" -msgstr "" +msgstr "Restart je bio neusješan za izvršenje novog izvršnog \"%s\": %s" -#: openbox/openbox.c:521 openbox/openbox.c:523 +#: openbox/openbox.c:518 openbox/openbox.c:520 msgid "Copyright (c)" -msgstr "" +msgstr "Copyright (c)" -#: openbox/openbox.c:532 +#: openbox/openbox.c:529 msgid "Syntax: openbox [options]\n" -msgstr "" +msgstr "Sintaksa: openbox [opcije]\n" -#: openbox/openbox.c:533 +#: openbox/openbox.c:530 msgid "" "\n" "Options:\n" msgstr "" +"\n" +"Opcije:\n" -#: openbox/openbox.c:534 +#: openbox/openbox.c:531 msgid " --help Display this help and exit\n" -msgstr "" +msgstr " --help Prikazuje ovu pomoć i izlazi\n" -#: openbox/openbox.c:535 +#: openbox/openbox.c:532 msgid " --version Display the version and exit\n" -msgstr "" +msgstr " --version Prikazuje verziju i izlazi\n" -#: openbox/openbox.c:536 +#: openbox/openbox.c:533 msgid " --replace Replace the currently running window manager\n" msgstr "" +" --replace Zamjenjuje trenutno pokrenut upravitelj prozora\n" #. TRANSLATORS: if you translate "FILE" here, make sure to keep the "Specify..." #. aligned still, if you have to, make a new line with \n and 22 spaces. It's #. fine to leave it as FILE though. -#: openbox/openbox.c:540 +#: openbox/openbox.c:537 msgid " --config-file FILE Specify the path to the config file to use\n" msgstr "" +" --config-file FILE Specificira putanju do konfiguracijske datoteke koja " +"se koristi\n" -#: openbox/openbox.c:541 +#: openbox/openbox.c:538 msgid " --sm-disable Disable connection to the session manager\n" -msgstr "" +msgstr " --sm-disable Onemogućuje vezu sa upraviteljom sesija\n" -#: openbox/openbox.c:542 +#: openbox/openbox.c:539 msgid "" "\n" "Passing messages to a running Openbox instance:\n" msgstr "" +"\n" +"Prosljeđuje poruke pokrenutoj Openbox instanci:\n" -#: openbox/openbox.c:543 +#: openbox/openbox.c:540 msgid " --reconfigure Reload Openbox's configuration\n" -msgstr "" +msgstr " --reconfigure Osvježava Openbox konfiguraciju\n" -#: openbox/openbox.c:544 +#: openbox/openbox.c:541 msgid " --restart Restart Openbox\n" -msgstr "" +msgstr " --restart Restartira Openbox\n" -#: openbox/openbox.c:545 +#: openbox/openbox.c:542 msgid " --exit Exit Openbox\n" -msgstr "" +msgstr " --exit Izlazi iz Openbox-a\n" -#: openbox/openbox.c:546 +#: openbox/openbox.c:543 msgid "" "\n" "Debugging options:\n" msgstr "" +"\n" +"Opcije traženja pogrešaka:\n" -#: openbox/openbox.c:547 +#: openbox/openbox.c:544 msgid " --sync Run in synchronous mode\n" -msgstr "" +msgstr " --sync Pokretanje u sinkronizacijskom modu\n" -#: openbox/openbox.c:548 +#: openbox/openbox.c:545 msgid " --debug Display debugging output\n" -msgstr "" +msgstr " --debug Prikazuje izlaz traženja pogrešaka\n" -#: openbox/openbox.c:549 +#: openbox/openbox.c:546 msgid " --debug-focus Display debugging output for focus handling\n" msgstr "" +" --debug-focus Prikazuje izlaz traženja pogrešaka za rukovanje " +"fokusom\n" -#: openbox/openbox.c:550 +#: openbox/openbox.c:547 msgid " --debug-xinerama Split the display into fake xinerama screens\n" -msgstr "" +msgstr " --debug-xinerama Podijeli zaslon u lažne xinerama zaslone\n" -#: openbox/openbox.c:551 +#: openbox/openbox.c:548 #, c-format msgid "" "\n" "Please report bugs at %s\n" msgstr "" +"\n" +"Molimo prijavite pogrešku na %s\n" -#: openbox/openbox.c:620 +#: openbox/openbox.c:617 msgid "--config-file requires an argument\n" -msgstr "" +msgstr "--config-file zahtjeva argument\n" -#: openbox/openbox.c:663 +#: openbox/openbox.c:660 #, c-format msgid "Invalid command line argument \"%s\"\n" -msgstr "" +msgstr "Nevažeći argument komandne linije \"%s\"\n" #: openbox/screen.c:102 openbox/screen.c:190 #, c-format msgid "A window manager is already running on screen %d" -msgstr "" +msgstr "Upravitelj prozora je već pokrenut na zaslonu %d" #: openbox/screen.c:124 #, c-format msgid "Could not acquire window manager selection on screen %d" -msgstr "" +msgstr "Ne mogu ostvariti odabir upravitelja prozora na zaslonu %d" #: openbox/screen.c:145 #, c-format msgid "The WM on screen %d is not exiting" -msgstr "" +msgstr "Upravitelj prozora na zaslonu %d ne izlazi" #. TRANSLATORS: If you need to specify a different order of the #. arguments, you can use %1$d for the first one and %2$d for the #. second one. For example, #. "The current session has %2$d desktops, but Openbox is configured for %1$d ..." #: openbox/screen.c:412 -#, c-format +#, fuzzy, c-format msgid "" +"Openbox is configured for %d desktop, but the current session has %d. " +"Overriding the Openbox configuration." +msgid_plural "" "Openbox is configured for %d desktops, but the current session has %d. " "Overriding the Openbox configuration." -msgstr "" +msgstr[0] "" +"Openbox je konfiguriran za %d radnu površinu, ali trenutna sesija ima %d. " +"Prepisujem preko Openbox konfiguracije." +msgstr[1] "" +"Openbox je konfiguriran za %d radnu površinu, ali trenutna sesija ima %d. " +"Prepisujem preko Openbox konfiguracije." #: openbox/screen.c:1180 #, c-format msgid "desktop %i" -msgstr "" +msgstr "radna površina %i" #: openbox/session.c:104 #, c-format msgid "Unable to make directory \"%s\": %s" -msgstr "Nemogu napraviti direktorij \"%s\": %s" +msgstr "Ne mogu stvoriti direktorij \"%s\": %s" -#: openbox/session.c:452 +#: openbox/session.c:466 #, c-format msgid "Unable to save the session to \"%s\": %s" -msgstr "" +msgstr "Ne mogu spremiti sesiju u \"%s\": %s" -#: openbox/session.c:584 +#: openbox/session.c:605 #, c-format msgid "Error while saving the session to \"%s\": %s" -msgstr "" +msgstr "Pogreška prilokom spremanja sesije u \"%s\": %s" -#: openbox/session.c:821 +#: openbox/session.c:842 msgid "Not connected to a session manager" -msgstr "" +msgstr "Nije povezan sa upraviteljem sesija" #: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "" +msgid "Running %s" +msgstr "Pokrenuto %s" #: openbox/translate.c:59 #, c-format msgid "Invalid modifier key \"%s\" in key/mouse binding" -msgstr "" +msgstr "Nevažeći modifikacijski ključ \"%s\" u povezivanju tipke/miš" #: openbox/translate.c:138 #, c-format msgid "Invalid key code \"%s\" in key binding" -msgstr "" +msgstr "Nevažeći kod ključa \"%s\" u povezivanju tipki" #: openbox/translate.c:145 #, c-format msgid "Invalid key name \"%s\" in key binding" -msgstr "" +msgstr "Nevažeće ime tipke \"%s\" u povezivanju tipki" #: openbox/translate.c:151 #, c-format msgid "Requested key \"%s\" does not exist on the display" -msgstr "" +msgstr "Traženi ključ \"%s\" ne postoji na zaslonu" #: openbox/xerror.c:40 #, c-format msgid "X Error: %s" -msgstr "" +msgstr "X Pogreška: %s" #: openbox/prompt.c:200 msgid "OK" -msgstr "" +msgstr "OK"
M po/hu.popo/hu.po

@@ -452,8 +452,8 @@ msgstr "Nem kapcsolódunk a szekciókezelőhöz"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Futtatás %s\n" +msgid "Running %s" +msgstr "Futtatás %s" #: openbox/translate.c:59 #, c-format
M po/it.popo/it.po

@@ -1,8 +1,8 @@

# Italian translation for Openbox -# Copyright (C) 2007 Davide Truffa +# Copyright (C) 2007-2009 Davide Truffa # Copyright (C) 2008 Andrea Scarpino # This file is distributed under the same license as the openbox package. -# Davide Truffa <davide@catoblepa.org>, 2007. +# Davide Truffa <davide@catoblepa.org>, 2007-2009. # Andrea Scarpino <bash.lnx@gmail.com>, 2008. # #

@@ -10,9 +10,9 @@ msgid ""

msgstr "" "Project-Id-Version: Openbox 3.4.7.2\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-11-15 22:28+0100\n" -"PO-Revision-Date: 2008-05-15 13:09+0200\n" -"Last-Translator: Andrea Scarpino <bash.lnx@gmail.com>\n" +"POT-Creation-Date: 2009-02-25 23:51+0100\n" +"PO-Revision-Date: 2009-02-25 11:29+0100\n" +"Last-Translator: Davide Truffa <davide@catoblepa.org>\n" "Language-Team: Italian <tp@lists.linux.it>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n"

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

"The SessionLogout action is not available since Openbox was built without " "session management support" msgstr "" -"L'azione SessionLogout non è disponibile se Openbox è compilato senzail " +"L'azione SessionLogout non è disponibile se Openbox è compilato senza il " "supporto del gestore delle sessioni." #: openbox/actions/session.c:65 openbox/actions/session.c:70

@@ -95,7 +95,7 @@ "The window \"%s\" does not seem to be responding. Do you want to force it "

"to exit by sending the %s signal?" msgstr "" "La finestra \"%s\" sembra non rispondere. Vuoi terminarne l'esecuzione " -"inviando un segnale %s?" +"inviando il segnale %s?" #: openbox/client.c:3456 msgid "End Process"

@@ -107,8 +107,8 @@ msgid ""

"The window \"%s\" does not seem to be responding. Do you want to disconnect " "it from the X server?" msgstr "" -"La finestra \"%s\" non sembra rispondere. Vuoi terminarne l'esecuzione dal " -"server X?" +"La finestra \"%s\" non sembra rispondere. Vuoi terminarne l'esecuzione " +"tramite il server X?" #: openbox/client.c:3462 msgid "Disconnect"

@@ -198,7 +198,7 @@ #: openbox/client_menu.c:415

msgid "_Close" msgstr "_Chiudi" -#: openbox/config.c:781 +#: openbox/config.c:782 #, c-format msgid "Invalid button \"%s\" specified in config file" msgstr "Il pulsante \"%s\" specificato nel file di configurazione non è valido"

@@ -263,8 +263,7 @@

#: openbox/openbox.c:196 msgid "Cannot set locale modifiers for the X server." msgstr "" -"Impossibile impostare la localizzazione dei tasti modificatori per il server " -"X." +"Impossibile impostare i tasti modificatori localizzati per il server X." #: openbox/openbox.c:263 msgid "Unable to find a valid config file, using some simple defaults"

@@ -284,7 +283,7 @@ "configuration files. See stdout for more information. The last error seen "

"was in file \"%s\" line %d, with message: %s" msgstr "" "Sono stati trovati uno o più errori nel file di configurazione di Openbox. " -"Vedi stdout per ulteriori informazioni. L'ultimo errore era in \"%s\" alla " +"Vedi stdout per ulteriori informazioni. L'ultimo errore era in \"%s\" alla " "linea %d, con il messaggio: %s" #: openbox/openbox.c:379

@@ -460,12 +459,12 @@ msgstr "Errore durante il salvataggio della sessione in \"%s\": %s"

#: openbox/session.c:842 msgid "Not connected to a session manager" -msgstr "Non sei connesso al gestore di sessioni" +msgstr "Non connesso al gestore di sessioni" #: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Sto eseguendo %s\n" +msgid "Running %s" +msgstr "Sto eseguendo %s" #: openbox/translate.c:59 #, c-format
M po/ja.popo/ja.po

@@ -449,8 +449,8 @@ msgstr "セッションマネージャに接続されていません。"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "起動中 %s\n" +msgid "Running %s" +msgstr "起動中 %s" #: openbox/translate.c:59 #, c-format
M po/lt.popo/lt.po

@@ -450,8 +450,8 @@ msgstr "Neprisijungta prie sesijų sesijos tvarkyklė"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Veikia %s\n" +msgid "Running %s" +msgstr "Veikia %s" #: openbox/translate.c:59 #, c-format
A po/lv.po

@@ -0,0 +1,488 @@

+# Latvian translations for openbox. +# Copyright (C) 2009 Dana Jansens +# This file is distributed under the same license as the openbox package. +# Einars Sprugis <einars8@gmail.com>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: Openbox 3.4.7\n" +"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" +"POT-Creation-Date: 2009-03-31 19:16+0200\n" +"PO-Revision-Date: 2009-03-30 19:14+0300\n" +"Last-Translator: Einars Sprugis <einars8@gmail.com>\n" +"Language-Team: Latvian <lv@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: openbox/actions.c:149 +#, c-format +msgid "Invalid action \"%s\" requested. No such action exists." +msgstr "Neatļauta darbība \"%s\". Šāda darbība neeksistē." + +#: openbox/actions/execute.c:128 +msgid "No" +msgstr "Nē" + +#: openbox/actions/execute.c:129 +msgid "Yes" +msgstr "Jā" + +#: openbox/actions/execute.c:133 +msgid "Execute" +msgstr "Izpildīt" + +#: openbox/actions/execute.c:142 +#, c-format +msgid "Failed to convert the path \"%s\" from utf8" +msgstr "Neizdevās pārveidot ceļu \"%s\" no utf8" + +#: openbox/actions/exit.c:52 openbox/actions/session.c:64 +#: openbox/client.c:3465 +msgid "Cancel" +msgstr "Atcelt" + +#: openbox/actions/exit.c:53 +msgid "Exit" +msgstr "Iziet" + +#: openbox/actions/exit.c:56 +msgid "Are you sure you want to exit Openbox?" +msgstr "Vai tiešām vēlaties iziet no Openbox?" + +#: openbox/actions/exit.c:57 +msgid "Exit Openbox" +msgstr "Iziet no Openbox" + +#. TRANSLATORS: Don't translate the word "SessionLogout" as it's the +#. name of the action you write in rc.xml +#: openbox/actions/session.c:43 +msgid "" +"The SessionLogout action is not available since Openbox was built without " +"session management support" +msgstr "" +"SessionLogout darbība nav pieejama, jo Openbox tika kompilēts bez sesijas " +"pārvaldes atbalsta" + +#: openbox/actions/session.c:65 openbox/actions/session.c:70 +msgid "Log Out" +msgstr "Atteikties" + +#: openbox/actions/session.c:69 +msgid "Are you sure you want to log out?" +msgstr "Vai tiešām vēlaties atteikties?" + +#: openbox/client.c:2012 +msgid "Unnamed Window" +msgstr "Logs bez nosaukuma" + +#: openbox/client.c:2026 openbox/client.c:2058 +msgid "Killing..." +msgstr "Nogalina..." + +#: openbox/client.c:2028 openbox/client.c:2060 +msgid "Not Responding" +msgstr "Neatbild" + +#: openbox/client.c:3454 +#, c-format +msgid "" +"The window \"%s\" does not seem to be responding. Do you want to force it " +"to exit by sending the %s signal?" +msgstr "Logs \"%s\" neatbild. Vai vēlieties to piespiest, nosūtot signālu %s?" + +#: openbox/client.c:3456 +msgid "End Process" +msgstr "Nobeigt procesu" + +#: openbox/client.c:3460 +#, c-format +msgid "" +"The window \"%s\" does not seem to be responding. Do you want to disconnect " +"it from the X server?" +msgstr "Logs \"%s\" neatbild. Vai vēlaties to atvienot no X servera?" + +#: openbox/client.c:3462 +msgid "Disconnect" +msgstr "Atvienot" + +#: openbox/client_list_combined_menu.c:87 openbox/client_list_menu.c:91 +msgid "Go there..." +msgstr "Iet uz turieni..." + +#: openbox/client_list_combined_menu.c:94 +msgid "Manage desktops" +msgstr "Pārvaldīt darbvirsmas" + +#: openbox/client_list_combined_menu.c:95 openbox/client_list_menu.c:155 +msgid "_Add new desktop" +msgstr "Pievienot j_aunu darbvirsmu" + +#: openbox/client_list_combined_menu.c:96 openbox/client_list_menu.c:156 +msgid "_Remove last desktop" +msgstr "Aizvākt pēdējo da_rbvirsmu" + +#: openbox/client_list_combined_menu.c:149 +msgid "Windows" +msgstr "Logi" + +#: openbox/client_list_menu.c:203 +msgid "Desktops" +msgstr "Darbvirsmas" + +#: openbox/client_menu.c:258 +msgid "All desktops" +msgstr "Visas darbvirsmas" + +#: openbox/client_menu.c:370 +msgid "_Layer" +msgstr "S_lānis" + +#: openbox/client_menu.c:375 +msgid "Always on _top" +msgstr "Vienmēr augšā" + +#: openbox/client_menu.c:376 +msgid "_Normal" +msgstr "_Normāli" + +#: openbox/client_menu.c:377 +msgid "Always on _bottom" +msgstr "Vienmēr a_pakšā" + +#: openbox/client_menu.c:379 +msgid "_Send to desktop" +msgstr "No_sūtīt uz darbvirsmu" + +#: openbox/client_menu.c:383 +msgid "Client menu" +msgstr "Klientizvēlne" + +#: openbox/client_menu.c:393 +msgid "R_estore" +msgstr "Atja_unot" + +#: openbox/client_menu.c:397 +msgid "_Move" +msgstr "Pārviet_ot" + +#: openbox/client_menu.c:399 +msgid "Resi_ze" +msgstr "Mainīt i_zmēru" + +#: openbox/client_menu.c:401 +msgid "Ico_nify" +msgstr "Mi_nimizēt" + +#: openbox/client_menu.c:405 +msgid "Ma_ximize" +msgstr "Maksimizē_t" + +#: openbox/client_menu.c:409 +msgid "_Roll up/down" +msgstr "Sa_ritināt/Atritināt" + +#: openbox/client_menu.c:411 +msgid "Un/_Decorate" +msgstr "Bez/Ar _dekorācijām" + +#: openbox/client_menu.c:415 +msgid "_Close" +msgstr "Ai_zvērt" + +#: openbox/config.c:782 +#, c-format +msgid "Invalid button \"%s\" specified in config file" +msgstr "Konfigurācijas failā \"%s\" norādīts neatļauts taustiņš" + +#: openbox/keyboard.c:157 +msgid "Conflict with key binding in config file" +msgstr "Konfliktē ar tastatūras saīsnēm konfigurācijas failā" + +#: openbox/menu.c:102 openbox/menu.c:110 +#, c-format +msgid "Unable to find a valid menu file \"%s\"" +msgstr "Nav atrasts atļauts izvēlnes fails \"%s\"" + +#: openbox/menu.c:170 +#, c-format +msgid "Failed to execute command for pipe-menu \"%s\": %s" +msgstr "Nevarēja izpildīt skriptētās izvēlnes komandu \"%s\": %s" + +#: openbox/menu.c:184 +#, c-format +msgid "Invalid output from pipe-menu \"%s\"" +msgstr "Neatļauta izvade no skriptētās izvēlnes \"%s\"" + +#: openbox/menu.c:197 +#, c-format +msgid "Attempted to access menu \"%s\" but it does not exist" +msgstr "Mēģināja piekļūt izvēlnei \"%s\", bet tā neeksistē" + +#: openbox/menu.c:367 openbox/menu.c:368 +msgid "More..." +msgstr "Vairāk..." + +#: openbox/mouse.c:373 +#, c-format +msgid "Invalid button \"%s\" in mouse binding" +msgstr "Neatļauts taustiņš \"%s\" peles saīsnē" + +#: openbox/mouse.c:379 +#, c-format +msgid "Invalid context \"%s\" in mouse binding" +msgstr "Neatļauts konteksts \"%s\" peles saīsnē" + +#: openbox/openbox.c:133 +#, c-format +msgid "Unable to change to home directory \"%s\": %s" +msgstr "Nevarēja pāriet uz mājas mapi \"%s\": %s" + +#: openbox/openbox.c:152 +msgid "Failed to open the display from the DISPLAY environment variable." +msgstr "Neizdevās atvēŗt displeju no DISPLAY vides mainīgā." + +#: openbox/openbox.c:183 +msgid "Failed to initialize the obrender library." +msgstr "Neizdevās inicializēt obrender bibliotēku." + +#: openbox/openbox.c:194 +msgid "X server does not support locale." +msgstr "X serveris neatbalsta lokāli." + +#: openbox/openbox.c:196 +msgid "Cannot set locale modifiers for the X server." +msgstr "Nevar uzstādīt lokāles modificētājus X serverim." + +#: openbox/openbox.c:263 +msgid "Unable to find a valid config file, using some simple defaults" +msgstr "" +"Nevarēja atrast atļautu konfigurācijas failu, tiek izmantoti noklusējumi" + +#: openbox/openbox.c:297 +msgid "Unable to load a theme." +msgstr "Nebija iespējams ielādēt tēmu." + +#: openbox/openbox.c:377 +#, c-format +msgid "" +"One or more XML syntax errors were found while parsing the Openbox " +"configuration files. See stdout for more information. The last error seen " +"was in file \"%s\" line %d, with message: %s" +msgstr "" +"Analizējot Openbox konfigurācijas datnes, tika atrastas viena vai vairākas " +"XML sintakses kļūdas. Aplūkojiet standarta izvadi, lai noskaidrotu vairāk. " +"Pēdējā kļūda bija failā \"%s\" - %d rinda, kļūdas ziņojums: %s" + +#: openbox/openbox.c:379 +msgid "Openbox Syntax Error" +msgstr "Openbox sintakses kļūda" + +#: openbox/openbox.c:379 +msgid "Close" +msgstr "Aizvērt" + +#: openbox/openbox.c:448 +#, c-format +msgid "Restart failed to execute new executable \"%s\": %s" +msgstr "" + +#: openbox/openbox.c:518 openbox/openbox.c:520 +msgid "Copyright (c)" +msgstr "Copyright (c)" + +#: openbox/openbox.c:529 +msgid "Syntax: openbox [options]\n" +msgstr "Sintakse: openbox [iespējas]\n" + +#: openbox/openbox.c:530 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Iespējas:\n" + +#: openbox/openbox.c:531 +msgid " --help Display this help and exit\n" +msgstr " --help Parāda šo palīdzības tekstu un iziet\n" + +#: openbox/openbox.c:532 +msgid " --version Display the version and exit\n" +msgstr " --version Parāda versiju un iziet\n" + +#: openbox/openbox.c:533 +msgid " --replace Replace the currently running window manager\n" +msgstr " --replace Aizvieto pašreiz palaisto logu pārvaldnieku\n" + +#. TRANSLATORS: if you translate "FILE" here, make sure to keep the "Specify..." +#. aligned still, if you have to, make a new line with \n and 22 spaces. It's +#. fine to leave it as FILE though. +#: openbox/openbox.c:537 +msgid " --config-file FILE Specify the path to the config file to use\n" +msgstr "" +" --config-file FAILS Norāda ceļu uz izmantojamo konfigurācijas failu\n" + +#: openbox/openbox.c:538 +msgid " --sm-disable Disable connection to the session manager\n" +msgstr " --sm-disable Atspējo savienojumu ar sesiju pārvaldnieku\n" + +#: openbox/openbox.c:539 +msgid "" +"\n" +"Passing messages to a running Openbox instance:\n" +msgstr "" +"\n" +"Nodod ziņojumus esošai Openbox instancei:\n" + +#: openbox/openbox.c:540 +msgid " --reconfigure Reload Openbox's configuration\n" +msgstr " --reconfigure Pārlādē Openbox konfigurācijas failus\n" + +#: openbox/openbox.c:541 +msgid " --restart Restart Openbox\n" +msgstr " --restart Pārstartē Openbox\n" + +#: openbox/openbox.c:542 +msgid " --exit Exit Openbox\n" +msgstr " --exit Iziet no Openbox\n" + +#: openbox/openbox.c:543 +msgid "" +"\n" +"Debugging options:\n" +msgstr "" +"\n" +"Atkļūdošanas iespējas:\n" + +#: openbox/openbox.c:544 +msgid " --sync Run in synchronous mode\n" +msgstr " --sync Palaist sinhronajā režīmā\n" + +#: openbox/openbox.c:545 +msgid " --debug Display debugging output\n" +msgstr " --debug Rādīt atkļūdošanas izvadi\n" + +#: openbox/openbox.c:546 +msgid " --debug-focus Display debugging output for focus handling\n" +msgstr " --debug-focus Rādīt atkļūdošanas izvadi fokusēšanas darbībām\n" + +#: openbox/openbox.c:547 +msgid " --debug-xinerama Split the display into fake xinerama screens\n" +msgstr "" +" --debug-xinerama Sadalīt displeju vairākos viltus xinerama ekrānos\n" + +#: openbox/openbox.c:548 +#, c-format +msgid "" +"\n" +"Please report bugs at %s\n" +msgstr "" +"\n" +"Lūdzu, ziņojiet kļūdas %s\n" + +#: openbox/openbox.c:617 +msgid "--config-file requires an argument\n" +msgstr "--config-file vajadzīgs arguments\n" + +#: openbox/openbox.c:660 +#, c-format +msgid "Invalid command line argument \"%s\"\n" +msgstr "Neatļauts komandrindas arguments \"%s\"\n" + +#: openbox/screen.c:102 openbox/screen.c:190 +#, c-format +msgid "A window manager is already running on screen %d" +msgstr "Logu pārvaldnieks jau eksistē uz %d. ekrāna" + +#: openbox/screen.c:124 +#, c-format +msgid "Could not acquire window manager selection on screen %d" +msgstr "Nevarēja iegūt logu pārvaldnieka izvēli uz %d. ekrāna" + +#: openbox/screen.c:145 +#, c-format +msgid "The WM on screen %d is not exiting" +msgstr "Logu pārvaldnieks uz %d. ekrāna nebeidz darbību" + +#. TRANSLATORS: If you need to specify a different order of the +#. arguments, you can use %1$d for the first one and %2$d for the +#. second one. For example, +#. "The current session has %2$d desktops, but Openbox is configured for %1$d ..." +#: openbox/screen.c:412 +#, c-format +msgid "" +"Openbox is configured for %d desktop, but the current session has %d. " +"Overriding the Openbox configuration." +msgid_plural "" +"Openbox is configured for %d desktops, but the current session has %d. " +"Overriding the Openbox configuration." +msgstr[0] "" +"Openbox ir konfigurēts %d darbvirsmai, bet pašreizējai sesijai tādu ir %d. " +"Šī Openbox konfigurācijas opcija tiks ignorēta." +msgstr[1] "" +"Openbox ir konfigurēts %d darbvirsmām, bet pašreizējai sesijai tādu ir %d. " +"Šī Openbox konfigurācijas opcija tiks ignorēta." +msgstr[2] "" +"Openbox ir konfigurēts %d darbvirsmām, bet pašreizējai sesijai tādu ir %d. " +"Šī Openbox konfigurācijas opcija tiks ignorēta." + +#: openbox/screen.c:1180 +#, c-format +msgid "desktop %i" +msgstr "darbvirsma %i" + +#: openbox/session.c:104 +#, c-format +msgid "Unable to make directory \"%s\": %s" +msgstr "Nav iespējams izveidot mapi \"%s\": %s" + +#: openbox/session.c:466 +#, c-format +msgid "Unable to save the session to \"%s\": %s" +msgstr "Nav iespējams saglabāt sesiju \"%s\": %s" + +#: openbox/session.c:605 +#, c-format +msgid "Error while saving the session to \"%s\": %s" +msgstr "Kļūda saglabājot sesiju \"%s\": %s" + +#: openbox/session.c:842 +msgid "Not connected to a session manager" +msgstr "Nav savienots ar sesiju pārvaldnieku" + +#: openbox/startupnotify.c:243 +#, c-format +msgid "Running %s" +msgstr "Palaiž %s" + +#: openbox/translate.c:59 +#, c-format +msgid "Invalid modifier key \"%s\" in key/mouse binding" +msgstr "Neatļauts modificētājtaustiņš \"%s\" tastatūras/peles saīsnē" + +#: openbox/translate.c:138 +#, c-format +msgid "Invalid key code \"%s\" in key binding" +msgstr "Neatļauts taustiņa kods \"%s\" tastatūras saīsnē" + +#: openbox/translate.c:145 +#, c-format +msgid "Invalid key name \"%s\" in key binding" +msgstr "Neatļauts taustiņa nosaukums \"%s\" tastatūras saīsnē" + +#: openbox/translate.c:151 +#, c-format +msgid "Requested key \"%s\" does not exist on the display" +msgstr "Pieprasītais taustiņš \"%s\" uz displeja neeksistē" + +#: openbox/xerror.c:40 +#, c-format +msgid "X Error: %s" +msgstr "X kļūda: %s" + +#: openbox/prompt.c:200 +msgid "OK" +msgstr "Labi"
M po/nl.popo/nl.po

@@ -459,8 +459,8 @@ msgstr "Niet met een sessiebeheerder verbonden"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Starten van %s\n" +msgid "Running %s" +msgstr "Starten van %s" #: openbox/translate.c:59 #, c-format
M po/no.popo/no.po

@@ -453,8 +453,8 @@ msgstr "Ikke tilknyttet en sesjonsbehandler"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Kjører %s\n" +msgid "Running %s" +msgstr "Kjører %s" #: openbox/translate.c:59 #, c-format
M po/openbox.potpo/openbox.pot

@@ -432,7 +432,7 @@ msgstr ""

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" +msgid "Running %s" msgstr "" #: openbox/translate.c:59
M po/pl.popo/pl.po

@@ -445,8 +445,8 @@ msgstr ""

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Uruchamianie %s\n" +msgid "Running %s" +msgstr "Uruchamianie %s" #: openbox/translate.c:59 #, c-format
M po/pt.popo/pt.po

@@ -460,8 +460,8 @@ msgstr "Desligado do gestor de sesso"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Executando %s\n" +msgid "Running %s" +msgstr "Executando %s" #: openbox/translate.c:59 #, c-format
M po/pt_BR.popo/pt_BR.po

@@ -463,8 +463,8 @@ msgstr "Não está conectado à um gerente de sessões"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Executando %s\n" +msgid "Running %s" +msgstr "Executando %s" #: openbox/translate.c:59 #, c-format
M po/ru.popo/ru.po

@@ -453,8 +453,8 @@ msgstr "Не подключен к менеджеру сессии"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Запуск %s\n" +msgid "Running %s" +msgstr "Запуск %s" #: openbox/translate.c:59 #, c-format
M po/sk.popo/sk.po

@@ -442,8 +442,8 @@ msgstr ""

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Spúšťam %s\n" +msgid "Running %s" +msgstr "Spúšťam %s" #: openbox/translate.c:59 #, c-format
M po/sr.popo/sr.po

@@ -463,8 +463,8 @@ msgstr "Није повезан са управником сесија"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Извршавам %s\n" +msgid "Running %s" +msgstr "Извршавам %s" #: openbox/translate.c:59 #, c-format
M po/sr@latin.popo/sr@latin.po

@@ -463,8 +463,8 @@ msgstr "Nije povezan sa upravnikom sesija"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Izvršavam %s\n" +msgid "Running %s" +msgstr "Izvršavam %s" #: openbox/translate.c:59 #, c-format
M po/sv.popo/sv.po

@@ -454,8 +454,8 @@ msgstr "Inte ansluten till en sessionshanterare"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Kr %s\n" +msgid "Running %s" +msgstr "Kr %s" #: openbox/translate.c:59 #, c-format
M po/tr.popo/tr.po

@@ -458,8 +458,8 @@ msgstr "Oturum yöneticisine bağlı değil"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "%s çalışıyor\n" +msgid "Running %s" +msgstr "%s çalışıyor" #: openbox/translate.c:59 #, c-format
M po/ua.popo/uk.po

@@ -1,5 +1,6 @@

# Ukrainian translation for Openbox. # Copyright (C) 2007 Dmitriy Moroz +# Copyright (C) 2008 Serhiy Lysovenko # This file is distributed under the same license as the openbox package. # Dmitriy Moroz <zux@dimaka.org.ua>, 2007. #

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

msgstr "" "Project-Id-Version: Openbox 3.4.2\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" -"POT-Creation-Date: 2008-11-15 22:28+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" +"POT-Creation-Date: 2009-07-05 13:50+0200\n" +"PO-Revision-Date: 2008-12-09 20:12+0200\n" +"Last-Translator: Serhiy Lysovenko <lisovenko.s[at]gmail[dot]com>\n" +"Language-Team: Ukrainian <linux.org.ua>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n"

@@ -18,41 +19,41 @@

#: openbox/actions.c:149 #, c-format msgid "Invalid action \"%s\" requested. No such action exists." -msgstr "Здійснено запит на некоректну дію \"%s\". Нема такої дії." +msgstr "Здійснено запит на неіснуючу дію \"%s\"." #: openbox/actions/execute.c:128 msgid "No" -msgstr "" +msgstr "Ні" #: openbox/actions/execute.c:129 msgid "Yes" -msgstr "" +msgstr "Так" #: openbox/actions/execute.c:133 msgid "Execute" -msgstr "" +msgstr "Виконати" #: openbox/actions/execute.c:142 #, c-format msgid "Failed to convert the path \"%s\" from utf8" -msgstr "Не вдалося сконвертувати шлях \"%s\" з utf8" +msgstr "Не вдалося конвертувати шлях \"%s\" з utf8" #: openbox/actions/exit.c:52 openbox/actions/session.c:64 -#: openbox/client.c:3465 +#: openbox/client.c:3466 msgid "Cancel" -msgstr "" +msgstr "Скасувати" #: openbox/actions/exit.c:53 msgid "Exit" -msgstr "" +msgstr "Вихід" #: openbox/actions/exit.c:56 msgid "Are you sure you want to exit Openbox?" -msgstr "" +msgstr "Ви дійсно хочете вийти з Openbox?" #: openbox/actions/exit.c:57 msgid "Exit Openbox" -msgstr "" +msgstr "Вийти з Openbox" #. TRANSLATORS: Don't translate the word "SessionLogout" as it's the #. name of the action you write in rc.xml

@@ -64,61 +65,63 @@ msgstr ""

#: openbox/actions/session.c:65 openbox/actions/session.c:70 msgid "Log Out" -msgstr "" +msgstr "Вийти" #: openbox/actions/session.c:69 msgid "Are you sure you want to log out?" -msgstr "" +msgstr "Ви дійсно бажаєте завершити сеанс?" -#: openbox/client.c:2012 +#: openbox/client.c:2013 msgid "Unnamed Window" -msgstr "" +msgstr "Неназване вікно" -#: openbox/client.c:2026 openbox/client.c:2058 +#: openbox/client.c:2027 openbox/client.c:2059 msgid "Killing..." -msgstr "" +msgstr "Знищення..." -#: openbox/client.c:2028 openbox/client.c:2060 +#: openbox/client.c:2029 openbox/client.c:2061 msgid "Not Responding" -msgstr "" +msgstr "Не відповідає" -#: openbox/client.c:3454 +#: openbox/client.c:3455 #, c-format msgid "" "The window \"%s\" does not seem to be responding. Do you want to force it " "to exit by sending the %s signal?" msgstr "" +"Схоже, вікно \"%s\" не відповідає. Чи бажаєте примусово завершити програму, " +"пославши сигнал \"%s\"?" -#: openbox/client.c:3456 +#: openbox/client.c:3457 msgid "End Process" -msgstr "" +msgstr "Примусове завершення" -#: openbox/client.c:3460 +#: openbox/client.c:3461 #, c-format msgid "" "The window \"%s\" does not seem to be responding. Do you want to disconnect " "it from the X server?" -msgstr "" +msgstr "Вікно \"%s\" не відповідає. Чи бажаєте його від'єднати від X сервера?" -#: openbox/client.c:3462 +#: openbox/client.c:3463 msgid "Disconnect" -msgstr "" +msgstr "Від'єднати" #: openbox/client_list_combined_menu.c:87 openbox/client_list_menu.c:91 msgid "Go there..." -msgstr "Перейти...." +msgstr "Перейти..." #: openbox/client_list_combined_menu.c:94 msgid "Manage desktops" -msgstr "" +msgstr "Керування стільницями" #: openbox/client_list_combined_menu.c:95 openbox/client_list_menu.c:155 msgid "_Add new desktop" -msgstr "" +msgstr "Додати нову стільницю (_A)" #: openbox/client_list_combined_menu.c:96 openbox/client_list_menu.c:156 msgid "_Remove last desktop" -msgstr "" +msgstr "Видалити останню стільницю (_R)" #: openbox/client_list_combined_menu.c:149 msgid "Windows"

@@ -130,68 +133,68 @@ msgstr "Стільниці"

#: openbox/client_menu.c:258 msgid "All desktops" -msgstr "Всі стільниці" +msgstr "На всіх стільницях" #: openbox/client_menu.c:370 msgid "_Layer" -msgstr "Шар(_L)" +msgstr "Шар (_L)" #: openbox/client_menu.c:375 msgid "Always on _top" -msgstr "Зверху всіх вікон(_T)" +msgstr "Над усіма вікнами (_T)" #: openbox/client_menu.c:376 msgid "_Normal" -msgstr "Звичайне положення(_N)" +msgstr "Звичайне положення (_N)" #: openbox/client_menu.c:377 msgid "Always on _bottom" -msgstr "Знизу всіх вікон(_B)" +msgstr "Під вікнами (_B)" #: openbox/client_menu.c:379 msgid "_Send to desktop" -msgstr "Відправити на стільницю(_S)" +msgstr "Відправити на стільницю (_S)" #: openbox/client_menu.c:383 msgid "Client menu" -msgstr "Меню клієнтів" +msgstr "Меню клієнта" #: openbox/client_menu.c:393 msgid "R_estore" -msgstr "Відновити(_E)" +msgstr "Відновити (_E)" #: openbox/client_menu.c:397 msgid "_Move" -msgstr "Перемістити(_M)" +msgstr "Перемістити (_M)" #: openbox/client_menu.c:399 msgid "Resi_ze" -msgstr "Змінити розмір(_Z)" +msgstr "Змінити розмір (_Z)" #: openbox/client_menu.c:401 msgid "Ico_nify" -msgstr "Згорнути(_N)" +msgstr "Згорнути (_N)" #: openbox/client_menu.c:405 msgid "Ma_ximize" -msgstr "Розгорнути(_X)" +msgstr "Розгорнути (_X)" #: openbox/client_menu.c:409 msgid "_Roll up/down" -msgstr "Скрутити/Розкрутити(_R)" +msgstr "Скрутити/Розкрутити (_R)" #: openbox/client_menu.c:411 msgid "Un/_Decorate" -msgstr "(Від)декорувати(_D)" +msgstr "Перемкнути декорацію (_D)" #: openbox/client_menu.c:415 msgid "_Close" -msgstr "Закрити(_C)" +msgstr "Закрити (_C)" -#: openbox/config.c:781 +#: openbox/config.c:782 #, c-format msgid "Invalid button \"%s\" specified in config file" -msgstr "Некоректна клавіша \"%s\" вказана у файлі конфігурації" +msgstr "Некоректна кнопка \"%s\" вказана у файлі конфігурації" #: openbox/keyboard.c:157 msgid "Conflict with key binding in config file"

@@ -215,7 +218,7 @@

#: openbox/menu.c:197 #, c-format msgid "Attempted to access menu \"%s\" but it does not exist" -msgstr "Спроба доступа до меню \"%s\" якого не існує" +msgstr "Спроба доступу до неіснуючого меню \"%s\"" #: openbox/menu.c:367 openbox/menu.c:368 msgid "More..."

@@ -229,12 +232,12 @@

#: openbox/mouse.c:379 #, c-format msgid "Invalid context \"%s\" in mouse binding" -msgstr "Некоректний контекст \"%s\" в прив'зці клавіш мишки" +msgstr "Некоректний контекст \"%s\" в прив'язці клавіш мишки" #: openbox/openbox.c:133 #, c-format msgid "Unable to change to home directory \"%s\": %s" -msgstr "Не вдалося перейти в домашню директорію \"%s\": %s" +msgstr "Не вдалося перейти до домашнього каталогу \"%s\": %s" #: openbox/openbox.c:152 msgid "Failed to open the display from the DISPLAY environment variable."

@@ -260,7 +263,7 @@ "налаштування"

#: openbox/openbox.c:297 msgid "Unable to load a theme." -msgstr "Не вдалося загрузити стиль" +msgstr "Не вдалося завантажити тему" #: openbox/openbox.c:377 #, c-format

@@ -269,10 +272,13 @@ "One or more XML syntax errors were found while parsing the Openbox "

"configuration files. See stdout for more information. The last error seen " "was in file \"%s\" line %d, with message: %s" msgstr "" +"Виявлено одну або більше синтаксичних помилок XML під час сканування " +"конфігураційних файлів Openbox. Щоб дізнатись більше - перегляньте stdout. " +"Остання помічена помилка була в файлі \"%s\", стрічка %d, повідомлення: %s" #: openbox/openbox.c:379 msgid "Openbox Syntax Error" -msgstr "" +msgstr "синтаксична помилка Openbox" #: openbox/openbox.c:379 msgid "Close"

@@ -302,7 +308,7 @@ "Параметри:\n"

#: openbox/openbox.c:531 msgid " --help Display this help and exit\n" -msgstr " --help Показати цю справку і вийти\n" +msgstr " --help Показати цю довідку і вийти\n" #: openbox/openbox.c:532 msgid " --version Display the version and exit\n"

@@ -310,18 +316,18 @@ msgstr " --vesrion Показати версію і вийти\n"

#: openbox/openbox.c:533 msgid " --replace Replace the currently running window manager\n" -msgstr " --replace Замінити поточний менеджер вікон\n" +msgstr " --replace Замінити запущений менеджер вікон\n" #. TRANSLATORS: if you translate "FILE" here, make sure to keep the "Specify..." #. aligned still, if you have to, make a new line with \n and 22 spaces. It's #. fine to leave it as FILE though. #: openbox/openbox.c:537 msgid " --config-file FILE Specify the path to the config file to use\n" -msgstr "" +msgstr " --config-file ФАЙЛ Вказати шлях до конфігураційного файлу\n" #: openbox/openbox.c:538 msgid " --sm-disable Disable connection to the session manager\n" -msgstr " --sm-disable Не з'єднуватися з сесійним менеджером\n" +msgstr " --sm-disable Вимкнути з'єднання з менеджером сеансу\n" #: openbox/openbox.c:539 msgid ""

@@ -329,7 +335,7 @@ "\n"

"Passing messages to a running Openbox instance:\n" msgstr "" "\n" -"Передаю повідомлення процесу Openbox що виконується\n" +"Передача повідомлень процесу Openbox, що виконується\n" #: openbox/openbox.c:540 msgid " --reconfigure Reload Openbox's configuration\n"

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

#: openbox/openbox.c:542 msgid " --exit Exit Openbox\n" -msgstr "" +msgstr " --exit Вийти з Openbox\n" #: openbox/openbox.c:543 msgid ""

@@ -362,7 +368,8 @@

#: openbox/openbox.c:546 msgid " --debug-focus Display debugging output for focus handling\n" msgstr "" -" --debug-focus Показувати інформацію налагоджування для уравління\n" +" --debug-focus Показувати відлагоджувальний вивід для керування " +"фокусом\n" #: openbox/openbox.c:547 msgid " --debug-xinerama Split the display into fake xinerama screens\n"

@@ -379,12 +386,12 @@ "Будь-ласка, повідомляйте про помилки на %s\n"

#: openbox/openbox.c:617 msgid "--config-file requires an argument\n" -msgstr "" +msgstr "--config-file потребує аргументу\n" #: openbox/openbox.c:660 #, c-format msgid "Invalid command line argument \"%s\"\n" -msgstr "Некоректний командний аргумент \"%s\"\n" +msgstr "Некоректний аргумент \"%s\"\n" #: openbox/screen.c:102 openbox/screen.c:190 #, c-format

@@ -394,19 +401,19 @@

#: openbox/screen.c:124 #, c-format msgid "Could not acquire window manager selection on screen %d" -msgstr "Не можу отримати вибір менеджера вікон на дисплеї %d" +msgstr "Не можу запустити менеджера вікон на дисплеї %d" #: openbox/screen.c:145 #, c-format msgid "The WM on screen %d is not exiting" -msgstr "Менеджео вікон на дисплеї %d не завершується" +msgstr "Менеджер вікон на дисплеї %d не завершається" #. TRANSLATORS: If you need to specify a different order of the #. arguments, you can use %1$d for the first one and %2$d for the #. second one. For example, #. "The current session has %2$d desktops, but Openbox is configured for %1$d ..." -#: openbox/screen.c:412 -#, c-format +#: openbox/screen.c:419 +#, fuzzy, c-format msgid "" "Openbox is configured for %d desktop, but the current session has %d. " "Overriding the Openbox configuration."

@@ -414,9 +421,13 @@ msgid_plural ""

"Openbox is configured for %d desktops, but the current session has %d. " "Overriding the Openbox configuration." msgstr[0] "" +"Openbox сконфігуровано на %d дисплеїв, але в поточній сесії використовується " +"%d. Перевищення конфігурації Openbox." msgstr[1] "" +"Openbox сконфігуровано на %d дисплеїв, але в поточній сесії використовується " +"%d. Перевищення конфігурації Openbox." -#: openbox/screen.c:1180 +#: openbox/screen.c:1205 #, c-format msgid "desktop %i" msgstr "стільниця %i"

@@ -424,7 +435,7 @@

#: openbox/session.c:104 #, c-format msgid "Unable to make directory \"%s\": %s" -msgstr "Не вдалося створити директорію \"%s\": %s" +msgstr "Не вдалося створити каталог \"%s\": %s" #: openbox/session.c:466 #, c-format

@@ -438,12 +449,12 @@ msgstr "Помилка при збереженні сесії в \"%s\": %s"

#: openbox/session.c:842 msgid "Not connected to a session manager" -msgstr "" +msgstr "Не під'єднано до керівника сесіями" #: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Виконується %s\n" +msgid "Running %s" +msgstr "Виконується %s" #: openbox/translate.c:59 #, c-format

@@ -454,17 +465,17 @@

#: openbox/translate.c:138 #, c-format msgid "Invalid key code \"%s\" in key binding" -msgstr "Некоректний код клавіши \"%s\" у прив'зці клавіш" +msgstr "Некоректний код клавіші \"%s\" у прив'язці клавіш" #: openbox/translate.c:145 #, c-format msgid "Invalid key name \"%s\" in key binding" -msgstr "Некоректна назва клавіши \"%s\" у прив'язці клавіш" +msgstr "Некоректна назва клавіші \"%s\" у прив'язці клавіш" #: openbox/translate.c:151 #, c-format msgid "Requested key \"%s\" does not exist on the display" -msgstr "Клавіша \"%s\" на яку здійснено запит - не існує на дисплеї" +msgstr "Потрібної кнопки \"%s\" нема на екрані" #: openbox/xerror.c:40 #, c-format

@@ -473,7 +484,7 @@ msgstr "Помилка X-серверу: %s"

#: openbox/prompt.c:200 msgid "OK" -msgstr "" +msgstr "Гаразд" #~ msgid "Failed to execute \"%s\": %s" #~ msgstr "Невдалося виконати \"%s\": %s"
M po/vi.popo/vi.po

@@ -452,8 +452,8 @@ msgstr "Không hàng với session quản lý"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "Đan Chạy %s\n" +msgid "Running %s" +msgstr "Đan Chạy %s" #: openbox/translate.c:59 #, c-format
M po/zh_CN.popo/zh_CN.po

@@ -444,8 +444,8 @@ msgstr "未连接到会话管理器"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "运行 %s\n" +msgid "Running %s" +msgstr "运行 %s" #: openbox/translate.c:59 #, c-format
M po/zh_TW.popo/zh_TW.po

@@ -444,8 +444,8 @@ msgstr "沒有連接到作業階段管理員"

#: openbox/startupnotify.c:243 #, c-format -msgid "Running %s\n" -msgstr "正在運行 %s\n" +msgid "Running %s" +msgstr "正在運行 %s" #: openbox/translate.c:59 #, c-format
M render/gradient.crender/gradient.c

@@ -507,11 +507,11 @@ if h > 5, then always a 1px middle gradient.

*/ if (h <= 5) { y1sz = MAX(h/2, 0); - y2sz = (h < 3 ? 0 : h % 2); + y2sz = (h < 3) ? 0 : (h & 1); y3sz = MAX(h/2, 1); } else { - y1sz = h/2 - (1 - (h % 2)); + y1sz = h/2 - (1 - (h & 1)); y2sz = 1; y3sz = h/2; }

@@ -534,13 +534,15 @@ NEXT(y1);

} *data = COLOR(y1); data += w; - for (y2 = y2sz-1; y2 > 0; --y2) { + if (y2sz) { + for (y2 = y2sz-1; y2 > 0; --y2) { + *data = COLOR(y2); + data += w; + NEXT(y2); + } *data = COLOR(y2); data += w; - NEXT(y2); } - *data = COLOR(y2); - data += w; for (y3 = y3sz-1; y3 > 0; --y3) { *data = COLOR(y3); data += w;
M render/theme.crender/theme.c

@@ -46,6 +46,22 @@ static int parse_inline_number(const char *p);

static RrPixel32* read_c_image(gint width, gint height, const guint8 *data); static void set_default_appearance(RrAppearance *a); +static RrFont *get_font(RrFont *target, RrFont **default_font, const RrInstance *inst) +{ + if (target) { + RrFontRef(target); + return target; + } else { + /* Only load the default font once */ + if (*default_font) { + RrFontRef(*default_font); + } else { + *default_font = RrFontOpenDefault(inst); + } + return *default_font; + } +} + RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name, gboolean allow_fallback, RrFont *active_window_font, RrFont *inactive_window_font,

@@ -56,6 +72,7 @@ XrmDatabase db = NULL;

RrJustify winjust, mtitlejust; gchar *str; RrTheme *theme; + RrFont *default_font = NULL; gchar *path; gboolean userdef;

@@ -130,17 +147,8 @@ theme->osd_hilite_fg = RrAppearanceNew(inst, 0);

theme->osd_unhilite_fg = RrAppearanceNew(inst, 0); /* load the font stuff */ - if (active_window_font) { - theme->win_font_focused = active_window_font; - RrFontRef(active_window_font); - } else - theme->win_font_focused = RrFontOpenDefault(inst); - - if (inactive_window_font) { - theme->win_font_unfocused = inactive_window_font; - RrFontRef(inactive_window_font); - } else - theme->win_font_unfocused = RrFontOpenDefault(inst); + theme->win_font_focused = get_font(active_window_font, &default_font, inst); + theme->win_font_unfocused = get_font(inactive_window_font, &default_font, inst); winjust = RR_JUSTIFY_LEFT; if (read_string(db, "window.label.text.justify", &str)) {

@@ -150,11 +158,7 @@ else if (!g_ascii_strcasecmp(str, "center"))

winjust = RR_JUSTIFY_CENTER; } - if (menu_title_font) { - theme->menu_title_font = menu_title_font; - RrFontRef(menu_title_font); - } else - theme->menu_title_font = RrFontOpenDefault(inst); + theme->menu_title_font = get_font(menu_title_font, &default_font, inst); mtitlejust = RR_JUSTIFY_LEFT; if (read_string(db, "menu.title.text.justify", &str)) {

@@ -164,17 +168,9 @@ else if (!g_ascii_strcasecmp(str, "center"))

mtitlejust = RR_JUSTIFY_CENTER; } - if (menu_item_font) { - theme->menu_font = menu_item_font; - RrFontRef(menu_item_font); - } else - theme->menu_font = RrFontOpenDefault(inst); + theme->menu_font = get_font(menu_item_font, &default_font, inst); - if (osd_font) { - theme->osd_font = osd_font; - RrFontRef(osd_font); - } else - theme->osd_font = RrFontOpenDefault(inst); + theme->osd_font = get_font(osd_font, &default_font, inst); /* load direct dimensions */ if ((!read_int(db, "menu.overlap.x", &theme->menu_overlap_x) &&