class Diakonos::ClipboardXClip

Same interface as Diakonos::Clipboard, except interacts with xclip

Public Class Methods

new() click to toggle source
# File lib/diakonos/clipboard-xclip.rb, line 6
def initialize
end

Public Instance Methods

add_clip( text ) click to toggle source

text is an array of Strings Returns true iff a clip was added, and only non-nil text can be added.

# File lib/diakonos/clipboard-xclip.rb, line 38
def add_clip( text )
  return false  if text.nil?
  send_to_xclip text
end
append_to_clip( text ) click to toggle source

text is an array of Strings (lines) Appends the lines to the current clip. If no current clip, then a new clip is created. Returns true iff the text was successfully appended.

# File lib/diakonos/clipboard-xclip.rb, line 51
def append_to_clip( text )
  return false  if text.nil?

  last_clip = clip
  last_clip.pop  if last_clip[ -1 ] == ""
  send_to_xclip last_clip + text
end
clip() click to toggle source

# File lib/diakonos/clipboard-xclip.rb, line 31
def clip
  `xclip -o`.split( "\n", -1 )
end
each() click to toggle source

no-op.

# File lib/diakonos/clipboard-xclip.rb, line 44
def each
end
send_to_xclip( text ) click to toggle source

Returns true iff some text was copied to xclip.

# File lib/diakonos/clipboard-xclip.rb, line 10
def send_to_xclip( text )
  return false  if text.nil?
  clip_filename = write_to_clip_file( text.join( "\n" ) )
  t = Thread.new do
    `xclip -i #{clip_filename}`
  end
  `xclip -o`  # Unfreeze xclip
  t.terminate
  true
end
write_to_clip_file( text ) click to toggle source
# File lib/diakonos/clipboard-xclip.rb, line 21
def write_to_clip_file( text )
  clip_filename = $diakonos.diakonos_home + "/clip.txt"
  File.open( clip_filename, "w" ) do |f|
    f.print text
  end
  clip_filename
end