lib/fusuma.rb in fusuma-1.4.1 vs lib/fusuma.rb in fusuma-1.5.0

- old
+ new

@@ -31,38 +31,37 @@ load_custom_config(option[:config_path]) Plugin::Manager.require_plugins_from_relative Plugin::Manager.require_plugins_from_config + MultiLogger.info '---------------------------------------------' print_version + MultiLogger.info '---------------------------------------------' print_enabled_plugins + MultiLogger.info '---------------------------------------------' Kernel.exit(0) if option[:version] print_device_list if option[:list] # TODO: remove keep_device_from_option from command line options Plugin::Filters::LibinputDeviceFilter::KeepDevice.from_option = option[:device] Process.daemon if option[:daemon] end def print_version - MultiLogger.info '---------------------------------------------' MultiLogger.info "Fusuma: #{Fusuma::VERSION}" MultiLogger.info "libinput: #{Plugin::Inputs::LibinputCommandInput.new.version}" MultiLogger.info "OS: #{`uname -rsv`}".strip MultiLogger.info "Distribution: #{`cat /etc/issue`}".strip MultiLogger.info "Desktop session: #{`echo $DESKTOP_SESSION $XDG_SESSION_TYPE`}".strip - MultiLogger.info '---------------------------------------------' end def print_enabled_plugins - MultiLogger.info '---------------------------------------------' MultiLogger.info 'Enabled Plugins: ' Plugin::Manager.plugins .reject { |k, _v| k.to_s =~ /Base/ } .map { |_base, plugins| plugins.map { |plugin| " #{plugin}" } } .flatten.sort.each { |name| MultiLogger.info(name) } - MultiLogger.info '---------------------------------------------' end def print_device_list puts Device.available.map(&:name) exit(0) @@ -85,10 +84,11 @@ end def run # TODO: run with multi thread @inputs.first.run do |event| + clear_expired filtered = filter(event) parsed = parse(filtered) buffered = buffer(parsed) detected = detect(buffered) merged = merge(detected) @@ -109,15 +109,13 @@ end # @param buffers [Array<Buffer>] # @return [Array<Event>] def detect(buffers) - @detectors.reduce([]) do |detected, detector| + @detectors.each_with_object([]) do |detector, detected| if (event = detector.detect(buffers)) detected << event - else - detected end end end # @param events [Array<Event>] @@ -137,8 +135,12 @@ executor = @executors.find do |e| e.executable?(event) end executor&.execute(event) + end + + def clear_expired + @buffers.each(&:clear_expired) end end end