Рубрики
Без рубрики

Как я открываю и измените изменение всех моих приложений только с сочетанием клавиш клавиатуры

Каждое утро я должен открыть, изменить размер и переместить все приложения, которые мне нужно работать, поэтому я подумал: … Теги с Python, Linux.

Каждое утро я должен открыть, изменить размер и переместить все приложения, которые мне нужно работать, поэтому я подумал: что если бы мне только пришлось нажать ярлык клавиатуры, который мог бы сделать для меня …

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

Перед продолжением, это было разработано и проверено на POP! _OS 20.04 LTS , ubuntu на базе Linux дистрибутив. Исходный код – здесь Отказ Я мог бы просто использовать режим приостановки, но я использую двойную загрузку, так что это не всегда работает для меня, и исследуя другие инструменты, чтобы найти решение, это очень весело.

Этот скрипт был написан в Python 3.8, я назвал это Desktop-bootstrap.py , чтобы открыть приложения, которые я использовал Модуль подпроцесса Отказ И изменить размер и перемещение я использовал инструмент командной строки wmctrl Отказ Сценарий принимает аргументы, поэтому вы можете открыть одно приложение за раз, но он также поддерживает файл конфигурации для открытия набора приложений, я охвачу в этой статье последнего подхода.

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

<Команда> <имя приложения> <ширина окна> <высота окна>

Пример файла конфигурации будет:

insomnia insomnia 960 0 960 1080
google-chrome google 0 0 960 1080 https://dev.to/ricardo93borges https://github.com/ricardo93borges

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

Теперь нам нужен скрипт оболочки, который будет выполнен, когда мы используем ярлык клавиатуры, этот скрипт оболочки позвонит сценарию Python, проходящий в качестве аргумента местоположение файла конфигурации. Я тоже хочу открыть терминал, поэтому я также включал команду для этого в сценарии оболочки:

# desktop-bootstrap.sh

#!/bin/sh
gnome-terminal --geometry 170x25+1920+890 --working-directory=/home
/usr/bin/python3.8 /path/to/desktop-bootstrap.py --file /path/to/config-sample.txt

Вот сценарий Python с комментариями для объяснения некоторых кусочков кода:

# desktop-bootstrap.py

import subprocess
import time
import sys

"""
I limited the retries, so the script doesn't run 
forever waiting for an application to start 
"""
max_retries = 20

"""
This method get an application ID looking for its name 
in a list obtained by a wmctrl command, 
that ID is used in the resize command
"""
def get_id_by_name(applications_running, name):
    for app in applications_running:
        if app.lower().find(name) > -1:
            return app.split(' ')[0]

"""
This method receives a list of applications and 
for each one check if is running. If is running resize and 
reposition it, if not check again in the next iteration
"""
def resize(applications):
    retry = 0
    while len(applications) > 0:
# Get a list of running applications
        applications_running = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").split("\n")
        for index, app in enumerate(applications):
            application_id = get_id_by_name(applications_running, app['name'])
            if application_id:
# Resize and reposition
                dimensions = "-e " f"0,{app['x']},{app['y']},{app['width']},{app['height']}"
                command = ["wmctrl", "-i", "-r", application_id, dimensions]
                subprocess.run(command)
                applications.pop(index)

        retry += 1
        if retry > max_retries:
            break

        time.sleep(5)

"""
This method open the application and send it to 
resize() method to resize and reposition it 
accordingly to the arguments passed
"""
def handle_args():
    command = [sys.argv[1]]

"""
If the application is a browser it may have more 
arguments (the websites to open when it starts)
"""
    for i in range(len(sys.argv) - 7):
        command.append(sys.argv[7 + i])

    output = subprocess.Popen(command)

    applications = [{
        'name': sys.argv[2],
        'pid': output.pid,
        'x': sys.argv[3],
        'y': sys.argv[4],
        'width': sys.argv[5],
        'height': sys.argv[6]
        }]

    resize(applications)

"""
This method handles the configuration file, open 
the applications and send it to resize() method 
to resize and reposition it.
"""
def handle_file(file):
    applications = []
    with open(file) as f:
        for index, line in enumerate(f):
            props = line.split(' ')
            command = [props[0]]

"""
If the application is a browser it may have 
more arguments (the websites to open when it starts)
"""
            for i in range(len(props) - 6):
                command.append(props[6+i])

            output = subprocess.Popen(command)
            applications.append({
                'name': props[1],
                'pid': output.pid,
                'x': props[2],
                'y': props[3],
                'width': props[4],
                'height': props[5]
            })
    resize(applications)

"""
Main method, check the arguments and call the 
appropriated method to process the applications.
"""
def run():
    if len(sys.argv) > 2:
        if sys.argv[1] == "--file":
            handle_file(sys.argv[2])
        else:
            handle_args()
    else:
        print("\nInvalid number of arguments")
        print("\nUse the following arguments: ")
        print("\n     ")
        print("\nOr: ")
        print("\n--file ")

    sys.exit(0)


run()

Наконец, мы создадим сочетание клавиш, это может отличаться от одного дистрибутива Linux на другой, в POP_OS! 20.04 Вы открываете Меню настроек Перейти к Сочетания клавиш Затем прокрутите вниз до нижней части списка ярлыков и нажмите на + кнопка. В окне, который запустил, вы устанавливаете имя для ярлыка, в входе команд введите путь к этому сценарию оболочки (Desktop-bootstrap.sh), например: /home/ricardo/workspace/desktop-bootstrap/desktop-bootstrap.sh . Отказ В ярлыке вы выбираете комбинации клавиш, которые будут выполнять сценарий оболочки.

И вот и все, вы можете найти более подробную информацию об этом Репозиторий Отказ

Оригинал: “https://dev.to/ricardo_borges/how-i-open-and-resize-all-my-applications-with-just-a-keyboard-shortcut-3469”