Bug 21509

Summary: не становиться умолчательным браузером, но очень хочет
Product: Sisyphus Reporter: Zerg <anubix>
Component: firefoxAssignee: Alexey Gladkov <legion>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: glebfm, legion, rauty, sbolshakov, zerg
Version: unstableKeywords: usability
Hardware: all   
OS: Linux   
URL: http://widehat.opensuse.org/repositories/home:/llunak:/mozilla/openSUSE_Factory/src/
Bug Depends on: 21678    
Bug Blocks: 19564    
Attachments:
Description Flags
firefox-cross-desktop.patch
none
Пример кода для KDE3/4 на sh
none
firefox-cross-desktop.patch
none
firefox-kde.patch none

Description Zerg 2009-09-09 21:28:32 MSD
Created attachment 3863 [details]
firefox-cross-desktop.patch

После положительного ответа на вопрос "Хотите стану умолчательным браузером?" в KDE он им не становиться.
Патч взят из пакета MozillaFirefox
http://download.opensuse.org/repositories/mozilla:/Factory/openSUSE_Factory/src/
Comment 1 Alexey Gladkov 2009-09-09 21:32:23 MSD
У меня в gnome вроде всё работает.
Comment 2 Zerg 2009-09-09 21:48:43 MSD
Created attachment 3864 [details]
Пример кода для KDE3/4 на sh

Патч SuSE-специфичный. Его нужно изменить для ALT
Comment 3 Zerg 2009-09-09 21:49:38 MSD
(В ответ на комментарий №1)
> У меня в gnome вроде всё работает.
Забыл написать, что это в KDE*
Comment 4 Alexey Gladkov 2009-09-09 22:15:17 MSD
(В ответ на комментарий №3)
> Забыл написать, что это в KDE*

Что это за shell-скрипт?

Прошу сделать патч, который я могу приложить к исходникам. Также прошу учесть в патче, что такой скрипт добавит зависимость на KDE в firefox. Этого нужно избежать для пользователей, не использующих KDE.
Comment 5 Zerg 2009-09-09 22:20:06 MSD
(В ответ на комментарий №4)
> (В ответ на комментарий №3)
> > Забыл написать, что это в KDE*
> Что это за shell-скрипт?
Я вроде по-русски точно описал.
 
> Прошу сделать патч, который я могу приложить к исходникам.
Я не умею JS, поэтому привел пример на SH, чтобы тебе было легче исправить оригинальный патч.

> добавит зависимость на KDE в firefox.
Не надо ничего добавлять.
Comment 6 Alexey Gladkov 2009-09-09 22:25:12 MSD
(В ответ на комментарий №5)
> Я вроде по-русски точно описал.

Я так понял, что вместо /usr/bin/kwriteconfig ты предложил вызывать этот скрипт.

> Я не умею JS, поэтому привел пример на SH, чтобы тебе было легче исправить
> оригинальный патч.

У меня нет ни одной машины с KDE. Патч в слепую я буду писать долго.
Comment 7 Zerg 2009-09-09 22:36:24 MSD
(В ответ на комментарий №6)
> Я так понял, что вместо /usr/bin/kwriteconfig ты предложил вызывать этот
> скрипт.
Нет. Патч поправить, чтоб делал то же, что и скрипт.
Т.е., в патче только для 1-го kde и путь к kwriteconfig прибит гвоздями.

Т.е. то место, где shellObj.initWithPath("/usr/bin/kwriteconfig");, 2 раза сделать для каждого kwriteconfig
1. вычислить путь к каждому kwriteconfig
2. проверить, лежит ли он на диске
3. если лежит, добавить ему одни и те же аргументы и выполнить

Разница только в путях к kwriteconfig и гвоздями их лучше не прибивать
Comment 8 Zerg 2009-09-09 22:41:04 MSD
Но, если очень хочется попроще, то можно и прибить гвоздями
Выполнить одно и то же для каждого элемента списка:
/usr/bin/kwriteconfig
/usr/lib/kde4/kwriteconfig
Пути вроде устаканились. Если поломается, скажу, когда наткнусь.
Comment 9 Zerg 2009-09-09 22:42:51 MSD
Ой, наврал
/usr/bin/kwriteconfig
/usr/lib/kde4/bin/kwriteconfig
Comment 10 Alexey Gladkov 2009-09-09 22:43:31 MSD
(В ответ на комментарий №7)
> Нет. Патч поправить, чтоб делал то же, что и скрипт.

Тогда всё будет сложнее.

> 1. вычислить путь к каждому kwriteconfig

Вот только вывод от команды в JS делается не так тривиально, как кажется. Сейчас я за это не возьмусь.

Всё что сейчас могу сделать для вас это положить приведённый вами скрипт в firefox-support-kde, и вызывать его из JS.
Comment 11 Alexey Gladkov 2009-09-09 22:44:28 MSD
(В ответ на комментарий №9)
> Ой, наврал
> /usr/bin/kwriteconfig
> /usr/lib/kde4/bin/kwriteconfig

Ну или так. Это хоть и уродливо, но реализуемо.
Comment 12 Alexey Gladkov 2009-09-09 22:46:30 MSD
Конечно, правильнее было бы сделать так как сделано для GNOME (я про xulrunner-support-gnome), но раз никто не может осилить один модуль, то можно и захакать.
Comment 13 Zerg 2009-09-09 22:52:47 MSD
(В ответ на комментарий №12)
> xulrunner-support-gnome
Я смотрел, там прилично работы.
Да и куски раскиданы, обернутые #ifdef GNOME , а это уже фигово :-(
Comment 14 Alexey Gladkov 2009-09-09 23:19:26 MSD
(В ответ на комментарий №13)
> Да и куски раскиданы, обернутые #ifdef GNOME , а это уже фигово :-(

