Project

General

Profile

unexist.dev

Assorted tidbits and projects

Hacking » History » Version 32

Version 31 (Anonymous, 12/29/2008 09:47 PM) → Version 32/100 (Anonymous, 01/11/2009 12:19 AM)

h1. Development\015\012\015\012The following stuff is for developers only, that are interested in [[subtle]]'s internals.\015\012\015\012{{>toc}}\015\012\015\012h1. EWMH/ICCCM\015\012\015\012Here are all "EWMH/NetWM":http://standards.freedesktop.org/wm-spec atoms listed that are supported by [[subtle]], [[subtler]] and [[subtlext]].\015\012\015\012h2. Default\015\012\015\012h3. _NET_NUMBER_OF_DESKTOPS\015\012\015\012[[Development#1|top]]\015\012\015\012h3. _NET_DESKTOP_NAMES\015\012\015\012[[Development#1|top]]\015\012\015\012h3. _NET_VIRTUAL_ROOTS\015\012\015\012[[Development#1|top]]\015\012\015\012h3. _NET_NUMBER_OF_DESKTOPS\015\012\015\012"top":#1\015\012\015\012h3. _NET_DESKTOP_NAMES\015\012\015\012"top":#1\015\012\015\012h3. _NET_VIRTUAL_ROOTS\015\012\015\012"top":#1\015\012\015\012h3. _NET_CURRENT_DESKTOP\015\012\015\012Change current desktop\015\012<pre><code class="ruby">\015\012data.l[0] = <View id>\015\012data.l[1] = 0\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. _NET_CLOSE_WINDOW\015\012\015\012Close client window\015\012<pre><code class="ruby">\015\012data.l[0] = <Timestamp>\015\012data.l[1] = <Ignored\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h2. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h2. WM State\015\012\015\012Normally there are three types of actions: +remove+ (0), +add+ (1) and +toggle+ (2), but we _always_ toggle the states independent of the supplied action. The second property will be ignored.\015\012\015\012h3. _NET_WM_STATE_FULLSCREEN\015\012\015\012Toggle client fullscreen\015\012<pre><code class="ruby">\015\012data.l[0] = <Action>\015\012data.l[1] = _NET_WM_STATE_FULLSCREEN\015\012data.l[2] = <Ignored>\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. _NET_WM_STATE_ABOVE\015\012\015\012Toggle client float\015\012<pre><code class="ruby">\015\012data.l[0] = <Action>\015\012data.l[1] = _NET_WM_STATE_ABOVE\015\012data.l[2] = <Ignored>\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. _NET_WM_STATE_STICKY\015\012\015\012Toggle client urgent\015\012<pre><code class="ruby">\015\012data.l[0] = <Action>\015\012data.l[1] = _NET_WM_STATE_STICKY\015\012data.l[2] = <Ignored>\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h2. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h2. XEmbed\015\012\015\012h3. MANAGER\015\012\015\012[[Development#1|top]]\015\012\015\012h3. MANAGER\015\012\015\012"top":#1\015\012\015\012h3. _NET_SYSTEM_TRAY_OPCODE \015\012\015\012[[Development#1|top]]\015\012\015\012h3. \015\012\015\012"top":#1\015\012\015\012h3. _NET_SYSTEM_TRAY_MESSAGE_DATA \015\012\015\012[[Development#1|top]]\015\012\015\012h3. _NET_SYSTEM_TRAY_S\015\012\015\012[[Development#1|top]]\015\012\015\012h3. _XEMBED\015\012\015\012[[Development#1|top]]\015\012\015\012h3. _XEMBED_INFO\015\012\015\012[[Development#1|top]]\015\012\015\012h2. \015\012\015\012"top":#1\015\012\015\012h3. _NET_SYSTEM_TRAY_S\015\012\015\012"top":#1\015\012\015\012h3. _XEMBED\015\012\015\012"top":#1\015\012\015\012h3. _XEMBED_INFO\015\012\015\012"top":#1\015\012\015\012h2. Extension\015\012\015\012h3. SUBTLE_CLIENT_UNTAG\015\012\015\012Remove a tag from client\015\012<pre><code class="ruby">\015\012data.l[0] = <Client id>\015\012data.l[1] = <Tag id>\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. SUBTLE_CLIENT_TAGS\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_CLIENT_TAGS\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_TAG_NEW\015\012\015\012Create a new tag\015\012<pre><code class="ruby">\015\012data.b = <Tag name>\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. name>\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_TAG_KILL\015\012\015\012Kill a tag\015\012<pre><code class="ruby">\015\012data.l[0] = <Tag id>\015\012data.l[1] = 0\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_VIEW_NEW\015\012\015\012Create a new view\015\012<pre><code class="ruby">\015\012data.b = <View name>\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. name>\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_VIEW_TAG\015\012\015\012Add a tag to view\015\012<pre><code class="ruby">\015\012data.l[0] = <View id>\015\012data.l[1] = <Tag id>\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_VIEW_UNTAG\015\012\015\012Remove a tag from view\015\012<pre><code class="ruby">\015\012data.l[0] = <View id>\015\012data.l[1] = <Tag id>\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. SUBTLE_VIEW_TAGS\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_VIEW_TAGS\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_VIEW_KILL\015\012\015\012Kill a view\015\012<pre><code class="ruby">\015\012data.l[0] = <View id>\015\012data.l[1] = 0\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_SUBLET_LIST\015\012\015\012Get sublet list\015\012<pre><code class="ruby">\015\012data.l[0] = 0\015\012data.l[1] = 0\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]]\015\012\015\012h3. 0\015\012</code></pre>\015\012\015\012"top":#1\015\012\015\012h3. SUBTLE_SUBLET_KILL\015\012\015\012Kill a sublet\015\012<pre><code class="ruby">\015\012data.l[0] = <Sublet id>\015\012data.l[1] = 0\015\012data.l[2] = 0\015\012data.l[3] = 0\015\012data.l[4] = 0\015\012</code></pre>\015\012\015\012[[Development#1|top]] 0\015\012</code></pre>\015\012\015\012"top":#1