Project

General

Profile

unexist.dev

subtle

Assorted tidbits and projects

Subtlext » History » Version 86

Version 85 (Anonymous, 09/03/2009 11:27 AM) → Version 86/95 (Anonymous, 09/03/2009 11:52 PM)

h1. Subtlext\015\012\015\012[[Subtlext]] is an extension that brings the power of [[subtler]] to "Ruby":http://www.ruby-lang.org. A complete list This page includes the API with small examples of every method and some advanced examples at the stuff that is possible with [[subtlext]] can be found "here":http://unexist.scrapping.cc/rdoc/index.html or generated with @rake rdoc@. Unit bottom of the page. Some of this examples are also included in the tarball.\015\012\015\012Unit tests for [[Subtlext|sublext]] are also included. [[Development|Read more about unit tests]]\015\012\015\012h2. tests]]\015\012\015\012{{>toc}}\015\012\015\012h2. Client\015\012\015\012h3. Attributes\015\012\015\012*id&#42;*, *win&#42;*, *name&#42;*, *flags&#42;*, *gravity*, *x&#42;*, *y&#42;*, *width&#42;*, *height&#42;*\015\012\015\012_(&#42; read-only)_\015\012\015\012h3. views()\015\012\015\012Get array of views client is on\015\012<pre><code class="ruby">\015\012client.views\015\012=> [#<Subtlext::View:xxx>, #<Subtlext::View:xxx>]\015\012\015\012client.views\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. tags()\015\012\015\012Get array of defined tags\015\012<pre><code class="ruby">\015\012client.tags\015\012=> [#<Subtlext::Tag:xxx>, #<Subtlext::Tag:xxx>]\015\012\015\012client.tags\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. has_tag?(name)\015\012\015\012Check if client has tag by given name or tag object\015\012<pre><code class="ruby">\015\012client.has_tag?("subtle")\015\012=> true\015\012\015\012client.has_tag?(subtle.find_tag("subtle"))\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. tag(name)\015\012\015\012Tag client with given name or tag object\015\012<pre><code class="ruby">\015\012client.tag("subtle")\015\012=> #<Subtlext::Tag:xxx>\015\012\015\012client.tag(Subtlext::Tag.new("subtle"))\015\012=> #<Subtlext::Tag:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. untag(name)\015\012\015\012Untag client with given name or tag object\015\012<pre><code class="ruby">\015\012client.untag("subtle")\015\012=> nil\015\012\015\012client.untag(subtle.find_tag("subtle"))\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. is_full?\015\012\015\012Check if a client is fullscreen\015\012<pre><code class="ruby">\015\012client.is_full?\015\012=> true\015\012\015\012client.is_full?\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. is_float?\015\012\015\012Check if a client is floating\015\012<pre><code class="ruby">\015\012client.is_float?\015\012=> true\015\012\015\012client.is_float?\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. is_stick?\015\012\015\012Check if a client is sticky\015\012<pre><code class="ruby">\015\012client.is_stick?\015\012=> true\015\012\015\012client.is_stick?\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. toggle_full()\015\012\015\012Toggle fullscreen state\015\012<pre><code class="ruby">\015\012client.toggle_full\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. toggle_float()\015\012\015\012Toggle floating state\015\012<pre><code class="ruby">\015\012client.toggle_float\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. toggle_stick()\015\012\015\012Toggle urgent state\015\012<pre><code class="ruby">\015\012client.toggle_float\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. raise()\015\012\015\012Raise window\015\012<pre><code class="ruby">\015\012client.raise\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. lower()\015\012\015\012Lower window\015\012<pre><code class="ruby">\015\012client.lower\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. up()\015\012\015\012Get client above\015\012<pre><code class="ruby">\015\012client.up\015\012=> #<Subtlext::Client:xxx>\015\012\015\012client.up\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. left()\015\012\015\012Get client left\015\012<pre><code class="ruby">\015\012client.left\015\012=> #<Subtlext::Client:xxx>\015\012\015\012client.left\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. right()\015\012\015\012Get client right\015\012<pre><code class="ruby">\015\012client.right\015\012=> #<Subtlext::Client:xxx>\015\012\015\012client.right\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. down()\015\012\015\012Get client below\015\012<pre><code class="ruby">\015\012client.down\015\012=> #<Subtlext::Client:xxx>\015\012\015\012client.down\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus()\015\012\015\012Set focus to client\015\012<pre><code class="ruby">\015\012client.focus\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus?\015\012\015\012Check if client is focussed\015\012<pre><code class="ruby">\015\012client.focus?\015\012=> true\015\012\015\012client.focus?\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. to_s()\015\012\015\012Convert client object to string\015\012<pre><code class="ruby">\015\012puts client\015\012=> "subtle"\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. screen\015\012\015\012Get client screen\015\012<pre><code class="ruby">\015\012client.screen\015\012=> #<Subtlext::Screen:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. screen=\015\012\015\012Set client size\015\012<pre><code class="ruby">\015\012client.screen = 0\015\012=> 0\015\012\015\012client.screen = subtle.find_screen(0)\015\012=> #<Subtlext::Screen:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. size\015\012\015\012Get client size\015\012<pre><code class="ruby">\015\012client.size\015\012=> [ 0, 0, 100, 100 ]\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. size=\015\012\015\012Set client size\015\012<pre><code class="ruby">\015\012client.size = [ 0, 0, 100, 100 ]\015\012=> [ 0, 0, 100, 100 ]\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. update()\015\012\015\012Update client properties\015\012<pre><code class="ruby">\015\012client.update\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. &#43;\015\012\015\012Add tag to client\015\012<pre><code class="ruby">\015\012client + tag\015\012=> nil\015\012\015\012client + "subtle"\015\012=> true\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. &#45;\015\012\015\012Remove tag from client\015\012<pre><code class="ruby">\015\012client - tag\015\012=> nil\015\012\015\012client - "subtle"\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h2. Gravity\015\012\015\012h3. Constants\015\012\015\012<pre><code class="ruby">\015\012TopLeft = 7\015\012Top = 8\015\012TopRight = 9\015\012Left = 4\015\012Center = 5\015\012Right = 6\015\012BottomLeft = 1\015\012Bottom = 2\015\012BottomRight = 3\015\012</code></pre>\015\012\015\012h2. Screen\015\012\015\012h3. Attributes\015\012\015\012*x&#42;*, *y&#42;*, *width&#42;*, *height&#42;*\015\012\015\012_(&#42; read-only)_\015\012\015\012h3. clients()\015\012\015\012Get clients on screen\015\012<pre><code class="ruby">\015\012screen.clients\015\012=> [ #<Subtlext::Client:xxx>, #<Subtlext::Client:xxx> ]\015\012\015\012screen.clients\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. to_s()\015\012\015\012Convert client object to string\015\012<pre><code class="ruby">\015\012puts client\015\012=> "subtle"\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h2. Subtle\015\012\015\012h3. new(display, debug)\015\012\015\012Create a new [[Subtle|subtle]] object and open connection to X server\015\012<pre><code class="ruby">\015\012subtle = Subtlext::Subtle.new(":0")\015\012=> #<Subtlext::Subtle:xxx>\015\012\015\012subtle = Subtlext::Subtle.new(":0", true)\015\012<DEBUG> src/subtlext/subtlext.c:165: Connection opened (:0)\015\012=> #<Subtlext::Subtle:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. new2(display)\015\012\015\012Create a new [[Subtle|subtle]] object *internally used only*\015\012<pre><code class="ruby">\015\012subtle = Subtlext::Subtle.new(display)\015\012=> #<Subtlext::Subtle:xxx>\015\012\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012h3. version()\015\012\015\012Get the version of [[Subtlext|subtlext]]\015\012<pre><code class="ruby">\015\012puts subtle.version \015\012=> 0.8\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. display()\015\012\015\012Get the display name\015\012<pre><code class="ruby">\015\012subtle.display\015\012=> :0\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. views()\015\012\015\012Get array of defined views\015\012<pre><code class="ruby">\015\012subtle.views\015\012=> [#<Subtlext::View:xxx>, #<Subtlext::View:xxx>]\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. tags()\015\012\015\012Get array of defined tags\015\012<pre><code class="ruby">\015\012subtle.tags\015\012=> [#<Subtlext::Tag:xxx>, #<Subtlext::Tag:xxx>]\015\012\015\012subtle.tags\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. screens()\015\012\015\012Get array of screens\015\012<pre><code class="ruby">\015\012subtle.clients\015\012=> [#<Subtlext::Screen:xxx>, #<Subtlext::Screen:xxx>]\015\012\015\012subtle.screens\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. sublets()\015\012\015\012Get array of sublets\015\012<pre><code class="ruby">\015\012subtle.sublets\015\012=> [#<Subtlext::Sublet:xxx>, #<Subtlext::Sublet:xxx>]\015\012\015\012subtle.sublets\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. clients()\015\012\015\012Get array of clients\015\012<pre><code class="ruby">\015\012subtle.clients\015\012=> [#<Subtlext::Client:xxx>, #<Subtlext::Client:xxx>]\015\012\015\012subtle.clients\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. find_view(name)\015\012\015\012Find view by given name\015\012<pre><code class="ruby">\015\012subtle.find_view("subtle")\015\012=> #<Subtlext::View:xxx>\015\012\015\012subtle.find_view("subtle")\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. find_tag(name)\015\012\015\012Find tag by given name\015\012<pre><code class="ruby">\015\012subtle.find_tag("subtle")\015\012=> #<Subtlext::Tag:xxx>\015\012\015\012subtle.find_tag("subtle")\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. find_client(name)\015\012\015\012Find client by given name\015\012<pre><code class="ruby">\015\012subtle.find_client("subtle")\015\012=> #<Subtlext::Client:xxx>\015\012\015\012subtle.find_client("subtle")\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. find_screen(id)\015\012\015\012Find screen by given id\015\012<pre><code class="ruby">\015\012subtle.find_screen(0)\015\012=> #<Subtlext::Screen:xxx>\015\012\015\012subtle.find_sublet(0)\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. find_sublet(name)\015\012\015\012Find sublet by given name\015\012<pre><code class="ruby">\015\012subtle.find_sublet("subtle")\015\012=> #<Subtlext::Sublet:xxx>\015\012\015\012subtle.find_sublet("subtle")\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus_client(name)\015\012\015\012Find tag by given name and set focus\015\012<pre><code class="ruby">\015\012subtle.focus_client("subtle")\015\012=> #<Subtlext::Client:xxx>\015\012\015\012subtle.focus_client("subtle")\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus_left()\015\012\015\012Focus window left from current client\015\012<pre><code class="ruby">\015\012subtle.focus_left\015\012=> #<Subtlext::Client:xxx>\015\012\015\012subtle.focus_left\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus_down()\015\012\015\012Focus window below from current client\015\012<pre><code class="ruby">\015\012subtle.focus_down\015\012=> #<Subtlext::Client:xxx>\015\012\015\012subtle.focus_down\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus_up()\015\012\015\012Focus window above from current client\015\012<pre><code class="ruby">\015\012subtle.focus_up\015\012=> #<Subtlext::Client:xxx>\015\012\015\012subtle.focus_up\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. focus_right()\015\012\015\012Focus window right from current client\015\012<pre><code class="ruby">\015\012subtle.focus_right\015\012=> #<Subtlext::Client:xxx>\015\012\015\012subtle.focus_right\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. add_view(name)\015\012\015\012Add view with given name or view object\015\012<pre><code class="ruby">\015\012subtle.add_view("subtle")\015\012=> #<Subtlext::View:xxx>\015\012\015\012subtle.add_view(View.new("subtle"))\015\012=> #<Subtlext::View:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. add_tag(name)\015\012\015\012Add tag with given name or tag object\015\012<pre><code class="ruby">\015\012subtle.add_tag("subtle")\015\012=> #<Subtlext::Tag:xxx>\015\012\015\012subtle.add_tag(Tag.new("subtle"))\015\012=> #<Subtlext::Tag:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. del_client(name)\015\012\015\012Delete client by given name or client object\015\012<pre><code class="ruby">\015\012subtle.del_client("subtle")\015\012=> nil\015\012\015\012subtle.del_client(subtle.find_client("subtle"))\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. del_sublet(name)\015\012\015\012Delete sublet by given name\015\012<pre><code class="ruby">\015\012subtle.del_sublet("subtle")\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. del_tag(name)\015\012\015\012Delete tag by given name or tag object\015\012<pre><code class="ruby">\015\012subtle.del_tag("subtle")\015\012=> nil\015\012\015\012subtle.del_tag(subtle.find_tag("subtle"))\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. del_view(name)\015\012\015\012Delete view by given name or view object\015\012<pre><code class="ruby">\015\012subtle.del_view("subtle")\015\012=> nil\015\012\015\012subtle.del_view(subtle.find_view("subtle"))\015\012=> nil\015\012\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. current_view()\015\012\015\012Get current active view\015\012<pre><code class="ruby">\015\012subtle.current_view\015\012=> #<Subtlext::View:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. current_client()\015\012\015\012Get current active client\015\012<pre><code class="ruby">\015\012subtle.current_client\015\012=> #<Subtlext::Client:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. running?()\015\012\015\012Check if [[Subtle|subtle]] is running\015\012<pre><code class="ruby">\015\012subtle.running?\015\012=> true\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. reload()\015\012\015\012Reload config of [[Subtle|subtle]]\015\012<pre><code class="ruby">\015\012subtle.reload\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. quit()\015\012\015\012Quit [[Subtle|subtle]]\015\012<pre><code class="ruby">\015\012subtle.reload\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. to_s()\015\012\015\012Convert subtle object to string\015\012<pre><code class="ruby">\015\012puts subtle\015\012=> subtle (0.8.1113) on :2.0 (800x600)\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h2. Sublet\015\012\015\012h3. update()\015\012\015\012Update data of sublet\015\012<pre><code class="ruby">\015\012sublet.update\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. data=\015\012\015\012Set data of sublet\015\012<pre><code class="ruby">\015\012sublet.data = "subtle"\015\012=> "subtle"\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. to_s()\015\012\015\012Convert sublet object to string\015\012<pre><code class="ruby">\015\012puts sublet\015\012=> sublet\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h2. Tag\015\012\015\012h3. Attributes\015\012\015\012*id&#42*, *name&#42*\015\012\015\012_(&#42; read-only)_\015\012\015\012h3. new(name)\015\012\015\012Create new tag object\015\012<pre><code class="ruby">\015\012tag = Tag.new("subtle")\015\012=> #<Subtlext::Tag:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. taggings()\015\012\015\012Get array of clients and views that are tagged with this\015\012<pre><code class="ruby">\015\012tag.taggings()\015\012=> [#<Subtlext::View:xxx>, #<Client:xxx>]\015\012\015\012tag.taggings()\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. save()\015\012\015\012Saves the tag and sends it to [[subtle]]\015\012<pre><code class="ruby">\015\012tag.save\015\012=> #<Subtlext::Tag:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. to_s()\015\012\015\012Convert tag object to string\015\012<pre><code class="ruby">\015\012puts tag\015\012=> "subtle"\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h2. View\015\012\015\012h3. Attributes\015\012\015\012*id&#42*, *win&#42*, *name&#42*\015\012\015\012_(&#42; read-only)_\015\012\015\012h3. new(name)\015\012\015\012Create a new view object\015\012<pre><code class="ruby">\015\012view = Subtlext::View.new("subtle")\015\012=> #<Subtlext::View:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. clients()\015\012\015\012Get array of clients on this view\015\012<pre><code class="ruby">\015\012view.clients\015\012=> [#<Subtlext::Client:xxx>, #<Subtlext::Client:xxx>]\015\012\015\012view.clients\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. tags()\015\012\015\012Get array of defined tags\015\012<pre><code class="ruby">\015\012view.tags\015\012=> [#<Subtlext::Tag:xxx>, #<Subtlext::Tag:xxx>]\015\012\015\012view.tags\015\012=> []\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. has_tag?(name)\015\012\015\012Check if view has tag by given name or tag object\015\012<pre><code class="ruby">\015\012view.has_tag?("subtle")\015\012=> true\015\012\015\012view.has_tag?(subtle.find_tag("subtle"))\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. tag(name)\015\012\015\012Tag view with with given name or tag object\015\012<pre><code class="ruby">\015\012view.tag("subtle")\015\012=> #<Subtlext::Tag:xxx>\015\012\015\012view.tag(Tag.new("subtle"))\015\012=> #<Subtlext::Tag:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. untag(name)\015\012\015\012Untag view with with given name or tag object\015\012<pre><code class="ruby">\015\012view.untag("subtle")\015\012=> nil\015\012\015\012view.untag(subtle.find_tag("subtle"))\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. jump()\015\012\015\012Jump to this view\015\012<pre><code class="ruby">\015\012view.jump()\015\012=> nil\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. current?\015\012\015\012Check if this view is the current active view\015\012<pre><code class="ruby">\015\012view.current?\015\012=> true\015\012\015\012view.current?\015\012=> false\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. save()\015\012\015\012Saves the view and sends it to [[subtle]]\015\012<pre><code class="ruby">\015\012view.save\015\012=> #<Subtlext::View:xxx>\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. to_s()\015\012\015\012Convert view object to string\015\012<pre><code class="ruby">\015\012puts view\015\012=> "subtle"\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. &#43;\015\012\015\012Add tag to view\015\012<pre><code class="ruby">\015\012view + tag\015\012=> true\015\012\015\012view + "subtle"\015\012=> true\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h3. &#45;\015\012\015\012Remove tag from view\015\012<pre><code class="ruby">\015\012view - tag\015\012=> true\015\012\015\012view - "subtle"\015\012=> true\015\012</code></pre>\015\012\015\012[[Subtlext#1|top]]\015\012\015\012h2. Examples\015\012\015\012This time a more complex example to show what you can do with this extension:\015\012\015\012<pre><code class="ruby">\015\012require("subtle/subtlext")\015\012\015\012subtle = Subtlext::Subtle.new(":2")\015\012\015\012puts "subtle %s on %s" % \015\012 [subtle.version, subtle.running? ? subtle.display : "none"]\015\012\015\012puts "Tags: %s" % [subtle.tags.join(", ")]\015\012\015\012# Views\015\012views = []\015\012subtle.views.each do |v|\015\012 views.push("%s (%s)" % [v.current? ? "[#{v}]" : v, v.tags.join(", ")])\015\012end\015\012puts "Views: %s" % [views.join(", ")]\015\012\015\012# Clients\015\012clients = []\015\012subtle.clients.each do |c|\015\012 clients.push("%s (%s)" % [c, c.tags.join(", ")])\015\012end\015\012puts "Clients: %s" % [clients.join(", ")]\015\012</code></pre>\015\012\015\012Output:\015\012<pre><code>subtle 0.8.1017 on :2.0\015\012Tags: default, float, full, editor, video, browser, terms\015\012Views: web (default, browser), [dev] (editor, terms), work (video, browser, terms)\015\012Clients: xterm (terms), xterm (terms)\015\012</code></pre>\015\012\015\012More examples are in the tarball in *dist/scripts*. Currently there is the example from above (*example.rb*), an example for a web interface with "Sinatra":http://sinatra.rubyforge.org/ (*web.rb*) and an interface with "Ruby-Gtk":http://ruby-gnome2.sourceforge.jp (*gtk.rb*).\015\012\015\012[[Subtlext#1|top]]