Class: Notiffany::Notifier::Tmux::Client
- Inherits:
-
Object
- Object
- Notiffany::Notifier::Tmux::Client
- Defined in:
- lib/notiffany/notifier/tmux/client.rb
Overview
Class for actually calling TMux to run commands
Constant Summary collapse
- CLIENT =
"tmux".freeze
Class Method Summary collapse
Instance Method Summary collapse
- #clients ⇒ Object
- #display_message(message) ⇒ Object
- #display_time=(time) ⇒ Object
-
#initialize(client) ⇒ Client
constructor
A new instance of Client.
- #message_bg=(color) ⇒ Object
- #message_fg=(color) ⇒ Object
- #parse_options ⇒ Object
- #set(key, value) ⇒ Object
- #title=(string) ⇒ Object
- #unset(key, value) ⇒ Object
Constructor Details
#initialize(client) ⇒ Client
Returns a new instance of Client.
28 29 30 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 28 def initialize(client) @client = client end |
Class Method Details
._capture(*args) ⇒ Object
19 20 21 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 19 def _capture(*args) Shellany::Sheller.stdout(([CLIENT] + args).join(" ")) end |
._run(*args) ⇒ Object
23 24 25 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 23 def _run(*args) Shellany::Sheller.run(([CLIENT] + args).join(" ")) end |
.version ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 11 def version begin Float(_capture("-V")[/\d+\.\d+/]) rescue NoMethodError, TypeError raise Base::UnavailableError, "Could not find tmux" end end |
Instance Method Details
#clients ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 32 def clients return [@client] unless @client == :all ttys = _capture("list-clients", "-F", "'\#{client_tty}'") ttys = ttys.split(/\n/) # if user is running 'tmux -C' remove this client from list ttys.delete("(null)") ttys end |
#display_message(message) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 49 def () clients.each do |client| args = ["-c", client.strip] if client # TODO: should properly escape message here _run("display", *args, "'#{}'") end end |
#display_time=(time) ⇒ Object
76 77 78 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 76 def display_time=(time) set("display-time", time) end |
#message_bg=(color) ⇒ Object
72 73 74 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 72 def (color) set("message-bg", color) end |
#message_fg=(color) ⇒ Object
68 69 70 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 68 def (color) set("message-fg", color) end |
#parse_options ⇒ Object
63 64 65 66 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 63 def output = _capture("show", "-t", @client) Hash[output.lines.map { |line| _parse_option(line) }] end |
#set(key, value) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 42 def set(key, value) clients.each do |client| args = client ? ["-t", client.strip] : nil _run("set", "-q", *args, key, value) end end |
#title=(string) ⇒ Object
80 81 82 83 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 80 def title=(string) # TODO: properly escape? set("set-titles-string", "'#{string}'") end |
#unset(key, value) ⇒ Object
57 58 59 60 61 |
# File 'lib/notiffany/notifier/tmux/client.rb', line 57 def unset(key, value) clients.each do |client| _run(*_all_args_for(key, value, client)) end end |