Как я могу определить различные окна Chrome при использовании & ldquo; Продолжить, где вы остановились & rdquo; -option (использовать в wmctrl)?

Неважно или совпадение, что в вашей системе есть две разные версии Python.

Многие приложения в дистрибутивах Ubuntu и Ubuntu работают с Python 2.7. Существуют также приложения, которые работают с Python 3.

Так как Python 3 не совместим с обратным интерфейсом, symlinking python to python3 вы нарушаете множество зависимостей, следовательно, многие приложения не работают.

1
задан 13 April 2017 в 15:24

1 ответ

Так что я смог решить проблему с помощью Python. И имейте в виду, что это мой первый скрипт Python, поэтому он не идеален.

#!/usr/bin/python
import subprocess

foo=subprocess.check_output(["wmctrl", "-lx"])  #list windows with WM_CLASS
def f1(foo=foo): return iter(foo.splitlines())
list=list(f1());
gloop=0  #google loop - to count google windows
sloop=0  #sublime loop - to count sublime windows (currently only one, but I might add more in future)
google = [ ["0", "0"], ["2000", "0"], ["2000", "2000"],  ["2000", "0"] ]  #google windows positioning
sublime = [ ["2000", "0"] ]  #sublime windows positioning
for s in list:
    if (s[14:20]=='Google'):
        #print "Google"
        windowid=s[0:10]
        windowpos="0,"+google[gloop][0]+","+google[gloop][1]+",-1,-1"
        subprocess.call(["wmctrl", "-r", windowid, "-i", "-e", windowpos]);
        gloop+=1
    if (s[14:20]=='sublim'):
        #print "Sublime_text"
        windowid=s[0:10]
        windowpos="0,"+sublime[sloop][0]+","+sublime[sloop][1]+",-1,-1"
        subprocess.call(["wmctrl", "-r", windowid, "-i", "-e", windowpos]);
        sloop+=1
0
ответ дан 23 May 2018 в 17:27
  • 1
    Если я хорошо понимаю, хронологический трюк работает (как и ожидалось). Если я могу сделать некоторые предложения: 1. Использовать WM_CLASS приятно, но я бы предложил enumerate список найденных окон, который будет давать своим элементам индекс, а не создавать цикл. 2. Я бы никогда не использовал if (s[14:20]=='Google'):. Вместо этого используйте if "Google" in s.split()[2]. 3. Я бы сделал список позиций «умный». сначала получив разрешение экрана (на самом деле рабочее пространство), с помощью wmctrl -d. – Jacob Vlijm 15 September 2015 в 11:28
  • 2
    ... Это также сделает ненужным многократное появление списка. Затем вы просто используете список (вычисленный, а не «выписанный»), насколько это необходимо для любого приложения . – Jacob Vlijm 15 September 2015 в 11:28
  • 3
    Одна вещь, чтобы сделать ее действительно опрятной: как это, сценарий работает только в том случае, если вы находитесь на рабочей области 1, так как вы размещаете окна относительно в текущем рабочем пространстве. Сложная, но очень хорошо возможная, заключается в том, чтобы заставить сценарий вычислять позиции в абсолютном рабочем пространстве -layout. см. askubuntu.com/a/621811/72216 – Jacob Vlijm 15 September 2015 в 11:38
  • 4
    Это было бы аккуратно, но для меня это достаточно хорошо, и я думаю, что это может быть слишком сложным (и трудоемким) для меня как абсолютным новичком Python - у меня около двух часов опыта Python :-) Но я уверен Я вернусь на Python, когда у меня появится шанс, потому что я вижу, что это потенциал. – Juraj.Lorinc 15 September 2015 в 14:14

Другие вопросы по тегам:

Похожие вопросы: