Tập tin cấu hình của Xterm


7

Sau khi bắt đầu sử dụng Arch, tôi chuyển sang thiết bị đầu cuối xterm và urxvt và rất thích sự linh hoạt của chúng (đặc biệt là scaleHeighttài nguyên). Tuy nhiên, tôi không hiểu tại sao đôi khi cấu hình hoạt động với Xtermvà đôi khi có xtermhoặc XTerm(chữ thường so với chữ hoa xt).

Ví dụ: tôi có cấu hình kỳ lạ này đang hoạt động trên Ubuntu:

XTerm*faceName: terminus
XTerm*faceSize: 11
XTerm*saveLines: 16384
XTerm*loginShell: true
XTerm*charClass: 33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48
XTerm*termName: xterm-color
XTerm*eightBitInput: false
xterm*VT100.geometry: 100x80    ! <------ this line would not work with "Xterm" or "XTerm"
XTerm*scaleHeight: 1.3          ! <----- but all others work with "XTerm"

Tuy nhiên, hộp Arch của tôi chạy trên "xterm" tốt. Điều tương tự cũng đúng với thiết bị đầu cuối URxvt: Tôi không thể chuyển cổng Arch .Xresource của mình sang Ubuntu14 vì các phần của nó ngừng hoạt động và tôi nhận được các thiết lập khác nhau sau khi chạy:

xrdb -merge .Xresources

X.org trên xterm không có bất kỳ ví dụ nào (tìm kiếm "xterm *" không trả về bất cứ điều gì trên trang đó). Tôi xem các ví dụ với Xterm, xtermXTermtrực tuyến ... Nó baffles tôi rằng cấu hình trên tác phẩm vì nó là cú pháp tắt. Tại sao điều này là trường hợp? Nó có thể có liên quan đến tài nguyên mới hay cũ trong X không? Cảm ơn!

xterm trên Ubuntu là Xterm (297). Hiện tại tôi không có quyền truy cập vào hộp Arch của mình, nhưng nó sẽ được cập nhật. Tôi không biết làm thế nào để nói phiên bản Xterm từ repos của Arch, nhưng có lẽ đây: https://www.archlinux.org/packages/extra/i686/xterm/ Vì vậy, nếu liên kết đó là đúng, thì có, tôi đang chạy phiên bản Xterm khác nhau.

Tôi đã thử nâng cấp xterm, nhưng nó vẫn là 297.

apt-get update && apt-get install --only-upgrade xterm

Tôi không thể làm điều đó ngay bây giờ, nhưng tôi có thể thử biên dịch lại phiên bản mới nhất để xem vấn đề có ở đó không.

Theo các đề xuất của ILMostro_7 bên dưới tôi đã thử XTerm.vt100.geometry, nhưng vẫn không hoạt động. Đây là Xterm (297) trên Ubuntu14. Về cơ bản, .hoặc *nó dường như chỉ làm việc với ít xt.


Kết quả appres XTerm xterm | grep geometrycảm ơn Gilles. Tôi đã không nghĩ rằng để tìm kiếm chính xác những gì xrdb -mergedẫn đến sự lộn xộn này. Vì vậy, dự đoán của tôi là một trong những điều này được ưu tiên hơn tất cả mọi thứ khác?

xterm.VT100.geometry:   100x100
xterm*VT100.geometry:   100x80
xterm*VT100*geometry:   50x50
xterm.vt100.geometry:   160x40
xterm*vt100.geometry:   100x20
xterm.geometry: 5x5
xterm*geometry: 100x20
XTerm.VT100.geometry:   100x100
XTerm*VT100.geometry:   50x50
XTerm*VT100*geometry:   20x10
XTerm.vt100.geometry:   100x5
XTerm*vt100.geometry:   40x40
XTerm*geometry: 50x50

Trong thực tế, có vẻ như nó xterm.vt100.geometry: 160x40được ưu tiên hơn những người khác vì đó là trường hợp tôi tiếp tục nhận được. Ngoài ra, bằng cách nào đó tôi đã xoay sở để hoàn toàn làm hỏng các mối đe dọa Xterm (Ctrl + nhấp chuột) - chúng hiển thị dưới dạng một đường nhỏ màu vàng. Hehe


