merge r6494-6502 from trunk
authorDana Jansens <danakj@orodu.net>
Sun, 13 May 2007 23:16:17 +0000 (23:16 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 13 May 2007 23:16:17 +0000 (23:16 +0000)
14 files changed:
Makefile.am
data/rc-gnome.xml [new file with mode: 0644]
data/rc-kde.xml [new file with mode: 0644]
data/xsession/openbox-gnome-session.in
data/xsession/openbox-kde-session.in
doc/openbox-gnome-session.1.sgml
doc/openbox-kde-session.1.sgml
doc/openbox.1.in
doc/openbox.1.sgml
openbox/event.c
openbox/openbox.c
openbox/openbox.h
openbox/session.c
openbox/startupnotify.c

index 85d6ce531553b06227d463840412ec99bd489cdb..8b9f2fb505b7294fa69b38f7afec8c8500bb857f 100644 (file)
@@ -342,6 +342,8 @@ dist_pixmap_DATA = \
 
 dist_rc_DATA = \
        data/rc.xml \
+       data/rc-gnome.xml \
+       data/rc-kde.xml \
        data/menu.xml
 
 edit = $(SED) \
diff --git a/data/rc-gnome.xml b/data/rc-gnome.xml
new file mode 100644 (file)
index 0000000..20b20c5
--- /dev/null
@@ -0,0 +1,546 @@
+<?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/4.0/rc">
+
+<resistance>
+  <strength>10</strength>
+  <screen_edge_strength>20</screen_edge_strength>
+</resistance>
+
+<focus>
+  <focusNew>yes</focusNew>
+  <focusLast>yes</focusLast>
+  <followMouse>no</followMouse>
+  <focusDelay>200</focusDelay>
+  <raiseOnFocus>no</raiseOnFocus>
+</focus>
+
+<placement>
+  <policy>Smart</policy>
+  <!-- 'Smart' or 'UnderMouse' -->
+</placement>
+
+<theme>
+  <name>Clearlooks</name>
+  <titleLayout>NLIMC</titleLayout>
+  <titleNumber>yes</titleNumber>
+  <!--
+      avaible 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="OnScreenDisplay">
+    <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 -->
+  <number>4</number>
+  <firstdesk>1</firstdesk>
+  <names>
+    <name>desktop one</name>
+    <name>desktop two</name>
+    <name>desktop three</name>
+    <name>desktop four</name>
+  </names>
+</desktops>
+
+<resize>
+  <drawContents>yes</drawContents>
+  <popupShow>Nonpixel</popupShow>
+  <!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) -->
+  <popupPosition>Center</popupPosition>
+  <!-- 'Center' or 'Top' -->
+</resize>
+
+<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="DesktopLeft"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="C-A-Right">
+    <action name="DesktopRight"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="C-A-Up">
+    <action name="DesktopUp"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="C-A-Down">
+    <action name="DesktopDown"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Left">
+    <action name="SendToDesktopLeft"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Right">
+    <action name="SendToDesktopRight"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Up">
+    <action name="SendToDesktopUp"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Down">
+    <action name="SendToDesktopDown"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="W-F1">
+    <action name="Desktop"><desktop>1</desktop></action>
+  </keybind>
+  <keybind key="W-F2">
+    <action name="Desktop"><desktop>1</desktop></action>
+  </keybind>
+  <keybind key="W-F3">
+    <action name="Desktop"><desktop>1</desktop></action>
+  </keybind>
+  <keybind key="W-F4">
+    <action name="Desktop"><desktop>1</desktop></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"/>
+  </keybind>
+  <keybind key="A-S-Tab">
+    <action name="PreviousWindow"/>
+  </keybind>
+  <keybind key="C-A-Tab">
+    <action name="NextWindow">
+      <panels>yes</panels><desktop>yes</desktop>
+    </action>
+  </keybind>
+
+  <!-- Keybindings for running applications -->
+  <keybind key="W-e">
+    <action name="Execute">
+      <startupnotify>
+        <enabled>true</enabled>
+        <name>Konqueror</name>
+      </startupnotify>
+      <execute>kfmclient openProfile filemanagement</execute>
+    </action>
+  </keybind>
+</keyboard>
+
+<mouse>
+  <dragThreshold>3</dragThreshold>
+  <!-- number of pixels the mouse must move before a drag begins -->
+  <doubleClickTime>200</doubleClickTime>
+  <!-- in milliseconds (1000 = 1 second) -->
+
+  <context name="Frame">
+    <mousebind button="A-Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="A-Left" action="Drag">
+      <action name="Move"/>
+    </mousebind>
+
+    <mousebind button="A-Right" action="Press">
+      <action name="Activate"/>
+    </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="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Click">
+      <action name="DesktopNext"/>
+    </mousebind>
+    <mousebind button="A-S-Up" action="Click">
+      <action name="SendToDesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-S-Down" action="Click">
+      <action name="SendToDesktopNext"/>
+    </mousebind>
+  </context>
+
+  <context name="Titlebar">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Move"/>
+    </mousebind>
+    <mousebind button="Left" action="DoubleClick">
+      <action name="ToggleMaximizeFull"/>
+    </mousebind>
+
+    <mousebind button="Middle" action="Press">
+      <action name="Lower"/>
+      <action name="FocusToBottom"/>
+      <action name="Unfocus"/>
+    </mousebind>
+
+    <mousebind button="Up" action="Click">
+      <action name="Shade"/>
+      <action name="FocusToBottom"/>
+      <action name="Unfocus"/>
+    </mousebind>
+    <mousebind button="Down" action="Click">
+      <action name="Unshade"/>
+    </mousebind>
+
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+  </context>
+
+  <context name="Top">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"><edge>top</edge></action>
+    </mousebind>
+  </context>
+
+  <context name="Bottom">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"><edge>bottom</edge></action>
+    </mousebind>
+
+    <mousebind button="Middle" action="Press">
+      <action name="Lower"/>
+      <action name="FocusToBottom"/>
+      <action name="Unfocus"/>
+    </mousebind>
+
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+  </context>
+
+  <context name="BLCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="BRCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="TLCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="TRCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="Client">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Middle" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+  </context>
+
+  <context name="Icon">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+  </context>
+
+  <context name="AllDesktops">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="ToggleOmnipresent"/>
+    </mousebind>
+  </context>
+
+  <context name="Shade">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="ToggleShade"/>
+    </mousebind>
+  </context>
+
+  <context name="Iconify">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="Iconify"/>
+    </mousebind>
+  </context>
+
+  <context name="Maximize">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Middle" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="ToggleMaximizeFull"/>
+    </mousebind>
+    <mousebind button="Middle" action="Click">
+      <action name="ToggleMaximizeVert"/>
+    </mousebind>
+    <mousebind button="Right" action="Click">
+      <action name="ToggleMaximizeHorz"/>
+    </mousebind>
+  </context>
+
+  <context name="Close">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="Close"/>
+    </mousebind>
+  </context>
+
+  <context name="Desktop">
+    <mousebind button="Up" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="Down" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+
+    <mousebind button="A-Up" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+
+    <!-- Menus are disabled since the DE will provide root window 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="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="Down" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+    <mousebind button="A-Up" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Press">
+      <action name="DesktopNext"/>
+    </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>
+  <middle>no</middle>
+  <submenuShowDelay>100</submenuShowDelay>
+  <applicationIcons>yes</applicationIcons>
+</menu>
+
+<!-- this section is commented out.. remove this and the ending comment if you
+     want to use it -->
+<applications>
+  <!-- the name or the class can be set, or both. this is used to match
+       windows when they appear
+
+       role can optionally be set, and only as much as you provide will be 
+       checked to see if it matches, eg. if you set role="abc" and the window's
+       role is actually "abcde" it would match.
+ -->
+  <application name="first element of window's WM_CLASS property (see xprop)"
+              class="second element of window's WM_CLASS property (see xprop)"
+               role="the window's WM_WINDOW_ROLE property (see xprop)">
+
+    <!-- each element can be left out or set to 'default' to specify to not 
+         change that attribute of the window -->
+
+    <decor>yes</decor>
+
+    <shade>no</shade>
+
+    <position>
+      <!-- the position is only used if both an x and y coordinate are provided
+           (and not set to 'default') -->
+      <x>center</x>
+      <!-- a number or 'center' to center on screen -->
+      <y>200</y>
+      <!-- a number or 'center' to center on screen -->
+      <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 -->
+
+    <desktop>1</desktop>
+    <!-- 1 is the first desktop, 'all' for all desktops -->
+
+    <layer>normal</layer>
+    <!-- 'above', 'normal', or 'below' -->
+
+    <iconic>no</iconic>
+
+    <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>
+
+    <maximized>true</maximized>
+    <!-- 'Horizontal', 'Vertical' or boolean (yes/no/on/off/true/false) -->
+  </application>
+</applications>
+ -->
+
+</openbox_config>
diff --git a/data/rc-kde.xml b/data/rc-kde.xml
new file mode 100644 (file)
index 0000000..20b20c5
--- /dev/null
@@ -0,0 +1,546 @@
+<?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/4.0/rc">
+
+<resistance>
+  <strength>10</strength>
+  <screen_edge_strength>20</screen_edge_strength>
+</resistance>
+
+<focus>
+  <focusNew>yes</focusNew>
+  <focusLast>yes</focusLast>
+  <followMouse>no</followMouse>
+  <focusDelay>200</focusDelay>
+  <raiseOnFocus>no</raiseOnFocus>
+</focus>
+
+<placement>
+  <policy>Smart</policy>
+  <!-- 'Smart' or 'UnderMouse' -->
+</placement>
+
+<theme>
+  <name>Clearlooks</name>
+  <titleLayout>NLIMC</titleLayout>
+  <titleNumber>yes</titleNumber>
+  <!--
+      avaible 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="OnScreenDisplay">
+    <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 -->
+  <number>4</number>
+  <firstdesk>1</firstdesk>
+  <names>
+    <name>desktop one</name>
+    <name>desktop two</name>
+    <name>desktop three</name>
+    <name>desktop four</name>
+  </names>
+</desktops>
+
+<resize>
+  <drawContents>yes</drawContents>
+  <popupShow>Nonpixel</popupShow>
+  <!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) -->
+  <popupPosition>Center</popupPosition>
+  <!-- 'Center' or 'Top' -->
+</resize>
+
+<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="DesktopLeft"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="C-A-Right">
+    <action name="DesktopRight"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="C-A-Up">
+    <action name="DesktopUp"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="C-A-Down">
+    <action name="DesktopDown"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Left">
+    <action name="SendToDesktopLeft"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Right">
+    <action name="SendToDesktopRight"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Up">
+    <action name="SendToDesktopUp"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="S-A-Down">
+    <action name="SendToDesktopDown"><wrap>no</wrap></action>
+  </keybind>
+  <keybind key="W-F1">
+    <action name="Desktop"><desktop>1</desktop></action>
+  </keybind>
+  <keybind key="W-F2">
+    <action name="Desktop"><desktop>1</desktop></action>
+  </keybind>
+  <keybind key="W-F3">
+    <action name="Desktop"><desktop>1</desktop></action>
+  </keybind>
+  <keybind key="W-F4">
+    <action name="Desktop"><desktop>1</desktop></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"/>
+  </keybind>
+  <keybind key="A-S-Tab">
+    <action name="PreviousWindow"/>
+  </keybind>
+  <keybind key="C-A-Tab">
+    <action name="NextWindow">
+      <panels>yes</panels><desktop>yes</desktop>
+    </action>
+  </keybind>
+
+  <!-- Keybindings for running applications -->
+  <keybind key="W-e">
+    <action name="Execute">
+      <startupnotify>
+        <enabled>true</enabled>
+        <name>Konqueror</name>
+      </startupnotify>
+      <execute>kfmclient openProfile filemanagement</execute>
+    </action>
+  </keybind>
+</keyboard>
+
+<mouse>
+  <dragThreshold>3</dragThreshold>
+  <!-- number of pixels the mouse must move before a drag begins -->
+  <doubleClickTime>200</doubleClickTime>
+  <!-- in milliseconds (1000 = 1 second) -->
+
+  <context name="Frame">
+    <mousebind button="A-Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="A-Left" action="Drag">
+      <action name="Move"/>
+    </mousebind>
+
+    <mousebind button="A-Right" action="Press">
+      <action name="Activate"/>
+    </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="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Click">
+      <action name="DesktopNext"/>
+    </mousebind>
+    <mousebind button="A-S-Up" action="Click">
+      <action name="SendToDesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-S-Down" action="Click">
+      <action name="SendToDesktopNext"/>
+    </mousebind>
+  </context>
+
+  <context name="Titlebar">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Move"/>
+    </mousebind>
+    <mousebind button="Left" action="DoubleClick">
+      <action name="ToggleMaximizeFull"/>
+    </mousebind>
+
+    <mousebind button="Middle" action="Press">
+      <action name="Lower"/>
+      <action name="FocusToBottom"/>
+      <action name="Unfocus"/>
+    </mousebind>
+
+    <mousebind button="Up" action="Click">
+      <action name="Shade"/>
+      <action name="FocusToBottom"/>
+      <action name="Unfocus"/>
+    </mousebind>
+    <mousebind button="Down" action="Click">
+      <action name="Unshade"/>
+    </mousebind>
+
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+  </context>
+
+  <context name="Top">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"><edge>top</edge></action>
+    </mousebind>
+  </context>
+
+  <context name="Bottom">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"><edge>bottom</edge></action>
+    </mousebind>
+
+    <mousebind button="Middle" action="Press">
+      <action name="Lower"/>
+      <action name="FocusToBottom"/>
+      <action name="Unfocus"/>
+    </mousebind>
+
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+  </context>
+
+  <context name="BLCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="BRCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="TLCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="TRCorner">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Drag">
+      <action name="Resize"/>
+    </mousebind>
+  </context>
+
+  <context name="Client">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Middle" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+  </context>
+
+  <context name="Icon">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+      <action name="ShowMenu"><menu>client-menu</menu></action>
+    </mousebind>
+  </context>
+
+  <context name="AllDesktops">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="ToggleOmnipresent"/>
+    </mousebind>
+  </context>
+
+  <context name="Shade">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="ToggleShade"/>
+    </mousebind>
+  </context>
+
+  <context name="Iconify">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="Iconify"/>
+    </mousebind>
+  </context>
+
+  <context name="Maximize">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Middle" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Right" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="ToggleMaximizeFull"/>
+    </mousebind>
+    <mousebind button="Middle" action="Click">
+      <action name="ToggleMaximizeVert"/>
+    </mousebind>
+    <mousebind button="Right" action="Click">
+      <action name="ToggleMaximizeHorz"/>
+    </mousebind>
+  </context>
+
+  <context name="Close">
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+    <mousebind button="Left" action="Click">
+      <action name="Close"/>
+    </mousebind>
+  </context>
+
+  <context name="Desktop">
+    <mousebind button="Up" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="Down" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+
+    <mousebind button="A-Up" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+
+    <mousebind button="Left" action="Press">
+      <action name="Activate"/>
+    </mousebind>
+
+    <!-- Menus are disabled since the DE will provide root window 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="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="Down" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+    <mousebind button="A-Up" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Press">
+      <action name="DesktopNext"/>
+    </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>
+  <middle>no</middle>
+  <submenuShowDelay>100</submenuShowDelay>
+  <applicationIcons>yes</applicationIcons>
+</menu>
+
+<!-- this section is commented out.. remove this and the ending comment if you
+     want to use it -->
+<applications>
+  <!-- the name or the class can be set, or both. this is used to match
+       windows when they appear
+
+       role can optionally be set, and only as much as you provide will be 
+       checked to see if it matches, eg. if you set role="abc" and the window's
+       role is actually "abcde" it would match.
+ -->
+  <application name="first element of window's WM_CLASS property (see xprop)"
+              class="second element of window's WM_CLASS property (see xprop)"
+               role="the window's WM_WINDOW_ROLE property (see xprop)">
+
+    <!-- each element can be left out or set to 'default' to specify to not 
+         change that attribute of the window -->
+
+    <decor>yes</decor>
+
+    <shade>no</shade>
+
+    <position>
+      <!-- the position is only used if both an x and y coordinate are provided
+           (and not set to 'default') -->
+      <x>center</x>
+      <!-- a number or 'center' to center on screen -->
+      <y>200</y>
+      <!-- a number or 'center' to center on screen -->
+      <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 -->
+
+    <desktop>1</desktop>
+    <!-- 1 is the first desktop, 'all' for all desktops -->
+
+    <layer>normal</layer>
+    <!-- 'above', 'normal', or 'below' -->
+
+    <iconic>no</iconic>
+
+    <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>
+
+    <maximized>true</maximized>
+    <!-- 'Horizontal', 'Vertical' or boolean (yes/no/on/off/true/false) -->
+  </application>
+</applications>
+ -->
+
+</openbox_config>
index c2bc9399401b831ed6aa467991fbd000ec7cb982..b52235528634301eb3f59ce51d2443eb880b80c7 100644 (file)
@@ -2,4 +2,5 @@
 
 # Run GNOME with Openbox as its window manager
 export WINDOW_MANAGER="@bindir@/openbox"
