Izheil / Dark-userstyles

Dark userCSS styles to use with Stylus addon.
GNU General Public License v3.0
38 stars 1 forks source link

Multi-row tabs stopped working with Firefox (Flatpak, Flathub) #8

Closed resiehnnes closed 1 year ago

resiehnnes commented 1 year ago

I've been using this essential tweak for some years now, and it was working great with flatpak Firefox but totally stopped after Firefox updated to new version (unfortunately don't remember version number) which happened some months ago. After applying Multi-row patch and starting Firefox I get this warning: error After accepting it Firefox starts as usual and everything works except I don't have multi-rows.

Reinstalling didn't helped. I also tried another flatpak version which comes as Fedora flatpak, no luck.

My specs:

Fedora 37 Firefox 109.0 (flatpak, flathub) Multi-row tabs 1.8.8

Izheil commented 1 year ago

I'm not too well versed on the differences between how the difference package managers install firefox on Linux, but check that you can find the files from here in either /usr/lib/firefox or /usr/lib64/firefox, and that they contain the same ones from the repository.

Firefox related files should also be there, but if flatpak installed them somewhere else, that might be the reason of the problem (Firefox might be loading the config files of where it "usually" is, but it won't find the Firefox files that it should). To find where flatpak installed firefox try with something along the lines of flatpak info --show-location org.mozilla.firefox on the terminal.

Otherwise some starting places to look at would be /var/lib/flatpak/firefox and .local/share/flatpak/firefox.

If that's the case, remove the files that the patcher placed in /usr/lib/firefox and place them in the flatpak location (paste them in the folder that has a defaults folder inside it, but not inside the defaults folder itself), which should make you end up with some new files inside the defaults/pref folder and config.js outside the defaults folder

resiehnnes commented 1 year ago

Thank you for very clear instruction.

So what I am doing seems about right. Firefox root folder in my system is located here:

/var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/active/files/lib/firefox

Both files (config.js + config-prefs.js) are added and placed where they supposed to be I guess. Here is the root folder after applying patch:

$ tree /var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/active/files/lib/firefox

/var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/active/files/lib/firefox
├── application.ini
├── browser
│   ├── chrome
│   │   └── icons
│   │       └── default
│   │           ├── default128.png
│   │           ├── default16.png
│   │           ├── default32.png
│   │           ├── default48.png
│   │           └── default64.png

│   ├── crashreporter-override.ini
│   ├── defaults
│   │   └── preferences
│   │       └── default-preferences.js
│   ├── features
│   │   ├── formautofill@mozilla.org.xpi
│   │   ├── pictureinpicture@mozilla.org.xpi
│   │   ├── screenshots@mozilla.org.xpi
│   │   ├── webcompat@mozilla.org.xpi
│   │   └── webcompat-reporter@mozilla.org.xpi
│   └── omni.ja
├── config.js
├── crashreporter
├── crashreporter.ini
├── defaults
│   └── pref
│       ├── channel-prefs.js
│       └── config-prefs.js
├── dependentlibs.list
├── distribution
│   ├── distribution.ini
│   ├── extensions
│   │   ├── langpack-ach@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ach/langpack-ach@firefox.mozilla.org.xpi
│   │   ├── langpack-af@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/af/langpack-af@firefox.mozilla.org.xpi
│   │   ├── langpack-an@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/an/langpack-an@firefox.mozilla.org.xpi
│   │   ├── langpack-ar@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ar/langpack-ar@firefox.mozilla.org.xpi
│   │   ├── langpack-ast@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ast/langpack-ast@firefox.mozilla.org.xpi
│   │   ├── langpack-az@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/az/langpack-az@firefox.mozilla.org.xpi
│   │   ├── langpack-be@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/be/langpack-be@firefox.mozilla.org.xpi
│   │   ├── langpack-bg@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/bg/langpack-bg@firefox.mozilla.org.xpi
│   │   ├── langpack-bn@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/bn/langpack-bn@firefox.mozilla.org.xpi
│   │   ├── langpack-br@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/br/langpack-br@firefox.mozilla.org.xpi
│   │   ├── langpack-bs@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/bs/langpack-bs@firefox.mozilla.org.xpi
│   │   ├── langpack-ca@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ca/langpack-ca@firefox.mozilla.org.xpi
│   │   ├── langpack-cak@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/cak/langpack-cak@firefox.mozilla.org.xpi
│   │   ├── langpack-ca-valencia@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ca/langpack-ca-valencia@firefox.mozilla.org.xpi
│   │   ├── langpack-cs@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/cs/langpack-cs@firefox.mozilla.org.xpi
│   │   ├── langpack-cy@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/cy/langpack-cy@firefox.mozilla.org.xpi
│   │   ├── langpack-da@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/da/langpack-da@firefox.mozilla.org.xpi
│   │   ├── langpack-de@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/de/langpack-de@firefox.mozilla.org.xpi
│   │   ├── langpack-dsb@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/dsb/langpack-dsb@firefox.mozilla.org.xpi
│   │   ├── langpack-el@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/el/langpack-el@firefox.mozilla.org.xpi
│   │   ├── langpack-en-CA@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/en/langpack-en-CA@firefox.mozilla.org.xpi
│   │   ├── langpack-en-GB@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/en/langpack-en-GB@firefox.mozilla.org.xpi
│   │   ├── langpack-eo@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/eo/langpack-eo@firefox.mozilla.org.xpi
│   │   ├── langpack-es-AR@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/es/langpack-es-AR@firefox.mozilla.org.xpi
│   │   ├── langpack-es-CL@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/es/langpack-es-CL@firefox.mozilla.org.xpi
│   │   ├── langpack-es-ES@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/es/langpack-es-ES@firefox.mozilla.org.xpi
│   │   ├── langpack-es-MX@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/es/langpack-es-MX@firefox.mozilla.org.xpi
│   │   ├── langpack-et@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/et/langpack-et@firefox.mozilla.org.xpi
│   │   ├── langpack-eu@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/eu/langpack-eu@firefox.mozilla.org.xpi
│   │   ├── langpack-fa@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/fa/langpack-fa@firefox.mozilla.org.xpi
│   │   ├── langpack-ff@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ff/langpack-ff@firefox.mozilla.org.xpi
│   │   ├── langpack-fi@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/fi/langpack-fi@firefox.mozilla.org.xpi
│   │   ├── langpack-fr@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/fr/langpack-fr@firefox.mozilla.org.xpi
│   │   ├── langpack-fy-NL@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/fy/langpack-fy-NL@firefox.mozilla.org.xpi
│   │   ├── langpack-ga-IE@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ga/langpack-ga-IE@firefox.mozilla.org.xpi
│   │   ├── langpack-gd@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/gd/langpack-gd@firefox.mozilla.org.xpi
│   │   ├── langpack-gl@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/gl/langpack-gl@firefox.mozilla.org.xpi
│   │   ├── langpack-gn@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/gn/langpack-gn@firefox.mozilla.org.xpi
│   │   ├── langpack-gu-IN@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/gu/langpack-gu-IN@firefox.mozilla.org.xpi
│   │   ├── langpack-he@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/he/langpack-he@firefox.mozilla.org.xpi
│   │   ├── langpack-hi-IN@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/hi/langpack-hi-IN@firefox.mozilla.org.xpi
│   │   ├── langpack-hr@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/hr/langpack-hr@firefox.mozilla.org.xpi
│   │   ├── langpack-hsb@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/hsb/langpack-hsb@firefox.mozilla.org.xpi
│   │   ├── langpack-hu@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/hu/langpack-hu@firefox.mozilla.org.xpi
│   │   ├── langpack-hy-AM@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/hy/langpack-hy-AM@firefox.mozilla.org.xpi
│   │   ├── langpack-ia@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ia/langpack-ia@firefox.mozilla.org.xpi
│   │   ├── langpack-id@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/id/langpack-id@firefox.mozilla.org.xpi
│   │   ├── langpack-is@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/is/langpack-is@firefox.mozilla.org.xpi
│   │   ├── langpack-it@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/it/langpack-it@firefox.mozilla.org.xpi
│   │   ├── langpack-ja@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ja/langpack-ja@firefox.mozilla.org.xpi
│   │   ├── langpack-kab@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/kab/langpack-kab@firefox.mozilla.org.xpi
│   │   ├── langpack-ka@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ka/langpack-ka@firefox.mozilla.org.xpi
│   │   ├── langpack-kk@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/kk/langpack-kk@firefox.mozilla.org.xpi
│   │   ├── langpack-km@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/km/langpack-km@firefox.mozilla.org.xpi
│   │   ├── langpack-kn@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/kn/langpack-kn@firefox.mozilla.org.xpi
│   │   ├── langpack-ko@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ko/langpack-ko@firefox.mozilla.org.xpi
│   │   ├── langpack-lij@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/lij/langpack-lij@firefox.mozilla.org.xpi
│   │   ├── langpack-lt@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/lt/langpack-lt@firefox.mozilla.org.xpi
│   │   ├── langpack-lv@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/lv/langpack-lv@firefox.mozilla.org.xpi
│   │   ├── langpack-mk@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/mk/langpack-mk@firefox.mozilla.org.xpi
│   │   ├── langpack-mr@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/mr/langpack-mr@firefox.mozilla.org.xpi
│   │   ├── langpack-ms@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ms/langpack-ms@firefox.mozilla.org.xpi
│   │   ├── langpack-my@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/my/langpack-my@firefox.mozilla.org.xpi
│   │   ├── langpack-nb-NO@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/nb/langpack-nb-NO@firefox.mozilla.org.xpi
│   │   ├── langpack-ne-NP@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ne/langpack-ne-NP@firefox.mozilla.org.xpi
│   │   ├── langpack-nl@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/nl/langpack-nl@firefox.mozilla.org.xpi
│   │   ├── langpack-nn-NO@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/nn/langpack-nn-NO@firefox.mozilla.org.xpi
│   │   ├── langpack-oc@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/oc/langpack-oc@firefox.mozilla.org.xpi
│   │   ├── langpack-pa-IN@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/pa/langpack-pa-IN@firefox.mozilla.org.xpi
│   │   ├── langpack-pl@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/pl/langpack-pl@firefox.mozilla.org.xpi
│   │   ├── langpack-pt-BR@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/pt/langpack-pt-BR@firefox.mozilla.org.xpi
│   │   ├── langpack-pt-PT@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/pt/langpack-pt-PT@firefox.mozilla.org.xpi
│   │   ├── langpack-rm@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/rm/langpack-rm@firefox.mozilla.org.xpi
│   │   ├── langpack-ro@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ro/langpack-ro@firefox.mozilla.org.xpi
│   │   ├── langpack-ru@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ru/langpack-ru@firefox.mozilla.org.xpi
│   │   ├── langpack-sco@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/sco/langpack-sco@firefox.mozilla.org.xpi
│   │   ├── langpack-si@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/si/langpack-si@firefox.mozilla.org.xpi
│   │   ├── langpack-sk@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/sk/langpack-sk@firefox.mozilla.org.xpi
│   │   ├── langpack-sl@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/sl/langpack-sl@firefox.mozilla.org.xpi
│   │   ├── langpack-son@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/son/langpack-son@firefox.mozilla.org.xpi
│   │   ├── langpack-sq@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/sq/langpack-sq@firefox.mozilla.org.xpi
│   │   ├── langpack-sr@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/sr/langpack-sr@firefox.mozilla.org.xpi
│   │   ├── langpack-sv-SE@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/sv/langpack-sv-SE@firefox.mozilla.org.xpi
│   │   ├── langpack-szl@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/szl/langpack-szl@firefox.mozilla.org.xpi
│   │   ├── langpack-ta@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ta/langpack-ta@firefox.mozilla.org.xpi
│   │   ├── langpack-te@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/te/langpack-te@firefox.mozilla.org.xpi
│   │   ├── langpack-th@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/th/langpack-th@firefox.mozilla.org.xpi
│   │   ├── langpack-tl@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/tl/langpack-tl@firefox.mozilla.org.xpi
│   │   ├── langpack-tr@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/tr/langpack-tr@firefox.mozilla.org.xpi
│   │   ├── langpack-trs@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/trs/langpack-trs@firefox.mozilla.org.xpi
│   │   ├── langpack-uk@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/uk/langpack-uk@firefox.mozilla.org.xpi
│   │   ├── langpack-ur@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/ur/langpack-ur@firefox.mozilla.org.xpi
│   │   ├── langpack-uz@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/uz/langpack-uz@firefox.mozilla.org.xpi
│   │   ├── langpack-vi@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/vi/langpack-vi@firefox.mozilla.org.xpi
│   │   ├── langpack-xh@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/xh/langpack-xh@firefox.mozilla.org.xpi
│   │   ├── langpack-zh-CN@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/zh/langpack-zh-CN@firefox.mozilla.org.xpi
│   │   └── langpack-zh-TW@firefox.mozilla.org.xpi -> /app/share/runtime/langpack/zh/langpack-zh-TW@firefox.mozilla.org.xpi
│   └── policies.json
├── firefox
├── firefox-bin
├── firefox-bin.sig
├── firefox.sig
├── fonts
│   └── TwemojiMozilla.ttf
├── gmp-clearkey
│   └── 0.1
│       ├── libclearkey.so
│       ├── libclearkey.so.sig
│       └── manifest.json
├── icons
│   └── updater.png
├── libfreeblpriv3.so
├── libipcclientcerts.so
├── liblgpllibs.so
├── libmozavcodec.so
├── libmozavutil.so
├── libmozgtk.so
├── libmozsandbox.so
├── libmozsqlite3.so
├── libmozwayland.so
├── libnspr4.so
├── libnss3.so
├── libnssckbi.so
├── libnssutil3.so
├── libplc4.so
├── libplds4.so
├── libsmime3.so
├── libsoftokn3.so
├── libssl3.so
├── libxul.so
├── libxul.so.sig
├── minidump-analyzer
├── omni.ja
├── pingsender
├── platform.ini
├── plugin-container
├── plugin-container.sig
├── precomplete
├── removed-files
├── Throbber-small.gif
├── updater
├── updater.ini
└── update-settings.ini

16 directories, 160 files

Meanwhile I'm setting up virtual machine to give it a try on clean Fedora 37

Izheil commented 1 year ago

Looks good to me, see if anything in the browser/defaults/preferences/default-preferences.js file may be interfering, and if the copied files have the right user permissions

resiehnnes commented 1 year ago

The content of default-preferences.js is:

/*global pref*/
/*eslint no-undef: "error"*/
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
pref("intl.locale.requested", "");
pref("app.update.auto", false);
pref("app.update.enabled", false);
pref("app.update.autoInstallEnabled", false);
pref("browser.shell.checkDefaultBrowser", false);
pref("spellchecker.dictionary_path", "/usr/share/hunspell");

Doesn't look sketchy to me but is very different from the one which comes with RPM Firefox.

The files (config.js + config-prefs.js) do have root permission, read only, so seems good.

Problem still exists.

P.S. Same problem trying with clean Fedora in VM

Izheil commented 1 year ago

Can you check in about:config and see if the value general.config.filename is set to config.js? It's not quite clear in which config file it's failing exactly

After checking that, use the patcher to remove the patch as a whole, and try adding it manually.

Izheil commented 1 year ago

Alright, so after digging a bit more about how flatpak handles installations, it seems that it isolates files so that the method to apply here isn't as straightforward...

According to this bugzilla ticket if you set as root folder in the patcher /etc/firefox it should work, so you should end up with /etc/firefox/config.js and /etc/firefox/defaults/pref/config-prefs.js.

resiehnnes commented 1 year ago

Can you check in about:config and see if the value general.config.filename is set to config.js?

Yes, all set good here.

After checking that, use the patcher to remove the patch as a whole, and try adding it manually.

Did everything manually, even compared hash numbers of files from github with the ones from patcher, same result and no go...

Alright, so after digging a bit more about how flatpak handles installations, it seems that it isolates files so that the method to apply here isn't as straightforward...

According to this bugzilla ticket if you set as root folder in the patcher /etc/firefox it should work, so you should end up with /etc/firefox/config.js and /etc/firefox/defaults/pref/config-prefs.js.

I tried with /etc/firefox/ and some other folders like:

/app/lib/firefox/firefox-bin (it is shown as Application Binary folder in about:support, even tho I had to create it) /lib64/firefox (it was there, but maybe leftover from RPM firefox)

In Flatseal I granted to those folders access permission, not sure if it was necessary, but who knows..

Nothing worked, but I never had this error message when launching firefox. It only pops up when scripts are in this location, so this could mean the scripts were not loading at all, or it did but no multi-row tabs.

There has to be something, we're getting close my friend

Izheil commented 1 year ago

For what I know, the popup seems to trigger when it can't find the config.js file.

If you completelly remove the patch files (both config.js and config-prefs.js) from the root folder and only place them in /etc/firefox does an error trigger?

Even if multirow doesn't seem to work, you can still see if it's a multirow issue or the config files using this test file (Right click and save as...).

If nothing else it should be obvious after restarting firefox that the patch is kicking in with that file in.

If it doesn't trigger the popup but it still doesn't work, it might also be an issue with the chrome folder being somewhere else due to flatpak as well (it seems like even if firefox says on their about: pages that the profile folder is somewhere, flatpak might be using a completelly different folder).

For example, for someone in reddit this was the location of their profile folder: location of chrome folder

resiehnnes commented 1 year ago

If you completelly remove the patch files (both config.js and config-prefs.js) from the root folder and only place them in /etc/firefox does an error trigger?

Been trying this. The error pops up only when config files are placed in 'working' root folder, but it never does when they removed from root and placed only in /etc/firefox

If it doesn't trigger the popup but it still doesn't work, it might also be an issue with the chrome folder being somewhere else due to flatpak as well (it seems like even if firefox says on their about: pages that the profile folder is somewhere, flatpak might be using a completelly different folder).

For example, for someone in reddit this was the location of their profile folder:

Indeed, the path to profile folder is showing wrong in about:profiles page, but the one I am using looks like a valid one (I have arkenfox user.js installed and configured in this folder, and it does work), also, the Multi-Tab patcher is showing correct profile path at start. But the root folder it shows as /usr/lib64/firefox, I tested it out, no go..

Even if multirow doesn't seem to work, you can still see if it's a multirow issue or the config files using this test file (Right click and save as...).

I downloaded the test file, could you lead me where I have to place it and how does it work?

Izheil commented 1 year ago

You'd place it inside a folder named "chrome" that you will have to create inside your profile folder. In this folder you'd have to place the utils folder as well from the patcher, so inside "chrome" folder, but outside "utils", which is also inside the "chrome" folder.

It will show red borders everywhere in the browser after you restart the browser with the file placed, making it very obvious to see if the patch is working or not. This is just to test the patch, and you can remove it later once we make sure that the function files are being recognized.

Izheil commented 1 year ago

This might also be a given, but make sure that in about:config you have set toolkit.legacyUserProfileCustomizations.stylesheets to true.

resiehnnes commented 1 year ago

toolkit.legacyUserProfileCustomizations.stylesheets set to True

This is how my chrome folder looks inside of default profile folder:

[root@**** chrome]# tree
.
├── MultiRowTab-scrollable.uc.js
├── Test.as.css
└── utils
    ├── chrome.manifest
    ├── userChrome.jsm
    └── xPref.jsm

2 directories, 5 files

So I tried two ways, placing config files in my actual root folder which gives me a warning as usual, but no red borders. Placing config files in /etc/firefox/ - no warning message, no red borders.

This is how my /etc/firefox/ folder looks:

[root@**** firefox]# tree
.
├── browser
│   ├── defaults
│   │   └── preferences
│   └── features
├── defaults
│   ├── config.js
│   └── pref
│       └── config-prefs.js
├── distribution
└── fonts

9 directories, 2 files
Izheil commented 1 year ago

The chrome folder looks good, the /etc/firefox folder isn't exactly right. Place the config.js right at /etc/firefox, so not inside the defaults folder, but along all other browser, defaults, distribution and fonts folders.

├── browser
│   ├── defaults
│   │   └── preferences
│   └── features
├── defaults
│   └── pref
│       └── config-prefs.js
├── distribution
├── fonts
└── config.js

Same way as before, check that this is getting set with that setup:

Can you check in about:config and see if the value general.config.filename is set to config.js?

resiehnnes commented 1 year ago

The chrome folder looks good, the /etc/firefox folder isn't exactly right. Place the config.js right at /etc/firefox, so not inside the defaults folder, but along all other browser, defaults, distribution and fonts folders.

My bad, I fixed that in /etc/firefox/ but nothing changed. The actual root folder was correct, but I tried one more time and it's same as in my previous comment.

Can you check in about:config and see if the value general.config.filename is set to config.js?

Screenshot from 2023-01-26 22-48-55

Izheil commented 1 year ago

Alright, good, at least it means that it's reading the files from /etc/firefox, so we can consider that part correct for now...

It doesn't seem to be reading the patch files of the profile, so we should make sure that we are placing it on the right folder inside the profile folder.

The easiest way right now would be changing the name of test.as.css to userChrome.css and see if changes are being applied after a Firefox restart. Since it's a built-in thing of Firefox it should work even if the patch doesn't as far as we are placing the files in the right folder.

resiehnnes commented 1 year ago

The easiest way right now would be changing the name of test.as.css to userChrome.css and see if changes are being applied after a Firefox restart. Since it's a built-in thing of Firefox it should work even if the patch doesn't as far as we are placing the files in the right folder.

Yes, after renaming test file I can clearly see it's working (red boarders)

Izheil commented 1 year ago

I'm quite confused as to why it isn't working if everything is in the right place, but maybe it has to do with Firefox thinking the profile folder is somewhere else, since config.js tells it to fetch the files from the profile, which Firefox might not even know that it's not looking in some isolated location...

In about:support you mentioned it said the binary path, but it should also show the profile path that Firefox sees.

Try recreating the {profile-folder-path}/chrome/{utils folder and other .css/.js files here} setup with the profile that firefox is showing there and see if that helps. To test that change the name of userChrome.css back to test.as.css, just to make sure it's its the actual patch.

resiehnnes commented 1 year ago

I am very grateful for your help despite we didn't figured out the problem yet :-)

So here are some screens so you can see it yourself how everything looks:

about:profiles :

Screenshot from 2023-01-26 23-24-09

about:support :

Screenshot from 2023-01-26 23-25-48

Actual root folder is located here:

/var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/active/files/lib/firefox

Actual profile folder is located here:

/home/****/.var/app/org.mozilla.firefox/.mozilla/firefox/j5g0wozr.default-release

resiehnnes commented 1 year ago

Try recreating the {profile-folder-path}/chrome/{utils folder and other .css/.js files here} setup with the profile that firefox is showing there and see if that helps. To test that change the name of userChrome.css back to test.as.css, just to make sure it's its the actual patch.

I think I already tried it before but I will give one more go and report back

resiehnnes commented 1 year ago

So I created this folder structure /home/****/.mozilla/firefox/j5g0wozr.default-release because there was none and placed script files in chrome folder:

[root@**** .mozilla]# tree
.
└── firefox
    └── j5g0wozr.default-release
        └── chrome
            ├── MultiRowTab-scrollable.uc.js
            ├── Test.as.css
            └── utils
                ├── chrome.manifest
                ├── userChrome.jsm
                └── xPref.jsm

5 directories, 5 files
[root@a-name .mozilla]# 

Nothing changed, old story.

resiehnnes commented 1 year ago

I'm going to rest my friend, thanks for helping me out, hopefully we solve it out soon :-) Goodnight!

Izheil commented 1 year ago

Well, I checked if there was some issue with the files of the patch, and it seems like FF108 has caused some issues on linux distros, which have been fixed now, so I updated the dependencies and reuploaded the patcher and the files.

Try using the patcher when you can with the root folder from /etc/firefox and the chrome folder from flatpak (not the one from /home/****/etc...

resiehnnes commented 1 year ago

Ok, so I rolled up clean Fedora 37 in VM, downloaded updated Multi-Tabs patcher and made bunch of tests with different Firefox installations:

Firefox (stock, .rpm) 109.0 Firefox (flathub's, .flatpak) 109.0 Firefox (fedora's, .flatpak) 109.0

... also I tested how /etc/firefox/ folder is involved here.


First I patched Firefox (.rpm) which was pre-installed in the distro. Patcher found correct locations for root and profile.

Root folder location: /lib64/firefox

Profile folder location: /home/bob/.mozilla/firefox/szexphca.default-release

Note: There was empty /etc/firefox/pref folder already in the system.

Summary: All went smooth and worked without tinkering.

After that I uninstalled Firefox and checked if /etc/firefox/ is still there but it got removed.


Next I installed Firefox (fedora's, .flatpak) which is different in some way (compiling?) to the one I'm using on my PC. Patcher recognized only profile folder, while root folder I had to locate myself.

Root folder location: /var/lib/flatpak/app/org.mozilla.Firefox/x86_64/stable/active/files/lib64/firefox

Profile folder location: (showed correctly in about:profiles) (see ' Note') /home/bob/.mozilla/firefox/12ho3m5v.default-release

Note: /etc/firefox/ folder did not appeared after installing this Firefox.

*Note: This is probably the reason why Firefox can read and open valid profile folder in about:profiles because it has access to it (~/.mozilla:create) which you can see in the image below (app name is Flatseal, gui to control permissions for flatpak apps)

1

If I remove this path (~/.mozilla:create) in Flatseal and restart Firefox it will create and use a new profile in this folder instead: /home/bob/.var/app/org.mozilla.Firefox/cache/mozilla/firefox/a1mrepy0.default-release

Summary: No go, same error pops up when launching with no multi-tabs despite which profile folder I am patching.

Uninstalled.


Now I installed Firefox (flathub's, .flatpak) which I use on my current PC and which was working fine with Multi-Tabs till 107 or 108 version.

Root folder location: /var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/active/files/lib/firefox

Profile folder location: (showed incorrectly in about:profiles) (see ' Note') /home/bob/.var/app/org.mozilla.firefox/.mozilla/firefox/mb52jgyc.default-release

Note: /etc/firefox/ folder did not appeared after installing this Firefox.

*Note: This version of flatpak's Firefox does not have any access permissions showed in Flatseal, so no wonder why it does create profiles in unusual location instead of more common /home/bob/.mozilla/firefox/

What comes interesting here, if I add ~/.mozilla access in Flatseal and create '/home/.mozilla/firefox' path then after launching Firefox it will create a new profile in this folder and use it instead of one located here: /home/bob/.var/app/org.mozilla.firefox/.mozilla/firefox/mb52jgyc.default-release

Summary: No go, same error pops up when launching with no multi-tabs despite which profile folder I am patching.


So here you go, I tried lots of different ways to make it work (some I don't even mention here because there's too many), mostly copying/pasting here and there and giving folder permissions in Flatseal.

One more thing to note, general.config.filename string is empty by default and sets to config.js whenever there is config.js file located in actual root folder, but this string gets empty again if it's in /etc/firefox/ for example.

Go figure.... :-)

Izheil commented 1 year ago

Placing the root folder files in the actual root folder of flatpak always fails, so no point on placing them there anymore, it will just give you an error because it won't be able to read config.js file, as stated on the bugzilla from earlier comments.

Placing the files in /etc/firefox is the way to go, it was even mentioned in some of the lastest issues of xiaoxiaoflood's repository, which is the one we get the patch files from, and the snap forum that was linked in the bugzilla previously mentioned.

I am not sure why in one of those last attempts on the VM general.config.filename was set as empty, but it was working in the lastest test we did:

The chrome folder looks good, the /etc/firefox folder isn't exactly right. Place the config.js right at /etc/firefox, so not inside the defaults folder, but along all other browser, defaults, distribution and fonts folders.

My bad, I fixed that in /etc/firefox/ but nothing changed. The actual root folder was correct, but I tried one more time and it's same as in my previous comment.

Can you check in about:config and see if the value general.config.filename is set to config.js?

Screenshot from 2023-01-26 22-48-55

Make sure that the root files are only on /etc/firefox, without any left over on the actual root folder of firefox, and the profile files are in the profile location where your arkenfox file was working (but inside the chrome folder instead).

resiehnnes commented 1 year ago

After clean FF install before applying Multi-Tab patch the general.config.filename string is empty. So I edit it to config.js as in your last comment. After that I place config.js and config-prefs.js in /etc/firefox folder, so it looks like this and there's nothing else, only two files and two folders:

[bob@fedora etc]$ tree
├── firefox
│   ├── config.js
│   └── defaults
│       └── pref
│           └── config-prefs.js

Script files I keep in my profiles folder here (I removed everything else to keep focus on files and folders we are working with):

[bob@fedora g3ptixkf.default-release]$ tree
.
├── chrome
│   ├── MultiRowTab-scrollable.uc.js
│   └── utils
│       ├── chrome.manifest
│       ├── userChrome.jsm
│       └── xPref.jsm

As you can see 'chrome' folder is located in 'g3ptixkf.default-release' which is my profiles folder.

Does everything looks good, or I am totally missing something? I just can't get it work and am feeling clueless. Probably I miss something here..

Do I have to give permission to access 'etc/firefox' folder in Flatseal or Firefox does have access by default? Either way nothing changes.

Izheil commented 1 year ago

Your setup looks good, but it looks like it's a flatpak issue after all, as seen here. It seems like in snap the issue doesn't seem to be a problem.

The reason why it worked for you before is that Firefox for flatpak and snap worked out of the box before 108, but Mozilla introduced the new way of locating the files after that version, as per the bugzilla.

At this point it doesn't matter what we try, since the file won't be read until flatpak fixes the issue, so either you use snap, or use the default installation method of Firefox, since the only way for config.js to be read would be for it to be readable from the root folder (which it isn't for flatpak nor snap after 108), or read it from /etc/firefox (which it can't in flatpak due to /etc folder being blacklisted for file access)

I even created a VM with Fedora 37 and tried a few combinations as well, but while it reads userChrome, what it doesn't read is indeed the config.js file altogether. Oddly enough it reads the config-prefs.js file if you place it in the actual root folder as you were doing before, which is why it triggers the popup (It recognizes that it should look for config.js, but it can't access it for some reason, nor can't we expose it since flatpak can't expose /etc/firefox currently. Flatseal also won't be able to expose the /etc folders since it's a blacklisted folder to expose on flatpak), so... yeah, not much we can do about it.

resiehnnes commented 1 year ago

I see, it is unfortunate, but at least there is a way to have your tool working with .rpm Firefox. I will keep an eye on this problem with future flatpak and firefox updates and let you know if something comes up. If it's ok for you we can keep this topic opened if someone comes with solution or any news regarding this issue.

Thank you for taking your time to help me out, I appreciate it. Have a wonderful weekend.

Izheil commented 1 year ago

Since this isn't even the repository of multirow I'd rather close this, since it will only cause confusion. Besides, I wasn't even suposed to give support after archiving the other repository, since the point was to stop working on it.

If there is any new fix in the future feel free to reopen this tho, and I'll append the fixes to the wiki of the other repository.