Điểm:2

Làm cách nào tôi có thể hoàn nguyên từ việc sử dụng GTK 3 sang GTK 2 trên Kunbfox 20.04?

lá cờ in

Tôi đang sử dụng OpenCPN 5.2.4 với OpenGL (cần thiết để phủ radar trên biểu đồ) trong Kubfox 20.04. Một lỗi OpenCPN được theo dõi liên quan đến việc sử dụng GTK3 ngăn OpenCPN mở rộng màn hình một cách thích hợp khi sử dụng tỷ lệ màn hình (tôi sử dụng 200% để chia tỷ lệ trên màn hình 4k 15,6 inch).

Giải pháp thay thế tạm thời là sử dụng GTK2 thay vì GTK3.

Câu hỏi của tôi là: Làm cách nào tôi có thể hoàn nguyên về GTK2 trên hệ thống của mình?

Mọi gợi ý về cách tiến hành sẽ được đánh giá rất cao.

Thông tin hệ thống:

  • Hệ điều hành: Kubfox 20.04
  • Phiên bản KDE Plasma: 5.18.5
  • Phiên bản khung KDE: 5.68.0
  • Phiên bản Qt: 5.12.8
  • Phiên bản hạt nhân: 5.4.0-77-chung
  • Loại hệ điều hành: 64-bit
  • Bộ xử lý: CPU 4 à Intel® Core™ i5-4570T @ 2.90GHz
  • OpenGL: 3.0 Mesa 20.2.6

$ apt-cache chính sách opencpn 
mởcpn: 
Đã cài đặt: 5.2.4.0-0~focal1 
Ứng viên: 5.2.4.0-0~focal1 
Bảng phiên bản:
 *** 5.2.4.0-0~tiêu cự1 500 
