1 điểm bởi GN⁺ 2023-12-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là một thử nghiệm nhằm áp dụng xoay ở góc tùy ý bằng xrandr trên Linux, thay vì chỉ chia màn hình cho lập trình thành 0° và 90°, để có được các dòng mã dài hơn
  • 0° phù hợp với ứng dụng và video màn hình rộng, nhưng tạo nhiều khoảng trắng trên website và tài liệu; 90° tốt cho việc đọc tài liệu văn bản nhưng bất lợi khi hiển thị phim và về góc nhìn
  • 1° có thể dùng để bù độ nghiêng của bàn làm việc nhưng làm rung kết xuất phông chữ, còn 45° trông như một sự dung hòa giữa ngang và dọc nhưng việc tận dụng không gian lại trở nên gượng gạo trên tỷ lệ màn hình không vuông
  • Trên màn hình siêu rộng 21:9, khoảng xoay 22° gần với đường chéo được xem là thiết lập cho độ dài dòng lớn nhất
  • Việc áp dụng thực tế được thực hiện trên Xorg bằng cách đưa ma trận biến đổi vào xrandr --output HDMI-3 --transform..., còn Wayland thì không được hỗ trợ

Thử nghiệm xoay màn hình vượt ra ngoài 0° và 90°

  • Màn hình dọc từ lâu đã được thử dùng cho đọc và lập trình, với ưu điểm là có thể hiển thị nhiều văn bản cùng lúc
  • So sánh các góc cơ bản như sau
    • : phù hợp với hầu hết ứng dụng và video định dạng rộng
    • Nhược điểm của 0°: có thể tạo nhiều khoảng trắng và phần đệm xung quanh website và tài liệu
    • 90°: phù hợp với tài liệu văn bản đọc theo chiều từ trên xuống như trang sách
    • Nhược điểm của 90°: hiển thị phim không tốt và phát sinh vấn đề về góc nhìn
  • Trên Linux, có thể xoay màn hình ở góc tùy ý bằng xrandr
    • Trên macOS và Windows, việc tương tự khó hơn
    • Thử nghiệm không hoạt động trên MacBook, nhưng chạy bình thường trên máy bàn
  • Kết quả theo từng góc bổ sung là sự pha trộn giữa tính thực dụng và chút hài hước
    • : xuất hiện hiện tượng thanh menu biến mất sang bên phải; có thể hữu ích khi bàn hơi nghiêng nhưng kết xuất phông chữ trở nên kỳ lạ
    • 45°: cho cảm giác ở giữa ngang và dọc, gần với đường chéo, nhưng không gian không khớp tốt trên tỷ lệ màn hình không vuông
    • 22°: trên tỷ lệ 21:9, đây là góc xoay gần với tính toán góc tam giác cần thiết và được xem là thiết lập cho độ dài dòng lớn nhất
  • Kết luận từ góc xoay 22° là nhờ độ dài dòng lớn nên không còn phải bận tâm đến giới hạn 80 cột, nhưng webcam bắt đầu trượt xuống

Áp dụng bằng ma trận biến đổi của xrandr

  • Môi trường hoạt động bị giới hạn ở Xorg, và không có hỗ trợ Wayland
  • Lệnh cơ bản có dạng xrandr --output HDMI-3 --transform lots of numbers here
  • --transform nhận ma trận biến đổi cho vị trí màn hình và phép xoay
  • Định dạng cơ bản cần cho xoay và dịch chuyển như sau
cos(x),-sin(x),shift_left,sin(x),cos(x),shift_up,0,0,1
  • Lệnh ví dụ không bao gồm dịch chuyển về tâm và cũng không căn màn hình vào giữa vì không biết độ phân giải
#-0.1
xrandr --output HDMI-3 --transform 0.999998476913288,0.00174532836589831,0,-0.00174532836589831,0.999998476913288,0,0,0,1

#1
xrandr --output HDMI-3 --transform 0.999847695156391,-0.0174524064372835,0,0.0174524064372835,0.999847695156391,0,0,0,1

#45
xrandr --output HDMI-3 --transform 0.707106781186548,-0.707106781186548,0,0.707106781186548,0.707106781186548,0,0,0,1

#22
xrandr --output HDMI-3 --transform 0.927183854566787,-0.374606593415912,0,0.374606593415912,0.927183854566787,0,0,0,1
  • Bài viết cũng kèm theo một trình tính JavaScript nhỏ để tạo lệnh xrandr từ giá trị đầu vào

