Desktop linux как запустить

Обновлено: 05.07.2024

Если вы запустили систему в текстовом режиме или вовсе это сервер и на нём надо работать только через терминал, но на нём уже есть установлено графическое окружение, есть несколько способов его запустить.

В этой статье мы постараемся разобраться как запустить графическую оболочку Ubuntu из терминала несколькими способами.

Запуск графической оболочки Ubuntu

Сначала можно посмотреть текущий уровень запуска в systemd. Для этого выполните:

systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1

sudo systemd isolate graphical.target

После этого уровень запуска будет изменён на графический и графическая оболочка запуститься автоматически. Если вам нужно запустить менеджер входа вручную выполните такую команду:

sudo systemctl start display-manager

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

С более простыми графическими оболочками, вроде Openbox, Fluxbox, i3wm и даже XFCE может сработать ещё один метод, очень популярный ранее. Это команда startx. Однако чтобы она сработала в файле

/.xinitrc надо прописать оболочку, которую вы хотите запустить. Например:

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
feh --bg-fill

/Загрузки/52453-sklon_holm_cerkvushka_sneg.jpg &
lxpanel &
exec openbox-session

Блок if загружает все конфигурационные файлы из каталога /etc/X11/xinit*, сторчка, начинающаяся с feh добавляет фон рабочего стола, следующая - нижнюю панель, а последняя запускает сам openbox. Теперь запуск графической оболочки Ubuntu из консоли выполняется командой:

Или если, на первом экране уже что-то запущено, можно использовать любой другой доступный, например, второй:


Обратите внимание, что оболочку можно запустить только из консоли TTY, из терминала в графическом окружении это не сработает. Как видите, всё просто. Ваша оболочка запуститься в том же терминале, в котором вы выполнили startx.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Из того, что я могу собрать, .desktop файлы - это ярлыки, которые позволяют настраивать параметры приложения. Например, у меня их много в моем /usr/share/applications/ папка.

Если я открою эту папку в nautilus Я могу запустить эти приложения, просто дважды щелкнув соответствующий файл, например, дважды щелкнув firefox.desktop запускает Firefox Тем не менее, я не могу найти способ сделать то же самое через терминал.

Это мой вопрос, как я могу запустить foo.desktop файл с терминала?

Команда, которая запускается, содержится в файле рабочего стола, которому предшествует Exec= так что вы можете извлечь и запустить это:

Чтобы сломать это

Вы можете положить это в файл, скажем,

/bin/deskopen с содержанием

Затем сделайте его исполняемым

И тогда вы могли бы сделать, например,

Ответ должен быть

Но из- за ошибки это больше не работает.

С любой недавней Ubuntu, которая поддерживает gtk-launch просто иди

gtk-launch <file> где имя файла.desktop без .desktop часть

Так gtk-launch foo открывает foo.desktop

.Desktop должен находиться в / usr / share / Applications, / usr / local / share / application или