1
Trang này gợi ý rằng phần lớp khách ( XTermtrong trường hợp của bạn) phân biệt chữ hoa chữ thường . Tôi không biết Xresource hoạt động như thế nào, nhưng một số suy đoán: Có thể bạn đang chạy các phiên bản xterm khác nhau giữa các hộp của mình bằng cách nào đó? (Đăng xterm -version?) Có thể các distro khác nhau gọi chương trình xterm tên lớp khác nhau? (Tôi không biết cách kiểm tra cái này.
Anko

Điều đó có thể là do bạn có thể thiếu phông chữ được chỉ định và / hoặc nó bị định cấu hình sai. Hãy thử nó với một phông chữ mà bạn biết được cài đặt đúng trên hệ thống đó.
ILMostro_7

1
Tài nguyên faceName @ ILMostro_7 không phải là vấn đề. Phông chữ Terminus được cài đặt và sử dụng thành công bởi tất cả các ứng dụng X (bao gồm Xterm và Rxvt) trên cả Arch và Ubuntu.
Serge Poele

Phải, tôi đã hiểu nhầm câu hỏi một lát
ILMostro_7 17/07/15

1
Cảm ơn bạn @ ILMostro_7. Tôi chỉ thử nó và nó vẫn không hoạt động. Nhưng nếu tôi thử xterm.vt100.geometry (chữ thường "xt") một lần nữa - nó hoạt động. :) Đây là Xterm (297) trên Ubuntu14. Nên về cơ bản, "." hoặc "*" có vẻ như chỉ hoạt động với "xt" nhỏ. Tôi sẽ cập nhật bài viết với bài kiểm tra này.
Serge Poele

Câu trả lời:


11

Tài nguyên X11 có một tên bao gồm một loạt các thành phần được phân tách bằng dấu chấm, chẳng hạn như xterm.vt100.geometry. Thành phần đầu tiên là tên của ứng dụng, thành phần thứ hai là một widget trong ứng dụng đó và thành phần cuối cùng là một thuộc tính của widget. Các widget có thể được lồng nhau, vì vậy có thể có nhiều hơn ba thành phần, hoặc chỉ hai cho một thuộc tính của ứng dụng.

Thông số kỹ thuật của tài nguyên X có thể áp dụng cho một tài nguyên hoặc cho một tập hợp các tài nguyên khớp với một mẫu. Có hai cách để làm cho một đặc tả áp dụng cho nhiều tài nguyên.

  • Bạn có thể sử dụng tên lớp thay vì tên thể hiện cho bất kỳ thành phần nào. Thông thường, tên dụ bắt đầu bằng một chữ cái viết thường trong khi tên lớp bắt đầu bằng chữ in hoa.

    • Ở cấp độ ứng dụng, tên lớp thường được cố định cho một ứng dụng nào đó, thường vào tên ứng dụng vốn, và đôi khi chữ khác cũng được viết hoa, ví dụ như XTerm, XCalc, GV, NetHack, ... Các ứng dụng bằng cách sử dụng X toolkit hỗ trợ một tùy chọn -classđể thiết lập tên lớp, cũng như -nameđể đặt tên thể hiện (mặc định là tên cơ sở của tệp thực thi). Ví dụ, XTerm.vt100.geometryđặt một giá trị của thuộc geometrytính cho vt100widget của bất kỳ thể hiện nào của XTermlớp; nó áp dụng cho xterm -name foonhưng không xterm -class Foo.
    • Ở cấp độ widget, có thể có nhiều widget với cùng một lớp, ví dụ nhiều nút trong cùng một cửa sổ. Xterm có một widget duy nhất của lớp VT100, được gọi vt100là phần mô phỏng đầu cuối bao trùm toàn bộ cửa sổ. Các vật dụng khác bao gồm các menu mainMenu, fontMenuvtMenucủa lớp SimpleMenu.
  • Có các ký tự đại diện: ?có nghĩa là bất kỳ widget nào, và *có nghĩa là bất kỳ chuỗi widget nào. Ví dụ xterm*backgroundxác định một nền cho tất cả mọi thứ bên trong cửa sổ Xterm.