1 bình luận

 
GN⁺ 2023-12-30
Các ý kiến trên Hacker News
  • Bài này viết theo kiểu hài hước, nhưng thực tế một số hệ thống kiểm soát không lưu dùng màn hình xoay chéo, và căn “đường dài” đó theo hướng tiếp cận chính của sân bay.
    Cấu hình tôi từng thấy là một màn hình lớn có nhập liệu bằng stylus, không phải màn hình siêu rộng mà là một màn hình có tỷ lệ khá tiêu chuẩn được xoay nghiêng.
    • Tôi cũng như những người khác đã thử tìm kiếm, và thấy khá nhiều màn hình tỷ lệ 1:1; cỡ đó có vẻ không tệ.
    • Tôi rất muốn xem ảnh chụp cấu hình đó.
    • Thú vị thật. Vì vậy tôi thấy khó hiểu khi vẫn chọn dùng GPS/ứng dụng bản đồ trên thiết bị ở chế độ ngang, dù đã đặt hướng di chuyển là “lên trên”.
      Tôi muốn tối đa hóa thông tin ở “phía trước” nơi mình sẽ lái tới, chứ không phải hai bên.
  • Nếu có màn hình siêu rộng, liệu có thể xoay nó để tạo một màn hình tròn khổng lồ bằng hiệu ứng lưu ảnh không? Nó cũng có thể kiêm vai trò quạt tản nhiệt do GPU phải liên tục vẽ lại.
    • Vài ngày trước YouTube feed của tôi hiện “spinning gaming monitor”: https://youtu.be/J6P3o6zrqsc?si=NUB7YviQNYoSW7Vi
    • Hầu hết compositor vốn đã liên tục vẽ lại, và trên chip hiện đại thì gần như không đáng kể. Các phép tính dịch chuyển và xoay bổ sung chắc cũng khó cảm nhận được.
  • Hơi lệch chủ đề, nhưng nếu khuyên thì tôi chọn 4K cỡ lớn hơn siêu rộng. Bạn có nhiều pixel hơn với giá rẻ hơn.
    Màn hình siêu rộng có ý nghĩa chỉ là các mẫu độ phân giải 5K x 2K, loại này nhiều pixel hơn một màn 4K đơn nhưng đắt. Dù vậy màn hình 5K 16:9 vẫn có nhiều pixel hơn.
    Cá nhân tôi dùng 3 màn 27 inch 4K, rẻ hơn một màn siêu rộng 5K và số pixel thì nhiều hơn hẳn.
    • Tôi không hiểu lắm lý do dùng nhiều màn hình. Hiện tôi làm 98% công việc trên một màn 32 inch 4K 16:9, để mọi thứ lên một màn hình lớn.
      Bên cạnh vẫn có tài liệu, webapp đang hot reload, video xem trong lúc làm việc, và màn phụ cho họp video khi chia sẻ màn hình, nhưng vì phải quay đầu khá mệt nên thực tế tôi không dùng nhiều. 80% thời gian nó chỉ để trống.
    • Tôi thì hoàn toàn ngược lại. Sau vài năm dùng 2 màn hình 4K, năm ngoái tôi chuyển sang siêu rộng và thấy khác hẳn.
      Tôi cảm giác lẽ ra mình không nên mua hai màn 4K, thậm chí không nên mua dual monitor. Siêu rộng hoàn hảo và hữu dụng hơn nhiều so với việc có viền dày của hai màn hình nằm ngay chính giữa tầm nhìn.
    • Ngược lại, tôi dùng màn hình 49 inch 32:9, và nó rất tuyệt cho laptop. Hỗ trợ một màn hình đơn tốt hơn nhiều so với cấu hình hai màn trở lên.
      Cắm thẳng vào laptop là chạy. Khi dùng hai màn hình, tôi cần docking station, mà nói thật đa số đều không ổn. Lên các mẫu cao cấp thì tiền tiết kiệm từ việc mua màn rẻ cũng bay hết.
      Thường cũng cần dock tương thích Thunderbolt, và dù laptop có hỗ trợ thì bản thân nó vẫn thuộc loại dễ phát sinh vấn đề. Màn siêu rộng cũng dễ thiết lập phím tắt quản lý cửa sổ hơn.
    • Luôn phải xem PPI. Đại khái như sau:
      27” 5K (5120 x 2880) -> 218 PPI
      32” 4K (3840 x 2160) -> 137.68 PPI
      34” 5K (5120 x 2160) -> 163.44 PPI
      39.7” 5K (5120 x 2160) -> 139.97 PPI
      Apple Pro Display XDR 32" 6K (6016 x 3384) -> 218 PPI
    • Tôi đang chuẩn bị build máy mới để thay hệ thống 11 năm tuổi, nhưng màn hình là vấn đề đau đầu. Nhu cầu công việc thông thường/lập trình và chỉnh sửa ảnh lại xung đột với nhau.
      Vì xử lý ảnh từ 40 megapixel trở lên, màn hình có độ phân giải càng cao càng tốt để giảm việc phóng to/thu nhỏ. Nhưng như vậy các phần tử UI khác lại cần điều chỉnh tỷ lệ hiển thị.
      Windows nhìn chung làm khá tốt, nhưng khi không ổn thì thường là do chương trình đang dùng làm chưa tới. Sau khi tìm hiểu nhiều, có vẻ cách tốt nhất là chọn kích thước vật lý cho phép dùng độ phân giải mong muốn mà không phải scaling quá mức, chẳng hạn 300%.
      Tôi đang chú ý kỹ Dell Ultrasharp 32" 6K. dpi hơi cao ở mức 223, nhưng có thể hiển thị khoảng 75% một bức ảnh chưa crop. Có lẽ tôi cũng sẽ mua kèm một chiếc LG DualUp.
      Điểm đáng tiếc ở cả hai, đặc biệt khi xét giá của Dell, là chúng đều là tấm nền 8bit+FRC. Tôi không muốn về sau mới biết mình là người nhạy với nhấp nháy, hay tấm nền không bền. Dù vậy Dell có bảo hành 3 năm, và LG bản thương mại cũng có thể mua với bảo hành 3 năm.
  • Lý tưởng tất nhiên là một màn hình xoay ở khoảng góc ma thuật 54,74 độ, để loại bỏ ảnh hưởng của tương tác dị hướng.
    https://en.m.wikipedia.org/wiki/Magic_angle
    • Bài Wikipedia này đọc như một trò đùa. Rất buồn cười.
  • Góc xoay “lý tưởng” thực tế để có độ dài dòng tối đa chẳng phải gần 23° hơn 22° sao? Vì Atan(9/21) = 23,20°.
    Và có thể đi xa hơn nữa chứ? Nếu xem nội dung màn hình như một mặt phẳng tùy ý, thì nghiêng nội dung màn hình ra xa người dùng, kiểu SNES Mode 7 hay chữ chạy mở đầu Star Wars, thì sao? Chiều cao màn hình vô hạn!
    • Chiều cao chữ không ảnh hưởng tới phép tính đó sao? Dòng dài nhất có thể sẽ không render được ở hai đầu, nên liệu một dòng ngắn hơn ở góc khác có thể hiển thị nhiều văn bản hơn không?
    • Nếu màn hình cong thì có khi lại gần 24° hơn.
  • Với code Go của tôi thì 90 độ là tốt nhất. Ở hướng đó có thể nhét được nhiều block “if err != nil” hơn hẳn.
    • Làm vậy cũng có thể dùng layout 2 cột. Dù sao thì chẳng ai nên viết quá 80 ký tự cả.
  • Cùng mạch đó, tôi ước màn hình 3:2 phổ biến hơn và được nhiều người biết hơn. Thị giác trung tâm của con người, chứ không phải thị giác ngoại vi, có tỷ lệ rất gần 3:2, nhưng do lợi thế kinh tế theo quy mô nên 16:9 rẻ hơn một chút và phổ biến hơn nhiều.
    Và nói thêm cho ai tò mò: xoay dọc màn 16:9 để tăng không gian chiều dọc không giúp ích gì, vì nó trở nên quá hẹp. Với tôi có lẽ màn hình vuông là tốt nhất.
    Ngoài ra còn có vấn đề render subpixel và góc nhìn của tấm nền TN, nhưng đó là vấn đề tương đối nhỏ.
    • Eizo từng làm màn hình 1920x1920, nhưng có vẻ giờ đã ngừng sản xuất. Có một bài review hay: https://youtu.be/gJG9HOQITrg

