lib/clock_window.rb in clock_window-0.0.4 vs lib/clock_window.rb in clock_window-0.0.5
- old
+ new
@@ -1,65 +1,18 @@
require "clock_window/version"
+require "clock_window/refinements"
+require "clock_window/filters"
+require "clock_window/oscommand"
module ClockWindow
class ClockIt
# As this will get more sophisticated this class is the UI
- def initialize
- @os_cmd = OScommand.new
+ def initialize(**kwargs)
+ @os_cmd = OScommand.new(**kwargs)
end
def active_window
exe, format = @os_cmd.active_window
format.call(`#{exe}`)
end
end
-
- class OScommand
- # As this will get more sophisticated this class is the Back End
- def initialize
- # Detect operating system
- @os = RbConfig::CONFIG['host_os']
- @window_title_length = 0..60
- end
-
- # output will be a two parameter array
- # the first will be an OS specific executable string
- # the second will be formatting the return value from the executables output
- def active_window
- # Choose script to execute and format output to just window name
- case @os
- when /linux/i
- exe = "xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME"
- format = ->str{ str.match(/.*\"(.*)\"\n\z/)[1][@window_title_length] }
- [exe, format]
- when /darwin/i
- exe = <<-SCRIPT
- osascript -e '
- global frontApp, frontAppName, windowTitle
-
- set windowTitle to ""
- tell application "System Events"
- set frontApp to first application process whose frontmost is true
- set frontAppName to name of frontApp
- tell process frontAppName
- tell (1st window whose value of attribute "AXMain" is true)
- set windowTitle to value of attribute "AXTitle"
- end tell
- end tell
- end tell
-
- return {frontAppName, windowTitle}
- '
- SCRIPT
-
- format = ->str {
- app, window = str.split(',')
- "#{window.strip} - #{app.strip}"[@window_title_length]
- }
- [exe, format]
- else
- raise "Not implemented for #{@os}"
- end
- end
- end
- private_constant :OScommand
end