Bạn có thể khám phá cây tài nguyên của một ứng dụng hỗ trợ giao thức editres editres. Rất ít ứng dụng hỗ trợ giao thức này, nhưng Xterm là một trong số đó.

Có thể một tài nguyên nhất định được khớp với nhiều mẫu. Trong trường hợp này, quy tắc ưu tiên áp dụng. Xem hướng dẫn cho các quy tắc đầy đủ.

Trong trường hợp của bạn, có khả năng có một mục khác ở đâu đó phù hợp xterm.vt100.geometryhơn so với xterm*VT100.geometry, và kết quả đó đang ghi đè cài đặt của bạn. Những người khác không có thiết lập khác vì vậy bất cứ điều gì bạn làm đều thắng.


Đây là một câu trả lời đẹp và độc đáo. Có rất nhiều bài viết .Xresource trên SO, nhưng không có gì chạm vào các lớp và phiên bản của ứng dụng X. Cám ơn bạn rất nhiều về điều này; điều này mang đến một sự hiểu biết hoàn toàn mới về cấu hình ứng dụng X. Cảm ơn bạn rất nhiều Gilles. Sau cuộc thảo luận của bạn, tôi tìm thấy liên kết đến tài liệu lập trình viên X mở rộng về thuật ngữ bạn cung cấp ở đây (xem bên dưới và cả "Tạo tiện ích"). x.org/release/X11R7.7/doc/libXaw/libXaw.html#Terminology
Serge Poele

Điều tôi vẫn không hiểu là đây. Tôi đã thêm dòng này: Xterm * hình học: 40x40 và đảm bảo rằng tôi không có bất kỳ dòng hình học nào khác trong các tệp ngoại trừ URxvt * hình học: 20x20. Từ lời giải thích của bạn, "XTerm" nên đặt trường "hình học" cho mọi phiên bản của lớp XTerm, có nghĩa là mọi phiên bản XTerm mới phải là 40x40. Tuy nhiên, URxvt đáp ứng điều đó: Tôi nhận được một ví dụ 20x20 mỗi lần tôi khởi chạy nó, nhưng Xterm thì không. Tôi hiểu rằng tôi chưa chỉ định tiện ích như vậy: Xterm * vt100 * hình học: 40x40. Nhưng bạn đã nói hình học XTerm * có nghĩa là "bất kỳ chuỗi phụ tùng" nào sẽ bao gồm vt100?
Serge Poele

@SergePoele Tôi nghĩ điều đó xảy ra bởi vì có một cài đặt cấp hệ thống cho một số đặc tả được ưu tiên hơn XTerm*geometry, chẳng hạn như XTerm.VT100.geometry.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn một lần nữa. Tôi nghĩ điều đó có ý nghĩa: trên máy tính xách tay Mint của tôi, tôi có thể suy đoán rằng có một số cấu hình được đặt bởi các nhà phát triển Mint. Trên hộp Arch của tôi không có gì về cấu hình chạy trong X được thiết lập bởi các nhà phát triển Arch, vì vậy không có gì vượt qua cài đặt hình học của XTerm *. Tuy nhiên, đây là một phỏng đoán có giáo dục và thực sự không thể chứng minh điều này bằng cách nào đó. Tuy nhiên, cảm ơn cho tất cả các câu trả lời. Bây giờ tôi chắc chắn đã gắn bó với Xterm và Urxvt khi tôi đã tìm hiểu thêm về cấu hình.
Serge Poele

@SergePoele Sản lượng của là appres XTerm xterm |grep geometrygì?
Gilles 'SO- ngừng trở nên xấu xa'

3

Một số ý kiến, vv, là không chính xác. Nhân tiện, phần mô tả tài nguyên X nằm trong trang hướng dẫn X (7) , trong phần có tiêu đề Tài nguyên . Đó là nơi tốt nhất để bắt đầu đọc, và có rất ít điểm để lặp lại ở đây.