LG DualUp là một màn hình 16:18 gần như hình vuông, có độ phân giải cao hơn Eizo và giá gần như chỉ bằng một nửa

  • Việc tỷ lệ thị trường trung tâm của con người gần với 3:2 không liên quan lắm khi kích thước màn hình lớn hơn nhiều so với thị trường trung tâm
    Điều quan trọng là áp lực lên cổ. Thực tế là ta sẽ muốn giữ đầu nằm ngang và di chuyển sang trái/phải. Chuyển động trái/phải không phải chống lại trọng lực, còn chuyển động lên/xuống thì có
    Vì vậy, xét về kích thước màn hình, rộng theo chiều ngang tốt hơn là cao theo chiều dọc
  • Huawei sản xuất màn hình 28 inch tỷ lệ 3:2: https://consumer.huawei.com/uk/monitors/mateview/specs/
    Độ phân giải là 3840*2560
  • Đúng vậy. Chỉ sau khi tìm thấy một chiếc IBM ThinkPad cũ dưới tầng hầm và dùng thử, tôi mới nhận ra màn hình widescreen lệch lạc đến mức nào
    Thêm nữa, những thứ như thanh công cụ thường gặm mất không gian theo chiều dọc, ép vùng làm việc thành một tỷ lệ còn rộng hơn. Khi đọc hoặc viết văn bản, hai mép trái/phải của màn hình chỉ còn như những tấm nền trống
    Cùng một diện tích thì màn hình cao hơn cho cảm giác rộng rãi hơn rất nhiều. Tuy nhiên, việc đặt hai cửa sổ/panel/buffer cạnh nhau có thể không còn tiện như trước
    Nếu bạn đang dùng màn hình 3:2, tôi tò mò đó là sản phẩm nào
  • Vì vậy tôi từng rất thích SurfaceBook. Tỷ lệ màn hình gần như hoàn hảo. Giờ tôi đã quay lại MBP, và nó là lựa chọn ổn tiếp theo
  • Giải pháp 22° còn thiếu triển khai cửa sổ hình tam giác hoặc tùy chọn xem cửa sổ “chia theo đường chéo”
    • Màn hình tối ưu có lẽ sẽ gần giống hình tam giác hoặc nửa hình tròn. Màn hình chữ nhật xoay chỉ là một phép xấp xỉ rất thô
  • Tôi đã mua một màn hình 48 inch làm màn hình chính. Không cần lo chuyện xoay gì cả, chỉ đơn giản là có một màn hình khổng lồ trước mắt
    Có vẻ một số người thấy áp lực khi có màn hình lớn trước mặt, nhưng dùng thử một lần sẽ thấy việc bố trí các màn hình nhỏ như 27 inch hay 32 inch theo kiểu đơn/đôi/ba là phức tạp không cần thiết
    Một màn hình lớn thì tốt hơn nhiều. Màn hình cỡ lớn là tương lai, chỉ là hiện tại mọi người vì lý do nào đó vẫn chưa cảm thấy thoải mái khi mua mà thôi
    • Có thể là vấn đề hỗ trợ phần mềm. Chỉ dùng hai màn hình đơn giản “cảm thấy” dễ hơn so với dùng một màn hình như hai màn hình
      Liên quan đến chuyện đó, tôi tò mò bạn đã thiết lập quản lý cửa sổ như thế nào
    • Nếu là màn hình 48 inch 4K thì rốt cuộc nó giống như thế này
      • 4 màn hình 24 inch 1080P không viền
      • 4 màn hình 24 inch 1080P bị trói vào một lưới cố định, không linh hoạt
        Mỗi người có sở thích khác nhau, và điều đó không sao cả
    • Tôi cũng có một màn hình 48 inch. Hai bên còn đặt mỗi bên một màn hình 27 inch ở chế độ dọc
      Nhưng tôi không hiểu lắm vì sao lại xem đa màn hình là phức tạp. Cắm vào, nếu cần thì kéo cửa sổ sang bên cạnh, rồi cứ làm việc thôi
    • Lý do tôi ngại mua màn hình lớn là vì làm việc trước màn hình cỡ lớn trên bàn không thoải mái, và tôi không thấy lợi ích cá nhân của phần không gian bổ sung cho việc coding
      Trên laptop 16 inch cũng có đủ chỗ cho 3 panel terminal theo chiều dọc: một để chỉnh sửa, một để tài liệu, một để lệnh shell. Nếu cần tìm gì đó trên web thì dùng cmd-H để đổi space và cmd-L để quay lại terminal là được
      Workflow của tôi chạy được trên laptop nên đi đâu cũng giữ nguyên được. Tất nhiên cách này không phù hợp với tất cả mọi người, nhưng tôi khá hoài nghi việc màn hình lớn là tương lai của đa số, và ít nhất với tôi thì gần như chắc chắn đó không phải tương lai
    • Tôi không phải lúc nào cũng muốn dùng toàn màn hình với bất kỳ màn hình nào, nên tôi thích nhiều màn hình nhỏ có thể tắt bớt khi cần hơn
      Cách đó cũng có khó khăn riêng, nhưng những việc như duyệt web thì tôi muốn dùng toàn màn hình, còn trên một màn hình khổng lồ thì điều đó không hợp lắm