37 lines
794 B
Ruby
37 lines
794 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class OsInfo
|
||
|
def self.gather_info
|
||
|
os_info = {}
|
||
|
|
||
|
# Get OS Name
|
||
|
os_info[:os_name] = begin
|
||
|
`lsb_release -d`.split(':').last.strip
|
||
|
rescue StandardError
|
||
|
'Unknown'
|
||
|
end
|
||
|
|
||
|
# Get Desktop Environment
|
||
|
env = ENV['XDG_CURRENT_DESKTOP'] || ENV['DESKTOP_SESSION'] || 'Unknown'
|
||
|
os_info[:desktop_environment] = env
|
||
|
|
||
|
# Get Window Manager
|
||
|
wm = begin
|
||
|
`wmctrl -m`.match(/Name: (.+)/).captures.first
|
||
|
rescue StandardError
|
||
|
'Unknown'
|
||
|
end
|
||
|
os_info[:window_manager] = wm
|
||
|
|
||
|
# Get Sound Driver
|
||
|
sound_driver = begin
|
||
|
`pactl info`.match(/Server String: (.+)/).captures.first.split('.').first
|
||
|
rescue StandardError
|
||
|
'Unknown'
|
||
|
end
|
||
|
os_info[:sound_driver] = sound_driver
|
||
|
|
||
|
os_info
|
||
|
end
|
||
|
end
|