Sha256: fa7e1313b9b4c99aad5b4b5bfd6ca2c54b38b2f624e1ca5df362062066d0eb3c

Contents?: true

Size: 1.05 KB

Versions: 4

Compression:

Stored size: 1.05 KB

Contents

require 'open3'

module Clipboard; end

module Clipboard::Linux
  extend self

  CLIPBOARDS   = %w[clipboard primary secondary]

  # check which backend to use
  if system('which xclip >/dev/null 2>&1')
    WriteCommand = 'xclip'
    ReadCommand  = 'xclip -o'
    Selection    = proc{|x| "-selection #{x}"}
  elsif system('which xsel >/dev/null 2>&1')
    WriteCommand = 'xsel'
    ReadCommand  = 'xsel -o'
    Selection    = {'clipboard' => '-b', 'primary' => '-p', 'secondary' => '-s'}
  else
    raise Clipboard::ClipboardLoadError, "clipboard: Could not find required program xclip or xsel\n" \
          "On debian/ubuntu, you can install it with: sudo apt-get install xclip"
  end

  def paste(which = nil)
    if !which || !CLIPBOARDS.include?(which.to_s.downcase)
      which = CLIPBOARDS.first
    end
    `#{ReadCommand} #{Selection[which.to_s.downcase]}`
  end

  def clear
    copy ''
  end

  def copy(data)
    CLIPBOARDS.each{ |which|
      Open3.popen3( "#{WriteCommand} #{Selection[which.to_s.downcase]}" ){ |input,_,_| input << data }
    }
    paste
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
clipboard-1.0.5 lib/clipboard/linux.rb
clipboard-1.0.4 lib/clipboard/linux.rb
clipboard-1.0.3 lib/clipboard/linux.rb
clipboard-1.0.2 lib/clipboard/linux.rb