АВТОЗАГРУЗКА В LINUX
В Linux есть несколько вариантов автозагрузки, начиная от уровня ядра и выше, но пока нет акказии, я не хоче касаться всяких сложностей - отмечу лишь тот случай, когда надо просто выполнить программку или скриптик после загрузки сессии пользователя. Тут все просто. Кидаем ярлык в
~/.config/autostart
Если ее нет, то создаем. Пример такого ярлыка уже неоднократно приводился, но все равно повторю.
sudo nano ~/.config/autostart/variety.desktop
[Desktop Entry] Name=Variety Comment=Variety Wallpaper Changer Categories=GNOME;GTK;Utility; Exec=/usr/bin/variety --profile /home/madmentat/.config/variety/ MimeType=text/uri-list;x-scheme-handler/variety;x-scheme-handler/vrty; Icon=variety Terminal=false Type=Application StartupNotify=false Actions=Next;Previous;PauseResume;History;Preferences; Keywords=Wallpaper;Changer;Change;Download;Downloader;Variety; X-GNOME-Autostart-Delay=20 StartupWMClass=Variety
В Exec можно прописать sh script.sh, предварительно сделав его исполняемым:
sudo chmod +x script.sh
Автозагрузка после запуска X сессии осуществляется через редактирование следующего файла:
sudo nano /etc/X11/xinit/xinitrc
Синтаксис команд практически такой же, как и в обычном bash
#!/bin/sh # /etc/X11/xinit/xinitrc # # global xinitrc file, used by all X sessions started by xinit (startx) # invoke global X session script . /etc/X11/Xsession sh /home/madmentat/keyswitch.sh
Однако, у меня тут были некоторые проблемы с запуском этого xinitrc. Он то работает, то нет.
МОЙ СОБСТВЕННЫЙ СОПОСБ
Пытался разобраться с system.d, local.rc и вообще - честно говоря, голова пухнет, а толку пока мало. Как писать адекватно работающие Униты я пока что решительно не понимаю. Реально работает первый указанный в этой статье способ, но через него трудно добавлять в автозагрузки выполнение bash скриптов. Поэтому я решил написать свою специальную программку на C++, которая будет запускаться через autorun.desktop рялык из папки ~/.config/autostart
cd ~/
sudo apt install g++
nano autorun.cpp
#include <string> #include "unistd.h" int main () { system("sh ~/autorun.sh"); //Запустим наш autorun bash-скрипт. }
g++ -Wall -o autorun autorun.cpp
nano autorun.sh
#!/bin/bash gedit&
sudo chmod +x autorun.sh
cp autorun /usr/local/bin/autorun
nano autorun.desktop
[Desktop Entry] Name=Autorun Comment=Autorun Categories=Utility; Exec=autorun Icon=~/rocket.png Terminal=false Type=Application Keywords=Autorun; X-GNOME-Autostart-Delay=20
Здесь, обратите внимание, автозапуск сработает через 20 секунд после запуска Х-сессии.
mkdir ~/.config/autostart
cp autorun.desktop ~/.config/autostart/autorun.desktop
Теперь нашп программка autorun будет запускать bash-скрипт autorun.sh, в который вы можете прописать буквально все то вам заблагорассудится. Более того, вы всегда можете запустить этот скрипт командой в терминале:
autorun
Ну, чтобы не нажимать много кнопок, я сделал небольшой пак со скриптом создания и установки этой програмки, который запускается командой.
sh install.sh
Внутри есть маленький позновательный бонус для любознательных, интересующихся синтаксисом bash. Скачать скрипт.