Page 1 of 1

Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 9:23 am
by unera
можно ли сделать так, чтобы эта проверка учитывала бы X-сессию?

если например у меня запущено двое X'ов (:1 и :0) и я хочу на :1 запустить GD, но он уже запущен на :0, то GD мне отказывает в этом

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 12:49 pm
by ikm
Можно-то можно -- весь вопрос в том, как это лучше сделать.

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 1:19 pm
by unera
ikm wrote:Можно-то можно -- весь вопрос в том, как это лучше сделать.

а сейчас как сделано?

можно открывать сокет вида:

~/.goldendict/socket.$DISPLAY

и к нему коннектиться, то есть если этот сокет открыт, туда пихаем команду "открыть главное окно" и повторный запуск откроет главное окно, а если не открыт, то открываем его и становимся сервером, который слушает этот сокет как сервер.

ну а со временем можно будет на этот сокет навесить функционала вида "а переведи ка мне слово" и из скриптов окошки с переводами открывать :)

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 1:31 pm
by ikm
Звучит неплохо. Если сообразишь патч, будет вообще отлично -- мне сейчас некогда gd заниматься.

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 1:52 pm
by ikm
Кстати, в Qt есть QLocalServer/QLocalSocket для этих вещей. Так можно сделать кроссплатформенно. В unix в качестве имени сервера следует указывать полный путь к сокету (в виндах можно просто имя без пути).

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 2:02 pm
by unera
ikm wrote:Кстати, в Qt есть QLocalServer/QLocalSocket для этих вещей. Так можно сделать кроссплатформенно. В unix в качестве имени сервера следует указывать полный путь к сокету (в виндах можно просто имя без пути).

в вендах можно вообще не делать :)

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 2:14 pm
by ikm
Ну почему, механизм-то один и тот же везде. Тем более, что разница между виндами и unix будет заключаться в одной строке (вместо $HOME/.goldendict/socket.$DISPLAY будет GoldenDict-$USER) :)

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 5:55 pm
by unera
ikm wrote:Ну почему, механизм-то один и тот же везде. Тем более, что разница между виндами и unix будет заключаться в одной строке (вместо $HOME/.goldendict/socket.$DISPLAY будет GoldenDict-$USER) :)

венда разве умеет сокеты на файлах открывать?

Re: Проверка "запущен ли словарь"

PostPosted: Mon Nov 30, 2009 6:12 pm
by ikm
Нет, там виндовые named pipe используются.