Автовключение ПК и загрузка приложений

Многие айтишники достаточно ленивые и это свойство двигает прогресс в сфере автоматизации рутиных действий. Вот и я решил сделать так, чтобы в будние дни компьютер сам включался, а так же сразу открывал мне нужные программы, на определенных мониторах, чтобы мне не надо было ждать лишние пару минут и запускать все самому...
В наличии у меня уже была колонка Amazon Echo 4

И совместимая WiFi розетка Extrastar Smart Plug

Используя Routines от Алексы, я настроил следующие сценарии для будних дней
- В 04:30 розетка отключается, соответсвенно пропадает питание на ПК
- В 06:50 розетка включается, соответсвенно появляется питание на ПК
В общем и целом, Алекса здесь может и не понадобиться, тк большинство смарт розеток имеют свое собственное приложение, где можно настроить расписание, но в моем случае происходит еще ряд разнообразных действий с освещением и музыкой помогающей проснуться, поэтому я использовал Routine-ы Алексы, именно она является хабом для всех моих смарт устройств.
Далее в BIOS-е пк, я выбрал режима автовключения при появлении питания, именно для этого с помощью розетки, я отключаю питание пк и включаю его позже. Скрин этой опции из инета:

После этого, первая часть была выполнена и по будням комп сам начал включаться и стал готов сразу к работе.
Следующее, что я хотел, чтобы автоматом запускался Google календарь, Google почта и Slack. При этом, мне хотелось, чтобы они не просто запускались, а только утром по будням, а так же чтобы сразу располагались на нужных мне мониторах (у меня их несколько).
Задачу начал решать с автозагрузки, и тут все просто - в Kubuntu автозагрузкой можно управлять из панели управления: Start > Settings > System Settings > Startup and Shutdown > Autostart. Создаем bash скрипт и добавляем его в автозагрузку

В скрипте, я прописал условия запуска
#!/bin/bash
# Start Slack on working days
currentdayofweek=$(date +%u)
currenttime=$(date +%H:%M)
if [[ $currentdayofweek -le 5 ]]; then
if [[ "$currenttime" > "06:00" ]] && [[ "$currenttime" < "08:30" ]]; then
/home/vo/Scripts/Autostart/autostart.sh
fi
fi
Тут я проверяю, что сейчас будний день и время в промежутке 06:00 - 08:30 , а дальше запускаю второй скрипт, который и отвечает за запуск приложений.
Прежде чем перейти к запуску приложений, надо рассказать про перемещение окон. Для этого я использовал следующий скрипт, который положил в файл "move-window"
#!/bin/bash
if [ ! -z "$1" ] || [ -z "$2" ]; then
command=$(wmctrl -l | grep "$1" | cut -d" " -f1)
if [ ! -z "$command" ]; then
position=$(xrandr | grep "^$2" | cut -d"+" -f2)
if [ ! -z "$position" ]; then
for window in $command; do
wmctrl -ir $window -b remove,maximized_vert
wmctrl -ir $window -b remove,maximized_horz
wmctrl -ir $window -e 0,$position,0,1920,1080
wmctrl -ir $window -b add,maximized_vert
wmctrl -ir $window -b add,maximized_horz
done
else
echo -e "not found monitor with given name"
fi
else
echo -e "not found windows with given name"
fi
else
echo -e "specify window and monitor name;\nmove.sh window-name monitor-name"
fi
Для того, чтобы он работал, нам понадобится следующие программы, поэтому устанавливаем если это еще не сделано
sudo apt-get install xdotool wmctrl
Сам скрипт запускается вот так
move-window "Slack" "HDMI-1"
Тут "Slack" текст из заголовка нужного окна, а "HDMI-1" - монитор на который надо переместить приложение.
Список всех активных окон и их заголовков можно найти вот так
$ wmctrl -l
0x0200000b -1 homenet100 Desktop — Plasma
0x0200001f -1 homenet100 Plasma
0x00400006 0 homenet100 Autostart — Dolphin
0x02600007 0 homenet100 Autostart : bash — Konsole
0x05800002 0 homenet100 linux - Google Search - Google Chrome
0x04600002 0 homenet100 Slack | internal | company | 8 new items
Список доступных мониторов
$ xrandr
Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 32767 x 32767
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis)
...
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected primary 1920x1080+1920+0 (normal left inverted right x axis
...
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
VGA-1-1 disconnected (normal left inverted right x axis y axis)
Теперь переходим к самому скрипту запуска приложений
#!/bin/bash
/usr/bin/slack > /dev/null 2>&1 &
sleep 5 && /home/vo/Scripts/Autostart/move-window "Slack" "HDMI-1"
/usr/bin/google-chrome --new-window https://mail.google.com/mail/u/0/ > /dev/null 2>&1 &
sleep 5 && /usr/bin/google-chrome https://calendar.google.com/calendar/u/0/r > /dev/null 2>&1 &
sleep 10 && /home/vo/Scripts/Autostart/move-window "Calendar" "HDMI-0"
Тут все просто, запускаем Слак, ждем 5 секунд и перемещаем его на монитор "HDMI-1", далее запускаем новое окно Chrome-а и открываем в нем почту, ждем немного для запуска и открываем вкладку в Chrome с календарем, именно она и останется активной. Ждем чтобы загрузились странички (чтобы у окна появился нужный заголовок) и перемещаем на монитор "HDMI-0"
Вот и всё, теперь в будний день в 7:00 утра, мой комп включен и нужные для старта рабочего дня приложения запущены.

Author: | Rating: / | Tags:

1 comment.
Write a comment