Как программно узнать путь к рабочему столу (в linux вообще и в убунте в частности)

Модератор: Модераторы разделов

DTF
Сообщения: 98

Как программно узнать путь к рабочему столу

Сообщение DTF »

Здравствуй, форум.
Вот возник у меня вопрос, написанный в заголовке.

Имеется убунта 10.10, в ней есть файл ~/.config/user-dirs.dirs вот такого вида:

Код: Выделить всё

# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Рабочий стол"
XDG_DOWNLOAD_DIR="$HOME/Загрузки"
XDG_TEMPLATES_DIR="$HOME/Шаблоны"
XDG_PUBLICSHARE_DIR="$HOME/Общедоступные"
XDG_DOCUMENTS_DIR="$HOME/Документы"
XDG_MUSIC_DIR="$HOME/Музыка"
XDG_PICTURES_DIR="$HOME/Картинки"
XDG_VIDEOS_DIR="$HOME/Видео"


но переменная окружения с названием XDG_DESKTOP_DIR отсутствует :(

Как идеологически правильно вычислять каталог рабочего стола?
Парсить этот файл? Или есть какие-то специальные утилиты и/или библиотеки?
(мне этот каталог нужен в программе на С++, так что библиотек апредпочтительнее :)

И подскажите, как обстоят дела в других популярных дистрибутивах? В них тоже
для хранения "стандартных"путей используется пакет xdg-user-dirs?
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Как программно узнать путь к рабочему столу

Сообщение Rootlexx »

Можно воспользоваться командой xdg-user-dir:

Код: Выделить всё

xdg-user-dir DESKTOP

Подробности в man xdg-user-dir.
Насчёт библиотеки не уверен, но посмотрите на эту: http://www.ohloh.net/p/libxdg-basedir.
Спасибо сказали:
gambot
Сообщения: 2
ОС: AntergOS

Re: Как программно узнать путь к рабочему столу

Сообщение gambot »

Rootlexx писал(а):
26.12.2010 01:14
Можно воспользоваться командой xdg-user-dir:

Код: Выделить всё

xdg-user-dir DESKTOP

Подробности в man xdg-user-dir&category=8.
Насчёт библиотеки не уверен, но посмотрите на эту: http://www.ohloh.net/p/libxdg-basedir.


А в приведённой команде уверен?
Иными словами: предлагается системе сообщить что рабочий стол будет теперь называться DESKTOP!
Проблему конкретного скрипта - это решает. Мы теперь знаем имя рабочего стола!!! :v:
Но то, что остальные ссылки на рабочий стол перестанут работать - факт.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Как программно узнать путь к рабочему столу

Сообщение NickLion »

Команда xdg-user-dir DESKTOP ничего не меняет, а просто возвращает текущий путь рабочего стола.
Спасибо сказали:
gambot
Сообщения: 2
ОС: AntergOS

Re: Как программно узнать путь к рабочему столу

Сообщение gambot »

NickLion писал(а):
01.03.2016 14:50
Команда xdg-user-dir DESKTOP ничего не меняет, а просто возвращает текущий путь рабочего стола.


Спасибо. Тоже уже разобрался. Был не прав. Только так и не понял как этот текущий путь забить в переменную?
Команда xdg-user-dir DESKTOP > $rabochiy возвращает bash: $rabochiy: ambiguous redirect
А вот как её сконкретизировать - пока ищу.
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Как программно узнать путь к рабочему столу

Сообщение bormant »

Почитайте как минимум man bash. Еще лучше ABS (не вместо, но в дополнение к).

rabochiy="$(xdg-user-dir DESKTOP)"
Спасибо сказали: