Files

Guard::Notifier::Tmux

Changes the color of the Tmux status bar and optionally shows messages in the status bar.

@example Add the `:tmux` notifier to your `Guardfile`

notification :tmux

@example Enable text messages

notification :tmux, :display_message => true

@example Customize the tmux status colored for notifications

notification :tmux, :color_location => 'status-right-bg'

Constants

DEFAULTS

Default options for Tmux

Public Instance Methods

available?(silent = false, options = {}) click to toggle source

Test if currently running in a Tmux session

@param [Boolean] silent true if no error messages should be shown @param [Hash] options notifier options @return [Boolean] the availability status

# File lib/guard/notifiers/tmux.rb, line 41
def available?(silent = false, options = {})
  if ENV[options.fetch(:tmux_environment, DEFAULTS[:tmux_environment])].nil?
    ::Guard::UI.error 'The :tmux notifier runs only on when Guard is executed inside of a tmux session.' unless silent
    false
  else
    true
  end
end
display_message(type, title, message, options = { }) click to toggle source

Display a message in the status bar of tmux.

@param [String] type the notification type. Either 'success', 'pending', 'failed' or 'notify' @param [String] title the notification title @param [String] message the notification message body @param [Hash] options additional notification library options @option options [Integer] timeout the amount of seconds to show the message in the status bar @option options [String] success_message_format a string to use as formatter for the success message. @option options [String] failed_message_format a string to use as formatter for the failed message. @option options [String] pending_message_format a string to use as formatter for the pending message. @option options [String] default_message_format a string to use as formatter when no format per type is defined. @option options [String] success_message_color the success notification foreground color name. @option options [String] failed_message_color the failed notification foreground color name. @option options [String] pending_message_color the pending notification foreground color name. @option options [String] default_message_color a notification foreground color to use when no color per type is defined. @option options [String] line_separator a string to use instead of a line-break.

# File lib/guard/notifiers/tmux.rb, line 91
def display_message(type, title, message, options = { })
    message_format = options["#{ type }_message_format".to_sym] || options[:default_message_format] || DEFAULTS[:default_message_format]
    message_color = options["#{ type }_message_color".to_sym] || options[:default_message_color] || DEFAULTS[:default_message_color]
    display_time = options[:timeout] || DEFAULTS[:timeout]
    separator = options[:line_separator] || DEFAULTS[:line_separator]

    color = tmux_color type, options
    formatted_message = message.split("\n").join(separator)
    display_message = message_format % [title, formatted_message]

    run_client "set display-time #{ display_time * 1000 }"
    run_client "set message-fg #{ message_color }"
    run_client "set message-bg #{ color }"
    run_client "display-message '#{ display_message }'"
end
notify(type, title, message, image, options = { }) click to toggle source

Show a system notification. By default, the Tmux notifier only makes use of a color based notification, changing the background color of the `color_location` to the color defined in either the `success`, `failed`, `pending` or `default`, depending on the notification type. If you also want display a text message, you have to enable it explicit by setting `display_message` to `true`.

@param [String] type the notification type. Either 'success', 'pending', 'failed' or 'notify' @param [String] title the notification title @param [String] message the notification message body @param [String] image the path to the notification image @param [Hash] options additional notification library options @option options [String] color_location the location where to draw the color notification @option options [Boolean] display_message whether to display a message or not

# File lib/guard/notifiers/tmux.rb, line 64
def notify(type, title, message, image, options = { })
  color = tmux_color(type, options)
  color_location = options[:color_location] || DEFAULTS[:color_location]

  run_client "set #{ color_location } #{ color }"

  show_message = options[:display_message] || DEFAULTS[:display_message]
  display_message(type, title, message, options) if show_message
end
tmux_color(type, options = { }) click to toggle source

Get the Tmux color for the notification type. You can configure your own color by overwriting the defaults.

@param [String] type the notification type @return [String] the name of the emacs color

# File lib/guard/notifiers/tmux.rb, line 113
def tmux_color(type, options = { })
  case type
  when 'success'
    options[:success] || DEFAULTS[:success]
  when 'failed'
    options[:failed]  || DEFAULTS[:failed]
  when 'pending'
    options[:pending] || DEFAULTS[:pending]
  else
    options[:default] || DEFAULTS[:default]
  end
end
turn_off(options = { }) click to toggle source

Notification stopping. Restore the previous Tmux state if available (existing options are restored, new options are unset) and unquiet the Tmux output.

# File lib/guard/notifiers/tmux.rb, line 148
def turn_off(options = { })
  if @options_stored
    @options_store.each do |key, value|
      if value
        run_client "set #{ key } #{ value }"
      else
        run_client "set -u #{ key }"
      end
    end

    reset_options_store
  end

  run_client 'set quiet off'
end
turn_on(options = { }) click to toggle source

Notification starting, save the current Tmux settings and quiet the Tmux output.

# File lib/guard/notifiers/tmux.rb, line 129
def turn_on(options = { })
  unless @options_stored
    reset_options_store

    `#{ DEFAULTS[:client] } show`.each_line do |line|
      option, _, setting = line.chomp.partition(' ')
      @options_store[option] = setting
    end

    @options_stored = true
  end

  run_client "set quiet on"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.