Я использую много проектов WebStorm одновременно.Я сделал Python GUI для основных сценариев этих проектов, и я запускаю WebStorm для любого из них, запуская webstrom .
внутри каждого из них.
Я хочу знать, какой из них действительно открыт, потому что, когда я пытался использовать python 'psutil', и я только обнаружил, что дочерний процесс java первого открытого проекта, остальные из них, вероятно, являются своего рода «дополнительным окном»для первого открытия.
Итак, в /usr/local/bin/webstorm.sh
я обнаружил, что этот скрипт запрашивает какой-либо порт, если WebStorm открыт, и пытается создать следующий экземпляр, если он действительно:
CONFIG_PATH = u'/home/pawel/.WebStorm2019.1/config'
SYSTEM_PATH = u'/home/pawel/.WebStorm2019.1/system'
import socket
import struct
import sys
import time
def try_activate_instance(args):
port_path = os.path.join(CONFIG_PATH, 'port')
token_path = os.path.join(SYSTEM_PATH, 'token')
if not (os.path.exists(port_path) and os.path.exists(token_path)):
return False
try:
with open(port_path) as pf:
port = int(pf.read())
with open(token_path) as tf:
token = tf.read()
except (ValueError):
return False
s = socket.socket()
s.settimeout(0.3)
try:
s.connect(('127.0.0.1', port))
except (socket.error, IOError):
return False
found = False
while True:
try:
path_len = struct.unpack('>h', s.recv(2))[0]
path = s.recv(path_len).decode('utf-8')
if os.path.abspath(path) == os.path.abspath(CONFIG_PATH):
found = True
break
except (socket.error, IOError):
return False
print(found)
if found:
cmd = 'activate ' + token + '\0' + os.getcwd() + '\0' + '\0'.join(args)
if sys.version_info[0] >= 3: cmd = cmd.encode('utf-8')
encoded = struct.pack('>h', len(cmd)) + cmd
s.send(encoded)
time.sleep(0.5) # don't close the socket immediately
return True
return False
try_activate_instance([])
Существуют ли какие-либо другие команды, кроме activate [token]
или JetBrains wiki, например:
'isactive [token] [имя_проекта]' - возвращает, если проект из этого каталога открыт
'target [token] [имя_проекта]' - переместить окно проекта в начало в linux