Открыт ли .zshrc в X-сеансе? / Как выполнить сценарий при открытом сеансе X?

Вы можете использовать:

pr -t -2 file

Остерегайтесь, он обрезает строки, ширина которых превышает половину ширины страницы (72 символа по умолчанию, см. - w возможность изменить его).

(обратите внимание, что с реализацией GNU выравнивание столбцов может быть отключено, если файл содержит многобайтовые символы, символы нулевой или двойной ширины ). Или:

pr -t -2 -s file

, чтобы разделить столбцы одним символом табуляции, например paste (тогда усечения нет).

Обратите внимание, что pr обрабатывает символ перевода страницы ( ^ L ) как разделитель страниц. Не проблема, если этого символа нет в вашем файле.

Или с помощью zsh :

print -r -C2 -- ${(f)"$(
  • $ (: получить содержимое файла
  • (f) : разделить его в строке f символы eed (новая строка)
  • -r : print r aw
  • -C2 : в 2 C столбцах.

2
21.03.2016, 17:17
3 ответа

Обычно диспетчеры отображения X запускают сценарий оболочки / etc / X11 / Xsession , и этот сценарий создает или запускает сценарии из каталога ] /etc/X11/Xsession.d .

В семействе дистрибутивов Ubuntu (и, возможно, в других производных от Debian) один из стандартных файлов в этом каталоге является источником файла .xsessionrc в вашем домашнем каталоге, если он существует (он не , по умолчанию).

Если вы создаете этот файл, вы можете поместить в него соответствующие команды, включая поиск другого файла . * Rc или другую команду. В основном полезно устанавливать переменные среды для приложений, не являющихся оболочкой (то есть приложений, которые не работают в какой-либо эмуляции терминала).

Примечания:

  • В некоторых дистрибутивах источник .xsessionrc отсутствует. Вам следует проверить каталог /etc/X11/Xsession.d . Источник .xsessionrc пользователя обычно выполняется с помощью сценария /etc/X11/Xsession.d/40x11-common_xsessionrc . Если этот файл не существует, и никакой другой сценарий не является источником вашего .xsessionrc , вы всегда можете добавить свой собственный сценарий для его создания.
  • Оболочка, которая запускает / etc / X11 / Xsession , обычно называется / bin / sh - которая может быть или не быть символической ссылкой на вашу любимую оболочку. Вы должны проверить возможности этой оболочки. Например, использование [[] может не работать. . Команды и экспорт обычно безопасны.
2
27.01.2020, 22:11

.zshrc - это конфигурационный файл zsh. Он считывается при запуске интерактивного экземпляра zsh. Интерактивная оболочка - это оболочка, с которой вы взаимодействуете на терминале. Вход в систему с графическим интерфейсом не включает интерактивную оболочку (и, кстати, вообще не включает zsh в обычной системе).

.zshrc не может помочь вам с настройкой графического интерфейса. Он считывается, когда вы открываете эмулятор терминала, или когда вы входите в систему через текстовую консоль или по сети. Он никогда не читается в нужное время для того, что вы хотите сделать.

Не существует полностью переносимого способа запуска команды при открытии сеанса. Самый надежный способ - это использовать возможности программы запуска среды рабочего стола или оконного менеджера, если таковой имеется (в большинстве случаев). Это единственный способ, который не зависит от дистрибутива.

Если вы запускаете GUI с помощью startx, это приводит к выполнению вашего ~/.xinitrc, поэтому поместите команду туда.

Для входа в систему в графическом режиме, если вам нужен способ, не зависящий от DE/WM, то вам нужно будет предоставить несколько хуков в зависимости от дистрибутива. В зависимости от диспетчера дисплеев¹, от окружения рабочего стола (или менеджера сеансов, или менеджера окон) и от того, как ваш дистрибутив (или ваш системный администратор) настроил типы сеансов, может существовать или не существовать файл, в котором вы можете указать команды для выполнения при входе в систему в графическом интерфейсе.

  • Если вы входите в "пользовательскую сессию", то выполняется ~/.xsession only. Задача этого файла - запустить все, включая DE/SM/WM.
  • На некоторых конфигурациях читается ~/.xprofile.
  • На некоторых конфигурациях читается ~/.xsessionrc.

Если файл типа .xprofile или .xsessionrc выполняется слишком рано, вам может понадобиться прибегнуть к грязным трюкам, чтобы заставить ваш код выполняться позже. Проверьте скрипты в /etc/X11/Xsession.d или аналогичные. Это еще больше зависит от дистрибутива. И снова, самый простой и переносимый способ выполнения кода при входе в систему с графическим интерфейсом и способ, который будет выполняться после всех системных вещей, - это объявить команду запуска вашему оконному менеджеру или среде рабочего стола. На самом деле, основная причина использования сценария, который подключается к сценарию запуска системной сессии, заключается в том, чтобы ваш код выполнялся раньше, например, потому что вы хотите изменить способ вызова WM/DE.

¹ Диспетчер дисплея - это программа, которая запрашивает ваш пароль при входе в систему в графическом режиме.

0
27.01.2020, 22:11

Я не уверен, что вы понимаете под "session open", но файл .xxxrc для конкретной оболочки вызывается (согласно POSIX) всякий раз, когда запускается интерактивная оболочка.

Это верно как для оболочки входа, так и для вложенной оболочки в текущем сеансе.

0
27.01.2020, 22:11

Теги

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