/.local / share / Applications (очевидно, вы можете использовать.desktop, если хотите.

Используется из терминала или alt+F2 (команда alt + F2 хранит историю, поэтому легко доступна)

На сегодняшний день (12.10) ошибка все еще присутствует. На самом деле это зависит от того, как gvfs-open (вызывается xdg-open ) работает.

Тем не менее, мне удалось быстро обойти (украсть вдохновение из исходного кода nautilus). Это немного запутанно, но работает безупречно на Ubuntu 12.10, добавляя значащий значок (не более ? ) на пусковой установке Unity.

Во-первых, я написал скрипт на Python с использованием Gio и поместил его как

Сценарий должен иметь разрешение на выполнение, поэтому я запустил его в терминале:

Затем я создал родственник .desktop запись на

Наконец, я связал запись как обработчик по умолчанию в

/.local/share/applications/mimeapps.list под [Default Applications] раздел как:

Это будет бесполезная работа, когда gvfs-open решит ошибку, а пока.

Вы действительно должны использовать gtk-launch если это доступно. Обычно это часть пакета libgtk-3-bin (это может отличаться в зависимости от дистрибутива).

gtk-launch используется следующим образом:

Обратите внимание, что gtk-launch требует установки файла .desktop (т.е. находится в /usr/share/applications или же

Таким образом, чтобы обойти это, мы можем использовать маленькую хакерскую функцию Bash, которая временно устанавливает нужный файл .desktop перед его запуском. "Правильный" способ установки файла .desktop - через desktop-file-install но я собираюсь игнорировать это.

Вы можете использовать его следующим образом (а также передавать дополнительные аргументы или URI, если хотите):

Если вы хотите вручную проанализировать и выполнить файл .desktop, вы можете сделать это с помощью следующего awk команда:

Вышеупомянутые команды будут:

  1. Найти строку, начинающуюся с Exec=
  2. Удалить Exec=
  3. Удалите все переменные Exec (например, %f , %u , %U ). Их можно заменить позиционными аргументами, как это предусмотрено в спецификации, но это может значительно усложнить проблему. См. Последнюю спецификацию входа на рабочий стол.
  4. Выполнить команду
  5. Немедленно завершите работу с соответствующим кодом выхода (чтобы не выполнять несколько строк Exec)

Обратите внимание, что этот сценарий AWK обращается к нескольким крайним случаям, которые могут или не могут быть должным образом учтены в некоторых других ответах. В частности, эта команда удаляет несколько переменных Exec (стараясь не удалять символ% в противном случае), будет выполнять только одну строковую команду Exec и будет вести себя, как ожидается, даже если строковая команда Exec содержит один или несколько знаков равенства (например, script.py --profile=name ).

Еще несколько предостережений. Согласно спецификации, TryExec это:

Путь к исполняемому файлу на диске, который используется для определения, установлена ​​ли программа на самом деле. Если путь не является абсолютным, файл ищется в переменной среды $PATH. Если файл отсутствует или не является исполняемым, запись можно игнорировать (например, не использовать в меню).

Имея это в виду, не имеет смысла выполнять его значение.

Некоторые другие проблемы - Путь и Терминал. Путь состоит из рабочего каталога, в котором запускается программа. Terminal - логическое значение, указывающее, выполняется ли программа в окне терминала. Все это может быть решено, но нет смысла изобретать велосипед, поскольку уже есть реализации спецификации. Если вы хотите реализовать Path, имейте в виду, что system() порождает подпроцесс, поэтому вы не можете изменить рабочий каталог, выполнив что-то вроде system("cd \047" working_directory "\047"); system(command) , Однако вы могли бы предположительно сделать что-то вроде system("cd \047" working_directory "\047 && " command) , Примечание \047 - одинарные кавычки (поэтому команда не разбивается на пути с пробелами).

Я краду страницу у Карло, который предложил создать скрипт Python для использования модуля gi. Вот минимальный способ выполнить тот же код из оболочки без необходимости создавать файл и беспокоиться о вводе / выводе.

Затем выполните функцию запуска следующим образом:

Обратите внимание, что использование URI необязательно. Кроме того, проверка ошибок не выполняется, поэтому вы должны убедиться, что модуль запуска существует и доступен для чтения (перед его использованием), если вы хотите, чтобы ваш сценарий был надежным.

Из того, что я могу собрать, файлы .desktop - это ярлыки, которые позволяют настраивать настройки приложения. Например, у меня их много в папке /usr/share/applications/.

Если я открою эту папку в nautilus, я могу запустить эти приложения, просто дважды щелкнув соответствующий файл, например. двойной щелчок firefox.desktop запускает Firefox. Однако я не могу найти способ сделать то же самое через терминал.

Это мой вопрос, как я могу запустить файл foo.desktop с терминала?

Ответ должен быть

Но из-за ошибки это больше не работает.

WoW это все еще ошибка, много прогресса в xdg. exo-open указан как обходной путь, и он также открывает gedit. :( – Drew 17 October 2011 в 22:59 @RichardHolloway: gnome-open делает не называть xdg-open, это наоборот! Таким образом, проблема заключается в gvfs-open (преемник или gnome-open) – MestreLion 23 May 2013 в 05:46 " больше не работает & quot ;? Этого никогда не было! xdg-open работает с помощью ассоциации mimetype, а файлы .desktop связаны с текстовыми редакторами, поскольку они являются подклассом текста – MestreLion 23 May 2013 в 05:47 это настолько глупо (что нет разумного способа запуска файла Desktop из терминала) – Sam Watkins 21 June 2014 в 09:23

С любым недавним ubuntu, который поддерживает gtk-launch, просто перейдите в

gtk-launch <file> где имя файла .desktop без части .desktop

Итак gtk-launch foo открывает foo.desktop

Если <file> не находится в /usr/share/application или месте, где вы выполняете gtk-launch, команда gtk-launch <file> <uri>. (gtk-launch документация)

Используется с терминала или alt + F2 (alt + F2 сохраняет команду в истории так легкодоступной)

/ .local / share / applications / запускает firefox , просматривая каталог

/ .local / share / applications / для меня. Кажется, что если вы были правы, firefox не должен был передавать каталог файла .desktop в качестве аргумента. На самом деле каталог, переданный в gtk-launch, не должен использоваться для поиска директории, содержащей файл .desktop (и на самом деле это не так) – Croad Langshan 28 February 2015 в 20:35

На сегодняшний день (12.10) ошибка все еще присутствует. Это действительно зависит от того, как работает gvfs-open (называемый xdg-open).

Тем не менее, мне удалось быстро обходное решение (крадущее вдохновение из исходного кода Nautilus). Это немного запутанно, но безупречно работает на Ubuntu 12.10, добавив значащую иконку (не более ?) в Unity launcher.

Сначала я написал скрипт python с помощью Gio и поместил его в качестве

Скрипт должен иметь разрешение на выполнение, поэтому я запустил его в терминале:

Затем я создал относительную запись .desktop на

Наконец, я связал запись как обработчик по умолчанию в

/.local/share/applications/mimeapps.list в разделе [Default Applications] как:

xdg-open something.desktop работает так, как ожидалось, [hashbang] поверх исполняемого файла рабочего стола тоже

Это будет бесполезная работа, когда gvfs-open решит ошибку, но в тем временем .

Это работает лучше, чем ответ Хэмиша Даунера , поскольку он будет иметь дело с несколькими параметрами Exec= и % в команде правильно. – Flimm 11 January 2013 в 15:31 +1. Это единственный ответ, который не требует ручного анализа файла .desktop, поэтому это самый разумный (и безопасный) подход. Также использует современные gi.repository вместо устаревших pygtk, так здорово! :) – MestreLion 23 May 2013 в 05:39 На самом деле, это вопрос, связанный с ответом Карло Пеллегрини. Я новичок, пожалуйста, исправьте меня, если есть лучший способ разместить его. Скрипт работает очень хорошо, но значок, который я нахожу в Unity, не является значком, определенным в файле .desktop, но значок по умолчанию команды Exec'ed. Есть идеи по этому поводу? – Ingo Leonhardt 24 May 2013 в 19:23 @Noitidart напишите последний ответ, который привел mo, чтобы сделать некоторые google, и я нашел , что . Не проверял, но, возможно, это помогает – Ingo Leonhardt 5 March 2015 в 16:36

Вы действительно должны использовать gtk-launch, если он доступен. Обычно это часть пакета libgtk-3-bin (это может варьироваться в зависимости от дистрибутива).

gtk-launch используется следующим образом:

Обратите внимание, что gtk-launch требует установки файла .desktop (т.е. находится в /usr/share/applications или

Итак, чтобы обойти это, мы можем использовать хакерскую маленькую функцию Bash, которая временно устанавливает желаемый [d5 ] .desktop перед запуском. «Правильный» способ установить файл .desktop через desktop-file-install, но я проигнорирую это.

Вы можете использовать его так же (а также передать дополнительные аргументы или URI если вы хотите):

Если вы хотите вручную разобрать и выполнить .desktop файл, вы можете сделать это со следующей командой awk:

Вышеупомянутые команды будут:

Найти строка, начинающаяся с Exec = Удалить Exec = Удалить любые переменные Exec (например, %f, %u, %U). Их можно заменить позиционными аргументами, как это предусмотрено спецификацией, но это может значительно усложнить проблему. См. Последнюю спецификацию рабочего стола. Выполнение команды Немедленно выйдите с соответствующим кодом выхода (чтобы не выполнять несколько строк Exec)

Обратите внимание, что этот AWK-скрипт обращается к нескольким краевым случаям, которые могут быть или не быть надлежащим образом устранены некоторыми другими ответы. В частности, эта команда удаляет несколько переменных Exec (если не удалять символ%), будет выполняться только одна команда линии Exec и будет вести себя как ожидалось, даже если команда линии Exec содержит один или больше знака равенства (например, script.py --profile=name).

Просто несколько других предостережений . Согласно спецификации, Exec :

Путь к исполняемый файл на диске, используемый для определения того, действительно ли программа установлена. Если путь не является абсолютным путем, файл просматривается в переменной среды $ PATH. Если файл отсутствует или если он не является исполняемым, запись может быть проигнорирована (например, не используется в меню).

Имея это в виду, нет смысла исполнять его значение.

Некоторые другие проблемы - это Path и Exec . Путь состоит из рабочего каталога для запуска программы. Терминал - это логическое значение, указывающее, запускается ли программа в окне терминала. Все это можно решить, но нет смысла изобретать колесо, поскольку уже есть реализация спецификации. Если вы хотите реализовать Path, имейте в виду, что system() создает подпроцесс, поэтому вы не можете изменить рабочий каталог, выполнив что-то вроде system("cd \047" working_directory "\047"); system(command). Однако вы могли бы сделать что-то вроде system("cd \047" working_directory "\047 && " command). Примечание. \ 047 - одинарные кавычки (поэтому команда не разбивается на пути с пробелами).

Я краду страницу у Карло, которая предложила создать скрипт Python для использования модуля Path . Вот минимальный способ выполнить один и тот же код из оболочки без необходимости создавать файл и беспокоиться о вводе / выводе.

Затем выполнить функцию запуска следующим образом:

Обратите внимание, что использование URI не является обязательным. Кроме того, проверка ошибок не выполняется, поэтому вы хотите убедиться, что пусковая установка существует и доступна для чтения (перед ее использованием), если вы хотите, чтобы ваш скрипт был долговечным.

Допустим, у меня по умолчанию в качестве текстого редактора используется Geany. Если я в терминале наберу xdg-open something.desktop , то файл откроется в Geany, но мне нужно чтобы он запускался!

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

Мне нужно как-то перенести Geany из разряда "Приложение по умолчанию" в разряд "Связанные приложения", а приложением по умолчанию назначить команду запуска. Подскажите пожалуйста, как это сделать?

открыть с помощью


66k 154 154 золотых знака 66 66 серебряных знаков 203 203 бронзовых знака 2,566 1 1 золотой знак 14 14 серебряных знаков 28 28 бронзовых знаков

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

для начала надо уметь извлечь из desktop-файла имя программы (оно указывается в строке, начинающейся с exec= ):

с помощью такого скрипта:

сохраните его под произвольным именем (например, deskopen ) в каком-нибудь из каталогов, перечисленных в переменной окружения $PATH (например, в /usr/local/bin ) и присвойте биты исполнимости ( $ chmod +x /путь/к/файлу ).

теперь desktop-файлы можно «запускать» с помощью этого скрипта:

теперь надо создать desktop-файл, служащий «обёрткой» для вызова этого скрипта:

для использования только текущим пользователем его надо поместить под именем deskopen.desktop в каталог

в том же каталоге (

/.local/share/applications ) эту ассоциацию — между mime-типом application/x-desktop и созданной на предыдущем шаге «обёрткой» надо сделать «умолчальной». в один из файлов — defaults.list или mimeapps.list — добавьте в секцию [Default Applications] строку:

если ни одного из этих двух файлов не существовало — создайте любой из них. тогда он будет выглядеть так:

всё. теперь команда

будет запускать упомянутую в этом файле программу, а не редактор для редактирования этого файла.

соответственно, и «файловые менеджеры» будут вести себя аналогично при «щелчке» по такому файлу.

Читайте также: