find_max_ext_monitor_res.rb 644 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env ruby
  2. max_res = nil
  3. scale = 1
  4. default_x = `xrandr`.gsub(/.*LVDS.*?\n/m, '')
  5. .gsub(/^\S.*/m, '')
  6. .scan(/\d{1,4}(?=x.*\*)/)[0].to_f
  7. max_x = default_x
  8. `xrandr`.sub(/.*HDMI.*?\n/m, '').scan(/\d{1,4}x\d{1,4}i?p?/).each do |res|
  9. x, y = res.split(/[xip]/).map { |dim| dim.to_f }
  10. if x/y == 16.0/9.0
  11. unless max_res.nil?
  12. if x > max_x
  13. max_res, max_x = res, x
  14. scale = x/default_x
  15. end
  16. else
  17. max_res, max_x = res, x
  18. scale = x/default_x
  19. end
  20. end
  21. end
  22. system "$HOME/Documents/dotfiles/scripts/toggle_mirror_display.sh #{scale}x#{scale} #{max_res}"