+export OPENBOX_CONFIG_NAMESPACE="gnome"
 exec gnome-session "$@"
index 0fe009408a6fef68b1f93dac4f803b711cf9fb29..a125e4cd06707fab0dc82d75b7a520424f7d9cad 100644 (file)
@@ -2,4 +2,5 @@
 
 # Run KDE with Openbox as its window manager
 export KDEWM="@bindir@/openbox"
+export OPENBOX_CONFIG_NAMESPACE="kde"
 exec startkde "$@"
index b86e1b87e7d752259dce916081fb213e95225946..702fab704d37921499d0e457fa0b42016e2e011a 100644 (file)
@@ -38,6 +38,9 @@ manpage.1: manpage.sgml
 
     <para><command>&dhpackage;</command> runs a GNOME session with
       Openbox as the window manager.</para>
+
+    <para>When running inside GNOME like this, Openbox will use the
+      <literal>rc-gnome.xml</literal> configuration file.</para>
   </refsect1>
   <refsect1>
     <title>SEE ALSO</title>
index 4de8c0241234c4794c1a3332898f7e875a183ce6..d481ff020d329caeb31f7bf7f889c65690f6ab1c 100644 (file)
@@ -38,6 +38,9 @@ manpage.1: manpage.sgml
 
     <para><command>&dhpackage;</command> runs a KDE session with
       Openbox as the window manager.</para>
