заставить ресурс применяться к обоим классам XTerm и UXTerm

Если я правильно понимаю сценарий, ваш BIOS не находит действительное загрузочное устройство/раздел при включении компьютера без флэш-накопителя YUMI. Похоже, -off звучит так, будто в вашей таблице разделов не установлена ​​действительная загрузочная запись, которая, поскольку вы упомянули UEFI, я предполагаю, что это GPT.

Поскольку вы можете загружаться с флешки, с терминала вы сможете проверить/переустановить загрузчик (установить флаг загрузки )на загрузочный раздел. Чтобы проверить наличие загрузочного флага, вы можете указать букву диска с помощью следующей команды:

file -Ls /dev/xvdX

Вы можете использовать ту же команду для любого раздела, и вы должны увидеть GRUB, например, для вашего загрузочного раздела.

Затем переустановите GRUB с помощью следующих команд:

grub-install /dev/xvdX
update-grub

Упомянутые выше команды необходимо выполнять с привилегиями root.

1
28.07.2020, 22:18
2 ответа

Подстановочные знаки не работают в X-ресурсах, так как вы можете использовать выражения glob в оболочке. Это больше похоже на многоточие "...", заменяющее ноль или более уровней иерархии виджетов.

Если вы исключите имя класса, используя только *scrollBar:true, это будет применяться как к xterm, так и к uxterm (, а также к любому другому приложению, использующему это имя ресурса ).

2
18.03.2021, 23:16

Если вы хотите иметь несколько конфигураций XTerm и выбирать одну из них во время вызова, вы можете использовать один класс и несколько имен экземпляров:

XTerm.VT100.background: Black
XTerm.VT100.scrollBar: true
light.VT100.background: White

С этими определениями xterm -name lightимеет белый фон и полосы прокрутки. Таким образом вы можете получить два уровня конфигурации, но если вы хотите три уровня, это не поможет.

В этом конкретном случае вы могли бы использовать

?.VT100.background: Black
Light.VT100.background: White

, потому что на практике xterm — единственное приложение с виджетом VT100.

Как правило, вы не можете сделать это, используя только базовый синтаксис ресурсов X. Подстановочные знаки соответствуют компонентам, а не отдельным символам внутри компонентов. *XTermозначает «XTermна любом уровне иерархии», а не «любое имя, оканчивающееся на XTerm».

Решение состоит в том, чтобы полагаться на препроцессор .xrdb(утилита, которая загружает ресурсы X ), по умолчанию использует препроцессор C (cpp). К сожалению, cpp не очень удобен для синтаксиса X-ресурса. В частности, у вас не может быть разрыва строки в расширении макроса cpp, поэтому вы не можете определить макрос для расширения до нескольких ресурсов X. Однако вы можете решить свою проблему с cpp, используя включаемые файлы. Поместите общие определения для XTermи UXTermв отдельный файл xterm-common.Xresources. В вашем основном файле .Xresourcesвключите xterm-common.Xresourcesдважды, по одному разу для каждого имени класса.

#include ".config/x11/xterm-common-Xresources"
#define XTerm UXTerm
#include ".config/x11/xterm-common-Xresources"
#undef XTerm
XTerm.font: my XTerm font
UXTerm.font: my UXTerm font

Я использую m4 для предварительной обработки моих X-ресурсов. Это означает, что я не могу полагаться на загрузку по умолчанию ~/.Xresources:. Я вызываю xrdb -cpp m4 ~/path/to/my/Xresourcesявно из моего .xinitrcили .xsession. У меня есть код для применения некоторых ресурсов как для XTerm, так и для UXTerm:

.
define(`XTERM_class_settings', `
  …

') dnl end of `XTERM_class_settings'

XTERM_class_settings
define(`XTerm', `UXTerm')
XTERM_class_settings
undefine(`XTerm')
2
18.03.2021, 23:16

Теги

Похожие вопросы