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)
<!-- 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>
<!-- 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
-->
<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>
<!--
<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">
<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 -->
<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">
</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">
<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">
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;
}
gboolean wrap;
ObDirection dir;
} rel;
- };
+ } u;
gboolean send;
gboolean follow;
} Options;
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);
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;
}
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;
}
enum {
CURRENT_MONITOR = -1,
- ALL_MONITORS = -2
+ ALL_MONITORS = -2,
+ NEXT_MONITOR = -3,
+ PREV_MONITOR = -4
};
typedef struct {
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;
}
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);
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
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);
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;
}
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();
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;
/* 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)
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;
}
}
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" */
guint32 d;
gboolean namesexist = FALSE;
- desktop_popup = pager_popup_new();
- pager_popup_height(desktop_popup, POPUP_HEIGHT);
-
if (reconfig) {
- /* update the pager popup's width */
- pager_popup_text_width_to_strings(desktop_popup,
- screen_desktop_names,
- screen_num_desktops);
+ 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);
+ }
+
return;
+ } else {
+ desktop_popup = NULL;
}
/* get the initial size */
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;
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);
-
- 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);
+ 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, 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,
}
/* 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)
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));
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)
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]);
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;
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 */
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);
it
vi
ja
-ua
+uk
hu
lt
+lv
tr
da
-
-#hr
+hr
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "تشغيل %s\n"
+msgid "Running %s"
+msgstr "تشغيل %s"
#: openbox/translate.c:59
#, c-format
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "%s সঞ্চালিত হচ্ছে\n"
+msgid "Running %s"
+msgstr "%s সঞ্চালিত হচ্ছে"
#: openbox/translate.c:59
#, c-format
#: 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
#: 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
#: 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
#: 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
#: 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
#: 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
#: 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
#: 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
#: 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
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "Exécution de %s\n"
+msgid "Running %s"
+msgstr "Exécution de %s"
#: openbox/translate.c:59
#, c-format
# 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"
#: openbox/client_menu.c:370
msgid "_Layer"
-msgstr ""
+msgstr "_Sloj"
#: openbox/client_menu.c:375
msgid "Always on _top"
#: 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"
#: 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
# 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.
#
#
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"
"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
"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"
"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"
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"
#: 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"
"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
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "起動中 %s\n"
+msgid "Running %s"
+msgstr "起動中 %s"
#: openbox/translate.c:59
#, c-format
#: 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
--- /dev/null
+# 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"
#: 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
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
+msgid "Running %s"
msgstr ""
#: openbox/translate.c:59
#: 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
#: 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
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "Запуск %s\n"
+msgid "Running %s"
+msgstr "Запуск %s"
#: openbox/translate.c:59
#, c-format
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "Извршавам %s\n"
+msgid "Running %s"
+msgstr "Извршавам %s"
#: openbox/translate.c:59
#, c-format
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "Kör %s\n"
+msgid "Running %s"
+msgstr "Kör %s"
#: openbox/translate.c:59
#, c-format
#: 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
# 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.
#
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"
#: 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
#: 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"
#: openbox/client_menu.c:258
msgid "All desktops"
-msgstr "Ð\92Ñ\81Ñ\96 Ñ\81Ñ\82Ñ\96лÑ\8cниÑ\86Ñ\96"
+msgstr "Ð\9dа вÑ\81Ñ\96Ñ\85 Ñ\81Ñ\82Ñ\96лÑ\8cниÑ\86Ñ\8fÑ\85"
#: openbox/client_menu.c:370
msgid "_Layer"
-msgstr "Шар(_L)"
+msgstr "Шар (_L)"
#: openbox/client_menu.c:375
msgid "Always on _top"
-msgstr "Ð\97веÑ\80Ñ\85Ñ\83 вÑ\81Ñ\96Ñ\85 вÑ\96кон(_T)"
+msgstr "Ð\9dад Ñ\83Ñ\81Ñ\96ма вÑ\96кнами (_T)"
#: openbox/client_menu.c:376
msgid "_Normal"
-msgstr "Звичайне положення(_N)"
+msgstr "Звичайне положення (_N)"
#: openbox/client_menu.c:377
msgid "Always on _bottom"
-msgstr "Ð\97низÑ\83 вÑ\81Ñ\96Ñ\85 вÑ\96кон(_B)"
+msgstr "Ð\9fÑ\96д вÑ\96кнами (_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 "Ð\9dекоÑ\80екÑ\82на клавÑ\96Ñ\88а \"%s\" вказана у файлі конфігурації"
+msgstr "Ð\9dекоÑ\80екÑ\82на кнопка \"%s\" вказана у файлі конфігурації"
#: openbox/keyboard.c:157
msgid "Conflict with key binding in config file"
#: 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..."
#: 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 "Ð\9dе вдалоÑ\81Ñ\8f пеÑ\80ейÑ\82и в домаÑ\88нÑ\8e диÑ\80екÑ\82оÑ\80Ñ\96Ñ\8e \"%s\": %s"
+msgstr "Ð\9dе вдалоÑ\81Ñ\8f пеÑ\80ейÑ\82и до домаÑ\88нÑ\8cого каÑ\82алогÑ\83 \"%s\": %s"
#: openbox/openbox.c:152
msgid "Failed to open the display from the DISPLAY environment variable."
#: openbox/openbox.c:297
msgid "Unable to load a theme."
-msgstr "Ð\9dе вдалоÑ\81Ñ\8f загÑ\80Ñ\83зиÑ\82и Ñ\81Ñ\82илÑ\8c"
+msgstr "Ð\9dе вдалоÑ\81Ñ\8f заванÑ\82ажиÑ\82и Ñ\82емÑ\83"
#: openbox/openbox.c:377
#, c-format
"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"
#: 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"
#: openbox/openbox.c:533
msgid " --replace Replace the currently running window manager\n"
-msgstr " --replace Ð\97амÑ\96ниÑ\82и поÑ\82оÑ\87ний менеджер вікон\n"
+msgstr " --replace Ð\97амÑ\96ниÑ\82и запÑ\83Ñ\89ений менеджер вікон\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 Ð\9dе з'Ñ\94днÑ\83ваÑ\82иÑ\81Ñ\8f з Ñ\81еÑ\81Ñ\96йним менеджеÑ\80ом\n"
+msgstr " --sm-disable Ð\92имкнÑ\83Ñ\82и з'Ñ\94днаннÑ\8f з менеджеÑ\80ом Ñ\81еанÑ\81Ñ\83\n"
#: openbox/openbox.c:539
msgid ""
"Passing messages to a running Openbox instance:\n"
msgstr ""
"\n"
-"Ð\9fеÑ\80едаÑ\8e повÑ\96домленнÑ\8f пÑ\80оÑ\86еÑ\81Ñ\83 Openbox що виконується\n"
+"Ð\9fеÑ\80едаÑ\87а повÑ\96домленÑ\8c пÑ\80оÑ\86еÑ\81Ñ\83 Openbox, що виконується\n"
#: openbox/openbox.c:540
msgid " --reconfigure Reload Openbox's configuration\n"
#: openbox/openbox.c:542
msgid " --exit Exit Openbox\n"
-msgstr ""
+msgstr " --exit Вийти з Openbox\n"
#: openbox/openbox.c:543
msgid ""
#: 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"
#: 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 "Ð\9dекоÑ\80екÑ\82ний командний аÑ\80гÑ\83менÑ\82 \"%s\"\n"
+msgstr "Некоректний аргумент \"%s\"\n"
#: openbox/screen.c:102 openbox/screen.c:190
#, c-format
#: openbox/screen.c:124
#, c-format
msgid "Could not acquire window manager selection on screen %d"
-msgstr "Ð\9dе можÑ\83 оÑ\82Ñ\80имаÑ\82и вибÑ\96Ñ\80 менеджера вікон на дисплеї %d"
+msgstr "Ð\9dе можÑ\83 запÑ\83Ñ\81Ñ\82иÑ\82и менеджера вікон на дисплеї %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."
"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"
#: openbox/session.c:104
#, c-format
msgid "Unable to make directory \"%s\": %s"
-msgstr "Ð\9dе вдалоÑ\81Ñ\8f Ñ\81Ñ\82воÑ\80иÑ\82и диÑ\80екÑ\82оÑ\80Ñ\96Ñ\8e \"%s\": %s"
+msgstr "Ð\9dе вдалоÑ\81Ñ\8f Ñ\81Ñ\82воÑ\80иÑ\82и каÑ\82алог \"%s\": %s"
#: openbox/session.c:466
#, c-format
#: 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
#: 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 "Ð\9aлавÑ\96Ñ\88а \"%s\" на Ñ\8fкÑ\83 здÑ\96йÑ\81нено запиÑ\82 - не Ñ\96Ñ\81нÑ\83Ñ\94 на диÑ\81плеÑ\97"
+msgstr "Ð\9fоÑ\82Ñ\80Ñ\96бноÑ\97 кнопки \"%s\" нема на екÑ\80анÑ\96"
#: openbox/xerror.c:40
#, c-format
#: openbox/prompt.c:200
msgid "OK"
-msgstr ""
+msgstr "Гаразд"
#~ msgid "Failed to execute \"%s\": %s"
#~ msgstr "Невдалося виконати \"%s\": %s"
#: 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
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "运行 %s\n"
+msgid "Running %s"
+msgstr "运行 %s"
#: openbox/translate.c:59
#, c-format
#: openbox/startupnotify.c:243
#, c-format
-msgid "Running %s\n"
-msgstr "正在運行 %s\n"
+msgid "Running %s"
+msgstr "正在運行 %s"
#: openbox/translate.c:59
#, c-format
*/
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;
}
}
*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;
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,
RrJustify winjust, mtitlejust;
gchar *str;
RrTheme *theme;
+ RrFont *default_font = NULL;
gchar *path;
gboolean userdef;
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)) {
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)) {
mtitlejust = RR_JUSTIFY_CENTER;
}
- if (menu_item_font) {
- theme->menu_font = menu_item_font;
- RrFontRef(menu_item_font);
- } else
- theme->menu_font = RrFontOpenDefault(inst);
-
- if (osd_font) {
- theme->osd_font = osd_font;
- RrFontRef(osd_font);
- } else
- theme->osd_font = RrFontOpenDefault(inst);
+ theme->menu_font = get_font(menu_item_font, &default_font, 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) &&