+
+    <para>When running inside KDE like this, Openbox will use the
+      <literal>rc-kde.xml</literal> configuration file.</para>
   </refsect1>
   <refsect1>
     <title>SEE ALSO</title>
index 9782d0e39199d150cacf3cac90ff9a78a51fc854..f8979751a2603b148838a26adc0d8f0b1947271e 100644 (file)
@@ -4,7 +4,7 @@ openbox \(em Next generation, highly configurable window manager
  
 .SH "SYNOPSIS" 
 .PP 
-\fBopenbox\fR [\fB\-\-help\fP]  [\fB\-\-version\fP]  [\fB\-\-replace\fP]  [\fB\-\-reconfigure\fP]  [\fB\-\-sm-disable\fP]  [\fB\-\-config \fITYPE\fR\fP]  [\fB\-\-sync\fP]  [\fB\-\-debug\fP]  [\fB\-\-debug-focus\fP]  
+\fBopenbox\fR [\fB\-\-help\fP]  [\fB\-\-version\fP]  [\fB\-\-replace\fP]  [\fB\-\-reconfigure\fP]  [\fB\-\-sm-disable\fP]  [\fB\-\-sync\fP]  [\fB\-\-debug\fP]  [\fB\-\-debug-focus\fP]  
 .SH "DESCRIPTION" 
 .PP 
 Openbox is a next generation, highly 
@@ -41,10 +41,17 @@ above ~/.xsession file.
 You can use the \fBobconf\fR tool to configure Openbox 
 easily with a graphical interface, however more in-depth configuration 
 is possible by editing the configuration files by hand. The default 
-configuration file is installed in @configdir@/openbox/rc.xml, and the 
-user configuration is placed in ~/.config/openbox/rc.xml. You can copy 
+configuration files are installed in @configdir@/openbox/, and the 
+user configuration is placed in ~/.config/openbox/. You can copy 
 the default configuration to ~/.config/openbox and edit it to your 
 liking. 
+.PP 
+There are 3 default configuration files, \fBrc.xml\fP, 
+\fBrc-gnome.xml\fP, and \fBrc-kde.xml\fP. The 
+rc-gnome.xml is used when you run 
+\fBopenbox-gnome-session\fR and the rc-kde.xml is used when 
+you run \fBopenbox-kde-session\fR. The configuration 
+files should be named the same in ~/.config/openbox/. 
 .SH "OPTIONS" 
 .PP 
 These are the possible options that \fBopenbox\fR accepts: 
@@ -59,8 +66,6 @@ If Openbox is already running on the display, tell it to
 reload it's configuration. 
 .IP "\fB\-\-sm-disable\fP" 10 
 Do not connect to the session manager. 
-.IP "\fB\-\-config\fITYPE\fR\fP" 10 
-Specify the configuration profile to use. 
 .IP "\fB\-\-sync\fP" 10 
 Run in synchronous mode (for debugging). 
 .IP "\fB\-\-debug\fP" 10 
@@ -77,4 +82,12 @@ The program's full documentation is available on the website:
 .PP 
 Please report bugs to: \fBhttp://bugzilla.icculus.org/ 
 \fP 
+<<<<<<< .working
+<<<<<<< .working
 .\" created by instant / docbook-to-man, Sun 13 May 2007, 17:59 
+=======
+.\" created by instant / docbook-to-man, Sun 13 May 2007, 19:06 
+>>>>>>> .merge-right.r6502
+=======
+.\" created by instant / docbook-to-man, Sun 13 May 2007, 19:06 
+>>>>>>> .merge-right.r6502
index b2b4a8363e0875dbb19b39515cbf0ea0ed54c0f1..2a619526ff35369b33927069e71fd3eb4d1bc2b5 100644 (file)
@@ -41,7 +41,6 @@ manpage.1: manpage.sgml
       <arg><option>--replace</option></arg>
       <arg><option>--reconfigure</option></arg>
       <arg><option>--sm-disable</option></arg>
-      <arg><option>--config <replaceable>TYPE</replaceable></option></arg>
       <arg><option>--sync</option></arg>
       <arg><option>--debug</option></arg>
       <arg><option>--debug-focus</option></arg>
@@ -81,11 +80,18 @@ manpage.1: manpage.sgml
     <para>You can use the <command>obconf</command> tool to configure Openbox
       easily with a graphical interface, however more in-depth configuration
       is possible by editing the configuration files by hand. The default
-      configuration file is installed in @configdir@/openbox/rc.xml, and the
-      user configuration is placed in ~/.config/openbox/rc.xml. You can copy
+      configuration files are installed in @configdir@/openbox/, and the
+      user configuration is placed in ~/.config/openbox/. You can copy
       the default configuration to ~/.config/openbox and edit it to your
       liking.</para>
 
+    <para>There are 3 default configuration files, <literal>rc.xml</literal>,
+      <literal>rc-gnome.xml</literal>, and <literal>rc-kde.xml</literal>. The
+      rc-gnome.xml is used when you run
+      <command>openbox-gnome-session</command> and the rc-kde.xml is used when
+      you run <command>openbox-kde-session</command>. The configuration
+      files should be named the same in ~/.config/openbox/.</para>
+
   </refsect1>
   <refsect1>
     <title>OPTIONS</title>
@@ -123,12 +129,6 @@ manpage.1: manpage.sgml
           <para>Do not connect to the session manager.</para>
         </listitem>
       </varlistentry>
-      <varlistentry>
-        <term><option>--config<replaceable>TYPE</replaceable></option></term>
-        <listitem>
-          <para>Specify the configuration profile to use.</para>
-        </listitem>
-      </varlistentry>
       <varlistentry>
         <term><option>--sync</option></term>
         <listitem>
index 3acb5d1ff6b2c5cd6397e325c02095a4a26eff1a..c8b7e6dcce92d9bcea85815233036b40022e4501 100644 (file)
@@ -573,6 +573,8 @@ static void event_process(const XEvent *ec, gpointer data)
 
         if (client && !nomove) {
             frame_adjust_focus(client->frame, FALSE);
+            if (client == focus_client)
+                focus_set_client(NULL);
             /* focus_set_client has already been called for sure */
             client_calc_layer(client);
         }
index 2de1f7e7709bdd2558628a7d603fedb8b065ca89..0f2ba9237cf150c7619f781feb99dd0d26688ae2 100644 (file)
@@ -89,6 +89,7 @@ gboolean    ob_replace_wm = FALSE;
 gboolean    ob_sm_use = TRUE;
 gchar      *ob_sm_id = NULL;
 gchar      *ob_sm_save_file = NULL;
+gchar      *ob_config_type = NULL;
 
 static ObState   state;
 static gboolean  xsync = FALSE;
@@ -100,10 +101,10 @@ static KeyCode   keys[OB_NUM_KEYS];
 static gint      exitcode = 0;
 static guint     remote_control = 0;
 static gboolean  being_replaced = FALSE;
-static gchar    *config_type = NULL;
 
 static void signal_handler(gint signal, gpointer data);
 static void remove_args(gint *argc, gchar **argv, gint index, gint num);
+static void parse_env();
 static void parse_args(gint *argc, gchar **argv);
 static Cursor load_cursor(const gchar *name, guint fontval);
 
@@ -126,6 +127,8 @@ gint main(gint argc, gchar **argv)
      
     /* parse the command line args, which can change the argv[0] */
     parse_args(&argc, argv);
+    /* parse the environment variables */
+    parse_env();
 
     program_name = g_path_get_basename(argv[0]);
     g_set_prgname(program_name);
@@ -234,15 +237,15 @@ gint main(gint argc, gchar **argv)
                 config_startup(i);
 
                 /* parse/load user options */
-                if (parse_load_rc(config_type, &doc, &node)) {
+                if (parse_load_rc(ob_config_type, &doc, &node)) {
                     parse_tree(i, doc, node->xmlChildrenNode);
                     parse_close(doc);
                 } else
                     g_message(_("Unable to find a valid config file, using some simple defaults"));
 
-                if (config_type != NULL)
+                if (ob_config_type != NULL)
                     PROP_SETS(RootWindow(ob_display, ob_screen),
-                              ob_config, config_type);
+                              ob_config, ob_config_type);
 
                 /* we're done with parsing now, kill it */
                 parse_shutdown(i);
@@ -405,6 +408,10 @@ gint main(gint argc, gchar **argv)
             argv = nargv;
         }
 
+        /* we also remove some environment variables, so put them back */
+        if (ob_config_type)
+            setenv("OPENBOX_CONFIG_NAMESPACE", ob_config_type, 1);
+
         /* re-run me */
         execvp(argv[0], argv); /* try how we were run */
         execlp(argv[0], program_name, (gchar*)NULL); /* last resort */
@@ -413,7 +420,7 @@ gint main(gint argc, gchar **argv)
     /* free stuff passed in from the command line or environment */
     g_free(ob_sm_save_file);
     g_free(ob_sm_id);
-    g_free(config_type);
+    g_free(ob_config_type);
     g_free(program_name);
      
     return exitcode;
@@ -461,7 +468,6 @@ static void print_help()
     g_print(_("  --version           Display the version and exit\n"));
     g_print(_("  --replace           Replace the currently running window manager\n"));
     g_print(_("  --sm-disable        Disable connection to the session manager\n"));
-    g_print(_("  --config TYPE       Specify the configuration profile to use\n"));
     g_print(_("\nPassing messages to a running Openbox instance:\n"));
     g_print(_("  --reconfigure       Reload Openbox's configuration\n"));
     g_print(_("\nDebugging options:\n"));
@@ -482,6 +488,15 @@ static void remove_args(gint *argc, gchar **argv, gint index, gint num)
     *argc -= num;
 }
 
