Class: Sapristi::Linux::WindowManager
- Inherits:
-
Object
- Object
- Sapristi::Linux::WindowManager
- Defined in:
- lib/sapristi/adapters/linux/window_manager.rb
Constant Summary collapse
- GRAVITY =
0
- TIME_TO_APPLY_DIMENSIONS =
0.25
Instance Attribute Summary collapse
-
#display ⇒ Object
readonly
Returns the value of attribute display.
Instance Method Summary collapse
- #close(window) ⇒ Object
-
#initialize(display = WMCtrl.display) ⇒ WindowManager
constructor
A new instance of WindowManager.
- #move(window, x_position, y_position) ⇒ Object
- #move_resize(window, requested) ⇒ Object
- #resize(window, width, height) ⇒ Object
- #windows(args = {}) ⇒ Object
- #workspaces ⇒ Object
Constructor Details
#initialize(display = WMCtrl.display) ⇒ WindowManager
Returns a new instance of WindowManager.
8 9 10 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 8 def initialize(display = WMCtrl.display) @display = display end |
Instance Attribute Details
#display ⇒ Object (readonly)
Returns the value of attribute display.
12 13 14 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 12 def display @display end |
Instance Method Details
#close(window) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 14 def close(window) @display.action_window(window.id, :close) # # sleep to allow a Graceful Dead to the window process # # X Error of failed request: BadWindow (invalid Window parameter) # Major opcode of failed request: 20 (X_GetProperty) # Resource id in failed request: 0x2200008 # Serial number of failed request: 1095 # Current serial number in output stream: 1095 sleep TIME_TO_APPLY_DIMENSIONS end |
#move(window, x_position, y_position) ⇒ Object
39 40 41 42 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 39 def move(window, x_position, y_position) geometry = complete_geometry(window.id, x_position: x_position, y_position: y_position) move_resize(window, geometry) end |
#move_resize(window, requested) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 49 def move_resize(window, requested) remove_extended_hints(window) if window.maximized_horizontally? || window.maximized_vertically? geometry = requested.clone left, right, top, bottom = window.frame_extents || [0, 0, 0, 0] geometry[2] -= left + right geometry[3] -= top + bottom @display.action_window(window.id, :move_resize, GRAVITY, *geometry) sleep TIME_TO_APPLY_DIMENSIONS check_expected_geometry window, requested end |
#resize(window, width, height) ⇒ Object
44 45 46 47 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 44 def resize(window, width, height) geometry = complete_geometry(window.id, width: width, height: height) move_resize(window, geometry) end |
#windows(args = {}) ⇒ Object
28 29 30 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 28 def windows(args = {}) @display.windows args end |
#workspaces ⇒ Object
32 33 34 |
# File 'lib/sapristi/adapters/linux/window_manager.rb', line 32 def workspaces @display.desktops end |