Dưới đây là một số điểm bị bỏ qua:

  • tên tài nguyên là trường hợp nhạy cảm : XTermkhông giống như Xtermkhông giống như xterm, v.v.
  • thông thường tên tài nguyên X sử dụng chữ in hoa hàng đầu cho tên lớp .
  • khi chữ cái đầu tiên của tên lớp là X, có một quy ước để viết chữ cái thứ hai viết hoa. Vì vậy, chúng tôi nhận được XTerm. Những ví dụ khác bao gồm XCalc, XClock, XConsole, XLoad, XLogo.
  • Mặt khác, chúng ta có Xedit(chữ thường e), Xfd, Xmag, Xman, Xmessage, Xvidtune. Vì vậy, quy ước không phải là một quy tắc .
  • Các ứng dụng X Toolkit (như xterm) sử dụng XtOpenApplicationhoặc XtAppInitializeđể khởi tạo tài nguyên ứng dụng của chúng. Những cuộc gọi này lấy một thể hiện và tên lớp .
  • thông thường, tên dụ là tên thật của chương trình (tên tệp của nó). Nếu bạn tình cờ đổi tên chương trình (như thỉnh thoảng, chẳng hạn, xterm.real) sẽ thay đổi tên. Chương trình không để làm điều này, nhưng nó được thực hiện thường xuyên. xtermPhải không.
  • thông thường tên lớp là một hằng số. Nó không ở trong xterm, bởi vì nó mong đợi một trong hai lớp: XTermhoặc UXTerm(3 thủ đô hàng đầu). Cái sau được sử dụng cho uxtermtập lệnh, đơn giản hóa cách các phông chữ được chỉ định. Ngày này bắt đầu từ năm 2000 , làm cho nó ở giữa lịch sử của X. Kiểm tra nhanh 30 chương trình trong cây nguồn X từ đầu / giữa năm 2000, sử dụng XtAppInitializekhông hiển thị bất kỳ chương trình nào khác sử dụng biến cho tên lớp.
  • các -classtùy chọn là xterm cụ thể. Thực tế dbedizzychấp nhận một -classtùy chọn, cho lớp trực quan . Điều đó khác biệt. X Toolkit không có tùy chọn như vậy. Có một danh sách các tùy chọn phổ biến cho X Toolkit trong trang hướng dẫn X (7) trong Tùy chọn . Xterm thủ công quà những chi tiết hơn, trong X Toolkit Tùy chọn .
  • editres, như trang hướng dẫn của nó chỉ ra, hoạt động cho bất kỳ chương trình nào sử dụng Bộ công cụ X. Có 36 chương trình trong cây nguồn X sử dụng một hoặc một trong hai cuộc gọi khởi tạo được đề cập, vì vậy đây không phải là "một vài chương trình" mà điều này sẽ áp dụng.
  • Mặt khác, xtermlà một trong những số íteditreskhông phải là rất hữu ích. Nó có quá nhiều cài đặt tài nguyên.

Các tệp mặc định ứng dụng được cài đặt cho xtermvà các ứng dụng khác thường chỉ định cài đặt tài nguyên của chúng bắt đầu bằng dấu hoa thị ( *). Điều đó làm cho chúng độc lập với tên dụ . Một dấu hoa thị phù hợp với bất kỳ số cấp nào của hệ thống phân cấp widget, thường là một nguồn gây nhầm lẫn, ví dụ: Câu hỏi thường gặp về xterm Tại sao các menu nhỏ? , trong đó có thể tài nguyên hình học dành cho VT100widget được áp dụng cho các menu. Có những vấn đề tương tự với kết hợp quá hào phóng áp dụng cho fonttài nguyên. Cách khắc phục cho cả hai là sử dụng các kết quả khớp cụ thể hơn, tham khảo VT100tiện ích (cụ thể), sử dụng dấu chấm ( .), v.v.

Vì các tệp mặc định của ứng dụng tránh sử dụng không cần thiết '.', chúng tương đối dễ ghi đè trong cấu hình của riêng bạn. Nếu bạn gặp khó khăn khi lấy tài nguyên như

xterm*VT100.geometry: 100.80

để áp dụng, chỉ có một vài nơi để tìm:

  • nếu bạn sử dụng mô hình trước đó, nó đã được sử dụng, và thiết lập nó một lần nữa (sau này trong tài nguyên tập tin của bạn) sẽ không ảnh hưởng đến giá trị sử dụng.
  • một cài đặt cụ thể hơn như xterm.VT100.geometryghi đè các cài đặt ít cụ thể hơn bằng cách sử dụng ký tự đại diện *?.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.