summaryrefslogtreecommitdiffstats
path: root/subtle/subtle.rb~
diff options
context:
space:
mode:
Diffstat (limited to 'subtle/subtle.rb~')
-rw-r--r--subtle/subtle.rb~547
1 files changed, 547 insertions, 0 deletions
diff --git a/subtle/subtle.rb~ b/subtle/subtle.rb~
new file mode 100644
index 0000000..4db244a
--- /dev/null
+++ b/subtle/subtle.rb~
@@ -0,0 +1,547 @@
+#
+# This program can be distributed under the terms of the GNU GPL.
+# See the file COPYING.
+#
+# $Id: .config/subtle/subtle.rb,v 330 2011/03/29 11:56:06 unexist $
+#
+
+require "socket"
+
+# Contrib {{{
+begin
+ require "#{ENV["HOME"]}/bin/subtle-contrib/launcher.rb"
+ require "#{ENV["HOME"]}/bin/subtle-contrib/selector.rb"
+ require "#{ENV["HOME"]}/bin/subtle-contrib/merger.rb"
+
+ Subtle::Contrib::Launcher.fonts = [
+ "xft:Envy Code R:pixelsize=80",
+ "xft:Envy Code R:pixelsize=13"
+ ]
+
+ Subtle::Contrib::Selector.font = "xft:Envy Code R:pixelsize=13"
+ Subtle::Contrib::Merger.font = "xft:Envy Code R:pixelsize=13"
+rescue LoadError
+end # }}}
+
+# Options {{{
+set :border, 2
+set :step, 5
+set :snap, 10
+set :gravity, :center
+set :urgent, false
+set :resize, false
+set :strut, [0, 0, 0, 0]
+set :padding, [4, 4, 2, 2]
+set :font, "xft:Envy Code R:pixelsize=13"
+#set :font, "xft:Ubuntu R:pixelsize=13"
+#set :font, "xft:DejaVu Sans Mono:pixelsize=12:antialias=true"
+set :separator, "ยท"
+set :outline, 0
+set :gap, 3
+#set :wmname, "LG3D"
+# }}}
+
+# Screens {{{
+screen 1 do
+ stipple false
+ top [:title, :spacer, :views, :center, :clock, :fuzzytime, :separator, :sublets, :center]
+ bottom [:mpd, :spacer, :cpu]
+ view 1
+end
+
+screen 2 do
+ stipple false
+ top [:views, :spacer, :title, :tray, :center, :mpd, :separator, :volume, :center]
+ bottom []
+ view 0
+end
+# }}}
+
+# Colors {{{
+color :title_fg, "#ffffff"
+color :title_bg, "#1a1a1a"
+color :title_border, "#1a1a1a"
+
+color :focus_fg, "#ffffff"
+color :focus_bg, "#595959"
+color :focus_border, "#1a1a1a"
+
+color :urgent_fg, "#DF8787"
+#color :urgent_bg, "#404040"
+#color :urgent_border, "#1a1a1a"
+
+color :occupied_fg, "#777777"
+color :occupied_bg, "#404040"
+color :occupied_border, "#1a1a1a"
+
+color :views_fg, "#a8a8a8"
+color :views_bg, "#1a1a1a"
+color :views_border, "#1a1a1a"
+
+#color :sublets_fg, "#595959"
+color :sublets_fg, "#a8a8a8"
+color :sublets_bg, "#1a1a1a"
+color :sublets_border, "#1a1a1a"
+
+color :client_active, "#a8a8a8"
+color :client_inactive, "#404040"
+
+color :panel, "#1a1a1a"
+#color :background, "#404040"
+
+color :stipple, "#595959"
+color :separator, "#DF8787"
+
+=begin
+color :title_fg, "#e9e9e9"
+color :title_bg, "#424242"
+color :title_border, "#424242"
+
+color :focus_fg, "#e9e9e9"
+color :focus_bg, "#424242"
+color :focus_border, "#424242"
+
+color :urgent_fg, "#ff9900"
+#color :urgent_bg, "#424242"
+#color :urgent_border, "#424242"
+
+color :occupied_fg, "#3299bb"
+color :occupied_bg, "#424242"
+color :occupied_border, "#424242"
+
+color :views_fg, "#bcbcbc"
+color :views_bg, "#424242"
+color :views_border, "#424242"
+
+color :sublets_fg, "#bcbcbc"
+color :sublets_bg, "#424242"
+color :sublets_border, "#424242"
+
+color :client_active, "#bcbcbc"
+color :client_inactive, "#424242"
+
+color :panel, "#424242"
+
+color :background, "#424242"
+
+color :stipple, "#595959"
+
+color :separator, "#ff9900"
+=end
+# }}}
+
+# Gravities {{{
+gravity :top_left, [0, 0, 50, 50]
+gravity :top_left33, [0, 0, 50, 33]
+gravity :top_left66, [0, 0, 50, 66]
+gravity :top_left75, [0, 0, 50, 75]
+gravity :top, [0, 0, 100, 50]
+gravity :top66, [0, 0, 100, 67]
+gravity :top33, [0, 0, 100, 33]
+gravity :top75, [0, 0, 100, 75]
+gravity :top_right, [100, 0, 50, 50]
+gravity :top_right33, [100, 0, 50, 33]
+gravity :top_right66, [100, 0, 50, 66]
+gravity :top_right75, [100, 0, 50, 75]
+gravity :left, [0, 0, 50, 100]
+gravity :left33, [0, 50, 25, 33]
+gravity :left66, [0, 50, 50, 33]
+gravity :center, [0, 0, 100, 100]
+gravity :center33, [50, 50, 50, 33]
+gravity :center66, [0, 50, 100, 33]
+gravity :right, [100, 0, 50, 100]
+gravity :right33, [100, 50, 25, 100]
+gravity :right66, [100, 50, 50, 33]
+gravity :bottom_left, [0, 100, 50, 50]
+gravity :bottom_left25, [0, 100, 50, 25]
+gravity :bottom_left33, [0, 100, 50, 33]
+gravity :bottom_left66, [0, 100, 50, 66]
+gravity :bottom, [0, 100, 100, 50]
+gravity :bottom66, [0, 100, 100, 66]
+gravity :bottom33, [0, 100, 100, 33]
+gravity :bottom_right, [100, 100, 50, 50]
+gravity :bottom_right25, [100, 100, 50, 25]
+gravity :bottom_right33, [100, 100, 50, 33]
+gravity :bottom_right66, [100, 100, 50, 66]
+gravity :gimp_image, [50, 50, 80, 100]
+gravity :gimp_toolbox, [0, 0, 10, 100]
+gravity :gimp_dock, [100, 0, 10, 100]
+gravity :dia_toolbox, [0, 0, 100, 15]
+gravity :dia_window, [0, 18, 100, 84]
+# }}}
+
+# Grabs {{{
+# Host specific
+host = Socket.gethostname
+modkey = "W"
+gravkeys = [ "KP_7", "KP_8", "KP_9", "KP_4", "KP_5", "KP_6", "KP_1", "KP_2", "KP_3" ]
+
+if("telas" == host || "mockra" == host) #< Netbooks
+ gravkeys = [ "q", "w", "e", "a", "s", "d", "y", "x", "c" ]
+elsif("test" == host) #< Usually VMs
+ modkey = "A"
+end
+
+# Views and screens
+(1..6).each do |i|
+ grab modkey + "-#{i}", "ViewSwitch#{i}".to_sym
+ grab modkey + "-S-#{i}", "ViewJump#{i}".to_sym
+ grab modkey + "-F#{i}", "ScreenJump#{i}".to_sym
+end
+
+# Windows
+grab modkey + "-B1", :WindowMove
+grab modkey + "-B3", :WindowResize
+grab modkey + "-S-f", :WindowFloat
+grab modkey + "-S-space", :WindowFull
+grab modkey + "-S-s", :WindowStick
+grab modkey + "-r", :WindowRaise
+grab modkey + "-l", :WindowLower
+grab modkey + "-Left", :WindowLeft
+grab modkey + "-Down", :WindowDown
+grab modkey + "-Up", :WindowUp
+grab modkey + "-Right", :WindowRight
+grab modkey + "-k", :WindowKill
+grab modkey + "-h", lambda { |c| c.retag }
+
+# Reload/restart
+grab modkey + "-C-q", :SubtleQuit
+grab modkey + "-C-r", :SubtleReload
+grab modkey + "-C-A-r", :SubtleRestart
+
+# Gravity keys and focus
+gravities = [
+ [:top_left, :top_left33, :top_left66, :top_left75],
+ [:top, :top33, :top66, :top75],
+ [:top_right, :top_right33, :top_right66, :top_right75],
+ [:left, :left33, :left66],
+ [:center, :center33, :center66],
+ [:right, :right33, :right66],
+ [:bottom_left, :bottom_left25, :bottom_left33, :bottom_left66],
+ [:bottom, :bottom33, :bottom66],
+ [:bottom_right, :bottom_right25, :bottom_right33, :bottom_right66]
+]
+
+gravities.each_index do |i|
+ grab "%s-%s" % [ modkey, gravkeys[i] ], gravities[i]
+
+ grab "%s-C-%s" % [ modkey, gravkeys[i] ], lambda {
+ c = Subtlext::Client.visible.select { |c|
+ gravities[i].include?(c.gravity.name.to_sym)
+ }
+
+ c.first.focus unless(c.empty?)
+ }
+end
+
+# Multimedia keys
+grab modkey + "-m", "mpc current | tr -d '\n' | xclip"
+grab "XF86Mail", "urxvtc -name newsbeuter -e mutt"
+grab "XF86HomePage", "firefox"
+grab "XF86AudioPlay", "mpc toggle"
+grab "XF86AudioStop", "mpc stop"
+grab "XF86AudioNext", "mpc next"
+grab "XF86AudioPrev", "mpc prev"
+grab "XF86AudioRaiseVolume", "mpc volume +1"
+grab "XF86AudioLowerVolume", "mpc volume -1"
+grab "XF86Back", "mpc seek -5"
+grab "XF86Forward", "mpc seek +5"
+grab "XF86Reload", "/home/carnager/bin/lastfm.sh"
+grab "Cancel", "/home/carnager/bin/love"
+grab "XF86Tools", "urxvtc -name ncmpc -e ncmpcpp"
+
+grab "W-d" do
+ current = Subtlext::View.current
+ Subtlext::View.all.each do |v|
+ if(current == v)
+ v.tag "default"
+ else
+ v.untag "default"
+ end
+ end
+end
+
+# Programs
+grab modkey + "-Return", "urxvt"
+grab modkey + "-g", "gvim"
+
+# Contrib
+grab "W-x" do
+ Subtle::Contrib::Launcher.run
+end
+
+grab "W-Tab" do
+ Subtle::Contrib::Selector.run
+end
+
+grab "W-u" do
+ Subtle::Contrib::Merger.run
+end
+
+# Scratchpad
+grab "W-y" do
+ if((c = Subtlext::Client["scratch"]))
+ c.toggle_stick
+ c.focus
+ elsif((c = Subtlext::Subtle.spawn("urxvt -name scratch")))
+ c.tags = []
+ c.flags = [ :stick ]
+ end
+end
+
+# Switch views
+{
+ "S-F1" => [ :www, :terms ],
+ "S-F2" => [ :editor, :terms ],
+ "S-F3" => [ :www, :test ],
+ "S-F4" => [ :editor, :test ]
+}.each do |k, v|
+ grab k do
+ screens = Subtlext::Screen.all
+
+ v.each_with_index do |view, i|
+ screens[i].view = view
+ end
+ end
+end
+
+# Pychrom
+grab modkey + "-p" do
+ if((t = Subtlext::Tray[:pychrom]))
+ t.click(1)
+ else
+ Subtlext::Subtle.spawn("pychrom")
+ end
+end
+# }}}
+
+# Tags {{{
+tag "terms" do
+ match "xterm|urxvt"
+ gravity :center
+ resize true
+end
+
+tag "browser" do
+ match "navigator|(google\-)?chrom[e|ium]|opera"
+
+ if("proteus" == host or "pc03112" == host)
+ gravity :top75
+ else
+ gravity :center
+ end
+end
+
+tag "pdf" do
+ match "apvlv|evince"
+ stick true
+end
+
+tag "editor" do
+ match "[g]?vim"
+ resize true
+
+ if("mockra" == host or "proteus" == host or "pc03112" == host)
+ gravity :top75
+ else
+ gravity :center
+ end
+end
+
+tag "xephyr" do
+ match "xeph640"
+ urgent false
+
+ if("mockra" == host)
+ gravity :center
+ else
+ geometry [ 943, 548, 640, 480 ]
+ end
+end
+
+tag "android" do
+ match :name => "5554:AVD"
+ geometry [ 873, 47, 791, 534 ]
+end
+
+tag "mplayer" do
+ match "mplayer|vlc"
+ float true
+ stick true
+ urgent true
+end
+
+tag "stick" do
+ match "dialog|subtly|python|gtk.rb|display|pychrom|skype|xev"
+ stick true
+ float true
+end
+
+tag "urgent" do
+ match "sun-awt-X11-XDialogPeer"
+ type :dialog
+ stick true
+ urgent true
+end
+
+tag "void" do
+ match "jd-Main|Virtualbox"
+ float true
+end
+
+tag "powerfolder" do
+ match "de-dal33t-powerfolder-PowerFolder"
+ float true
+end
+
+tag "dialogs" do
+ match :type => [ :dialog, :splash ]
+ stick true
+end
+
+tag "flash" do
+ match "exe|<unknown>"
+ stick true
+end
+
+tag "one" do
+ match "urxvt2"
+ gravity :bottom_left
+end
+
+tag "one25" do
+ match "urxvt2"
+ gravity :bottom_left25
+end
+
+tag "two" do
+ match "urxvt2"
+ gravity :bottom
+end
+
+tag "three25" do
+ match "urxvt1"
+ gravity :bottom_right25
+end
+
+tag "seven" do
+ match "urxvt1"
+ gravity :top_left
+end
+
+tag "eight" do
+ match "urxvt1"
+ gravity :top
+end
+
+tag "gimp_image" do
+ match :role => "gimp-image-window"
+ gravity :gimp_image
+end
+
+tag "gimp_toolbox" do
+ match :role => "gimp-toolbox$"
+ gravity :gimp_toolbox
+end
+
+tag "gimp_dock" do
+ match :role => "gimp-dock"
+ gravity :gimp_dock
+end
+
+tag "gimp_scum" do
+ match :role => "gimp-.*|screenshot"
+end
+
+tag "dia_window" do
+ match :role => "diagram_window"
+ gravity :dia_window
+end
+
+tag "dia_toolbox" do
+ match :role => "toolbox_window"
+ gravity :dia_toolbox
+end
+
+tag "inkscape" do
+ match "inkscape"
+end
+
+tag "xfontsel" do
+ match "xfontsel"
+ geometry [464, 433, 676, 113]
+ stick true
+end
+
+tag "xev" do
+ match :name => "Event[ ]Tester"
+ geometry [1213, 98, 377, 321]
+ float true
+ stick true
+end
+# }}}
+
+# Views {{{
+if("mockra" == host or "proteus" == host or "pc03112" == host)
+ www_re = "browser|one25|three25"
+ test_re = "xephyr|android|one25|three25"
+ editor_re = "android|editor|one25|three25"
+ icons = true
+else
+ www_re = "browser"
+ test_re = "android|xephyr|seven$|one$"
+ editor_re = "editor"
+ icons = true
+end
+
+iconpath = "#{ENV["HOME"]}/.config/subtle/icons"
+
+view "terms" do
+ match "terms|eight|two"
+ icon "#{iconpath}/terminal.xbm"
+ icon_only icons
+end
+
+view "www" do
+ match www_re
+ icon "#{iconpath}/world.xbm"
+ icon_only icons
+end
+
+view "void" do
+ match "default|void|powerfolder"
+ icon "#{iconpath}/quote.xbm"
+ icon_only icons
+end
+
+view "sketch" do
+ match "inkscape|dia_*|gimp_.*"
+ icon "#{iconpath}/paint.xbm"
+ icon_only icons
+end
+
+view "test" do
+ match test_re
+ icon "#{iconpath}/bug.xbm"
+ icon_only icons
+end
+
+view "editor" do
+ match editor_re
+ icon "#{iconpath}/pencil.xbm"
+ icon_only icons
+end
+# }}}
+
+# Sublets {{{
+sublet :clock do
+ format_string "%a %b %d,"
+ icon_fg "#777777"
+end
+
+[ :cpu, :jdownloader, :wifi, :mpd, :volume ].each do |sublet|
+ sublet sublet do
+ icon_fg "#777777"
+ end
+end
+# }}}