Các ký tự Unicode trong thanh trạng thái uxterm và dwm


7

Tôi muốn hiển thị các ký tự Trung Quốc trong thanh trạng thái của dwm. Cụ thể hơn, tôi muốn các biểu tượng đại diện cho các thẻ khác nhau trong dwm. Sử dụng một trình chuyển đổi trực tuyến, tôi thấy rằng biểu diễn unicode cho các ký hiệu tôi muốn là:

憤怒
unicode: 憤怒

Đưa các ký tự unicode trực tiếp vào tác phẩm của tôi config.h, chúng thậm chí không xuất hiện vim. Ngôn ngữ của tôi được đặt thành ISO-8859-1và tôi đang sử dụng phông chữ Liberation Mono cho dwm.

Tôi có thể làm gì để đưa những biểu tượng đó lên đó?

EDIT Làm theo hướng dẫn của Mat và vá dwm, lệnh patch bị treo. Chạy strace:

[max@prometheus dwm-6.0]$ strace patch -Np1 ../dwm-pango/dwm-pango/dwm-6.0-pango.patch 
execve("/usr/bin/patch", ["patch", "-Np1", "../dwm-pango/dwm-pango/dwm-6.0-p"...], [/* 30 vars */]) = 0
brk(0)                                  = 0x1d52000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dc4713000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=92801, ...}) = 0
mmap(NULL, 92801, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9dc46fc000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\25\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1983446, ...}) = 0
mmap(NULL, 3804112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f9dc4152000
mprotect(0x7f9dc42e9000, 2097152, PROT_NONE) = 0
mmap(0x7f9dc44e9000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x197000) = 0x7f9dc44e9000
mmap(0x7f9dc44ef000, 15312, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f9dc44ef000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dc46fb000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dc46fa000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dc46f9000
arch_prctl(ARCH_SET_FS, 0x7f9dc46fa700) = 0
mprotect(0x7f9dc44e9000, 16384, PROT_READ) = 0
mprotect(0x61a000, 4096, PROT_READ)     = 0
mprotect(0x7f9dc4714000, 4096, PROT_READ) = 0
munmap(0x7f9dc46fc000, 92801)           = 0
brk(0)                                  = 0x1d52000
brk(0x1d75000)                          = 0x1d75000
getpid()                                = 10412
lstat("/tmp/po8GP02f", 0x7fffdc075210)  = -1 ENOENT (No such file or directory)
lstat("/tmp/pikSWXEs", 0x7fffdc075210)  = -1 ENOENT (No such file or directory)
lstat("/tmp/prB1wVgF", 0x7fffdc075210)  = -1 ENOENT (No such file or directory)
lstat("/tmp/pp27ATSR", 0x7fffdc075210)  = -1 ENOENT (No such file or directory)
rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7f9dc4186cb0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGHUP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGHUP, {0x40cd90, [], SA_RESTORER, 0x7f9dc4186cb0}, NULL, 8) = 0
rt_sigaction(SIGPIPE, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPIPE, {0x40cd90, [], SA_RESTORER, 0x7f9dc4186cb0}, NULL, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, {0x40cd90, [], SA_RESTORER, 0x7f9dc4186cb0}, NULL, 8) = 0
rt_sigaction(SIGXCPU, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXCPU, {0x40cd90, [], SA_RESTORER, 0x7f9dc4186cb0}, NULL, 8) = 0
rt_sigaction(SIGXFSZ, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXFSZ, {0x40cd90, [], SA_RESTORER, 0x7f9dc4186cb0}, NULL, 8) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0x40cd90, [], SA_RESTORER, 0x7f9dc4186cb0}, NULL, 8) = 0
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
open("/tmp/pp27ATSR", O_RDWR|O_CREAT|O_EXCL|O_TRUNC, 0600) = 3
fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dc4712000
lseek(3, 0, SEEK_CUR)                   = 0
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dc4711000
read(0, 

Tôi có thể thiếu một cái gì đó?

Câu trả lời:


8

Tôi không nghĩ bạn sẽ nhận được hỗ trợ Unicode dwmmà không cần vá nó (và đáng chú ý là thêm các phụ thuộc bổ sung pango).

Nếu đó là một lựa chọn cho bạn, gói Arch dwm-pangodường như hoạt động. (Tải xuống tarball, giải nén nó và vá dwm của bạn với tệp vá - bạn không cần phải sử dụng Arch. Patch áp dụng với một chút mờ trên đầu dwm-0.6.)

$ tar xzf dwm-6.0.tar.gz 
$ tar xzf dwm-pango.tar.gz 
$ cd dwm-6.0
$ patch -Np1 < ../dwm-pango/dwm-6.0-pango.patch 

Sau đó, bạn có thể chỉnh sửa tệp cấu hình của mình và đặt các ký tự unicode ( \utheo sau là mã điểm unicode trong hex) trong tagschuỗi chẳng hạn.

/* tagging */
static const char *tags[] = { "\u00c0",
                              "\u61a4\u6012",
                              "\u10e5\u10d0\u10e0",
                              "4", "5", "6", "7", "8", "9" };

Mục đầu tiên là À, thứ hai là hai biểu tượng của bạn, thứ ba là một số chữ viết Georgia ('cos tôi nghĩ nó trông rất tuyệt).

Với một phông chữ lớn, điều này dẫn đến:

nhập mô tả hình ảnh ở đây


Cảm ơn cho một câu trả lời tuyệt vời. Tôi hiện đang thử cái này. Tôi chưa bao giờ vá bất cứ điều gì trước đây vì vậy đây là một chút kinh nghiệm học tập :)
n0pe

Tôi đã thử vá và tôi nhận được một lỗi kỳ lạ. patchdường như được treo Xin vui lòng xem bài viết của tôi cho mộtstrace
n0pe

1
Oouups xin lỗi về điều đó. Patch không đọc từ đối số bạn vượt qua nó, nó đọc từ stdin. Cập nhật bài viết của tôi, bạn cần patch -Np1 < patch.file.
Mat

Tôi đã có bản vá chính xác, cảm ơn. Tuy nhiên, một khi tôi đã thay đổi các thẻ của mình, được xây dựng lại dwmvà khởi động lại, thanh trạng thái của tôi về cơ bản sẽ biến mất (có vẻ như nó mất khoảng 5 pixel nhưng không có văn bản). Bản vá có thể làm hỏng một cái gì đó? Tôi không có bất kỳ bản vá nào khác trước cái này.
n0pe

2
Bạn đã sao chép / sử dụng lại config.h "gốc" của mình chưa? Nếu vậy, hãy chắc chắn rằng bạn cũng thay đổi fontmục. Các chuỗi chọn phông chữ X dường như không hoạt động với bản vá này. Hãy thử static const char font[] = "Sans 14";. (BTW, sử dụng Xnest để thử các thay đổi của bạn, tốt hơn nhiều so với khởi động lại máy tính để bàn của bạn mọi lúc.)
Mat
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.