LINUX.ORG.RU

Где Gnome Shell хранит свои внутренние JS?

 ,


0

1

Не знаю, проявляется ли это у всех или только у меня, но в какой-то момент Gnome Shell начинает сильно тормозить и спамит в логи ошибкой в модуле tweener.js. Я загуглил полный текст ошибки и обнаружил, что она уже давно известна.

Более того, есть два Pull Request вроде как исправляющие её:

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/4

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/11

Второй PR является предельно простым (тупо меняет 2 строчки в одном скрипте местами) и по комментариям решает мою проблему, но его закрыли в пользу первого, поскольку первый теоретически должен решать больше проблем, а не только один частный случай. Только вот с тем более сложным патчем они уже больше 5 месяцев не могут договориться, что с ним делать «а вдруг он вызовет другие регрессии» и т. д.

То есть простой патч они не приняли, потому что «есть патч лучше», а «патч лучше» они не приняли, потому что у них никак не дойдут руки в нём разобраться. А пользователи как обычно страдают, да. Раз у них нет сил/времени/желания разбираться сейчас со сложным патчем, могли бы принять простой, с учётом того, что какого-то явного быдло-кода он не содержит, а потом бы уже разбираться со сложным. Но нет, у них же интерпрайз, так нельзя ни в коем случае!

В общем, мне лениво пересобирать gnome-shell. Не могу ли я найти в уже установленном в системе заветный файлик и пропатчить его ручками? JS по идее не должен компилироваться, так что должен лежать на ФС в исходном виде. Да, мне придётся вносить изменения после каждого обновления пакета, но я это автоматизирую скриптом, так что меня вполне это устраивает. Главное чтобы работало.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/11/diffs

Куда попадает при установке файл js/ui/tweener.js?

★★★★★

Так и работает попенсорс. Патч они не примут, а форкни и поддерживай сам для людей с кучей свободного времени.

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

Меня больше всего раздражает именно нежелание принимать патчи. Я всё понимаю - у них может не быть ресурсов закрывать все баги самостоятельно, но вот есть целых два патча, которые исправляют проблему, а они бесконечно тянут с их принятием «как бы чего не вышло». Если у вас недостаточно ресурсов для поддержки проекта - принимайте побольше сторонних патчей. Даже если это добавит новые регрессии, то они скорее всего будут исправлены следующими PR. А уж качество кода у gnome далеко не идеальное (в плане того, что глюков и багов хватает), чтобы так над ним трястись и не принимать ничего без 5-месячного обсуждения.

KivApple ★★★★★ ()

В общем, мне лениво пересобирать gnome-shell. Не могу ли я найти в уже установленном в системе заветный файлик и пропатчить его ручками? JS по идее не должен компилироваться, так что должен лежать на ФС в исходном виде.

Надо ходить и ныйть на форумах, по тому что леньтяй и неуч? Надо не строить идеи типа «по идее не должен компилироваться», а хотя бы заглянуть в пакет и посмотреть, есть ли в нем «заветный файлик»:

gnome-shell-3.28.2-x86_64 содержит сдедующее (файлы переводов удалены из листинга):

/usr/bin/gnome-shell
/usr/bin/gnome-shell-extension-prefs
/usr/bin/gnome-shell-extension-tool
/usr/bin/gnome-shell-perf-tool
/usr/lib64/gnome-shell/Gvc-1.0.typelib
/usr/lib64/gnome-shell/Shell-0.1.typelib
/usr/lib64/gnome-shell/ShellMenu-0.1.typelib
/usr/lib64/gnome-shell/St-1.0.typelib
/usr/lib64/gnome-shell/libgnome-shell-menu.so
/usr/lib64/gnome-shell/libgnome-shell.so
/usr/lib64/gnome-shell/libgvc.so
/usr/lib64/gnome-shell/libst-1.0.so
/usr/lib64/mozilla/plugins/libgnome-shell-browser-plugin.so
/usr/libexec/gnome-shell-calendar-server
/usr/libexec/gnome-shell-hotplug-sniffer
/usr/libexec/gnome-shell-perf-helper
/usr/libexec/gnome-shell-portal-helper
/usr/share/GConf/gsettings/gnome-shell-overrides.convert
/usr/share/applications/evolution-calendar.desktop
/usr/share/applications/gnome-shell-extension-prefs.desktop
/usr/share/applications/org.gnome.Shell.PortalHelper.desktop
/usr/share/applications/org.gnome.Shell.desktop
/usr/share/dbus-1/interfaces/org.gnome.Shell.PadOsd.xml
/usr/share/dbus-1/interfaces/org.gnome.Shell.Screencast.xml
/usr/share/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml
/usr/share/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml
/usr/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
/usr/share/dbus-1/services/org.gnome.Shell.CalendarServer.service
/usr/share/dbus-1/services/org.gnome.Shell.HotplugSniffer.service
/usr/share/dbus-1/services/org.gnome.Shell.PortalHelper.service
/usr/share/doc/gnome-shell/README
/usr/share/glib-2.0/schemas/org.gnome.shell.gschema.xml
/usr/share/gnome-control-center/keybindings/50-gnome-shell-system.xml
/usr/share/gnome-shell/Gvc-1.0.gir
/usr/share/gnome-shell/Shell-0.1.gir
/usr/share/gnome-shell/ShellMenu-0.1.gir
/usr/share/gnome-shell/St-1.0.gir
/usr/share/gnome-shell/extensions
/usr/share/gnome-shell/gnome-shell-osk-layouts.gresource
/usr/share/gnome-shell/gnome-shell-theme.gresource
/usr/share/gnome-shell/perf-background.xml
/usr/share/gnome-shell/search-providers
/usr/share/licenses/gnome-shell/COPYING
/usr/share/man/man1/gnome-shell.1.gz
/usr/share/xdg-desktop-portal/portals/gnome-shell.portal

