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

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

16.10.2022 1 comment » Views: 74

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

В наличии у меня уже была колонка 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: 4/5 | Tags:

1 comment.

Write a comment
  1. avr Reply
    17.10.2022 в 8:22 am
    Лень - двигатель прогресса :)

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>