data/openbox.png
dist_rc_DATA = \
- data/rc.xml \
- data/menu.xml
+ data/keys \
+ data/mouse \
+ data/applications \
+ data/menu
edit = $(SED) \
-e 's!@version\@!$(VERSION)!' \
data/xsession/openbox-kde.desktop
dist_noinst_DATA = \
- data/rc.xsd \
- data/menu.xsd \
data/autostart/autostart.in \
data/autostart/openbox-autostart.in \
data/xsession/openbox.desktop.in \
AUTHORS \
CHANGELOG \
COPYING \
- data/rc.xsd \
+ data/keys.xsd \
+ data/mouse.xsd \
+ data/applications.xsd \
data/menu.xsd \
doc/rc-mouse-focus.xml
--- /dev/null
+<applications>
+<!--
+ # this is an example with comments through out. use these to make your
+ # own rules, but without the comments of course.
+ # you may use one or more of the name/class/role/title/type rules to specify
+ # windows to match
+
+ <application name="the window's _OB_APP_NAME property (see obxprop)"
+ class="the window's _OB_APP_CLASS property (see obxprop)"
+ role="the window's _OB_APP_ROLE property (see obxprop)"
+ title="the window's _OB_APP_TITLE property (see obxprop)"
+ type="the window's _OB_APP_TYPE property (see obxprob)..
+ (if unspecified, then it is 'dialog' for child windows)">
+ # you may set only one of name/class/role/title/type, or you may use more
+ # than one together to restrict your matches.
+
+ # the name, class, role, and title use simple wildcard matching such as those
+ # used by a shell. you can use * to match any characters and ? to match
+ # any single character.
+
+ # the type is one of: normal, dialog, splash, utility, menu, toolbar, dock,
+ # or desktop
+
+ # when multiple rules match a window, they will all be applied, in the
+ # order that they appear in this list
+
+
+ # each rule element can be left out or set to 'default' to specify to not
+ # change that attribute of the window
+
+ <decor>yes</decor>
+ # enable or disable window decorations
+
+ <shade>no</shade>
+ # make the window shaded when it appears, or not
+
+ <position force="no">
+ # the position is only used if both an x and y coordinate are provided
+ # (and not set to 'default')
+ # when force is "yes", then the window will be placed here even if it
+ # says you want it placed elsewhere. this is to override buggy
+ # applications who refuse to behave
+ <x>center</x>
+ # a number like 50, or 'center' to center on screen. use a negative number
+ # to start from the right (or bottom for <y>), ie -50 is 50 pixels from the
+ # right edge (or bottom).
+ <y>200</y>
+ <monitor>1</monitor>
+ # specifies the monitor in a xinerama setup.
+ # 1 is the first head, or 'mouse' for wherever the mouse is
+ </position>
+
+ <focus>yes</focus>
+ # if the window should try be given focus when it appears. if this is set
+ # to yes it doesn't guarantee the window will be given focus. some
+ # restrictions may apply, but Openbox will try to
+
+ <desktop>1</desktop>
+ # 1 is the first desktop, 'all' for all desktops
+
+ <layer>normal</layer>
+ # 'above', 'normal', or 'below'
+
+ <iconic>no</iconic>
+ # make the window iconified when it appears, or not
+
+ <skip_pager>no</skip_pager>
+ # asks to not be shown in pagers
+
+ <skip_taskbar>no</skip_taskbar>
+ # asks to not be shown in taskbars. window cycling actions will also
+ # skip past such windows
+
+ <fullscreen>yes</fullscreen>
+ # make the window in fullscreen mode when it appears
+
+ <maximized>true</maximized>
+ # 'Horizontal', 'Vertical' or boolean (yes/no)
+ </application>
+
+ # end of the example
+-->
+</applications>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- nxml -*- -->
+
+<!-- XML Schema for the Openbox window manager configuration file -->
+
+<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN"
+ "http://www.w3.org/2001/XMLSchema.dtd" [
+<!ATTLIST schema xmlns:ob CDATA #IMPLIED>
+<!ENTITY % p "xsd:">
+<!ENTITY % s ":xsd">
+]>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://openbox.org/4.0/rc"
+ xmlns:ob="http://openbox.org/4.0/rc"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <!--
+ root node
+ -->
+ <xsd:element name="applications">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" name="application" type="ob:application"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="application">
+ <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>
+ <!-- at least one of these must be present -->
+ <xsd:attribute name="role" type="xsd:string"/>
+ <xsd:attribute name="title" type="xsd:string"/>
+ <xsd:attribute name="type" type="ob:clienttype"/>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="class" type="xsd:string"/>
+ </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="window_position">
+ <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:simpleType name="layer">
+ <xsd:restriction base="xsd:string">
+ <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">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Horizontal"/>
+ <xsd:enumeration value="Vertical"/>
+ <!-- this is a copy of ob:bool. Keep it in sync. -->
+ <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:simpleType name="clienttype">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="desktop"/>
+ <xsd:enumeration value="dock"/>
+ <xsd:enumeration value="toolbar"/>
+ <xsd:enumeration value="menu"/>
+ <xsd:enumeration value="splash"/>
+ <xsd:enumeration value="utility"/>
+ <xsd:enumeration value="dialog"/>
+ <xsd:enumeration value="normal"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
--- /dev/null
+<keys>
+ <!-- Keybindings for desktop switching -->
+ <keybind key="C-A-Left">
+ <action name="GoToDesktop"><to>left</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="C-A-Right">
+ <action name="GoToDesktop"><to>right</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="C-A-Up">
+ <action name="GoToDesktop"><to>up</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="C-A-Down">
+ <action name="GoToDesktop"><to>down</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="S-A-Left">
+ <action name="SendToDesktop"><to>left</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="S-A-Right">
+ <action name="SendToDesktop"><to>right</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="S-A-Up">
+ <action name="SendToDesktop"><to>up</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="S-A-Down">
+ <action name="SendToDesktop"><to>down</to><wrap>no</wrap></action>
+ </keybind>
+ <keybind key="W-F1">
+ <action name="GoToDesktop"><to>1</to></action>
+ </keybind>
+ <keybind key="W-F2">
+ <action name="GoToDesktop"><to>2</to></action>
+ </keybind>
+ <keybind key="W-F3">
+ <action name="GoToDesktop"><to>3</to></action>
+ </keybind>
+ <keybind key="W-F4">
+ <action name="GoToDesktop"><to>4</to></action>
+ </keybind>
+ <keybind key="W-d">
+ <action name="ToggleShowDesktop"/>
+ </keybind>
+
+ <!-- Keybindings for windows -->
+ <keybind key="A-F4">
+ <action name="Close"/>
+ </keybind>
+ <keybind key="A-Escape">
+ <action name="Lower"/>
+ <action name="FocusToBottom"/>
+ <action name="Unfocus"/>
+ </keybind>
+ <keybind key="A-space">
+ <action name="ShowMenu"><menu>client-menu</menu></action>
+ </keybind>
+
+ <!-- Keybindings for window switching -->
+ <keybind key="A-Tab">
+ <action name="NextWindow">
+ <finalactions>
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </finalactions>
+ </action>
+ </keybind>
+ <keybind key="A-S-Tab">
+ <action name="PreviousWindow">
+ <finalactions>
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </finalactions>
+ </action>
+ </keybind>
+ <keybind key="C-A-Tab">
+ <action name="NextWindow">
+ <panels>yes</panels><desktop>yes</desktop>
+ <finalactions>
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </finalactions>
+ </action>
+ </keybind>
+
+ <!-- Keybindings for window switching with the arrow keys -->
+ <keybind key="W-S-Right">
+ <action name="DirectionalCycleWindows">
+ <direction>right</direction>
+ </action>
+ </keybind>
+ <keybind key="W-S-Left">
+ <action name="DirectionalCycleWindows">
+ <direction>left</direction>
+ </action>
+ </keybind>
+ <keybind key="W-S-Up">
+ <action name="DirectionalCycleWindows">
+ <direction>up</direction>
+ </action>
+ </keybind>
+ <keybind key="W-S-Down">
+ <action name="DirectionalCycleWindows">
+ <direction>down</direction>
+ </action>
+ </keybind>
+
+ <!-- Keybindings for running applications -->
+ <keybind key="W-e">
+ <action name="Execute">
+ <startupnotify>
+ <enabled>true</enabled>
+ <name>Konqueror</name>
+ </startupnotify>
+ <command>kfmclient openProfile filemanagement</command>
+ </action>
+ </keybind>
+</keys>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- nxml -*- -->
+
+<!-- XML Schema for the Openbox window manager configuration file -->
+
+<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN"
+ "http://www.w3.org/2001/XMLSchema.dtd" [
+<!ATTLIST schema xmlns:ob CDATA #IMPLIED>
+<!ENTITY % p "xsd:">
+<!ENTITY % s ":xsd">
+]>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://openbox.org/4.0/rc"
+ xmlns:ob="http://openbox.org/4.0/rc"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <!--
+ root node
+ -->
+ <xsd:element name="keys">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybind">
+ <xsd:choice>
+ <xsd:element maxOccurs="unbounded" name="action" type="xsd:string"/>
+ <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/>
+ </xsd:choice>
+ <xsd:attribute name="chroot" type="ob:bool"/>
+ <xsd:attribute name="key" type="ob:keyname" use="required"/>
+ </xsd:complexType>
+</xsd:schema>
--- /dev/null
+<mouse>
+ <context name="Frame">
+ <mousebind button="A-Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ <mousebind button="A-Left" action="Click">
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="A-Left" action="Drag">
+ <action name="Move"/>
+ </mousebind>
+
+ <mousebind button="A-Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="A-Right" action="Drag">
+ <action name="Resize"/>
+ </mousebind>
+
+ <mousebind button="A-Middle" action="Press">
+ <action name="Lower"/>
+ <action name="FocusToBottom"/>
+ <action name="Unfocus"/>
+ </mousebind>
+
+ <mousebind button="A-Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="A-Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+ <mousebind button="C-A-Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="C-A-Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+ <mousebind button="A-S-Up" action="Click">
+ <action name="SendToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="A-S-Down" action="Click">
+ <action name="SendToDesktop"><to>next</to></action>
+ </mousebind>
+ </context>
+
+ <context name="Titlebar">
+ <mousebind button="Left" action="Drag">
+ <action name="Move"/>
+ </mousebind>
+ <mousebind button="Left" action="DoubleClick">
+ <action name="ToggleMaximize"/>
+ </mousebind>
+
+ <mousebind button="Up" action="Click">
+ <action name="if">
+ <shaded>no</shaded>
+ <then>
+ <action name="Shade"/>
+ <action name="FocusToBottom"/>
+ <action name="Unfocus"/>
+ <action name="Lower"/>
+ </then>
+ </action>
+ </mousebind>
+ <mousebind button="Down" action="Click">
+ <action name="if">
+ <shaded>yes</shaded>
+ <then>
+ <action name="Unshade"/>
+ <action name="Raise"/>
+ </then>
+ </action>
+ </mousebind>
+ </context>
+
+ <context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+
+ <mousebind button="Middle" action="Press">
+ <action name="Lower"/>
+ <action name="FocusToBottom"/>
+ <action name="Unfocus"/>
+ </mousebind>
+
+ <mousebind button="Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="ShowMenu"><menu>client-menu</menu></action>
+ </mousebind>
+ </context>
+
+ <context name="Top">
+ <mousebind button="Left" action="Drag">
+ <action name="Resize"><edge>top</edge></action>
+ </mousebind>
+ </context>
+
+ <context name="Left">
+ <mousebind button="Left" action="Drag">
+ <action name="Resize"><edge>left</edge></action>
+ </mousebind>
+ </context>
+
+ <context name="Right">
+ <mousebind button="Left" action="Drag">
+ <action name="Resize"><edge>right</edge></action>
+ </mousebind>
+ </context>
+
+ <context name="Bottom">
+ <mousebind button="Left" action="Drag">
+ <action name="Resize"><edge>bottom</edge></action>
+ </mousebind>
+
+ <mousebind button="Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="ShowMenu"><menu>client-menu</menu></action>
+ </mousebind>
+ </context>
+
+ <context name="TRCorner BRCorner TLCorner BLCorner">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="Left" action="Drag">
+ <action name="Resize"/>
+ </mousebind>
+ </context>
+
+ <context name="Client">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ <mousebind button="Middle" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ <mousebind button="Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ </context>
+
+ <context name="Icon">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ <action name="ShowMenu"><menu>client-menu</menu></action>
+ </mousebind>
+ <mousebind button="Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="ShowMenu"><menu>client-menu</menu></action>
+ </mousebind>
+ </context>
+
+ <context name="AllDesktops">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="Left" action="Click">
+ <action name="ToggleOmnipresent"/>
+ </mousebind>
+ </context>
+
+ <context name="Shade">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ <mousebind button="Left" action="Click">
+ <action name="ToggleShade"/>
+ </mousebind>
+ </context>
+
+ <context name="Iconify">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ <mousebind button="Left" action="Click">
+ <action name="Iconify"/>
+ </mousebind>
+ </context>
+
+ <context name="Maximize">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="Middle" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="Left" action="Click">
+ <action name="ToggleMaximize"/>
+ </mousebind>
+ <mousebind button="Middle" action="Click">
+ <action name="ToggleMaximize"><direction>vertical</direction></action>
+ </mousebind>
+ <mousebind button="Right" action="Click">
+ <action name="ToggleMaximize"><direction>horizontal</direction></action>
+ </mousebind>
+ </context>
+
+ <context name="Close">
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ <action name="Unshade"/>
+ </mousebind>
+ <mousebind button="Left" action="Click">
+ <action name="Close"/>
+ </mousebind>
+ </context>
+
+ <context name="Desktop">
+ <mousebind button="Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+
+ <mousebind button="A-Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="A-Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+ <mousebind button="C-A-Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="C-A-Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+
+ <mousebind button="Left" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ <mousebind button="Right" action="Press">
+ <action name="Focus"/>
+ <action name="Raise"/>
+ </mousebind>
+ </context>
+
+ <context name="Root">
+ <!-- Menus -->
+ <mousebind button="Middle" action="Press">
+ <action name="ShowMenu"><menu>client-list-combined-menu</menu></action>
+ </mousebind>
+ <mousebind button="Right" action="Press">
+ <action name="ShowMenu"><menu>root-menu</menu></action>
+ </mousebind>
+ </context>
+
+ <context name="MoveResize">
+ <mousebind button="Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+ <mousebind button="A-Up" action="Click">
+ <action name="GoToDesktop"><to>previous</to></action>
+ </mousebind>
+ <mousebind button="A-Down" action="Click">
+ <action name="GoToDesktop"><to>next</to></action>
+ </mousebind>
+ </context>
+</mouse>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- nxml -*- -->
+
+<!-- XML Schema for the Openbox window manager configuration file -->
+
+<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN"
+ "http://www.w3.org/2001/XMLSchema.dtd" [
+<!ATTLIST schema xmlns:ob CDATA #IMPLIED>
+<!ENTITY % p "xsd:">
+<!ENTITY % s ":xsd">
+]>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://openbox.org/4.0/rc"
+ xmlns:ob="http://openbox.org/4.0/rc"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <!--
+ root node
+ -->
+ <xsd:element name="mouse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="context">
+ <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="mousebind">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" name="action" type="xsd:string"/>
+ </xsd:sequence>
+ <xsd:attribute name="action" type="ob:mouseaction" use="required"/>
+ <xsd:attribute name="button" type="ob:button" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="mouseaction">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Click"/>
+ <xsd:enumeration value="DoubleClick"/>
+ <xsd:enumeration value="Drag"/>
+ <xsd:enumeration value="Press"/>
+ <xsd:enumeration value="Release"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="button">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="(([ACMSW]|Mod[1-5])-){,5}(Left|Middle|Right|Up|Down|Button[0-9]+)"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="contextname">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Desktop"/>
+ <xsd:enumeration value="Root"/>
+ <xsd:enumeration value="Client"/>
+ <xsd:enumeration value="Titlebar"/>
+ <xsd:enumeration value="Frame"/>
+ <xsd:enumeration value="TLCorner"/>
+ <xsd:enumeration value="TRCorner"/>
+ <xsd:enumeration value="BLCorner"/>
+ <xsd:enumeration value="BRCorner"/>
+ <xsd:enumeration value="Top"/>
+ <xsd:enumeration value="Left"/>
+ <xsd:enumeration value="Right"/>
+ <xsd:enumeration value="Bottom"/>
+ <xsd:enumeration value="Maximize"/>
+ <xsd:enumeration value="AllDesktops"/>
+ <xsd:enumeration value="Shade"/>
+ <xsd:enumeration value="Iconify"/>
+ <xsd:enumeration value="Icon"/>
+ <xsd:enumeration value="Close"/>
+ <xsd:enumeration value="MoveResize"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- Do not edit this file, it will be overwritten on install.
- Copy the file to $HOME/.config/openbox/ instead. -->
-
-<openbox_config xmlns="http://openbox.org/3.4/rc"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<resistance>
- <strength>10</strength>
- <screen_edge_strength>20</screen_edge_strength>
-</resistance>
-
-<focus>
- <focusNew>yes</focusNew>
- <!-- always try to focus new windows when they appear. other rules do
- apply -->
- <followMouse>no</followMouse>
- <!-- move focus to a window when you move the mouse into it -->
- <focusLast>yes</focusLast>
- <!-- focus the last used window when changing desktops, instead of the one
- under the mouse pointer. when followMouse is enabled -->
- <underMouse>no</underMouse>
- <!-- move focus under the mouse, even when the mouse is not moving -->
- <focusDelay>200</focusDelay>
- <!-- when followMouse is enabled, the mouse must be inside the window for
- this many milliseconds (1000 = 1 sec) before moving focus to it -->
- <raiseOnFocus>no</raiseOnFocus>
- <!-- when followMouse is enabled, and a window is given focus by moving the
- mouse into it, also raise the window -->
-</focus>
-
-<placement>
- <policy>Smart</policy>
- <!-- 'Smart' or 'UnderMouse' -->
- <center>yes</center>
- <!-- whether to place windows in the center of the free area found or
- the top left corner -->
- <monitor>Primary</monitor>
- <!-- with Smart placement on a multi-monitor system, try to place new windows
- on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where
- the active window is, 'Primary' - only on the primary monitor -->
- <primaryMonitor>1</primaryMonitor>
- <!-- The monitor where Openbox should place popup dialogs such as the
- focus cycling popup, or the desktop switch popup. It can be an index
- from 1, specifying a particular monitor. Or it can be one of the
- following: 'Mouse' - where the mouse is, or
- 'Active' - where the active window is -->
-</placement>
-
-<theme>
- <name>Clearlooks</name>
- <titleLayout>NLIMC</titleLayout>
- <!--
- available characters are NDSLIMC, each can occur at most once.
- N: window icon
- L: window label (AKA title).
- I: iconify
- M: maximize
- C: close
- S: shade (roll up/down)
- D: omnipresent (on all desktops).
- -->
- <keepBorder>yes</keepBorder>
- <animateIconify>yes</animateIconify>
- <font place="ActiveWindow">
- <name>sans</name>
- <size>8</size>
- <!-- font size in points -->
- <weight>bold</weight>
- <!-- 'bold' or 'normal' -->
- <slant>normal</slant>
- <!-- 'italic' or 'normal' -->
- </font>
- <font place="InactiveWindow">
- <name>sans</name>
- <size>8</size>
- <!-- font size in points -->
- <weight>bold</weight>
- <!-- 'bold' or 'normal' -->
- <slant>normal</slant>
- <!-- 'italic' or 'normal' -->
- </font>
- <font place="MenuHeader">
- <name>sans</name>
- <size>9</size>
- <!-- font size in points -->
- <weight>normal</weight>
- <!-- 'bold' or 'normal' -->
- <slant>normal</slant>
- <!-- 'italic' or 'normal' -->
- </font>
- <font place="MenuItem">
- <name>sans</name>
- <size>9</size>
- <!-- font size in points -->
- <weight>normal</weight>
- <!-- 'bold' or 'normal' -->
- <slant>normal</slant>
- <!-- 'italic' or 'normal' -->
- </font>
- <font place="ActiveOnScreenDisplay">
- <name>sans</name>
- <size>9</size>
- <!-- font size in points -->
- <weight>bold</weight>
- <!-- 'bold' or 'normal' -->
- <slant>normal</slant>
- <!-- 'italic' or 'normal' -->
- </font>
- <font place="InactiveOnScreenDisplay">
- <name>sans</name>
- <size>9</size>
- <!-- font size in points -->
- <weight>bold</weight>
- <!-- 'bold' or 'normal' -->
- <slant>normal</slant>
- <!-- 'italic' or 'normal' -->
- </font>
-</theme>
-
-<desktops>
- <!-- this stuff is only used at startup, pagers allow you to change them
- during a session
-
- these are default values to use when other ones are not already set
- by other applications, or saved in your session
-
- use obconf if you want to change these without having to log out
- and back in -->
- <number>4</number>
- <firstdesk>1</firstdesk>
- <names>
- <!-- set names up here if you want to, like this:
- <name>desktop 1</name>
- <name>desktop 2</name>
- -->
- </names>
- <popupTime>875</popupTime>
- <!-- The number of milliseconds to show the popup for when switching
- desktops. Set this to 0 to disable the popup. -->
-</desktops>
-
-<resize>
- <drawContents>yes</drawContents>
- <popupShow>Nonpixel</popupShow>
- <!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) -->
- <popupPosition>Center</popupPosition>
- <!-- 'Center', 'Top', or 'Fixed' -->
- <popupFixedPosition>
- <!-- these are used if popupPosition is set to 'Fixed' -->
-
- <x>10</x>
- <!-- positive number for distance from left edge, negative number for
- distance from right edge, or 'Center' -->
- <y>10</y>
- <!-- positive number for distance from top edge, negative number for
- distance from bottom edge, or 'Center' -->
- </popupFixedPosition>
-</resize>
-
-<!-- You can reserve a portion of your screen where windows will not cover when
- they are maximized, or when they are initially placed.
- Many programs reserve space automatically, but you can use this in other
- cases. -->
-<margins>
- <top>0</top>
- <bottom>0</bottom>
- <left>0</left>
- <right>0</right>
-</margins>
-
-<dock>
- <position>TopLeft</position>
- <!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating -->
- <floatingX>0</floatingX>
- <floatingY>0</floatingY>
- <noStrut>no</noStrut>
- <stacking>Above</stacking>
- <!-- 'Above', 'Normal', or 'Below' -->
- <direction>Vertical</direction>
- <!-- 'Vertical' or 'Horizontal' -->
- <autoHide>no</autoHide>
- <hideDelay>300</hideDelay>
- <!-- in milliseconds (1000 = 1 second) -->
- <showDelay>300</showDelay>
- <!-- in milliseconds (1000 = 1 second) -->
- <moveButton>Middle</moveButton>
- <!-- 'Left', 'Middle', 'Right' -->
-</dock>
-
-<keyboard>
- <chainQuitKey>C-g</chainQuitKey>
-
- <!-- Keybindings for desktop switching -->
- <keybind key="C-A-Left">
- <action name="GoToDesktop"><to>left</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="C-A-Right">
- <action name="GoToDesktop"><to>right</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="C-A-Up">
- <action name="GoToDesktop"><to>up</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="C-A-Down">
- <action name="GoToDesktop"><to>down</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="S-A-Left">
- <action name="SendToDesktop"><to>left</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="S-A-Right">
- <action name="SendToDesktop"><to>right</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="S-A-Up">
- <action name="SendToDesktop"><to>up</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="S-A-Down">
- <action name="SendToDesktop"><to>down</to><wrap>no</wrap></action>
- </keybind>
- <keybind key="W-F1">
- <action name="GoToDesktop"><to>1</to></action>
- </keybind>
- <keybind key="W-F2">
- <action name="GoToDesktop"><to>2</to></action>
- </keybind>
- <keybind key="W-F3">
- <action name="GoToDesktop"><to>3</to></action>
- </keybind>
- <keybind key="W-F4">
- <action name="GoToDesktop"><to>4</to></action>
- </keybind>
- <keybind key="W-d">
- <action name="ToggleShowDesktop"/>
- </keybind>
-
- <!-- Keybindings for windows -->
- <keybind key="A-F4">
- <action name="Close"/>
- </keybind>
- <keybind key="A-Escape">
- <action name="Lower"/>
- <action name="FocusToBottom"/>
- <action name="Unfocus"/>
- </keybind>
- <keybind key="A-space">
- <action name="ShowMenu"><menu>client-menu</menu></action>
- </keybind>
-
- <!-- Keybindings for window switching -->
- <keybind key="A-Tab">
- <action name="NextWindow">
- <finalactions>
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </finalactions>
- </action>
- </keybind>
- <keybind key="A-S-Tab">
- <action name="PreviousWindow">
- <finalactions>
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </finalactions>
- </action>
- </keybind>
- <keybind key="C-A-Tab">
- <action name="NextWindow">
- <panels>yes</panels><desktop>yes</desktop>
- <finalactions>
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </finalactions>
- </action>
- </keybind>
-
- <!-- Keybindings for window switching with the arrow keys -->
- <keybind key="W-S-Right">
- <action name="DirectionalCycleWindows">
- <direction>right</direction>
- </action>
- </keybind>
- <keybind key="W-S-Left">
- <action name="DirectionalCycleWindows">
- <direction>left</direction>
- </action>
- </keybind>
- <keybind key="W-S-Up">
- <action name="DirectionalCycleWindows">
- <direction>up</direction>
- </action>
- </keybind>
- <keybind key="W-S-Down">
- <action name="DirectionalCycleWindows">
- <direction>down</direction>
- </action>
- </keybind>
-
- <!-- Keybindings for running applications -->
- <keybind key="W-e">
- <action name="Execute">
- <startupnotify>
- <enabled>true</enabled>
- <name>Konqueror</name>
- </startupnotify>
- <command>kfmclient openProfile filemanagement</command>
- </action>
- </keybind>
-</keyboard>
-
-<mouse>
- <dragThreshold>1</dragThreshold>
- <!-- number of pixels the mouse must move before a drag begins -->
- <doubleClickTime>200</doubleClickTime>
- <!-- in milliseconds (1000 = 1 second) -->
- <screenEdgeWarpTime>400</screenEdgeWarpTime>
- <!-- Time before changing desktops when the pointer touches the edge of the
- screen while moving a window, in milliseconds (1000 = 1 second).
- Set this to 0 to disable warping -->
- <screenEdgeWarpMouse>false</screenEdgeWarpMouse>
- <!-- Set this to TRUE to move the mouse pointer across the desktop when
- switching due to hitting the edge of the screen -->
-
- <context name="Frame">
- <mousebind button="A-Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- <mousebind button="A-Left" action="Click">
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="A-Left" action="Drag">
- <action name="Move"/>
- </mousebind>
-
- <mousebind button="A-Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="A-Right" action="Drag">
- <action name="Resize"/>
- </mousebind>
-
- <mousebind button="A-Middle" action="Press">
- <action name="Lower"/>
- <action name="FocusToBottom"/>
- <action name="Unfocus"/>
- </mousebind>
-
- <mousebind button="A-Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="A-Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
- <mousebind button="C-A-Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="C-A-Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
- <mousebind button="A-S-Up" action="Click">
- <action name="SendToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="A-S-Down" action="Click">
- <action name="SendToDesktop"><to>next</to></action>
- </mousebind>
- </context>
-
- <context name="Titlebar">
- <mousebind button="Left" action="Drag">
- <action name="Move"/>
- </mousebind>
- <mousebind button="Left" action="DoubleClick">
- <action name="ToggleMaximize"/>
- </mousebind>
-
- <mousebind button="Up" action="Click">
- <action name="if">
- <shaded>no</shaded>
- <then>
- <action name="Shade"/>
- <action name="FocusToBottom"/>
- <action name="Unfocus"/>
- <action name="Lower"/>
- </then>
- </action>
- </mousebind>
- <mousebind button="Down" action="Click">
- <action name="if">
- <shaded>yes</shaded>
- <then>
- <action name="Unshade"/>
- <action name="Raise"/>
- </then>
- </action>
- </mousebind>
- </context>
-
- <context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
-
- <mousebind button="Middle" action="Press">
- <action name="Lower"/>
- <action name="FocusToBottom"/>
- <action name="Unfocus"/>
- </mousebind>
-
- <mousebind button="Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="ShowMenu"><menu>client-menu</menu></action>
- </mousebind>
- </context>
-
- <context name="Top">
- <mousebind button="Left" action="Drag">
- <action name="Resize"><edge>top</edge></action>
- </mousebind>
- </context>
-
- <context name="Left">
- <mousebind button="Left" action="Drag">
- <action name="Resize"><edge>left</edge></action>
- </mousebind>
- </context>
-
- <context name="Right">
- <mousebind button="Left" action="Drag">
- <action name="Resize"><edge>right</edge></action>
- </mousebind>
- </context>
-
- <context name="Bottom">
- <mousebind button="Left" action="Drag">
- <action name="Resize"><edge>bottom</edge></action>
- </mousebind>
-
- <mousebind button="Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="ShowMenu"><menu>client-menu</menu></action>
- </mousebind>
- </context>
-
- <context name="TRCorner BRCorner TLCorner BLCorner">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="Left" action="Drag">
- <action name="Resize"/>
- </mousebind>
- </context>
-
- <context name="Client">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- <mousebind button="Middle" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- <mousebind button="Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- </context>
-
- <context name="Icon">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- <action name="ShowMenu"><menu>client-menu</menu></action>
- </mousebind>
- <mousebind button="Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="ShowMenu"><menu>client-menu</menu></action>
- </mousebind>
- </context>
-
- <context name="AllDesktops">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="Left" action="Click">
- <action name="ToggleOmnipresent"/>
- </mousebind>
- </context>
-
- <context name="Shade">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- <mousebind button="Left" action="Click">
- <action name="ToggleShade"/>
- </mousebind>
- </context>
-
- <context name="Iconify">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- <mousebind button="Left" action="Click">
- <action name="Iconify"/>
- </mousebind>
- </context>
-
- <context name="Maximize">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="Middle" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="Left" action="Click">
- <action name="ToggleMaximize"/>
- </mousebind>
- <mousebind button="Middle" action="Click">
- <action name="ToggleMaximize"><direction>vertical</direction></action>
- </mousebind>
- <mousebind button="Right" action="Click">
- <action name="ToggleMaximize"><direction>horizontal</direction></action>
- </mousebind>
- </context>
-
- <context name="Close">
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- <action name="Unshade"/>
- </mousebind>
- <mousebind button="Left" action="Click">
- <action name="Close"/>
- </mousebind>
- </context>
-
- <context name="Desktop">
- <mousebind button="Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
-
- <mousebind button="A-Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="A-Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
- <mousebind button="C-A-Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="C-A-Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
-
- <mousebind button="Left" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- <mousebind button="Right" action="Press">
- <action name="Focus"/>
- <action name="Raise"/>
- </mousebind>
- </context>
-
- <context name="Root">
- <!-- Menus -->
- <mousebind button="Middle" action="Press">
- <action name="ShowMenu"><menu>client-list-combined-menu</menu></action>
- </mousebind>
- <mousebind button="Right" action="Press">
- <action name="ShowMenu"><menu>root-menu</menu></action>
- </mousebind>
- </context>
-
- <context name="MoveResize">
- <mousebind button="Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
- <mousebind button="A-Up" action="Click">
- <action name="GoToDesktop"><to>previous</to></action>
- </mousebind>
- <mousebind button="A-Down" action="Click">
- <action name="GoToDesktop"><to>next</to></action>
- </mousebind>
- </context>
-</mouse>
-
-<menu>
- <!-- You can specify more than one menu file in here and they are all loaded,
- just don't make menu ids clash or, well, it'll be kind of pointless -->
-
- <!-- default menu file (or custom one in $HOME/.config/openbox/) -->
- <file>menu.xml</file>
- <hideDelay>200</hideDelay>
- <!-- if a press-release lasts longer than this setting (in milliseconds), the
- menu is hidden again -->
- <middle>no</middle>
- <!-- center submenus vertically about the parent entry -->
- <submenuShowDelay>100</submenuShowDelay>
- <!-- time to delay before showing a submenu after hovering over the parent
- entry.
- if this is a negative value, then the delay is infinite and the
- submenu will not be shown until it is clicked on -->
- <submenuHideDelay>400</submenuHideDelay>
- <!-- time to delay before hiding a submenu when selecting another
- entry in parent menu -->
- if this is a negative value, then the delay is infinite and the
- submenu will not be hidden until a different submenu is opened -->
- <applicationIcons>yes</applicationIcons>
- <!-- controls if icons appear in the client-list-(combined-)menu -->
- <manageDesktops>yes</manageDesktops>
- <!-- show the manage desktops section in the client-list-(combined-)menu -->
-</menu>
-
-<applications>
-<!--
- # this is an example with comments through out. use these to make your
- # own rules, but without the comments of course.
- # you may use one or more of the name/class/role/title/type rules to specify
- # windows to match
-
- <application name="the window's _OB_APP_NAME property (see obxprop)"
- class="the window's _OB_APP_CLASS property (see obxprop)"
- role="the window's _OB_APP_ROLE property (see obxprop)"
- title="the window's _OB_APP_TITLE property (see obxprop)"
- type="the window's _OB_APP_TYPE property (see obxprob)..
- (if unspecified, then it is 'dialog' for child windows)">
- # you may set only one of name/class/role/title/type, or you may use more
- # than one together to restrict your matches.
-
- # the name, class, role, and title use simple wildcard matching such as those
- # used by a shell. you can use * to match any characters and ? to match
- # any single character.
-
- # the type is one of: normal, dialog, splash, utility, menu, toolbar, dock,
- # or desktop
-
- # when multiple rules match a window, they will all be applied, in the
- # order that they appear in this list
-
-
- # each rule element can be left out or set to 'default' to specify to not
- # change that attribute of the window
-
- <decor>yes</decor>
- # enable or disable window decorations
-
- <shade>no</shade>
- # make the window shaded when it appears, or not
-
- <position force="no">
- # the position is only used if both an x and y coordinate are provided
- # (and not set to 'default')
- # when force is "yes", then the window will be placed here even if it
- # says you want it placed elsewhere. this is to override buggy
- # applications who refuse to behave
- <x>center</x>
- # a number like 50, or 'center' to center on screen. use a negative number
- # to start from the right (or bottom for <y>), ie -50 is 50 pixels from the
- # right edge (or bottom).
- <y>200</y>
- <monitor>1</monitor>
- # specifies the monitor in a xinerama setup.
- # 1 is the first head, or 'mouse' for wherever the mouse is
- </position>
-
- <focus>yes</focus>
- # if the window should try be given focus when it appears. if this is set
- # to yes it doesn't guarantee the window will be given focus. some
- # restrictions may apply, but Openbox will try to
-
- <desktop>1</desktop>
- # 1 is the first desktop, 'all' for all desktops
-
- <layer>normal</layer>
- # 'above', 'normal', or 'below'
-
- <iconic>no</iconic>
- # make the window iconified when it appears, or not
-
- <skip_pager>no</skip_pager>
- # asks to not be shown in pagers
-
- <skip_taskbar>no</skip_taskbar>
- # asks to not be shown in taskbars. window cycling actions will also
- # skip past such windows
-
- <fullscreen>yes</fullscreen>
- # make the window in fullscreen mode when it appears
-
- <maximized>true</maximized>
- # 'Horizontal', 'Vertical' or boolean (yes/no)
- </application>
-
- # end of the example
--->
-</applications>
-
-</openbox_config>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?> <!-- -*- nxml -*- -->
-
-<!-- XML Schema for the Openbox window manager configuration file -->
-
-<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN"
- "http://www.w3.org/2001/XMLSchema.dtd" [
-<!ATTLIST schema xmlns:ob CDATA #IMPLIED>
-<!ENTITY % p "xsd:">
-<!ENTITY % s ":xsd">
-]>
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://openbox.org/4.0/rc"
- xmlns:ob="http://openbox.org/4.0/rc"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified">
- <!--
- root node
- -->
- <xsd:element name="openbox_config">
- <xsd:annotation>
- <xsd:documentation>all these elements are expected in a openbox config file</xsd:documentation>
- </xsd:annotation>
- <xsd:complexType>
- <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>
- <!--
- complex types
- -->
- <xsd:complexType name="resistance">
- <xsd:annotation>
- <xsd:documentation>defines behaviour of windows when close to each other or the screen edge</xsd:documentation>
- </xsd:annotation>
- <xsd: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: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:element minOccurs="0" name="unfocusOnLeave" 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: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:element minOccurs="0" name="monitor" type="ob:primarymonitor"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="margins">
- <xsd:annotation>
- <xsd:documentation>defines desktop margins</xsd:documentation>
- </xsd:annotation>
- <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: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: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: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: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: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: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: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:dialogtype"/>
- <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:choice>
- <xsd:element maxOccurs="unbounded" name="action" type="ob:action"/>
- <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/>
- </xsd:choice>
- <xsd:attribute name="chroot" type="ob:bool"/>
- <xsd:attribute name="key" type="ob:keyname" use="required"/>
- </xsd:complexType>
- <xsd:complexType name="keyboard">
- <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: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: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: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 minOccurs="0" name="screenEdgeWarpMouse" type="ob:bool"/>
- <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="menu">
- <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="showIcons" type="ob:bool"/>
- <xsd:element minOccurs="0" name="manageDesktops" type="ob:bool"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:complexType name="window_position">
- <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: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>
- <!-- at least one of these must be present -->
- <xsd:attribute name="role" type="xsd:string"/>
- <xsd:attribute name="title" type="xsd:string"/>
- <xsd:attribute name="type" type="ob:clienttype"/>
- <xsd:attribute name="name" type="xsd:string"/>
- <xsd:attribute name="class" type="xsd:string"/>
- </xsd:complexType>
- <xsd:complexType name="applications">
- <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: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:restriction base="xsd:string">
- <xsd:enumeration value="desktop"/>
- <xsd:enumeration value="dock"/>
- <xsd:enumeration value="toolbar"/>
- <xsd:enumeration value="menu"/>
- <xsd:enumeration value="splash"/>
- <xsd:enumeration value="utility"/>
- <xsd:enumeration value="dialog"/>
- <xsd:enumeration value="normal"/>
- </xsd:restriction>
- </xsd:simpleType>
- <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:simpleType name="fontplace">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="ActiveWindow"/>
- <xsd:enumeration value="InactiveWindow"/>
- <xsd:enumeration value="MenuHeader"/>
- <xsd:enumeration value="MenuItem"/>
- <xsd:enumeration value="OnScreenDisplay"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="fontweight">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="normal"/>
- <xsd:enumeration value="bold"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="fontslant">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="normal"/>
- <xsd:enumeration value="italic"/>
- <xsd:enumeration value="opaque"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="button">
- <xsd:restriction base="xsd:string">
- <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:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="mouse_or_int">
- <xsd:restriction base="xsd:string">
- <!-- ob: atoi($_) unless $_ eq 'center'; -->
- <!-- I think the regexp DTRT WRT atoi. -->
- <xsd:pattern value="mouse|0|[1-9][0-9]*"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="contextname">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Desktop"/>
- <xsd:enumeration value="Root"/>
- <xsd:enumeration value="Client"/>
- <xsd:enumeration value="Titlebar"/>
- <xsd:enumeration value="Frame"/>
- <xsd:enumeration value="TLCorner"/>
- <xsd:enumeration value="TRCorner"/>
- <xsd:enumeration value="BLCorner"/>
- <xsd:enumeration value="BRCorner"/>
- <xsd:enumeration value="Top"/>
- <xsd:enumeration value="Left"/>
- <xsd:enumeration value="Right"/>
- <xsd:enumeration value="Bottom"/>
- <xsd:enumeration value="Maximize"/>
- <xsd:enumeration value="AllDesktops"/>
- <xsd:enumeration value="Shade"/>
- <xsd:enumeration value="Iconify"/>
- <xsd:enumeration value="Icon"/>
- <xsd:enumeration value="Close"/>
- <xsd:enumeration value="MoveResize"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="direction">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Horizontal"/>
- <xsd:enumeration value="Vertical"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="dock_position">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="TopLeft"/>
- <xsd:enumeration value="Top"/>
- <xsd:enumeration value="TopRight"/>
- <xsd:enumeration value="Right"/>
- <xsd:enumeration value="BottomRight"/>
- <xsd:enumeration value="Bottom"/>
- <xsd:enumeration value="BottomLeft"/>
- <xsd:enumeration value="Left"/>
- <xsd:enumeration value="Floating"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="keyname">
- <xsd:restriction base="xsd:string">
- <!-- FIXME: M, Mod2, Mod5 in addition to S, A, C -->
- <!-- how do we do all substrings and permutations? -->
- <xsd:pattern value="(([ACMSW]|Mod[1-5])-){,5}[a-zA-Z0-9]*"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="layer">
- <xsd:restriction base="xsd:string">
- <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">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Horizontal"/>
- <xsd:enumeration value="Vertical"/>
- <!-- this is a copy of ob:bool. Keep it in sync. -->
- <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:simpleType name="mouseaction">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Click"/>
- <xsd:enumeration value="DoubleClick"/>
- <xsd:enumeration value="Drag"/>
- <xsd:enumeration value="Press"/>
- <xsd:enumeration value="Release"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="placementpolicy">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Smart"/>
- <xsd:enumeration value="UnderMouse"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="placementmonitor">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Any"/>
- <xsd:enumeration value="Mouse"/>
- <xsd:enumeration value="Active"/>
- <xsd:enumeration value="Primary"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="primarymonitor">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Mouse"/>
- <xsd:enumeration value="Active"/>
- <xsd:enumeration value="[0-9][0-9][0-9][0-9][0-9]"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="popupposition">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Top"/>
- <xsd:enumeration value="Center"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="popupshow">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="Always"/>
- <xsd:enumeration value="Never"/>
- <xsd:enumeration value="Nonpixel"/>
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="dialogtype">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="None"/>
- <xsd:enumeration value="Icons"/>
- <xsd:enumeration value="List"/>
- </xsd:restriction>
- </xsd:simpleType>
-</xsd:schema>
*/
-static void parse_key(xmlNodePtr node, GList *keylist)
+static void parse_keybind(xmlNodePtr node, GList *keylist)
{
gchar *keystring, **keys, **key;
xmlNodePtr n;
if ((n = obt_xml_find_sibling(node->children, "keybind"))) {
while (n) {
- parse_key(n, keylist);
+ parse_keybind(n, keylist);
n = obt_xml_find_sibling(n->next, "keybind");
}
}
xmlNodePtr n;
gchar *key;
- keyboard_unbind_all();
-
if ((n = obt_xml_find_sibling(node->children, "chainQuitKey"))) {
key = obt_xml_node_string(n);
translate_key(key, &config_keyboard_reset_state,
&config_keyboard_reset_keycode);
g_free(key);
}
-
- if ((n = obt_xml_find_sibling(node->children, "keybind")))
- while (n) {
- parse_key(n, NULL);
- n = obt_xml_find_sibling(n->next, "keybind");
- }
}
/*
static void parse_mouse(xmlNodePtr node, gpointer d)
{
- xmlNodePtr n, nbut, nact;
- gchar *buttonstr;
- gchar *cxstr;
- ObMouseAction mact;
+ xmlNodePtr n;
mouse_unbind_all();
}
if ((n = obt_xml_find_sibling(node, "screenEdgeWarpMouse")))
config_mouse_screenedgewarp = obt_xml_node_bool(n);
+}
- n = obt_xml_find_sibling(node, "context");
- while (n) {
- gchar *modcxstr;
- ObFrameContext cx;
-
- if (!obt_xml_attr_string(n, "name", &cxstr))
- goto next_n;
-
- modcxstr = g_strdup(cxstr); /* make a copy to mutilate */
- while (frame_next_context_from_string(modcxstr, &cx)) {
- if (!cx) {
- gchar *s = strchr(modcxstr, ' ');
- if (s) {
- *s = '\0';
- g_message(_("Invalid context \"%s\" in mouse binding"),
- modcxstr);
- *s = ' ';
- }
- continue;
+static void parse_context(xmlNodePtr n, gpointer d)
+{
+ xmlNodePtr nbut, nact;
+ gchar *buttonstr;
+ gchar *cxstr;
+ ObMouseAction mact;
+ gchar *modcxstr;
+ ObFrameContext cx;
+
+ if (!obt_xml_attr_string(n, "name", &cxstr))
+ return;
+
+ modcxstr = g_strdup(cxstr); /* make a copy to mutilate */
+ while (frame_next_context_from_string(modcxstr, &cx)) {
+ if (!cx) {
+ gchar *s = strchr(modcxstr, ' ');
+ if (s) {
+ *s = '\0';
+ g_message(_("Invalid context \"%s\" in mouse binding"),
+ modcxstr);
+ *s = ' ';
}
+ continue;
+ }
- nbut = obt_xml_find_sibling(n->children, "mousebind");
- while (nbut) {
- if (!obt_xml_attr_string(nbut, "button", &buttonstr))
- goto next_nbut;
- if (obt_xml_attr_contains(nbut, "action", "press"))
- mact = OB_MOUSE_ACTION_PRESS;
- else if (obt_xml_attr_contains(nbut, "action", "release"))
- mact = OB_MOUSE_ACTION_RELEASE;
- else if (obt_xml_attr_contains(nbut, "action", "click"))
- mact = OB_MOUSE_ACTION_CLICK;
- else if (obt_xml_attr_contains(nbut, "action","doubleclick"))
- mact = OB_MOUSE_ACTION_DOUBLE_CLICK;
- else if (obt_xml_attr_contains(nbut, "action", "drag"))
- mact = OB_MOUSE_ACTION_MOTION;
- else
- goto next_nbut;
-
- nact = obt_xml_find_sibling(nbut->children, "action");
- while (nact) {
- ObActionList *actions;
- ObActionParser *p;
- xmlChar *c;
-
- c = xmlNodeGetContent(nact);
- p = action_parser_new();
- if ((actions = action_parser_read_string(p, (gchar*)c)))
- mouse_bind(buttonstr, cx, mact, actions);
- nact = obt_xml_find_sibling(nact->next, "action");
- action_list_unref(actions);
- xmlFree(c);
- action_parser_unref(p);
- }
+ nbut = obt_xml_find_sibling(n->children, "mousebind");
+ while (nbut) {
+ if (!obt_xml_attr_string(nbut, "button", &buttonstr))
+ goto next_nbut;
+ if (obt_xml_attr_contains(nbut, "action", "press"))
+ mact = OB_MOUSE_ACTION_PRESS;
+ else if (obt_xml_attr_contains(nbut, "action", "release"))
+ mact = OB_MOUSE_ACTION_RELEASE;
+ else if (obt_xml_attr_contains(nbut, "action", "click"))
+ mact = OB_MOUSE_ACTION_CLICK;
+ else if (obt_xml_attr_contains(nbut, "action","doubleclick"))
+ mact = OB_MOUSE_ACTION_DOUBLE_CLICK;
+ else if (obt_xml_attr_contains(nbut, "action", "drag"))
+ mact = OB_MOUSE_ACTION_MOTION;
+ else
+ goto next_nbut;
+
+ nact = obt_xml_find_sibling(nbut->children, "action");
+ while (nact) {
+ ObActionList *actions;
+ ObActionParser *p;
+ xmlChar *c;
+
+ c = xmlNodeGetContent(nact);
+ p = action_parser_new();
+ if ((actions = action_parser_read_string(p, (gchar*)c)))
+ mouse_bind(buttonstr, cx, mact, actions);
+ nact = obt_xml_find_sibling(nact->next, "action");
+ action_list_unref(actions);
+ xmlFree(c);
+ action_parser_unref(p);
+ }
g_free(buttonstr);
- next_nbut:
+ next_nbut:
nbut = obt_xml_find_sibling(nbut->next, "mousebind");
- }
}
- g_free(modcxstr);
- g_free(cxstr);
- next_n:
- n = obt_xml_find_sibling(n->next, "context");
}
+ g_free(modcxstr);
+ g_free(cxstr);
}
static void parse_focus(xmlNodePtr node, gpointer d)
{
ObDefKeyBind *it;
ObDefKeyBind binds[] = {
- { "Left",
- "Execute startupnotify:yes name:Konqueror \\\n"
- " command:(kfmclient openProfile filemanagement)" },
{ "A-Tab", "NextWindow" },
{ "S-A-Tab", "PreviousWindow" },
{ "A-F4", "Close" },
action_parser_unref(p);
}
-void config_startup(ObtXmlInst *i)
+void config_startup()
+{
+}
+
+enum ObConfigType {
+ CONFIG_FILE,
+ CACHE_FILE
+};
+
+static gboolean load_file(ObtXmlInst *i, enum ObConfigType type,
+ const gchar *domain, const gchar *file)
{
+ gboolean load = FALSE;
+
+ switch (type) {
+ case CONFIG_FILE:
+ load = obt_xml_load_config_file(i, domain, file, file);
+ break;
+ case CACHE_FILE:
+ load = obt_xml_load_cache_file(i, domain, file, file);
+ break;
+ }
+
+ return load;
+}
+
+gboolean config_load_config(void)
+{
+ ObtXmlInst *i = obt_xml_instance_new();
+ gboolean ok;
+
config_focus_new = TRUE;
config_focus_follow = FALSE;
config_focus_delay = 0;
translate_key("C-g", &config_keyboard_reset_state,
&config_keyboard_reset_keycode);
- bind_default_keyboard();
-
obt_xml_register(i, "keyboard", parse_keyboard, NULL);
config_mouse_threshold = 8;
config_mouse_screenedgetime = 400;
config_mouse_screenedgewarp = FALSE;
- bind_default_mouse();
-
obt_xml_register(i, "mouse", parse_mouse, NULL);
config_resist_win = 10;
obt_xml_register(i, "menu", parse_menu, NULL);
- config_per_app_settings = NULL;
+ ok = load_file(i, CACHE_FILE, "openbox", "config");
+ if (ok) {
+ obt_xml_tree_from_root(i);
+ obt_xml_close(i);
+ }
+ obt_xml_instance_unref(i);
+ return ok;
+}
+gboolean config_load_keys(void)
+{
+ ObtXmlInst *i = obt_xml_instance_new();
+ gboolean ok;
+
+ ok = load_file(i, CONFIG_FILE, "openbox", "keys");
+ if (!ok)
+ bind_default_keyboard();
+ else {
+ xmlNodePtr n, r;
+
+ r = obt_xml_root(i);
+ if ((n = obt_xml_find_sibling(r->children, "keybind")))
+ while (n) {
+ parse_keybind(n, NULL);
+ n = obt_xml_find_sibling(n->next, "keybind");
+ }
+ }
+ obt_xml_instance_unref(i);
+ return ok;
+}
+
+gboolean config_load_mouse(void)
+{
+ ObtXmlInst *i = obt_xml_instance_new();
+ gboolean ok;
+
+ obt_xml_register(i, "context", parse_context, NULL);
+
+ ok = load_file(i, CONFIG_FILE, "openbox", "mouse");
+ if (!ok)
+ bind_default_mouse();
+ else {
+ obt_xml_tree_from_root(i);
+ obt_xml_close(i);
+ }
+ obt_xml_instance_unref(i);
+ return ok;
+}
+
+gboolean config_load_windows(void)
+{
+ ObtXmlInst *i = obt_xml_instance_new();
+ gboolean ok;
+
+ config_per_app_settings = NULL;
obt_xml_register(i, "applications", parse_per_app_settings, NULL);
+
+ ok = load_file(i, CONFIG_FILE, "openbox", "applications");
+ if (ok) {
+ obt_xml_tree_from_root(i);
+ obt_xml_close(i);
+ }
+ obt_xml_instance_unref(i);
+ return ok;
}
void config_shutdown(void)
/*! Per app settings */
extern GSList *config_per_app_settings;
-void config_startup(ObtXmlInst *i);
+void config_startup(void);
void config_shutdown(void);
+gboolean config_load_config(void);
+gboolean config_load_keys(void);
+gboolean config_load_mouse(void);
+gboolean config_load_windows(void);
+
/*! Create an ObAppSettings structure with the default values */
ObAppSettings* config_create_app_settings(void);
/*! Copies any settings in src to dest, if they are their default value in
if (!loaded) {
if (obt_xml_load_config_file(menu_parse_inst,
"openbox",
- "menu.xml",
+ "menu",
"openbox_menu"))
{
obt_xml_tree_from_root(menu_parse_inst);
obt_xml_close(menu_parse_inst);
} else
g_message(_("Unable to find a valid menu file \"%s\""),
- "menu.xml");
+ "menu");
}
g_assert(menu_parse_state.parent == NULL);
static gint exitcode = 0;
static guint remote_control = 0;
static gboolean being_replaced = FALSE;
-static gchar *config_file = NULL;
static gchar *startup_cmd = NULL;
static void signal_handler(gint signal, gpointer data);
if (reconfigure) obt_keyboard_reload();
- {
- ObtXmlInst *i;
-
- /* startup the parsing so everything can register sections
- of the rc */
- i = obt_xml_instance_new();
+ config_startup();
+ {
/* register all the available actions and filters */
action_startup(reconfigure);
action_filter_startup(reconfigure);
- /* start up config which sets up with the parser */
- config_startup(i);
-
- /* parse/load user options */
- if ((config_file &&
- obt_xml_load_file(i, config_file, "openbox_config")) ||
- obt_xml_load_config_file(i, "openbox", "rc",
- "openbox_config"))
- {
- obt_xml_tree_from_root(i);
- obt_xml_close(i);
- }
- else {
- g_message(_("Unable to find a valid config file, using some simple defaults"));
- config_file = NULL;
- }
-
- if (config_file) {
- gchar *p = g_filename_to_utf8(config_file, -1,
- NULL, NULL, NULL);
- if (p)
- OBT_PROP_SETS(obt_root(ob_screen), OB_CONFIG_FILE, p);
- g_free(p);
- }
- else
- OBT_PROP_ERASE(obt_root(ob_screen), OB_CONFIG_FILE);
- /* we're done with parsing now, kill it */
- obt_xml_instance_unref(i);
+ /* set up the various file loaders */
+ config_load_config();
+ if (!config_load_keys())
+ g_message(_("Unable to find a valid \"%s\" file, using some simple defaults"), "keys");
+ if (!config_load_mouse())
+ g_message(_("Unable to find a valid \"%s\" file, using some simple defaults"), "mouse");
+ if (!config_load_windows())
+ g_message(_("No \"%s\" file found, not using any rules"),
+ "windows");
}
/* load the theme specified in the rc file */
g_print(_(" --help Display this help and exit\n"));
g_print(_(" --version Display the version and exit\n"));
g_print(_(" --replace Replace the currently running window manager\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. */
- g_print(_(" --config-file FILE Specify the path to the config file to use\n"));
g_print(_(" --sm-disable Disable connection to the session manager\n"));
g_print(_("\nPassing messages to a running Openbox instance:\n"));
g_print(_(" --reconfigure Reload Openbox's configuration\n"));
else if (!strcmp(argv[i], "--exit")) {
remote_control = 3;
}
- else if (!strcmp(argv[i], "--config-file")) {
- if (i == *argc - 1) /* no args left */
- g_printerr(_("%s requires an argument\n"), "--config-file");
- else {
- /* this will be in the current locale encoding, which is
- what we want */
- config_file = argv[i+1];
- ++i; /* skip the argument */
- ob_debug("--config-file %s", config_file);
- }
- }
else if (!strcmp(argv[i], "--sm-save-file")) {
if (i == *argc - 1) /* no args left */
/* not translated cuz it's sekret */