Project

General

Profile

unexist.dev

/

subtle

Assorted tidbits and projects

Hooks » History » Version 16

Version 15 (julien fantin, 02/19/2010 01:01 AM) → Version 16/47 (Anonymous, 05/24/2010 03:39 PM)

h1. Hooks\015\012\015\012[[Hooks]] are small chunks of code (procs) that are can be called on certain events of the window manager.\015\012\015\012Here is a list of the existing types of [[hooks]]:\015\012 \015\012{{>toc}}\015\012\015\012h2. Client Hooks\015\012\015\012h3. ClientCreate\015\012\015\012Triggers on creation of new clients.\015\012<pre><code class="ruby">\015\012:HookClientCreate => lambda { |c| puts c.name }\015\012</code></pre>\015\012\015\012h3. ClientConfigure\015\012\015\012Triggers whenever a client is configured.\015\012<pre><code class="ruby">\015\012:HookClientFocus => lambda { |c| puts c.name }\015\012</code></pre>\015\012\015\012h3. ClientFocus\015\012\015\012Triggers whenever a client gets focus.\015\012<pre><code class="ruby">\015\012:HookClientFocus => lambda { |c| puts c.name }\015\012</code></pre>\015\012\015\012h3. ClientKill\015\012\015\012Triggers when a client is killed.\015\012<pre><code class="ruby">\015\012:HookClientKill => lambda { |c| puts c.name }\015\012</code></pre>\015\012\015\012h2. Tag Hooks\015\012\015\012h3. TagCreate\015\012\015\012Triggers when a tag is created.\015\012<pre><code class="ruby">\015\012:HookTagKill => lambda { |t| puts t.name }\015\012</code></pre>\015\012\015\012h3. TagKill\015\012\015\012Triggers when a tag is killed.\015\012<pre><code class="ruby">\015\012:HookTagKill => lambda { |t| puts t.name }\015\012</code></pre>\015\012\015\012h2. View Hooks\015\012\015\012h3. ViewCreate\015\012\015\012Triggers on creation of new views.\015\012<pre><code class="ruby">\015\012:HookViewCreate => lambda { |v| puts v.name }\015\012</code></pre>\015\012\015\012h3. ViewConfigure\015\012\015\012Triggers whenever a view is configured.\015\012<pre><code class="ruby">\015\012:HookViewFocus => lambda { |v| puts v.name }\015\012</code></pre>\015\012\015\012h3. ViewJump\015\012\015\012Triggers on a jump to a view.\015\012<pre><code class="ruby">\015\012:HookViewJump => lambda { |v| puts v.name }\015\012</code></pre>\015\012\015\012h3. ViewKill\015\012\015\012Triggers when a view is killed.\015\012<pre><code class="ruby">\015\012:HookViewKill => lambda { |v| puts v.name }\015\012</code></pre>\015\012\015\012h2. Other\015\012\015\012h3. Exit\015\012\015\012Triggers on exit\015\012<pre><code class="ruby">\015\012:HookExit => lambda { puts "Nooo" }\015\012</code></pre>\015\012\015\012h2. Examples\015\012\015\012Switch Example Hooks\015\012\015\012Switch to the first view of new client\015\012<pre><code class="ruby">\015\012:HookClientCreate => lambda { |c| c.views.first.jump }\015\012</code></pre>\015\012\015\012Tag a new client with the current view\015\012<pre><code class="ruby">\015\012:HookClientCreate => lambda { |c| c.tag(current_view.name) }\015\012</code></pre>\015\012\015\012Tag a new client with the current view only if it has no other tags\015\012<pre><code class="ruby">\015\012:HookClientCreate => lambda { |c| \015\012 if(c.tags.empty?)\015\012 if(!tags.include?(current_view.name))\015\012 add_tag(current_view.name)\015\012 end \015\012 c.tag(current_view.name);\015\012 end\015\012}\015\012</code></pre>\015\012\015\012Display information about the currently focused window\015\012<pre><code class="ruby">\015\012:HookClientFocus => { |c| find_sublet("client").data = "%s (%s)" % [ c.name, c.class ] }\015\012</code></pre>\015\012\015\012