АВТОЗАГРУЗКА В LINUX

machine rocket

В 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. Скачать скрипт.