500 gói ppa.launchpad.net/opencpn/opencpn/ubuntu focus/main AMD64 
100 /var/lib/dpkg/status 5.0.0+dfsg-1 500 
500 gói nz.archive.ubuntu.com/ubuntufocal/universe amd64
guiverc avatar
lá cờ cn
Tải xuống mã nguồn, đảm bảo tất cả các lệnh gọi GTK3 đều tương thích với GTK2 và điều chỉnh/mã hóa lại những lệnh gọi sử dụng các tính năng của GTK3 để tự giới hạn (& chức năng mã) thành các lệnh tương thích với GTK2, sau đó biên dịch lại mã.API GTK3 & GTK2 khác nhau, do đó bạn không thể thay thế GTK3 bằng các gói GTK2... tất cả các chương trình cần được chuyển, đây là một khối lượng công việc (tại sao MATE mất nhiều thời gian để chuyển, XFCE cũng vậy, v.v... hãy để một mình Gnome )
guiverc avatar
lá cờ cn
Giải pháp thay thế của bạn là tạo một chương trình như `wine` bắt tất cả lệnh gọi GTK3 và cố gắng chuyển đổi chúng thành lệnh gọi GTK2 và gọi các thư viện GTK2 để làm những gì GTK2 có thể làm... Những gì nó làm với sự khác biệt GTK2/GTK3 là khó phần; nó có thể bỏ qua điều đó (điều này có thể sẽ tạo ra lỗi phân tách hoặc có hiệu ứng *không đáng tin cậy* hoặc *không ổn định* đối với chương trình gọi điện, trong trường hợp của bạn là OpenCPN) và sẽ không đáng tin cậy lắm với vô số chỉnh sửa liên tục và trong tương lai khi GTK3 thay đổi xảy ra trong tương lai...
N0rbert avatar
lá cờ zw
Tại sao bạn thực sự nghĩ rằng các vấn đề là do GTK2? Có thể bạn đang sử dụng phiên bản OpenCPN không chuẩn, kho lưu trữ mặc định cung cấp [phiên bản 5.0.0](https://packages.ubuntu.com/focal/opencpn). Bạn có gặp sự cố với OpenCPN khi sử dụng các phiên bản cũ hơn [từ 2019](https://changelogs.ubuntu.com/changelogs/pool/universe/o/opencpn/opencpn_5.0.0+dfsg-1/changelog) có thể dựa trên GTK2 ? Bạn sử dụng nguồn cài đặt nào cho OpenCPN? Đầu ra của `apt-cache policy opencpn` là gì?
Sergio avatar
lá cờ in
Sự cố xảy ra với GTK3 (https://github.com/OpenCPN/OpenCPN/issues/1927#issuecomment-868587708). OpenCPN, kho lưu trữ mặc định cung cấp 5.2.4. chính sách apt-cache opencpn mởcpn: Đã cài đặt: 5.2.4.0-0~focal1 Ứng viên: 5.2.4.0-0~focal1 Bảng phiên bản: *** 5.2.4.0-0~tiêu cự1 500 500 http://ppa.launchpad.net/opencpn/opencpn/ubuntufox/gói AMD64 chính 100 /var/lib/dpkg/trạng thái 5.0.0+dfsg-1 500 500 gói http://nz.archive.ubuntu.com/ubuntufocal/universe amd64
Điểm:1
lá cờ cn
  • tải xuống mã nguồn [sang OpenCPN 5.2.4]
  • đảm bảo tất cả các cuộc gọi GTK3 đều tương thích với GTK2
  • điều chỉnh/mã hóa lại những thứ sử dụng các tính năng GTK3 để chúng bị giới hạn ở chức năng GTK2 và thực hiện cuộc gọi GTK2
  • biên dịch lại mã.

API GTK3 & GTK2 khác nhau, do đó bạn không thể thay thế GTK3 bằng các gói GTK2 (điều mà tôi nghi ngờ là bạn đang hy vọng).

Các chương trình cần được chuyển, đây là một khối lượng công việc (tại sao MATE mất nhiều thời gian để chuyển, XFCE cũng vậy, v.v... chưa nói đến GNOME khi nó được chuyển từ GTK2 sang GTK3 và hiện đang chuyển sang GTK4)

Nếu nó không rõ ràng - công việc cần hoàn thành đã được thực hiện trong chương trình OpenCPN và OpenGL; I E. các chương trình người dùng cuối hiện đang gọi GTK3 - những chương trình này cần thay đổi.

Một hệ thống có thể có GTK3 & GTK2 cùng tồn tại; ví dụ. Lubfox của tôi đánh lừa hệ thống đã cài đặt cả lib Qt5, GTK3 & GTK2 và chúng sẽ cùng tồn tại một cách vui vẻ.

  • hexchat (ứng dụng khách IRC đã chọn của tôi) gọi GTK2 libs
  • sự sống & sự tiến hóa (RSS & MUA đã chọn của tôi) gọi GTK3 libs
  • máy tính để bàn Lubuntu LXQt của tôi, chẳng hạn như các chương trình. đệm lông vũ gọi các thư viện Qt5, giống như máy tính để bàn KDE của bạn (nhiều ứng dụng KDE cũng cần KF5).

Đó là chương trình người dùng cuối cần được thay đổi. Bạn có thể cài đặt tất cả bộ công cụ/thư viện GTK2 trong hệ thống của mình, nhưng nếu không có gì gọi nó, nó sẽ không được sử dụng.

Cũng lưu ý: Mở rộng quy mô không tồn tại trong GTK2 vì vậy tôi không thấy những gì bạn hy vọng đạt được.

guiverc avatar
lá cờ cn
FYI: Tại sao các ứng dụng tôi chọn... Tôi đã từng là người dùng GNOME từ lâu (GTK2) ngày trước và một số ứng dụng người dùng cuối mà tôi chưa kích hoạt...
Sergio avatar
lá cờ in
Ok điều đó làm rõ rất nhiều điều cho tôi. Có vẻ như tôi sẽ phải đợi các nhà phát triển OpenCPN sửa lỗi này trong bản phát hành trong tương lai. Nó vượt quá khả năng của tôi để 'mã hóa lại' và 'biên dịch lại' như được đề xuất. p.s.: Trong khi đó, tôi đang gặp khó khăn với việc di chuyển hệ thống và cập nhật hiển thị mà OpenCPN không thể xử lý (Cửa sổ tới Kunbutu với màn hình 15,6 inch 4k cần đặt tỷ lệ ở mức 200% để có thể sử dụng được).

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.