189 lines
5.2 KiB
Ruby
189 lines
5.2 KiB
Ruby
#
|
|
# == Grabs
|
|
#
|
|
# Grabs are keyboard and mouse actions within subtle, every grab can be
|
|
# assigned either to a key and/or to a mouse button combination. A grab
|
|
# consists of a chain and an action.
|
|
#
|
|
# === Finding keys
|
|
#
|
|
# The best resource for getting the correct key names is
|
|
# */usr/include/X11/keysymdef.h*, but to make life easier here are some hints
|
|
# about it:
|
|
#
|
|
# * Numbers and letters keep their names, so *a* is *a* and *0* is *0*
|
|
# * Keypad keys need *KP_* as prefix, so *KP_1* is *1* on the keypad
|
|
# * Strip the *XK_* from the key names if looked up in
|
|
# /usr/include/X11/keysymdef.h
|
|
# * Keys usually have meaningful english names
|
|
# * Modifier keys have special meaning (Alt (A), Control (C), Meta (M),
|
|
# Shift (S), Super (W))
|
|
#
|
|
# === Chaining
|
|
#
|
|
# Chains are a combination of keys and modifiers to one or a list of keys
|
|
# and can be used in various ways to trigger an action. In subtle, there are
|
|
# two ways to define chains for grabs:
|
|
#
|
|
# 1. *Default*: Add modifiers to a key and use it for a grab
|
|
#
|
|
# *Example*: grab "W-Return", "urxvt"
|
|
#
|
|
# 2. *Chain*: Define a list of grabs that need to be pressed in order
|
|
#
|
|
# *Example*: grab "C-y Return", "urxvt"
|
|
#
|
|
# ==== Mouse buttons
|
|
#
|
|
# [*B1*] = Button1 (Left mouse button)
|
|
# [*B2*] = Button2 (Middle mouse button)
|
|
# [*B3*] = Button3 (Right mouse button)
|
|
# [*B4*] = Button4 (Mouse wheel up)
|
|
# [*B5*] = Button5 (Mouse wheel down)
|
|
# [*...*]
|
|
# [*B20*] = Button20 (Are you sure that this is a mouse and not a keyboard?)
|
|
#
|
|
# ==== Modifiers
|
|
#
|
|
# [*A*] = Alt key (Mod1)
|
|
# [*C*] = Control key
|
|
# [*M*] = Meta key (Mod3)
|
|
# [*S*] = Shift key
|
|
# [*W*] = Super/Windows key (Mod4)
|
|
# [*G*] = Alt Gr (Mod5)
|
|
#
|
|
# === Action
|
|
#
|
|
# An action is something that happens when a grab is activated, this can be one
|
|
# of the following:
|
|
#
|
|
# [*symbol*] Run a subtle action
|
|
# [*string*] Start a certain program
|
|
# [*array*] Cycle through gravities
|
|
# [*lambda*] Run a Ruby proc
|
|
#
|
|
# === Example
|
|
#
|
|
# This will create a grab that starts a urxvt when Alt+Enter are pressed:
|
|
#
|
|
# grab "A-Return", "urxvt"
|
|
# grab "C-a c", "urxvt"
|
|
#
|
|
# === Link
|
|
#
|
|
# http://subforge.org/projects/subtle/wiki/Grabs
|
|
#
|
|
|
|
# Jump to view1, view2, ...
|
|
grab "W-S-1", :ViewJump1
|
|
grab "W-S-2", :ViewJump2
|
|
grab "W-S-3", :ViewJump3
|
|
grab "W-S-4", :ViewJump4
|
|
grab "W-S-5", :ViewJump5
|
|
grab "W-S-6", :ViewJump6
|
|
grab "W-S-7", :ViewJump7
|
|
grab "W-S-8", :ViewJump8
|
|
grab "W-S-9", :ViewJump9
|
|
|
|
# Switch current view
|
|
grab "W-1", :ViewSwitch1
|
|
grab "W-2", :ViewSwitch2
|
|
grab "W-3", :ViewSwitch3
|
|
grab "W-4", :ViewSwitch4
|
|
grab "W-5", :ViewSwitch5
|
|
grab "W-6", :ViewSwitch6
|
|
grab "W-7", :ViewSwitch7
|
|
grab "W-8", :ViewSwitch8
|
|
grab "W-9", :ViewSwitch9
|
|
|
|
# Select next and prev view */
|
|
grab "KP_Add", :ViewNext
|
|
grab "KP_Subtract", :ViewPrev
|
|
grab "W-Right", :ViewNext
|
|
grab "W-Left", :ViewPrev
|
|
|
|
# Move mouse to screen1, screen2, ...
|
|
grab "W-A-1", :ScreenJump1
|
|
grab "W-A-2", :ScreenJump2
|
|
grab "W-A-3", :ScreenJump3
|
|
grab "W-A-4", :ScreenJump4
|
|
|
|
# Force reload of config and sublets
|
|
grab "W-C-r", :SubtleReload
|
|
|
|
# Force restart of subtle
|
|
grab "W-C-S-r", :SubtleRestart
|
|
|
|
# Quit subtle
|
|
grab "W-C-q", :SubtleQuit
|
|
|
|
# Move current window
|
|
grab "W-B1", :WindowMove
|
|
|
|
# Resize current window
|
|
grab "W-B3", :WindowResize
|
|
|
|
# Toggle floating mode of window
|
|
grab "W-space", :WindowFloat
|
|
|
|
# Toggle fullscreen mode of window
|
|
grab "W-f", :WindowFull
|
|
|
|
# Toggle sticky mode of window (will be visible on all views)
|
|
grab "W-S-s", :WindowStick
|
|
|
|
# Toggle zaphod mode of window (will span across all screens)
|
|
grab "W-equal", :WindowZaphod
|
|
|
|
# Raise window
|
|
grab "W-plus", :WindowRaise
|
|
|
|
# Lower window
|
|
grab "W-minus", :WindowLower
|
|
|
|
# Select next windows
|
|
grab "W-Left", :WindowLeft
|
|
grab "W-Down", :WindowDown
|
|
grab "W-Up", :WindowUp
|
|
grab "W-Right", :WindowRight
|
|
|
|
# Kill current window
|
|
grab "W-S-k", :WindowKill
|
|
|
|
# Cycle between given gravities
|
|
#grab "W-KP_7", [ :top_left, :top_left66, :top_left33 ]
|
|
#grab "W-KP_8", [ :top, :top66, :top33 ]
|
|
#grab "W-KP_9", [ :top_right, :top_right66, :top_right33 ]
|
|
#grab "W-KP_4", [ :left, :left66, :left33 ]
|
|
#grab "W-KP_5", [ :center, :center66, :center33 ]
|
|
#grab "W-KP_6", [ :right, :right66, :right33 ]
|
|
#grab "W-KP_1", [ :bottom_left, :bottom_left66, :bottom_left33 ]
|
|
#grab "W-KP_2", [ :bottom, :bottom66, :bottom33 ]
|
|
#grab "W-KP_3", [ :bottom_right, :bottom_right66, :bottom_right33 ]
|
|
|
|
# In case no numpad is available e.g. on notebooks
|
|
grab "W-q", [ :top_left, :top_left66, :top_left33 ]
|
|
grab "W-w", [ :top, :top66, :top33 ]
|
|
grab "W-e", [ :top_right, :top_right66, :top_right33 ]
|
|
grab "W-a", [ :left, :left60, :left33 ]
|
|
grab "W-s", [ :center, :center66, :center33 ]
|
|
grab "W-d", [ :right, :right66, :right40 ]
|
|
grab "W-y", [ :bottom_left, :bottom_left66, :bottom_left33 ]
|
|
grab "W-x", [ :bottom, :bottom66, :bottom33 ]
|
|
grab "W-c", [ :bottom_right, :bottom_right66, :bottom_right33 ]
|
|
|
|
# Exec programs
|
|
grab "W-Return", "urxvt"
|
|
grab "W-l", "i3lock -i ~/pics/screensaver.png -p win"
|
|
grab "W-p" do
|
|
Subtle::Contrib::Launcher.run
|
|
end
|
|
|
|
# Run Ruby lambdas
|
|
grab "S-F2" do |c|
|
|
puts c.name
|
|
end
|
|
|
|
grab "S-F3" do
|
|
puts Subtlext::VERSION
|
|
end
|