+static void parse_env()
+{
+    /* unset this so we don't pass it on unknowingly */
+    unsetenv("DESKTOP_STARTUP_ID");
+
+    if (getenv("OPENBOX_CONFIG_NAMESPACE"))
+        ob_config_type = g_strdup(getenv("OPENBOX_CONFIG_NAMESPACE"));
+}
+
 static void parse_args(gint *argc, gchar **argv)
 {
     gint i;
@@ -524,12 +539,16 @@ static void parse_args(gint *argc, gchar **argv)
             remote_control = 2;
 */
         }
-        else if (!strcmp(argv[i], "--config")) {
+        else if (!strcmp(argv[i], "--config-namespace")) {
             if (i == *argc - 1) /* no args left */
-                g_printerr(_("--config requires an argument\n"));
+                /* not translated cuz it's sekret */
+                g_printerr("--config-namespace requires an argument\n");
             else {
-                config_type = g_strdup(argv[i+1]);
-                ++i;
+                ob_config_type = g_strdup(argv[i+1]);
+                remove_args(argc, argv, i, 2);
+                --i; /* this arg was removed so go back */
+                ob_debug_type(OB_DEBUG_SM, "--config-namespace %s\n",
+                              ob_sm_save_file);
             }
         }
         else if (!strcmp(argv[i], "--sm-save-file")) {
index fadb698140c83153fd9f5d1e713167ed78296f7a..b5d722e9ef5a6e5115196f3d82bb32c4cb81750e 100644 (file)
@@ -46,6 +46,7 @@ extern gchar   *ob_sm_id;
  make a new file every time, yay. */
 extern gchar   *ob_sm_save_file;
 extern gboolean ob_replace_wm;
+extern gchar   *ob_config_type;
 
 /* The state of execution of the window manager */
 ObState ob_state();
index b07f16942418cbbbc56f2e71a9571d288a516d63..7a9a081d8072d0c8ece42c52ee31e46a78d12004 100644 (file)
@@ -319,12 +319,15 @@ static void session_setup_clone_command()
 static void session_setup_restart_command()
 {
     gint i;
+    gint num = 4;
 
-    SmPropValue *vals = g_new(SmPropValue, sm_argc + 4);
+    if (ob_config_type) num += 2;
+
+    SmPropValue *vals = g_new(SmPropValue, sm_argc + num);
     SmProp prop = {
         .name = g_strdup(SmRestartCommand),
         .type = g_strdup(SmLISTofARRAY8),
-        .num_vals = sm_argc + 4,
+        .num_vals = sm_argc + num,
         .vals = vals
     };
     SmProp *list = &prop;
@@ -350,11 +353,22 @@ static void session_setup_restart_command()
     ob_debug_type(OB_DEBUG_SM, "    %s\n", vals[i+2].value);
     ob_debug_type(OB_DEBUG_SM, "    %s\n", vals[i+3].value);
 
+    if (ob_config_type) {
+        vals[i+4].value = g_strdup("--config-namespace");
+        vals[i+4].length = strlen("--config-namespace") + 1;
+        vals[i+5].value = ob_config_type;
+        vals[i+5].length = strlen(ob_config_type) + 1;
+        ob_debug_type(OB_DEBUG_SM, "    %s\n", vals[i+4].value);
+        ob_debug_type(OB_DEBUG_SM, "    %s\n", vals[i+5].value);
+    }
+
     SmcSetProperties(sm_conn, 1, &list);
     g_free(prop.name);
     g_free(prop.type);
     g_free(vals[i].value);
     g_free(vals[i+2].value);
+    if (ob_config_type)
+        g_free(vals[i+4].value);
     g_free(vals);
 }
 
index 03cb752b043acb03050aef77b9a2da191ad0e79e..45a2b4c2a9de1263bd4987dd6369dc56cd6d8e10 100644 (file)
 
 #ifndef USE_LIBSN
 
-void sn_startup(gboolean reconfig) {
-    /* unset this so we don't pass it on unknowingly */
-    if (!reconfig) unsetenv("DESKTOP_STARTUP_ID");
-}
+void sn_startup(gboolean reconfig) {}
 void sn_shutdown(gboolean reconfig) {}
 gboolean sn_app_starting() { return FALSE; }
 Time sn_app_started(const gchar *id, const gchar *wmclass)