Автовключение ПК и загрузка приложений
Многие айтишники достаточно ленивые и это свойство двигает прогресс в сфере автоматизации рутиных действий. Вот и я решил сделать так, чтобы в будние дни компьютер сам включался, а так же сразу открывал мне нужные программы, на определенных мониторах, чтобы мне не надо было ждать лишние пару минут и запускать все самому...
В наличии у меня уже была колонка 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 скрипт и добавляем его в автозагрузку
В скрипте, я прописал условия запуска
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/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"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/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 |
Для того, чтобы он работал, нам понадобится следующие программы, поэтому устанавливаем если это еще не сделано
1 2 3 |
sudo apt-get install xdotool wmctrl |
Сам скрипт запускается вот так
1 2 3 |
move-window "Slack" "HDMI-1" |
Тут "Slack" текст из заголовка нужного окна, а "HDMI-1" - монитор на который надо переместить приложение.
Список всех активных окон и их заголовков можно найти вот так
1 2 3 4 5 6 7 8 9 |
$ 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 |
Список доступных мониторов
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ 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) |
Теперь переходим к самому скрипту запуска приложений
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/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: | Tags: /
| Rating:
1 comment.
Write a comment