LINUX.ORG.RU

Как настроить XDG environment variables?

 , ,


0

2

Не могу понять куда и главное как правильно прописать XDG значения. Сейчас у меня вот такие записи.

---- ~/.zshenv ----
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export XDG_STATE_HOME="$HOME/.local/state"
---- /etc/environment ----
XDG_CONFIG_DIRS=/etc/xdg 
XDG_DATA_DIRS=/usr/share

Как это правильно записать? и где оно должно храниться?

XDG_DATA_HOME/applications
XDG_DATA_DIRS/applications
XDG_DATA_HOME/fonts
XDG_DATA_DIRS/fonts
XDG_DATA_DIRS/icons

у меня есть директории для application

~/.local/share/applications
/usr/local/share/applications
/usr/share/applications

для icons

/usr/share/icon
/usr/share/pixmap

Суть такова, что я не знаю как правильно прописать значения и куда именно. + У меня к примеру tint2 не отображает иконки некоторых приложений хотя они есть, т.е. как будто он даже не знает где ему эти иконки смотреть. + Почему-то от приложения к приложению возникают какие-то нюансы куда впихнуть свой desktop file. Куда хотят, туда и пихают свою иконку а потом он не находится.

p.s. я гуглил, пытался понять чужие дотфайлы, пытался вникнуть в офф доки xdg, но все тщетно.



Последнее исправление: cetjs2 (всего исправлений: 2)

Переменные окружения инициализируются в ~/.profile (если у тебя баш, то можно в ~/.bash_profile).

Большинство переменных можно вообще не инициализировать, т. к. ты присваиваешь им те значения, которые будут использоваться по умолчанию.

Почему-то от приложения к приложению возникают какие-то нюансы куда впихнуть свой desktop file. Куда хотят, туда и пихают свою иконку а потом он не находится.

Во-первых, задавай вопросы по конкретным приложениям. Во-вторых, если приложение кривое и пихает иконки куда не попадя, то с чего ты взял что это кривое приложение будут уважать XDG Base Directory Specification?

Конкретно по tint2 ничего не скажу — я им не пользуюсь.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 3)

При использовании xinit можешь прописать в нём либо source профайла (не помню где там у zsh он находится), либо явно прописать export нужных переменных — все приложения, запущенные в иксах, унаследуют их.

mord0d ★★★★★
()
Ответ на: комментарий от debugger

Где переменные инициализируеются мне понятно и в каких файлах можно их прописывать тоже немного понятно…. Тут вопрос в том «как лучше» и «как надо». Если приложение уважает xdg директории, но они не прописаны «жестко», то файлы свои оставляет по пути который являтся «стандартным» , но у «стандартного пути» есть же и дополнительная директория. Как вот здесь например

~/.local/share/applications
/usr/local/share/applications
/usr/share/applications

у меня почему-то 99% приложений оставляют свои desktop файлы в /usr/share/applications, но и другие директории есть. в ~/.local/share/applications был один файл firefox с комменатрием как альтернатива. Т.е. приложение «нагадило» и создало директорию под себя на всякий случай. И если директории не прописаны жестко, то образуется мусорка и не понятно что и откуда. И не понятно как лучше чтобы это было. Т.е. чтобы устанавливалось в «пользовательские директории» или «на всю систему»

По части иконок. Если приложение уважает xdg и обращается к этим директориям(которые у меня не заданы), то значит оно и не знает где искать иконки ? Точнее знает, но ищет их по какому-то «стандартному» пути. Многие десктоп файлы прописывают просто icon=urxvt. Но например nvidia пишет в своих десктоп файлах icon=/usr/share/pixmaps/nvidia-settings.svg.

На чьих плечах лежит задача найти иконку urxvt которая без пути ?(а терминал имеет свой png файл в pixmaps) Я так понимаю это зависит от конкретного приложения задача которого отображать эти иконки ?в данном случае tint2 который «условно» уважает xdg. Но его поиски иконки ограничиваются как мне кажется отсутствием нужных export в переменных среды.

