LINUX.ORG.RU
ФорумTalks

Firefox запрограммирован некорректно

 , ,


0

1

Если запустить два графических сервера на одной машине
chvt 1 && export DISPLAY=:1 && startx — :1
chvt 2 && export DISPLAY=:2 && startx — :2

а потом на одном из них запустить firefox, то на другом запустить firefox уже не получается... (конечно можно задать ключ командной строки --new-instance, но это костыль!)

Как нужно было сделать правильно (через ICCCM), чтобы не было такой проблемы?

не получается
конечно можно

Так можно или нельзя?

чтобы не было такой проблемы?

Какой проблемы?

redgremlin ★★★★★ ()
Ответ на: комментарий от bloodmeri

зачем два с х-сервера на одной. машине ?

Мультисет?

tiinn ★★★☆ ()

Он разве не на профиль лочится? Запускай с разными профилями или вообще с разными пользователями.

deadNightTiger ★★★★ ()

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

onon ★★★ ()

можно запустить несколько фаерфоксов если каждому указать свой профиль.
но нужно именно каждому указывать -P, если одному указать, другой с профилем по умолчанию не запустится.

onon ★★★ ()
Ответ на: комментарий от redgremlin

Какой проблемы?

Когда я его запускаю - он должен запускаться, а не выводить сообщение об ошибке (мол, что уже запущен, но достучаться не получается)

Einstok_Fair ★★☆ ()

Он корректно запрограммирован. Если 2 икс сервера запущены, значит юзера тоже 2, ты же не двухголовый мутант с одним мозгом на 2 головы, значит должны быть 2 профиля.

peregrine ★★★★★ ()
Ответ на: комментарий от bloodmeri

а зачем два с х-сервера на одной. машине ?

например у меня xmonad, а супруге нравится гном.

два икса решают.

Rastafarra ★★★★ ()

Тебя это удивляет? Они ещё ALSA не могут осилить.

Quasar ★★★★★ ()
Ответ на: комментарий от peregrine

Если 2 икс сервера запущены, значит юзера тоже 2

Нет. X-серверы на разных видеокартах могут работать, например.

Quasar ★★★★★ ()
Ответ на: комментарий от peregrine

Или например один на видеокарте, другой Xvnc. Тоже такое поведение ФФ немного подбешивает.

sergej ★★★★★ ()
Ответ на: комментарий от bloodmeri

вообще некогда далеко не все драйвера поддерживали ксинераму, поэтому для двух мониторов у меня было два икса.

takino ★★★★ ()
Ответ на: комментарий от r0ck3r

Но я один и тот же пользователь, и профиль у меня один и тот же. Это не мои проблемы должны быть, а firefox сам должен уметь работать с одним профилем на одном клиентском компьютере (и при этом отображать два окна - по одному на каждом сервере)

Einstok_Fair ★★☆ ()
Ответ на: комментарий от sergej

мой способ более универсален, как мне кажется

r0ck3r ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Но я один и тот же пользователь, и профиль у меня один и тот же.

Закрыть старый ФФ, запустить новый на других иксах?

goingUp ★★★★★ ()
Ответ на: комментарий от redgremlin

Должен-должен. Специально для таких криворуких программистов придумали технологию Dependency Injection, чтобы можно было приложение настраивать так, как хочется пользователю.

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от goingUp

Я переключаюсь между серверами при помощи Alt-Ctrl-F7 и Alt-Ctrl-F8. Мне неудобно каждый раз останавливать и запускать.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

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

Я переключаюсь между серверами при помощи Alt-Ctrl-F7 и Alt-Ctrl-F8.

Вы очень эксцентричны.

goingUp ★★★★★ ()
Последнее исправление: goingUp (всего исправлений: 3)
Ответ на: комментарий от goingUp

если это будут делать два инстанса независимо

А не надо делать два инстанса. Зачем? Нужно делать правильное количество окон и два промежуточных класса-контроллера, один для уровня рабочих столов, другой для уровня х-серверов.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

На другой планете будут правильные, инопланетные разработчики ФФ, которые будут понимать важность работы программы на одном профиле в двух иксах, чтобы... эмм... можно было переключаться между ними при помощи Alt-Ctrl-F7 и Alt-Ctrl-F8?

goingUp ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Да, я тоже мечтаю об иксовых приложениях, которые в процессе своей работы могут создавать несколько окон на нескольких икс-серверах одновременно. Но нет таких приложений. И не будет.

iliyap ★★★★★ ()
Ответ на: комментарий от iliyap

Почему же не будет? Мне удалось научиться создавать Gtk+ hello world, который быстро запускается (см. мою предыдущую тему). Теперь я хочу нарисовать круг. Решил изучить best practices, и что я вижу?...

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

Лучшие практики таковы, что программа является клиентом только одного сервера, от начала жизни процесса и до конца. Если вдруг соединение с сервером разрывается — всё капут, процесс надо завершать.

Нет протокола, по которому процесс может получить дополнительные адреса серверов, как у них аутентифицироваться, что на них рисовать.

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

iliyap ★★★★★ ()
Ответ на: комментарий от iliyap

Нет протокола, по которому процесс может получить дополнительные адреса серверов

Идея такая: Сделать три процесса двух видов: корневой процесс и по одному процессу для каждого x-сервера. Отдельные процессы для серверов нужны потому что им нужно передать разные переменные DISPLAY= для библиотек xlib/xcb.

Основной процесс может получить эти DISPLAY перебрав виртуальные терминалы (те, которые переключает chvt) и посмотрев, какие x-серверы где запущены.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

Смысла никакого. Приложение всё так же статически связывается с дисплеями при запуске. И зачем два локальных дисплея? Это что, мультисит с двумя комплектами монитор+клавиатура+мышь?

Мне интереснее другой юзкей. Есть у меня на работе десктоп. На нем браузер запущен на локальном дисплее. Я из дома захожу по ssh и через x11 forwarding запускаю браузер ещё раз. Вот сейчас это не работает, поскольку второй процесс не может работать с тем же профилем, и не может сказать первому процессу, что надо добавить окно на другой икс-сервер.

iliyap ★★★★★ ()
Ответ на: комментарий от iliyap

sshd запускает процесс firefox, передавая ему DISPLAY= указанный параметром -y в ssh, если бы firefox умел, он бы мог этот DISPLAY передать в корневой процесс firefox. Сейчас он так не делает, потому что смысла нет (т.к. firefox не создаёт по процессу на сервер, а вот если бы он умел - смысл бы был).

firefox передаёт из одного процесса в другой информацию при запуске, просто в случае двух разных x-серверов это не срабатывает, это работает только в пределах одного x-сервера.

Поэтому для того, чтобы реализовать твою хотелку, сначала нужно реализовать мою хотелку.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от peregrine

Почему бы например не запускать отладчик на одном сервере, а отлаживаемую программу на другом? (одному физическому пользователю)

Einstok_Fair ★★☆ ()

а хром что, уже нет? вроде также все

zarkone ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.