Guest User

Untitled

a guest
Feb 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1.  
  2. FIFO = File.expand_path('~/.osd')
  3.  
  4. `mkfifo "#{FIFO}"` unless test(?e, FIFO)
  5.  
  6. require 'optparse'
  7. require 'ostruct'
  8. require 'xosd_scroll'
  9.  
  10. def parse(args)
  11. options = OpenStruct.new
  12. options.pos = XOSD::TOP
  13. options.offset = 50
  14. options.align = XOSD::LEFT
  15. options.indent = 30
  16. options.font = "-*-terminus-medium-*-*-*-20-*-*-*-*-*-*-15"
  17. options.color = "black"
  18. options.delay = 5
  19. options.lines = 10
  20. options.shadow = 1
  21. options.shadowcolour = "orange"
  22. options.outline = 1
  23. options.outlinecolour = "black"
  24. options.age = 0
  25. options.wait = 0
  26.  
  27. opts = OptionParser.new do |opts|
  28. opts.banner = "Usage: #$0 [options]"
  29. opts.separator ""
  30. opts.separator "Specific options:"
  31.  
  32. opts.on("-p", "--pos POS",
  33. "The vertical position of the text. POS can be top, middle, or bottom. The default is top.") do |p|
  34. case p
  35. when /top/i
  36. options.pos = XOSD::TOP
  37. when /middle/i
  38. options.pos = XOSD::MIDDLE
  39. when /bottom/i
  40. options.pos = XOSD::BOTTOM
  41. end
  42. end
  43.  
  44. opts.on("-o", "--offset OFFSET") do |o|
  45. options.offset = o.to_i
  46. end
  47.  
  48. opts.on("-A", "--align ALIGN") do |a|
  49. case a
  50. when /left/i
  51. options.align = XOSD::LEFT
  52. when /center/i
  53. options.align = XOSD::CENTER
  54. when /right/i
  55. options.align = XOSD::RIGHT
  56. end
  57. end
  58.  
  59. opts.on("-i", "--indent OFFSET") do |o|
  60. options.indent = o.to_i
  61. end
  62.  
  63. opts.on("-f", "--font FONT") do |f|
  64. options.font = f
  65. end
  66.  
  67. opts.on("-c", "--colour COLOUR") do |o|
  68. options.color = o
  69. end
  70.  
  71. opts.on("-d", "--delay SECONDS") do |o|
  72. options.delay = o.to_i
  73. end
  74.  
  75. opts.on("-l", "--lines LINES") do |o|
  76. options.lines = o.to_i
  77. end
  78.  
  79. opts.on("-O", "--outline OFFSET") do |o|
  80. options.outline = o.to_i
  81. end
  82.  
  83. opts.on("-u", "--outlinecolour OFFSET") do |o|
  84. options.outline_color = o
  85. end
  86.  
  87. end
  88. opts.parse!(args)
  89. options
  90. end
  91.  
  92. options = parse(ARGV)
  93.  
  94. osd = XOSD::XosdScroll.new(options.lines)
  95. osd.position = options.pos
  96. osd.vertical_offset = options.offset
  97. osd.align = options.align
  98. osd.horizontal_offset = options.indent
  99. osd.font = options.font
  100. osd.color = options.color
  101. osd.shadow_offset = options.shadow
  102. osd.shadow_color = options.shadowcolour
  103. osd.outline_offset = options.outline
  104. osd.outline_color = options.outlinecolour
  105. osd.timeout = options.delay
  106.  
  107. def listen_fifo(fifo_file = FIFO)
  108. File.open(fifo_file, File::NONBLOCK | File::RDONLY) do |fifo|
  109. loop do
  110. sleep 1
  111. while !fifo.eof
  112. yield fifo.gets("\n").strip
  113. end
  114. end
  115. end
  116. end
  117.  
  118.  
  119. listen_fifo do |fifo|
  120. puts fifo
  121. osd << fifo
  122. end
  123.  
  124. osd.wait(osd.timeout)
Add Comment
Please, Sign In to add comment