ifdef есть в основном коде только для того чтобы проверить наличие GNOME-specific поддержки. Вся остальная поддержка делается отдельными компонентами.
Comment 15 Repository Robot 2009-09-21 18:51:40 MSD
firefox-3.5.3-alt0.20090918 -> sisyphus:

* Sun Sep 20 2009 Alexey Gladkov <legion@altlinux> 3.5.3-alt0.20090918

- New snapshot (3.5.3 20090918).
- Set firefox as default KDE/KDE4 browser (ALT#21509).
- Update desktop file (ALT#21510).
- Update requires (ALT#21533).
Comment 16 Sergey V Turchin 2009-09-23 15:42:03 MSD
Не работает ни для одного KDE
Comment 17 Alexey Gladkov 2009-09-23 16:03:20 MSD
(В ответ на комментарий №16)
> Не работает ни для одного KDE

Эвенты шлются ?
Comment 18 Sergey V Turchin 2009-09-23 16:10:27 MSD
(В ответ на комментарий №17)
> Эвенты шлются ?
Какие куда? Где видно?
Нужно, чтоб команды выполнялись. Если не работает, значит не выполняются или выполняются не те, которые нужно.
Comment 19 Alexey Gladkov 2009-09-23 16:49:17 MSD
(В ответ на комментарий №18)
> (В ответ на комментарий №17)
> > Эвенты шлются ?
> Какие куда? Где видно?
> Нужно, чтоб команды выполнялись. Если не работает, значит не выполняются или
> выполняются не те, которые нужно.

Вот я и хочу понять, дёргаются или нет утилиты. Этот код я правил в слепую, поэтому понятия не имею, рабочий он или нет.
Comment 20 Sergey V Turchin 2009-09-23 17:00:19 MSD
(В ответ на комментарий №19)
> поэтому понятия не имею, рабочий он или нет.
Попробуй создать скрипт /usr/bin/kwriteconfig или /usr/lib/kde4/bin/kwriteconfig и написать в нем любую отладку
Comment 21 Alexey Gladkov 2009-09-23 17:06:06 MSD
(В ответ на комментарий №20)
> Попробуй создать скрипт /usr/bin/kwriteconfig или
> /usr/lib/kde4/bin/kwriteconfig и написать в нем любую отладку

Мне предётся выставить ещё KDE_FULL_SESSION.
Кстати, когда ты пробовал firefox, эта переменная была выставлена ?
Comment 22 Sergey V Turchin 2009-09-23 17:09:59 MSD
Естественно. Завел специально нового польователя и запустил KDE4 c FF
Comment 23 Sergey V Turchin 2009-09-23 17:11:51 MSD
По ссылке посмотри MOzillaFireFox. Может, патч обновился.
А то я в данный момент не могу скачать
Comment 24 Sergey V Turchin 2009-09-23 17:19:30 MSD
Дык! Нет в пакете этого патча
Comment 25 Alexey Gladkov 2009-09-23 17:34:16 MSD
(В ответ на комментарий №24)
> Дык! Нет в пакете этого патча

Какого "этого" ?
Comment 26 Sergey V Turchin 2009-09-23 17:35:44 MSD
(В ответ на комментарий №25)
> Какого "этого" ?
Никакого не нашел. Как он называется?
Comment 27 Sergey V Turchin 2009-09-23 17:36:14 MSD
Торможу. Я ж в xulrunner смотрю
Comment 28 Sergey V Turchin 2009-09-23 17:40:25 MSD
Я ж написал пример команды. Если это вдруг выполниться, то KDE* вообще перестанет открывать ссылки http*
Comment 29 Zerg 2009-09-23 21:22:11 MSD
Created attachment 3932 [details]
firefox-cross-desktop.patch
Comment 30 Zerg 2009-09-23 21:23:53 MSD
Created attachment 3933 [details]
firefox-kde.patch

Теперь просто эти 2 патча нужно.
Не забудь вместе с этим #21678
Comment 31 Alexey Gladkov 2009-10-14 22:08:37 MSD
(В ответ на комментарий №30)
> Created an attachment (id=3933) [details]
> firefox-kde.patch

Этот патч не будет работать:

 ifeq ($(MOZ_WIDGET_TOOLKIT), gtk2)
-CPPSRCS = nsGNOMEShellService.cpp
+CPPSRCS = nsUnixShellService.cpp nsGNOMEShellService.cpp nsKDEShellService.cpp
 REQUIRES	+= \
 		mozgnome \
              ^^^^^^^^^^^^^^
 		thebes \
 		$(NULL)
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
 endif

Таким образом ShellService хочет поддержку гнома. Возможно, достаточно доустановить xulrunner-gnome-support.

Собственно до запуска kwriteconfig дело не доходит в первом патче т.к.

    var shellSvc = Components.classes["@mozilla.org/browser/shell-service;1"]
                             .getService(Components.interfaces.nsIShellService);

обламывается. Это и есть ShellService, который должен уметь работать c GNOME и KDE одновременно.

Пока пробую его заставить работать...
Comment 32 Alexey Gladkov 2009-10-14 22:19:10 MSD
Наврал ... у меня сервис не грузится потому что у меня нет ни KDE, ни GNOME.
Comment 33 Repository Robot 2009-10-15 21:01:32 MSD
firefox-3.5.3-alt0.20091010 -> sisyphus:

* Sun Oct 11 2009 Alexey Gladkov <legion@altlinux> 3.5.3-alt0.20091010

- New snapshot (3.5.3 20091010).
- KDE: Update patches (ALT#21509).