- Sxmo là một môi trường tối giản dành cho điện thoại Linux và các thiết bị di động khác, kết hợp các chương trình đơn giản và shell script để tạo UI đúng với triết lý Unix
- Sử dụng giao diện dựa trên menu cùng trình quản lý cửa sổ tiling, hỗ trợ cả Wayland và Xorg legacy trên các cấu hình như sway
- Cung cấp thao tác cảm ứng, cử chỉ và nút phần cứng; đồng thời bù đắp khả năng sử dụng trên màn hình nhỏ bằng menu ngữ cảnh thay đổi tùy theo ứng dụng CLI hoặc GUI đang hoạt động
- Bao gồm các tính năng di động như modem, cuộc gọi, tin nhắn, đọc thông báo và tối ưu nhẹ cho thiết bị chạy pin; cũng có thể truy cập menu và gửi tin nhắn qua SSH
- Có thể gắn cuộc gọi, tin nhắn, cử chỉ và nút vật lý với script người dùng, gần với cách dùng kiểu Linux là tự sửa và tùy biến hơn so với hệ sinh thái ứng dụng khép kín
Môi trường mobile Linux mà Sxmo hướng tới
- Sxmo là môi trường tối giản cho thiết bị di động Linux, đề cao “minimal, mobile, hackable”
- Các điện thoại hoặc máy tính bảng Android cũ cũng có thể hoạt động với một chút cấu hình; các thiết bị ví dụ gồm OnePlus 6 và Poco F1
- Thông tin hỗ trợ thiết bị có thể xem tại device profile, còn người dùng mới có thể tham khảo getting started guide
Cách thao tác và tùy biến
- UI dùng kết hợp giao diện dựa trên menu đơn giản và trình quản lý cửa sổ tiling
- Có thể dùng sway làm ví dụ
- Các công cụ hướng tới dạng có thể liên kết với nhau và dễ thay thế
- Hỗ trợ cả Wayland và Xorg legacy
- Cách nhập liệu trên di động được thiết kế với giả định màn hình nhỏ và sử dụng nút vật lý
- Hỗ trợ cảm ứng và cử chỉ
- Có thể điều khiển menu bằng nút phần cứng
- Menu ngữ cảnh do cộng đồng xây dựng thay đổi tùy theo ứng dụng đang hoạt động là CLI hay GUI
- Các tính năng mobile Linux bao gồm cả modem, cuộc gọi, tin nhắn và thông báo
- Có thể đọc thông báo và tin nhắn
- Bao gồm tối ưu nhẹ cho thiết bị chạy pin và màn hình nhỏ
- Hỗ trợ SSH như một cách sử dụng cốt lõi, có thể truy cập mọi menu qua SSH
- Có thể gửi tin nhắn qua SSH bằng các trình soạn thảo văn bản như vis, emacs, vim
- Để tăng khả năng hack/tùy biến, có thể liên kết nhiều hành động bằng shell script
- Có thể chạy script tùy chỉnh khi có sự kiện cuộc gọi hoặc tin nhắn
- Có thể dùng lisgd để bind script với cử chỉ
- Có thể gắn script với thao tác nhấn một lần, hai lần hoặc ba lần trên nút vật lý của thiết bị
- Nhật ký modem, danh bạ và nội dung SMS được lưu dưới dạng văn bản thuần
- Hệ sinh thái ứng dụng không có cấu trúc khép kín; có thể dùng ứng dụng FOSS trên di động như trên desktop
- Hoạt động trên các bản phân phối Linux tối ưu cho di động như Alpine Linux và postmarketOS
- Có thể sử dụng ứng dụng chạy trên terminal trên smartphone
1 bình luận
Ý kiến trên Hacker News
Trong các giao diện từng dùng trên PinePhone, sxmo rõ ràng là tốt nhất
Bình thường tôi không phải kiểu hay dùng hệ suckless, và dù có tôn trọng dạng phần mềm đó, tôi vẫn bị hấp dẫn hơn bởi những thứ nhiều tính năng như Emacs hay KDE. Dù vậy, sxmo phản hồi nhanh hơn KDE hay Phosh rất nhiều, và một khi vượt qua được rào cản về khả năng tự khám phá thì nó khá giàu tính năng và trực quan. Hình như megi cũng từng làm một cheat sheet khá ổn
Chỉ là KDE đã quyết định làm lại các ứng dụng cốt lõi bằng một framework thân thiện với di động hơn, nên tôi không rõ nó thực tế đến mức nào như một nền tảng ứng dụng. Hiện tại chưa có nhiều thứ để đào sâu, và có lẽ vài năm tới vẫn sẽ như vậy. Thấy được khuyên nên tôi cũng định thử sxmo một lần
Tôi cũng thử các môi trường desktop khác, nhưng cuối cùng vẫn chốt với sxmo/swmo vì tôi thích triết lý có thể tự lắp ghép và điều khiển từng thành phần, và việc có thể quản lý điện thoại từ laptop qua SSH cũng là một điểm lớn. Tôi vốn đã quen với Sway, và vào lúc bắt đầu thì Phosh với KDE đều có những vấn đề khá nghiêm trọng
Tuy nhiên, sxmo lúc nào cũng rất nhiều bug. Có vô số race condition khiến nó hỏng cho tới khi khởi động lại, và để mở khóa thì lúc phải bấm nút nguồn một lần, hai lần, ba lần, hoặc giữ lâu rồi bấm lại, tùy vào trạng thái ngủ và thao tác trước đó nên hành vi rất thất thường. Việc thay đổi trạng thái hay chế độ cũng mất gần 1 giây mới phản ánh lên màn hình, và điều đó căng thẳng hơn tưởng tượng rất nhiều
Nếu một trạng thái mutex nào đó bị kẹt, các tiến trình mới cố điều khiển LED nhấp nháy sẽ cứ tăng dần mãi, và cuối cùng thậm chí giữ nút nguồn cũng không còn tác dụng, phải tháo pin ra
Khi người ta nói Rust tốt hơn C vì an toàn bộ nhớ và mô hình dữ liệu tốt hơn giúp loại bỏ một số loại bug, thì sxmo lại được triển khai phần lớn bằng shell script, và xét ở góc độ thiết kế quy mô lớn thì còn tệ hơn C rất nhiều. Nó có ít thành phần nền tảng phù hợp hơn, và các giới hạn đó lộ ra rất rõ
Toàn bộ hệ thống gần giống một mớ hổ lốn gồm các mảnh ghép làm như không biết tới sự tồn tại của nhau, trong khi nếu chúng phối hợp với nhau thì có lẽ kết quả sẽ ổn định hơn nhiều. Có những chỗ trông bề ngoài có vẻ ổn nhưng thực ra chưa được làm đúng hoàn toàn, và đôi khi chính thiết kế lại quá phức tạp và sai từ gốc
Tôi không nghĩ 6 tháng qua có gì thay đổi lớn, nên muốn thách người dùng sxmo thử xem. Hãy tìm cách đổi cách hiển thị đồng hồ ở system tray, và làm sao để nó cập nhật đúng vào thời điểm chính xác thay vì đúng nhưng có thể trễ tới 55 giây. Trong quá trình đó bạn sẽ phải đi qua nhiều hệ thống khác nhau, như bộ hẹn giờ 55 giây ghi giá trị cache rồi thanh trạng thái lấy giá trị đó, và phải lục ít nhất khoảng ba chỗ trên đĩa. Bạn sẽ cần công cụ như
ripgrep, rồi cuối cùng sẽ tự hỏi sao không đơn giản đặtdate +'%H:%M'vào lệnh của thanh trạng thái rồi đổi thànhdate +'%-I:%M %P'cho xongVề mặt tính năng cũng vậy, có những thứ trên Android là mặc định cứ thế chạy, hoặc ở Phosh thì hoạt động được, nhưng ở đây lại không chạy mượt hoặc không chạy chút nào. Đổi lại, một khi bạn tìm ra cách làm cho thứ gì đó hoạt động thì khả năng script hóa sẽ tốt hơn rất nhiều. Tôi đã biến workflow cá nhân của mình thành thứ tiện hơn bất kỳ hệ điều hành nào khác, nhưng cũng vì thế mà phải viết rất nhiều script
Có những vấn đề đã được sửa theo thời gian và cũng có những vấn đề mới xuất hiện, nhưng nhìn chung chất lượng thực tế tổng thể vẫn khá thấp. Dù vậy tôi vẫn tiếp tục dùng, nên có lẽ tôi là một kẻ khổ dâm cũng nên
Kết lại thì tôi thực sự không nghĩ ra nổi một ai để khuyên dùng sxmo/swmo. Nhưng nếu có kiểu người phù hợp để giới thiệu, thì có lẽ đó là người vốn đã dùng trình quản lý cửa sổ xếp gạch trên desktop và bản thân cũng không quá quan tâm tới chiếc điện thoại
Nếu trên trang chủ có video demo dài 1–2 phút thay vì bài thuyết trình 45 phút thì có lẽ sẽ truyền tải ý tưởng rõ hơn rất nhiều
Tôi thích nó. Mọi thứ đều được nối với nhau bằng shell script, nên sẽ khá kén gu, nhưng điểm hay là có thể nhanh chóng mổ xẻ và chỉnh sửa UI của điện thoại
Tôi từng viết một script đồng hồ báo thức ngay trên chính PinePhone trong lúc đi đi về về, cần phải công khai nó mới được. Nó hoạt động bằng cách đánh thức máy khỏi trạng thái ngủ sâu ngay trước giờ báo thức rồi phát chuông
Những thứ như đồng hồ báo thức có thiết lập đánh thức bằng RTC vẫn còn thiếu khá nhiều, nhưng nhìn chung đây là một hệ thống rất ngầu và tôi định sẽ lại dùng rồi nghịch nó trong tương lai gần
Nếu bạn đi FOSDEM và quan tâm tới Linux trên điện thoại thì nên xem lịch devroom [0] và các gian liên quan [1]
[0]: https://fosdem.org/2024/schedule/track/foss-on-mobile-device...
[1]: https://fosdem.org/2024/stands/
Tôi khó mà đồng ý với nhận định rằng “kernel chạy trên thiết bị Android đã bị chỉnh sửa quá nhiều đến mức cộng đồng không thể bảo trì được”
Android chạy được cả trên mainline Linux kernel. Nếu cộng đồng đã có thể bảo trì mainline kernel, thì một series 210 patch nằm trong Android common kernel hẳn cũng không phải mức bất khả thi. Vứt bỏ toàn bộ giá trị của Android chỉ vì điều này chẳng khác nào bắt rận mà đốt luôn cả căn nhà
Android có hỗ trợ đa cửa sổ, nên việc ai đó triển khai trình quản lý cửa sổ xếp gạch cho Android nghe cũng khá hợp lý
Không rõ có thể chạy cái này trên máy chủ Intel/AMD thông thường rồi dùng qua phiên xrdp/nx hay không
Cần khả năng tương thích xã hội và camera tốt. Tôi cũng đã thử i3, nhưng dùng khi không có bàn phím vật lý thì khá khó
pinephone-sway-poc: https://github.com/Dejvino/pinephone-sway-poc#components
rpm-ostree hiện đã hỗ trợ dùng image container OCI làm image host, nên việc nâng cấp hệ điều hành trở nên dễ hơn và cũng bền vững hơn trước lỗi. Có thể chọn mục khác trong menu khởi động để quay lại trạng thái trước đó, tức là kernel + lớp phủ
/etc+ phân vùng gốc + gói"Using OSTree Native Containers as Node Base Images" (2023) https://www.opensourcerers.org/2023/06/16/using-ostree-nativ...
Nếu muốn thay đổi phong cách SXMO trên Sway, ví dụ làm mục menu to hơn để dễ bấm bằng ngón tay, đổi sang phông hẹp hơn để chứa được nhiều chữ hơn trên một dòng, hoặc tinh chỉnh giao diện, thì hướng dẫn này sẽ hữu ích: https://porkyofthepine.org/blog/rice_sxmo_sway.html
Sẽ tốt hơn nhiều nếu có một trình quản lý hiển thị thực sự hoạt động tốt trên điện thoại, và cái này có thể giúp tiến theo hướng đó
Mọi thứ tôi từng thấy về SXMO đều cho cảm giác đây là thứ dành cho hacker râu rậm kiểu thợ mộc, coi trọng sự tự do kiểu Stallman hơn là thẩm mỹ hay tính tiện dụng
Điểm hay là không nhất thiết phải chạy ứng dụng Google
Dù vậy, nếu có thể truy cập một số ứng dụng cần thiết dù không thật sự thích, như vài app ngân hàng cốt lõi hoặc app tự động hóa nhà cửa, thì sẽ rất hữu ích
Sxmo, trái với tên gọi của nó, có thể chạy bằng Wayland thay vì X nên hỗ trợ Waydroid
Cá nhân tôi chưa từng thành công trong việc làm cho Waydroid chạy được, và việc này còn khó hơn do phải tải về lượng dữ liệu lớn cho thiết lập ban đầu. Dù vậy tôi cũng không cố quá nhiều, và trên mạng vẫn có video của những người đã làm được
[1]: https://waydro.id/
[2]: https://tilvids.com/w/2b2f3a24-ae23-458e-a0fd-2f24a185a11b
Có vẻ PmOS có hai biến thể SXMO
sxmo-de-dwm: môi trường di động Simple Mobile dựa trên SXMO và chạy trên dwmsxmo-de-sway: môi trường di động Simple Mobile dựa trên SXMO và chạy trên swayTôi muốn biết SXMO có gì mới
Tôi đã không theo dõi từ sau năm 2021, nên muốn biết giờ đã có điện thoại nào đủ ổn định để chạy hằng ngày chưa
Tôi đã thấy vài người dùng nó trên thiết bị này, và trong các chủ đề gần đây về PinePhone nó cũng nhiều lần được nhắc đến như một lựa chọn thay thế tốt cho Plasma mặc định