anonymous ()

Какая версия гнума? Какие расширения? У меня в последней 3.28.* уже давно не было такого.

anonymous ()
Ответ на: комментарий от KivApple

Меня больше всего раздражает именно нежелание принимать патчи.

Начни поддерживать какую-нибудь большую прогу, потом расскажешь что тебя раздражает.

В общем, мне лениво пересобирать gnome-shell.

Ну и? Кто-то должен тебе принести готовое решение на блюдечке с голубой каёмочкой?

Самый постой способ — выкачать src.rpm, добавить патч, собрать пакет.

Не могу ли я найти в уже установленном в системе заветный файлик и пропатчить его ручками?

Нет, не можешь. Если б мог, не заводил бы тему.

debugger ★★★ ()

могу ли я найти в уже установленном в системе заветный файлик и пропатчить его ручками

распакуй его, поменяй что тебе нужно

src="/usr/lib/gnome-shell/libgnome-shell.so"
mkdir -p extensionPrefs gdm misc perf portalHelper ui/components ui/status
for r in `gresource list $src`; do
 gresource extract $src $r > ${r/#\/org\/gnome\/shell/.}
done
Проверь всё ли нормально работает
GNOME_SHELL_JS=/куда/распаковал gnome-shell -r
И, если всё понравилось, то пересобери нормально пакет.
Ну или как ты хочешь, запакуй обратно c помощью glib-compile-resources и подмени оригинальный.

bass ★★★★★ ()
Последнее исправление: bass (всего исправлений: 2)

gnome-shell в собранном виде держит все свои js упакованными внутри бинарника помощью GResource. самым правильным способом мне кажется пересобрать пакет с нужным патчем.

а что за проблема?

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

самым правильным способом мне кажется пересобрать пакет с нужным патчем.

Проблема в том, что он не умеет. Какой там пакет собрать..., он даже не уметь командой find пользоваться и прочитать что делает сборочный скрипт с этим файлом. Иначе не позорился бы тут с этим вопросом.

anonymous ()
Ответ на: комментарий от KivApple

Если у вас недостаточно ресурсов для поддержки проекта - принимайте побольше сторонних патчей

И распыляйте еще больше ресурсов на функции, которые вы даже не знаете как работают, но приняли патч вслепую, чтобы не обижать написавшего его. План - агонь!

Похоже кому-то стоит смириться с тем, что недостаточно просто написать код. Сначала он должен быть рабочим(тут в твоём случае видимо всё окей, но я в код не смотрел, поэтому хз). Потом удовлетворять внутренним стандартам проекта. Ну и наконец - чтобы его кто-то мог поддерживать(по этим двум пунктам я вообще хз - в гном ни строчки не контрибьютил, сам я им не пользуюсь, а так у нас в генте есть люди для этого).

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

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

И распыляйте еще больше ресурсов на функции, которые вы даже не знаете как работают, но приняли патч вслепую, чтобы не обижать написавшего его

Речь идёт о фиксе багов, а не о новых функциях.

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

он даже не уметь командой find пользоваться и прочитать что делает сборочный скрипт с этим файлом.

В линуксах для этого не find, а grep.

i-rinat ★★★★★ ()

У тебя Debian? Тогда:

  • apt source gnome-shell, чтобы скачать исходники;
  • cd gnome-shell-3.28.2;
  • dch -i, чтобы бампнуть версию;
  • nano js/ui/tweener.js, чтобы поправить код;
  • dpkg-checkbuilddeps, чтобы узнать, чего не хватает для сборки;
  • dpkg-buildpackage -b -us -uc -j4, чтобы собрать пакеты.

Дальше устанавливаешь нужные из собранных пакетов. Лучше, конечно, разобраться, как сделать локальный репозиторий, и складывать пакеты туда.

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