Hooks » History » Version 31
« Previous -
Version 31/47
(diff) -
Next » -
Current version
Anonymous, 09/12/2010 10:09 PM
Hooks\015\012\015\012{{>toc}}\015\012\015\012Hooks are small blocks of code (Ruby procs or lambdas) that can be called on certain events of the window manager. Many hooks get an object matching to the type hook, like a client object for the client_create hook. Generally all hooks can be either used inside of the config or in a sublet.\015\012\015\012The only difference is that when a hook inside of the config can have one argument, a hook inside of a sublets has an additional argument - the instance of the sublet itself and this will always be the first argument. Many Hooks get a subtlext object as argument to interact, but all the subtlext stuff is possible - docs about this can be found in rdoc{{hide}}\015\012# A hook in the config\015\012on :client_create do |c|\015\012 puts c.name #< Name of the client\015\012end\015\012\015\012# A hook in a sublet\015\012on :client_create do |s, c|\015\012 puts s.name #< Name of the sublet\015\012 puts c.name #< Name of the client\015\012end\015\012
\015\012\015\012h2. Client Hooks\015\012\015\012h3. client_create\015\012\015\012Triggers on creation of new clients.\015\012{{hide}}\015\012on :client_create do |c|\015\012 puts c.name\015\012end\015\012
\015\012\015\012h3. client_configure\015\012\015\012Triggers whenever a client is configured.\015\012{{hide}}\015\012on :client_focus do |c|\015\012 puts c.name\015\012end\015\012
\015\012\015\012h3. client_focus\015\012\015\012Triggers whenever a client gets focus.\015\012{{hide}}\015\012on :client_focus do |c|\015\012 puts c.name\015\012end\015\012
\015\012\015\012h3. client_kill\015\012\015\012Triggers when a client is killed.\015\012{{hide}}\015\012on :client_kill do |c|\015\012 puts c.name\015\012end\015\012
\015\012\015\012h2. Tag Hooks\015\012\015\012h3. tag_create\015\012\015\012Triggers when a tag is created.\015\012{{hide}}\015\012on :tag_create do |t|\015\012 puts t.name\015\012end\015\012
\015\012\015\012h3. tag_kill\015\012\015\012Triggers when a tag is killed.\015\012{{hide}}\015\012on :tag_kill do |t|\015\012 puts t.name\015\012end\015\012
\015\012\015\012h2. View Hooks\015\012\015\012h3. view_create\015\012\015\012Triggers on creation of new views.\015\012{{hide}}\015\012on :view_create do |v|\015\012 puts v.name\015\012end\015\012
\015\012\015\012h3. view_configure\015\012\015\012Triggers whenever a view is configured.\015\012{{hide}}\015\012on :view_configure do |v|\015\012 puts v.name\015\012end\015\012
\015\012\015\012h3. view_jump\015\012\015\012Triggers on a jump to a view.\015\012{{hide}}\015\012on :view_jump do |v|\015\012 puts v.name\015\012end\015\012
\015\012\015\012h3. view_kill\015\012\015\012Triggers when a view is killed.\015\012{{hide}}\015\012on :view_kill do |v|\015\012 puts v.name\015\012end\015\012
\015\012\015\012h2. Other\015\012\015\012h3. tile\015\012\015\012Triggers whenever tiling would be needed\015\012{{hide}}\015\012on :tile do \015\012 puts "Insert tiling here"\015\012end\015\012
\015\012\015\012h3. reload\015\012\015\012Triggers whenever subtle was reloaded\015\012{{hide}}\015\012on :reload do \015\012 puts "Reloaded config"\015\012end\015\012
\015\012\015\012h3. start\015\012\015\012Triggers on start\015\012{{hide}}\015\012on :start do\015\012 puts "Yees"\015\012end\015\012
\015\012\015\012h3. exit\015\012\015\012Triggers on exit\015\012{{hide}}\015\012on :exit do\015\012 puts "Nooo"\015\012end\015\012
\015\012\015\012h2. Examples\015\012\015\012Switch to the first view of new client\015\012<{{hide}}code class="ruby">\015\012on :client_create do |c|\015\012 c.views.first.jump\015\012end\015\012
\015\012\015\012Tag a new client with the current view only if it has no other tags\015\012{{hide}}\015\012on :client_create do |c|\015\012 cur = Subtlext::View.current\015\012\015\012 # Check for empty tags\015\012 if(c.tags.empty?)\015\012 t = Subtlext::Tag[cur.name] rescue nil\015\012\015\012 # Create new tag\015\012 if(t.nil?)\015\012 t = Subtlext::Tag.new(cur.name)\015\012 t.save\015\012 end \015\012\015\012 c + t\015\012 end\015\012end\015\012
¶
\015\012# A hook in the config\015\012on :client_create do |c|\015\012 puts c.name #< Name of the client\015\012end\015\012\015\012# A hook in a sublet\015\012on :client_create do |s, c|\015\012 puts s.name #< Name of the sublet\015\012 puts c.name #< Name of the client\015\012end\015\012
\015\012on :client_create do |c|\015\012 puts c.name\015\012end\015\012
\015\012on :client_focus do |c|\015\012 puts c.name\015\012end\015\012
\015\012on :client_focus do |c|\015\012 puts c.name\015\012end\015\012
\015\012on :client_kill do |c|\015\012 puts c.name\015\012end\015\012
\015\012on :tag_create do |t|\015\012 puts t.name\015\012end\015\012
\015\012on :tag_kill do |t|\015\012 puts t.name\015\012end\015\012
\015\012on :view_create do |v|\015\012 puts v.name\015\012end\015\012
\015\012on :view_configure do |v|\015\012 puts v.name\015\012end\015\012
\015\012on :view_jump do |v|\015\012 puts v.name\015\012end\015\012
\015\012on :view_kill do |v|\015\012 puts v.name\015\012end\015\012
\015\012on :tile do \015\012 puts "Insert tiling here"\015\012end\015\012
\015\012on :reload do \015\012 puts "Reloaded config"\015\012end\015\012
\015\012on :start do\015\012 puts "Yees"\015\012end\015\012
\015\012on :exit do\015\012 puts "Nooo"\015\012end\015\012
\015\012on :client_create do |c|\015\012 cur = Subtlext::View.current\015\012\015\012 # Check for empty tags\015\012 if(c.tags.empty?)\015\012 t = Subtlext::Tag[cur.name] rescue nil\015\012\015\012 # Create new tag\015\012 if(t.nil?)\015\012 t = Subtlext::Tag.new(cur.name)\015\012 t.save\015\012 end \015\012\015\012 c + t\015\012 end\015\012end\015\012