Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.97 KB | None | 0 0
  1. # Window move/resize steps in pixel per keypress
  2. set :step, 5
  3.  
  4. # Window screen border snapping
  5. set :snap, 10
  6.  
  7. # Default starting gravity for windows. Comment out to use gravity of
  8. # currently active client
  9. set :gravity, :center
  10.  
  11. # Make transient windows urgent
  12. set :urgent, false
  13.  
  14. # Honor resize size hints globally
  15. set :resize, false
  16.  
  17. # Enable gravity tiling
  18. set :tiling, false
  19.  
  20. # Font string either take from e.g. xfontsel or use xft
  21. set :font, "xft:sans-8:antialias=true"
  22.  
  23. # Separator between sublets
  24. set :separator, "·"
  25.  
  26. # Set the WM_NAME of subtle (Java quirk)
  27. set :wmname, "LG3D"
  28.  
  29. #icon = Subtlext::Icon.new("#{ENV["HOME"]}/images/xbm8x8/arch_10x10.xbm")
  30.  
  31. screen 1 do
  32.   # Content of the top panel
  33.   top     [ icon, :views, :layout, :mpd, :center, :title, :center, :spacer, :tray, :volume, :separator,:sublets ]
  34.   # Content of the bottom panel
  35.   bottom  [ ]
  36. end
  37.  
  38. #screen 2 do
  39.   # Add stipple to panels
  40. #  stipple false
  41.  
  42.   # Content of the top panel
  43. #  top     [ :views, :layout, :center, :title ]
  44.   # Content of the bottom panel
  45. #  bottom  [ ]
  46. #end
  47.  
  48. sublet :clock2 do
  49.    interval      60
  50.    time_color    "#cdff00"
  51.    date_color    "#cdff00"
  52.    date_format   "%d/%m"
  53.    time_format   "%H:%M"
  54. end
  55.  
  56. sublet :notify do
  57.    interval      60
  58.    font          "xft:sans-8:antialias=true"
  59.    highlight     "#ff3b77"
  60. end
  61.  
  62. style :all do
  63.   padding     0, 2
  64.   margin      0
  65.   border      "#202020", 0
  66.   foreground  "#757575"
  67.   background  "#202020"
  68. end
  69.  
  70. # Style for focus window title
  71. style :title do
  72.   foreground  "#cdff00"
  73. end
  74.  
  75. # Style for the active views
  76. style :focus do
  77.   foreground  "#cdff00"
  78. end
  79.  
  80. # Style for urgent window titles and views
  81. style :urgent do
  82.   foreground  "#ff3b77"
  83. end
  84.  
  85. style :views do
  86.   foreground  "#757575"
  87.   background  "#202020"
  88. end
  89.  
  90. # Style for occupied views (views with clients)
  91. style :occupied do
  92.   foreground  "#ff3b77"
  93. end
  94.  
  95. # Style for unoccupied views (views without clients)
  96. #style :unoccupied do
  97. #end
  98.  
  99. # Style for sublets
  100. #style :sublets do
  101. #end
  102.  
  103. # Style for separator
  104. #style :separator do
  105. #end
  106.  
  107. # Style for active/inactive windows
  108. style :clients do
  109.   active      "#303030", 0
  110.   inactive    "#202020", 0
  111.   margin      0
  112.   width       50
  113. end
  114.  
  115. # Style for subtle
  116. style :subtle do
  117.   margin      0
  118.   panel       "#202020"
  119.   #background  "#3d3d3d"
  120.   stipple     "#757575"
  121. end
  122.  
  123. # Top left
  124. gravity :top_left,       [   0,   0,  50,  50 ]
  125. gravity :top_left66,     [   0,   0,  50,  66 ]
  126. gravity :top_left33,     [   0,   0,  50,  34 ]
  127.  
  128. # Top
  129. gravity :top,            [   0,   0, 100,  50 ]
  130. gravity :top66,          [   0,   0, 100,  66 ]
  131. gravity :top33,          [   0,   0, 100,  34 ]
  132.  
  133. # Top right
  134. gravity :top_right,      [  50,   0,  50,  50 ]
  135. gravity :top_right66,    [  50,   0,  50,  66 ]
  136. gravity :top_right33,    [  50,   0,  50,  33 ]
  137.  
  138. # Left
  139. gravity :left,           [   0,   0,  50, 100 ]
  140. gravity :left66,         [   0,   0,  66, 100 ]
  141. gravity :left33,         [   0,   0,  33, 100 ]
  142.  
  143. # Center
  144. gravity :center,         [   0,   0, 100, 100 ]
  145. gravity :center66,       [  17,  17,  66,  66 ]
  146. gravity :center33,       [  33,  33,  33,  33 ]
  147.  
  148. # Right
  149. gravity :right,          [  50,   0,  50, 100 ]
  150. gravity :right66,        [  34,   0,  66, 100 ]
  151. gravity :right33,        [  67,  50,  33, 100 ]
  152.  
  153. # Bottom left
  154. gravity :bottom_left,    [   0,  50,  50,  50 ]
  155. gravity :bottom_left66,  [   0,  34,  50,  66 ]
  156. gravity :bottom_left33,  [   0,  67,  50,  33 ]
  157.  
  158. # Bottom
  159. gravity :bottom,         [   0,  50, 100,  50 ]
  160. gravity :bottom66,       [   0,  34, 100,  66 ]
  161. gravity :bottom33,       [   0,  67, 100,  33 ]
  162.  
  163. # Bottom right
  164. gravity :bottom_right,   [  50,  50,  50,  50 ]
  165. gravity :bottom_right66, [  50,  34,  50,  66 ]
  166. gravity :bottom_right33, [  50,  67,  50,  33 ]
  167.  
  168. # Gimp
  169. gravity :gimp_image,     [  15,   0,  85, 100 ]
  170. gravity :gimp_toolbox,   [   0,   0,  15, 100 ]
  171.  
  172. # Dia
  173. gravity :dia_toolbox,    [   0,   0,  10, 100 ]
  174. gravity :dia_view,       [  10,   0,  90, 100 ]
  175.  
  176. # shutdown-dialog.py
  177. gravity :shutdownDialog, [  30,  15,  40,  70 ]
  178.  
  179. #
  180. ## Alt (A), Control (C), Meta (M), Shift (S), Super (W)
  181. #
  182.  
  183. # Mastekey - used in most combinations
  184. modkey = "W"
  185.  
  186. # Volume control
  187. grab "XF86AudioMute"       , :VolumeToggle
  188. grab "XF86AudioRaiseVolume", :VolumeRaise
  189. grab "XF86AudioLowerVolume", :VolumeLower
  190.  
  191. # Jump to view1, view2, ...
  192. grab modkey + "-S-1", :ViewJump1
  193. grab modkey + "-S-2", :ViewJump2
  194. grab modkey + "-S-3", :ViewJump3
  195. grab modkey + "-S-4", :ViewJump4
  196. grab modkey + "-S-5", :ViewJump4
  197.  
  198. # Switch current view
  199. grab modkey + "-1", :ViewSwitch1
  200. grab modkey + "-2", :ViewSwitch2
  201. grab modkey + "-3", :ViewSwitch3
  202. grab modkey + "-4", :ViewSwitch4
  203. grab modkey + "-5", :ViewSwitch5
  204.  
  205. # Select next and prev view */
  206. grab modkey + "-Page_Up",   :ViewNext
  207. grab modkey + "-Page_Down", :ViewPrev
  208.  
  209. # Move mouse to screen1, screen2, ...
  210. grab modkey + "-A-1", :ScreenJump1
  211. grab modkey + "-A-2", :ScreenJump2
  212. grab modkey + "-A-3", :ScreenJump3
  213. grab modkey + "-A-4", :ScreenJump4
  214. grab modkey + "-A-5", :ScreenJump5
  215.  
  216. # Force reload of config and sublets
  217. # grab "W-C-r", :SubtleReload
  218. grab modkey + "-C-r", <<SCRIPT
  219.  subtle -k &>/dev/null
  220.  reload=$?
  221.  
  222.  if [ $reload -eq 1 ] ; then
  223.    zenity --question --text="Syntax error, reload anyway?" --ok-label="Yes" --cancel-label="No"
  224.    reload=$?
  225.  fi
  226.  
  227.  [ $reload -eq 0 ] && subtler -r
  228. SCRIPT
  229.  
  230.  
  231. # Force restart of subtle
  232. # grab "W-C-S-r", :SubtleRestart
  233. grab modkey + "-C-S-r", <<SCRIPT
  234.  subtle -k &>/dev/null
  235.  reload=$?
  236.  
  237.  if [ $reload -eq 1 ] ; then
  238.    zenity --question --text="Syntax error, restart anyway?" --ok-label="Yes" --cancel-label="No"
  239.    reload=$?
  240.  fi
  241.  
  242.  [ $reload -eq 0 ] && subtler -R
  243. SCRIPT
  244.  
  245. # Quit subtle
  246. grab modkey + "-C-q", :SubtleQuit
  247.  
  248. # Move current window
  249. grab modkey + "-B1", :WindowMove
  250.  
  251. # Resize current window
  252. grab modkey + "-B3", :WindowResize
  253.  
  254. # Toggle floating mode of window
  255. grab modkey + "-f", :WindowFloat
  256.  
  257. # Toggle fullscreen mode of window
  258. grab modkey + "-space", :WindowFull
  259.  
  260. # Toggle sticky mode of window (will be visible on all views)
  261. grab modkey + "-v", :WindowStick
  262.  
  263. # Toggle zaphod mode of window (will span across all screens)
  264. grab modkey + "-equal", :WindowZaphod
  265.  
  266. # Raise window
  267. grab modkey + "-r", :WindowRaise
  268.  
  269. # Lower window
  270. grab modkey + "-l", :WindowLower
  271.  
  272. # Select next windows
  273. grab modkey + "-Left",  :WindowLeft
  274. grab modkey + "-Down",  :WindowDown
  275. grab modkey + "-Up",    :WindowUp
  276. grab modkey + "-Right", :WindowRight
  277.  
  278. # Kill current window
  279. grab modkey + "-S-k", :WindowKill
  280.  
  281. grab modkey + "-q", [ :top_left,     :top_left66,     :top_left33     ]
  282. grab modkey + "-w", [ :top,          :top66,          :top33          ]
  283. grab modkey + "-e", [ :top_right,    :top_right66,    :top_right33    ]
  284. grab modkey + "-a", [ :left,         :left66,         :left33         ]
  285. grab modkey + "-s", [ :center,       :center66,       :center33       ]
  286. grab modkey + "-d", [ :right,        :right66,        :right33        ]
  287. grab modkey + "-z", [ :bottom_left,  :bottom_left66,  :bottom_left33  ]
  288. grab modkey + "-x", [ :bottom,       :bottom66,       :bottom33       ]
  289. grab modkey + "-c", [ :bottom_right, :bottom_right66, :bottom_right33 ]
  290.  
  291. grab modkey + "-Return", "urxvtc"
  292.  
  293. grab modkey + "-C-Return" do
  294.    if((c = Subtlext::Client["urxvtq"]))
  295.      c.toggle_stick
  296.      c.focus
  297.    elsif((c = Subtlext::Subtle.spawn("urxvtc -name urxvtq -pe tabbed -depth 32 -bg rgba:0000/0000/0000/bbbb")))
  298.      c.tags  = []
  299.      c.flags = [ :stick ]
  300.    end
  301. end
  302.  
  303. grab modkey + "-p", "~/bin/dmenu_launch"
  304.  
  305. grab modkey + "-C-l", "sleep 1; xset dpms force off && slimlock"
  306.  
  307. grab "Print", "~/bin/screen"
  308.  
  309. grab "A-Tab" do |c|
  310.     sel     = 0
  311.     clients = Subtlext::Client.visible
  312.  
  313.     clients.each_index do |idx|
  314.       if(clients[idx].id == c.id)
  315.         sel = idx + 1 if(idx < clients.size - 1)
  316.       end
  317.     end
  318.  
  319.    clients[sel].focus
  320. end
  321.  
  322. begin
  323.    require "#{ENV["HOME"]}/bin/subtle-contrib/ruby/selector.rb"
  324.  
  325.    # Set font
  326.    Subtle::Contrib::Selector.font = "xft:sans-10:antialias=true"
  327.    rescue LoadError => error
  328.    puts error
  329. end
  330.  
  331. grab modkey + "-C-space" do
  332.    Subtle::Contrib::Selector.run
  333. end
  334.  
  335. # Simple tags
  336. tag "browser",  "luakit|jumanji|chromium|uzbl|opera|firefox|navigator|Namoroka"
  337. tag "misc",     "inkscape|ario|pympd|audacious"
  338. tag "editor",   "[g]?vim|medit|meld"
  339. tag "dmanager", "gpodder|deluge|jdownloader"
  340.  
  341. # Urxvtq
  342. tag "urxvtq" do
  343.   match "urxvtq"
  344.   gravity :top
  345.   resize false
  346.   stick true
  347.   urgent true
  348. end
  349.  
  350. # shutdown-dialog.py
  351. tag "shutdown-dialog.py" do
  352.   match "shutdown-dialog.py"
  353.   gravity :shutdownDialog
  354.   float true
  355.   resize true
  356.   stick true
  357.   urgent true
  358. end
  359.  
  360. tag "xfce4-notifyd" do
  361.   match "xfce4-notifyd"
  362.   float true
  363.   resize false
  364.   stick true
  365.   urgent false
  366. end
  367.  
  368. tag "fixed" do
  369.   geometry [ 10, 10, 100, 100 ]
  370.   stick    true
  371. end
  372.  
  373. tag "resize" do
  374.   match  "gvim"
  375.   resize true
  376. end
  377.  
  378. tag "gravity" do
  379.   gravity :center
  380. end
  381.  
  382. # Modes
  383. tag "stick" do
  384.   match "mplayer"
  385.   float true
  386.   stick true
  387.   urgent true
  388. end
  389.  
  390. tag "float" do
  391.   match "display"
  392.   float true
  393. end
  394.  
  395. # Flash fix
  396. tag "flash" do
  397.    match "<unknown>|exe|operapluginwrapper|npviewer.bin"
  398.    stick true
  399. end
  400.  
  401. # Gimp
  402. tag "gimp_center" do
  403.   match   :class => "gimp"
  404.   center true
  405. end
  406.  
  407. tag "gimp_image" do
  408.   match   :role => "gimp-image-window"
  409.   gravity :gimp_image
  410. end
  411.  
  412. tag "gimp_toolbox" do
  413.   match   :role => "gimp-toolbox$"
  414.   gravity :gimp_toolbox
  415. end
  416.  
  417. # Dia
  418. tag "dia_center" do
  419.   match   :class => "dia"
  420.   center true
  421. end
  422.  
  423. tag "dia_toolbox" do
  424.   match   :role => "toolbox_window"
  425.   gravity :dia_toolbox
  426. end
  427.  
  428. tag "dia_view" do
  429.   match   :role => "diagram_window"
  430.   gravity :dia_view
  431. end
  432.  
  433. tag "pms" do
  434.   match :instance => "pms", :class => "urxvt"
  435. end
  436.  
  437. tag "terms" do
  438.    match :instance => "[u]?rxvt"
  439. end
  440.  
  441. view "main",  "terms|default"
  442. view "www",   "browser|flash"
  443. view "dev",   "editor"
  444. view "misc",  "gimp_.*|dia_.*|misc|pms"
  445. view "down",  "dmanager"
  446.  
  447. on :start do
  448.    #Subtlext::Subtle.spawn "/usr/bin/killall devmon; /usr/bin/devmon --exec-on-drive \"traydevice %f\" "
  449.    # Create missing tags
  450.    views = Subtlext::View.all.map { |v| v.name }
  451.    tags  = Subtlext::Tag.all.map  { |t| t.name }
  452.  
  453.    views.each do |v|
  454.      unless(tags.include?(v))
  455.        t = Subtlext::Tag.new(v)
  456.        t.save
  457.      end
  458.    end
  459.  end
  460.  
  461.  # Add nine C-< number> grabs
  462.  (1..9).each do |i|
  463.   grab modkey + "-C-%d" % [ i ] do |c|
  464.     views = Subtlext::View.all
  465.     names = views.map { |v| v.name }
  466.  
  467.     # Sanity check
  468.     if(i <= views.size)
  469.       # Tag client
  470.       tags = c.tags.reject { |t| names.include?(t.name) or "default" == t.name }
  471.       tags << names[i - 1]
  472.  
  473.       c.tags = tags
  474.  
  475.       # Tag view
  476.       views[i - 1].tag(names[i - 1])
  477.     end
  478.   end
  479. end
  480.  
  481. on :client_create do |c|
  482.    if (c.name != "urxvtq" and c.name != "xfce4-notifyd" and c.name != "<unknown>" and c.name != "mplayer")
  483.       c.views.first.jump
  484.       c.focus
  485.    end
  486. end
  487.  
  488. # vim:ts=2:bs=2:sw=2:et:fdm=marker
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement