<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=Window_controller</id>
	<title>Window controller - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=Window_controller"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Window_controller&amp;action=history"/>
	<updated>2026-07-21T21:14:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Window_controller&amp;diff=5111&amp;oldid=prev</id>
		<title>Rwilson131 at 01:18, 6 September 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Window_controller&amp;diff=5111&amp;oldid=prev"/>
		<updated>2007-09-06T01:18:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:18, 6 September 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;/del&gt;[[Category: Programmer&#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Programmer&#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Window Controller ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Window Controller ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rwilson131</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Window_controller&amp;diff=2543&amp;oldid=prev</id>
		<title>Wikiadmin at 14:04, 14 September 2006</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Window_controller&amp;diff=2543&amp;oldid=prev"/>
		<updated>2006-09-14T14:04:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.linuxmce.org/index.php?title=Window_controller&amp;amp;diff=2543&amp;amp;oldid=2541&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Window_controller&amp;diff=2541&amp;oldid=prev</id>
		<title>Wikiadmin at 13:34, 14 September 2006</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Window_controller&amp;diff=2541&amp;oldid=prev"/>
		<updated>2006-09-14T13:34:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&amp;quot;#FFCFCF&amp;quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;[[Category: Programmer&amp;#039;s Guide]]&lt;br /&gt;
== Window Controller ==&lt;br /&gt;
&lt;br /&gt;
==== Generalities ====&lt;br /&gt;
&lt;br /&gt;
Only 2 desktops are used:&lt;br /&gt;
- desktop 0 is the main desktop, and should be the only one active, at every moment in time&lt;br /&gt;
- desktop 1 is used only as a hidden desktop, it should never be active&lt;br /&gt;
&lt;br /&gt;
A wrapper for wmctrl was created, and wmctrl commands are used directly in our code.&lt;br /&gt;
The wmctrl command-line application is not used, but it can be used for debugging purposes.&lt;br /&gt;
&lt;br /&gt;
==== Legend (symbols) ====&lt;br /&gt;
Below, the corresponding command-line options are shown for each action.&lt;br /&gt;
&amp;#039;*&amp;gt;&amp;#039; is the symbol for corresponding command-line action.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;-x&amp;#039; options for wmctrl means to use the class-name to identify the windows&lt;br /&gt;
&lt;br /&gt;
==== Window-Controller actions ====&lt;br /&gt;
&lt;br /&gt;
Action: hide/show a window&lt;br /&gt;
	windows are not really hidden, they are moved to the desktop 1&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -t 1&lt;br /&gt;
	windows are shown by moving them to the desktop 0&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -t 0&lt;br /&gt;
  reason:&lt;br /&gt;
	when a hide-window command is sent to the wm, the wm unmaps that window,&lt;br /&gt;
	and this cause problems with GUI applications that expects their windows to be in a mapped state&lt;br /&gt;
&lt;br /&gt;
Action: changing a window layer (similar, but not always as the same Z-order)&lt;br /&gt;
	we use 3 layers: above, below, normal&lt;br /&gt;
	wmctrl accepts the following layers: above, below&lt;br /&gt;
	These layers are actually properties added for a window.&lt;br /&gt;
&lt;br /&gt;
	layer normal: neither of the above and below properties is active&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b remove,below&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b remove,above&lt;br /&gt;
	layer above: only the above property should be set&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b remove,below&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b add,above&lt;br /&gt;
	layer below: only the below property should be set&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b remove,above&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b add,below&lt;br /&gt;
&lt;br /&gt;
Action: changing a window position and size&lt;br /&gt;
	*&amp;gt; wmctrl -x- r xcalc -e 0,100,200,300,400&lt;br /&gt;
	(x,y,width,height) = (100,200,300,400)&lt;br /&gt;
  note:&lt;br /&gt;
	the window must not be maximized, neither in the fullscreen state&lt;br /&gt;
	otherwise the command may not succeed&lt;br /&gt;
&lt;br /&gt;
Action: changing the fullscreen state&lt;br /&gt;
	In the fullscreen state, the window client area occupy the whole screen.&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b add,fullscreen&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b remove,fullscreen&lt;br /&gt;
&lt;br /&gt;
Action: changing the maximized state&lt;br /&gt;
	In the fullscreen state, the window area, including the borders and the title, will occupy the whole screen.&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b add,maximized_horz,maximized_vert&lt;br /&gt;
	*&amp;gt; wmctrl -x -r xcalc -b remove,maximized_horz,maximized_vert&lt;br /&gt;
&lt;br /&gt;
Action: activating a window&lt;br /&gt;
	That window will be above the other windows which belong to the same layer.&lt;br /&gt;
	That window will have the focus.&lt;br /&gt;
	If necessary, the window will be moved to the current desktop.&lt;br /&gt;
	*&amp;gt; wmctrl -x -R xcalc&lt;br /&gt;
&lt;br /&gt;
Action: list windows&lt;br /&gt;
	*&amp;gt; wmctrl -x -p -l -G&lt;br /&gt;
&lt;br /&gt;
==== Window-Controller Enhancements ====&lt;br /&gt;
&lt;br /&gt;
When enhancements were added to wmctrl, the compiled executable was renamed to &amp;#039;xctrl&amp;#039;&lt;br /&gt;
This will allow both application to coexist, without the need put them in separate directories.&lt;br /&gt;
These enhancements does not affect the standard wmctrl commands.&lt;br /&gt;
&lt;br /&gt;
New -L option:&lt;br /&gt;
	list all the properties for every window,&lt;br /&gt;
	and will also list extra properties,&lt;br /&gt;
	including the layer for every window, as seen by the window-manager&lt;br /&gt;
	*&amp;gt; xctrl -L&lt;br /&gt;
&lt;br /&gt;
A new -O option:&lt;br /&gt;
        recursively change the override_redirect property for a window,&lt;br /&gt;
	up to the latest parent before the root window&lt;br /&gt;
	-O requires a numeric argument, 0 or 1&lt;br /&gt;
	*&amp;gt; xctrl -x -O 0 -r xcalc&lt;br /&gt;
	*&amp;gt; xctrl -x -O 1 -r xcalc&lt;br /&gt;
&lt;br /&gt;
== Original Document ==&lt;br /&gt;
http://svn.plutohome.com/pluto/trunk/src/utilities/linux/window_manager/WINDOW_CONTROLLER.txt&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
</feed>