Как правильно прописать вот эти переменные ? Синтаксис написание каков ? Я не могу понять, как задавать путь под applications, fonts,icons :(

XDG_DATA_HOME/applications
XDG_DATA_DIRS/applications
XDG_DATA_HOME/fonts
XDG_DATA_DIRS/fonts
XDG_DATA_DIRS/icons
kambulya999
() автор топика
Ответ на: комментарий от kambulya999

у меня почему-то 99% приложений оставляют свои desktop файлы в /usr/share/applications…

Как ты их устанавливаешь? Если пакетным менеджером, то это нормально. (Я без понятия какой в voidlinux пакетный менеджер.)

в ~/.local/share/applications был один файл firefox с комменатрием как альтернатива. Т.е. приложение «нагадило» и создало директорию под себя на всякий случай.

Файл в ~/.local/share/applications мог создать кто угодно, не только ff. Например, какая-нибудь прога для редактирования десктоп-файлов. Тебе, как юзеру, писать в /usr/share/applications запрещено, поэтому логично сохранять твои персональные изменения в ~/.local/share/applications.

Если приложение уважает xdg и обращается к этим директориям(которые у меня не заданы), то значит оно и не знает где искать иконки ? Точнее знает, но ищет их по какому-то «стандартному» пути.

Это бессмысленный абстрактный разговор про абстрактное приложение.

Как, по идее, должно быть, можно найти в спеках:

Алгоритм поиска иконок — в третьем документе. Как эти спеки реализованы в каждом конкретном приложении — это отдельный вопрос.

Как правильно прописать вот эти переменные ? Синтаксис написание каков ?

С одной стороны, ты знаешь слово «синтаксис». С другой стороны, ты задаёшь такие дурацкие вопросы. Я не в курсе какой шелл ты пользуешь. В sh один синтаксис, в csh — другой, в твоём шелле может быть один их этих двух или третий…

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 2)
Ответ на: комментарий от debugger

С одной стороны, ты знаешь слово «синтаксис». С другой стороны, ты задаёшь такие дурацкие вопросы. Я не в курсе какой шелл ты пользуешь. В sh один синтаксис, в csh — другой, в твоём шелле может быть один их этих двух или третий…

Верно, это дурацкий вопрос, но я не знаю как прописать export для XDG_DATA_HOME/applications если у меня уже прописан export XDG_DATA_HOME=«$HOME/.local/share»

у меня zsh.

kambulya999
() автор топика
Ответ на: комментарий от kambulya999

Верно, это дурацкий вопрос, но я не знаю как прописать export для XDG_DATA_HOME/applications если у меня уже прописан export XDG_DATA_HOME=«$HOME/.local/share»

Правильный ответ: Никак.

There is a single base directory relative to which user-specific data files should be written. This directory is defined by the environment variable $XDG_DATA_HOME.

(Жирный шрифт — мой.) Засунуть более одного каталога в XDG_DATA_HOME нельзя.

debugger ★★★★★
()
Ответ на: комментарий от kambulya999

Получается достаточно чтобы был указан основной путь.

Гм, хз что ты имеешь ввиду под «основным» путём. Спека говорит, что XDG_DATA_HOME — это первый каталог, где приложение должно искать файлы данных. Если файл не найден в XDG_DATA_HOME, надо продолжать поиск в каталогах, перечисленных в XDG_DATA_DIRS. Сохранять файлы данных приложению нужно только в XDG_DATA_HOME.

Из перечисленных тобой в самом начале переменных, только твоя XDG_DATA_DIRS имеет неканоничное значение:

XDG_DATA_DIRS=/usr/share

Её значение по-умолчанию — /usr/local/share:/usr/share. Как ты устанавливал свой tint2? Из пакета или компилял сам? Если компилял сам, то он установится с префиксом /usr/local/share, этого каталога нет в XDG_DATA_DIRS, и твой десктоп не сможет найти иконку.

Короче, стирай все свои переменные кроме XDG_RUNTIME_DIR. Я без понятия в какой момент времени твой zsh читает .zshenv, поэтому просто ребутни систему после удаления лишних переменных.

debugger ★★★★★
()
Ответ на: комментарий от debugger

с xdg вроде как разобрался. Я ещё побегал по разным дотфайлам людей. Всё как надо поставил. Сейчас думаю, что у меня что-то не так с GTK… 0 конфигов к нему. 0 понятных руководств.. Тёмный лес.

kambulya999
() автор топика
Ответ на: комментарий от Roy-Batty

Странно, что я мимо арчвики прошел…Но в целом - да, все + - есть. Поставил lxappearance и все как надо настроилось. Поставил тему, все нормально. Прошло пару дней, не помню что делал…Тема осталась такой же, а приложение вдруг начало её инорировать. Какие-то чудеса.

kambulya999
() автор топика
Ответ на: комментарий от kambulya999

не помню что делал…

Вот так и бывает. Без конкретики непонятно. Предположу, что изменились ~/.gtkrc-2.0 и (или) ~/.config/gtk-3.0/settings.ini

dmitry237 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.