Create a .desktop file that opens and execute a command in a terminal
I would like to know how to write the Exec command of a .desktop file to open a new terminal and execute a shell script in it. The shell script is working and accessible by all users. When launching the script from the terminal everything works, but it doesn’t when trying to launch the script from a .desktop file. Here are some combinations I have already tried:
Exec=gnome-terminal -x sh -c 'echo hello' Exec=sh -c 'gnome-terminal echo hello' Exec=sh -c 'echo hello' Exec=echo hello
5 Answers 5
The content of your desktop file should look like (see how to create a .desktop file using a text editor):
[Desktop Entry] Version=1.0 Name=Test Comment=Test the terminal running a command inside it Exec=gnome-terminal -e "bash -c 'echo hello;$SHELL'" Icon=utilities-terminal Terminal=false Type=Application Categories=Application;
[Desktop Entry] Version=1.0 Name=Test Comment=Test the terminal running a command inside it Exec=bash -c 'echo hello;$SHELL' Icon=utilities-terminal Terminal=true Type=Application Categories=Application;
In the first case, the Terminal field is set to false (perhaps contrary to your expectations) and in second case is set to true , but the result is in both cases the same.
It worked for me , however i want to launch a command with sudo , then when use launcher created it opens terminal asking-me for password . How do i launch a command and prevent this behavior ?
@EliasAlves A bit late, but for anyone else reading this: you cannot expect to run commands that require root privileges without being required to authenticate yourself. (Unless you explicitly configure your system to do that, which is generally a bad idea.)
I think the question is: how to make sure the terminal appears so that the terminal doesn’t disappear so that we can enter the credentials
!#/bin/bash gnome-terminal -e YOUR_COMMANDS
Make the above file. Don’t forget to sudo chmod +x filename.sh
The problem with this solution is, that the terminal disappears immediately and a user is not capable to enter something.
at the end of your commands.
Like for me snapd isn’t something using full bandwidth of system to refresh snaps anytime almost I work at night.
So this worked for me to create a .sh file linked to a .desktop file.
Contents for .sh file were
echo | sudo -S systemctl stop snapd.service sudo systemctl disable snapd.service;$SHELL
-S in the first line of the .sh file is used to send STDINPUT to the sudo command meaning direct execute without entering password.
Contents for the .desktop file were:
[Desktop Entry] Version=1.0 Name=Test Comment=Test the terminal running a command inside it Exec=gnome-terminal -e "/scripts/disable_snap.sh" Icon=terminal Terminal=true Type=Application Categories=Application;
[Desktop Entry] Version=1.0 Name=Hello Exec=sh -c 'echo hello; $SHELL' Icon=utilities-terminal Terminal=true Type=Application
As stated in desktop entry specification, Terminal=true tells the launcher to launch your script in a terminal window. The chosen Terminal Emulator depends on your default applications settings and Desktop Environment. In GNOME, it is gnome-terminal, in KDE, it is Konsole. (Without DE, in plain WM there is a bug in xdg-open, and Terminal=true just ignored, see issue)
You need this line to run your script and launch a shell after it.
Exec=sh -c 'echo hello; $SHELL'
- sh -c ‘COMMAND’ run the «sh» binary found in $PATH which executes COMMAND (on many systems, sh is the symbolic link to bash , but for portability «sh» is prefered)
- echo hello; $SHELL does two things. First, it runs echo hello and then, after the execution of this command, launches $SHELL.
If you will not add some command that waits for you to exit, a terminal emulator will just run your program and exit.
P.S. If you just want not to close your terminal, you can do
Exec=sh -c 'echo hello; sleep 5'
(read will wait for you to press Enter, sleep will just wait 5 seconds)
P.P.S $SHELL probably will be the same as last section in /etc/passwd in line with your user.
The value for $HOME, $USER, $SHELL, $PATH, $LOGNAME, and $MAIL are set ac‐ cording to the appropriate fields in the password entry.
LibreBay
Статьи про ОС Ubuntu. Языки программирования Си и C++.
Инструменты разработки и многое другое.
пятница, 19 апреля 2019 г.
Как запустить на выполнение desktop-файл в Ubuntu
Кто следит за развитием Gnome, знают как сильно они любят выпиливать возможности. Убрали возможность размещения пиктограмм на рабочем столе. Затем через несколько месяцев удалили возможность запуска исполняемых файлов. Это лишь пара примеров.
Дистрибутив Ubuntu, после отказа от Unity, перешел на Gnome 3. Разработчики Ubuntu выбрали путь активного использования расширений для Gnome. С помощью которых, приблизили внешний вид графической оболочки к Unity и добавили многие удаленные полезные возможности.
В Ubuntu 19.04 я столкнулся, что файловый менеджер никак не хотел запускать программу через desktop-файл. Выпили ли эту возможность в Gnome 3, включено ли расширение в состав Ubuntu возвращающее запуск программ, я затрудняюсь ответить. Но полазив по настройкам, у меня получилось всё таки запустить desktop-файл.
Запуск desktop-файла
Запускал я tor браузер. И чтобы это сделать, я выполнил два действия.
В начале зашел в настройки desktop-файл и во вкладке Правка установил галочку Разрешить выполнение файла как программы.
Рис.1. Разрешить выполнение файла как программы. |
Затем в параметрах файлового менеджера nautilus, во вкладке Поведение для Исполняемых текстовых файлов выбрал Запустить.
Рис.2. Запуск исполняемых текстовых файлов. |
Запускаем desktop файлы в Gnome 3
Возможно вы уже встречались с файлами с расширением “.desktop”, это по сути ярлык, которы предназначен для запуска приложения. К примеру возьмем тот же браузер, его ярлык как раз и будет иметь расширение “.desktop”. Обычно эти ярлыки находятся в вашей Linux системе по следующему пути, для пользовательских приложений это – ~/.local/share/applications. А так же они могут находиться /usr/local/share/applications или /usr/share/applications для приложений установленных в системе. Стоит отметить, что пользовательские ярлыки имеют приоритет над системными. Если вы сталкивались с данным расширением, то, возможно для вас будет открытием то, что из Gnome была удалена возможность запуска по умолчанию исполняемых файлов. А это в свою очередь не даст вам запускать файлы с расширением “.desktop”, как бы печально это не было.
Запуск desktop-файла
И так, давайте все же разберемся как можно запускать данные файлы в операционной системе с окружением рабочего стола Gnome. Для примера, я возьму браузер TOR, о котором вы можете прочесть например на WIKI, если вдруг не в курсе, что это за браузер. И так, первым делом нажимаем на самом desktop файле правой клавишей мышки и выбираем “Свойства”:
Переходим во вкладку “Права” и ставим галочку напротив пункта “Разрешить выполнение файла как программы”:
Теперь переходим в настройки файлового менеджера Nautilus, если вдруг вы не знаете как это делается, то нажимаем на иконку с тремя полосками и выбираем пункт “Параметры”:
Затем переходим во вкладку “Поведение” и в пункте “Исполняемые текстовые файлы” выбираем пункт “Запустить”:
На этом собственно все, теперь можно запускать файлы с расширением “desktop” двойным нажатием клавиш мышки.
Заключение
Как видите, все достаточно просто, и такими вот не хитрыми движениями мы теперь можем запускать файлы с данным расширением. Печально то, что из Gnome 3 постепенно выпиливают его возможности, которые к слову, в итоге возможно вернуть при помощи расширений. А если вдруг вы хотите больше анонимности в сети, можете прочесть эту статью, где написано про сеть TOR.
А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X