Class: Wmctile::Window

Inherits:
Class
  • Object
show all
Defined in:
lib/wmctile/window.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Class

#cmd, #notify

Constructor Details

#initialize(win_string, settings) ⇒ Window

Returns a new instance of Window.



4
5
6
7
8
9
# File 'lib/wmctile/window.rb', line 4

def initialize win_string, settings
	@default_movement = { :x => 0, :y => 0, :width => '-1', :height => '-1' }
	@settings = settings
	@id = win_string[/0x[\d\w]{8}/]
	self.get_name_and_title win_string
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



2
3
4
# File 'lib/wmctile/window.rb', line 2

def id
  @id
end

#nameObject

Returns the value of attribute name.



2
3
4
# File 'lib/wmctile/window.rb', line 2

def name
  @name
end

#titleObject

Returns the value of attribute title.



2
3
4
# File 'lib/wmctile/window.rb', line 2

def title
  @title
end

Instance Method Details

#dmenu_itemObject



20
21
22
23
24
25
26
# File 'lib/wmctile/window.rb', line 20

def dmenu_item
	unless @dmenu_item
		str = "#{ @id } #{ @name } #{ @title }"
		@dmenu_item = Dmenu::Item.new str, self
	end
	@dmenu_item
end

#get_nameObject



27
28
29
30
31
32
# File 'lib/wmctile/window.rb', line 27

def get_name
	if @name == ''
		self.get_name_and_title self.cmd('wmctrl -lx | grep ' + @id)
	end
	@name
end

#get_name_and_title(win_string) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/wmctile/window.rb', line 10

def get_name_and_title win_string
	if win_string == @id
		@name = ''
		@title = ''
	else
		after_id_and_workspace = win_string[14..-1].split(/\s+#{ @settings.hostname }\s+/, 2)
		@name = after_id_and_workspace[0]
		@title = after_id_and_workspace[1]
	end
end

#get_name_lengthObject



33
34
35
# File 'lib/wmctile/window.rb', line 33

def get_name_length
	@name.length
end

#maximizeObject



63
64
65
# File 'lib/wmctile/window.rb', line 63

def maximize
	self.wmctrl '-b add,maximized_vert,maximized_horz'
end

#move(how_to_move = {}) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/wmctile/window.rb', line 43

def move how_to_move = {}
	how_to_move = @default_movement.merge! how_to_move
	cmd = "-e 0,#{ how_to_move[:x].to_i },#{ how_to_move[:y].to_i },#{ how_to_move[:width].to_i },#{ how_to_move[:height].to_i }"
	self.unshade
	self.unmaximize
	self.wmctrl cmd
end

#set_name_length(name_length) ⇒ Object



36
37
38
# File 'lib/wmctile/window.rb', line 36

def set_name_length name_length
	@name += ' '*(name_length - @name.length)
end

#shadeObject



50
51
52
# File 'lib/wmctile/window.rb', line 50

def shade
	self.wmctrl '-b add,shaded'
end

#summonObject



56
57
58
# File 'lib/wmctile/window.rb', line 56

def summon
	self.wmctrl '', true
end

#switch_toObject



59
60
61
62
# File 'lib/wmctile/window.rb', line 59

def switch_to
	self.cmd "wmctrl -ia #{ @id }"
	return self
end

#unmaximizeObject



66
67
68
# File 'lib/wmctile/window.rb', line 66

def unmaximize
	self.wmctrl '-b remove,maximized_vert,maximized_horz'
end

#unshadeObject



53
54
55
# File 'lib/wmctile/window.rb', line 53

def unshade
	self.wmctrl '-b remove,shaded'
end

#wmctrl(wm_cmd = '', summon = false) ⇒ Object



39
40
41
42
# File 'lib/wmctile/window.rb', line 39

def wmctrl wm_cmd = '', summon = false
	self.cmd "wmctrl -i#{ summon ? 'R' : 'r' } #{ @id } #{ wm_cmd }"
	return self # return self so that commands can be chained
end