Split-Browser Bookmarks, Logins & Browsers

What does it look like? Can probably make a Python script to convert it in my free time.

+1. Only way I know so far is to manually edit the file in the offline vm.

That would be great, indeed. Iā€™m not sure I understand your question. Itā€™s a bookmarks.html exported from my browser?

I was asking if you could post a snippet (with random sites) of what the file looks like because Iā€™ve never exported it. Or tell me which browser you exported from so I can replicate it.

Probably better to convert from Firefoxā€™s / Tor Browserā€™s .json bookmark backup format (instead of from the legacy .html format). Hereā€™s a first attempt at this: split-browser-bookmark-json2tsv

This is one of the things that will hopefully be solved any day nowā„¢ by the addition of a hook system - quote from an older PM:

Iā€™m currently working on a generic ā€œhook hotkeyā€ feature (maybe assigned to Ctrl-!). The rough idea is that it would pop up a dmenu window where e.g. foo bar baz can be entered to launch the command ~/.local/share/split-browser/hooks/foo 'bar baz' with [ā€¦] $SB_URL and $SB_TITLE of the active tab.

For example, an included hook could unbookmark the active tabā€™s URL (after confirmation).

Ah, OK, thanks for clarifying. Hereā€™s a sample

<DL><p>
    <HR>    <HR>    <DT><H3 ADD_DATE="xxxxxxxxxx" LAST_MODIFIED="xxxxxx" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3>
    <DL><p>
        <DT><H3 ADD_DATE="xxxxxxx" LAST_MODIFIED="xxxxx">Bookmarks bar</H3>
        <DL><p>
            <DT><H3 ADD_DATE="xxxxxxxx" LAST_MODIFIED="xxxxxx">Computers</H3>
            <DL><p>
                <DT><H3 ADD_DATE="xxxxxxxx" LAST_MODIFIED="xxxxxxx">Hardware</H3>
                <DL><p>
                    <DT><H3 ADD_DATE="xxxxxx" LAST_MODIFIED="xxxxx">Upgrade</H3>
                    <DL><p>
                        <DT><A HREF="https://ark.intel.com/compare/xxxxx" ADD_DATE="xxxxx" LAST_MODIFIED="xxxxxx">IntelĀ® Product Specification Comparison</A>
                        <DT><A HREF="https://ark.intel.com/compare/xxxxxxx" ADD_DATE="xxxxxx" LAST_MODIFIED="xxxxxxx" ICON_URI="fake-favicon-uri:https://ark.intel.com/compare/xxxxxx" ICON="data:image/png;base64,xxxxxxxx
		    </DL><p>
...

Is there some way, in the persistent VM, to display the bookmarks?

Every command I try simply tries to open a disposable (and the disposable immediately shuts down).

Displaying the bookmarks in the persistent VM is normally triggered by just pressing Alt-b in the DisposableVMā€™s browser.

If you want that same bookmarks window triggered from the persistent VM, the command is split-browser-bookmark get. To be able to open a website from that, you also have have to tell it which currently running Split Browser instance to use:

SB_CMD_INPUT=/run/split-browser/cmd-... split-browser-bookmark get
1 Like

In the persistent VM, split-browser-bookmark get opens a window wider than my display [the direct result of an X motif idiot design decision Iā€™ve had to deal with professionally for over 20 years], and two rows high. Thereā€™s nothing in it (unsurprising, Iā€™ve saved no bookmarks), but itā€™s really rather disconcerting that I canā€™t make the window narrower or otherwise resize it. Itā€™s specifically forbidden to do so.

Otherwise, yes, Iā€™ve made some progress.

Let me set the context by stating I didnā€™t install whonix, at all. (Whonix is utterly worthless to me, it either takes MUCH too long to load a page, or it takes MUCH too long to load a blank page.) Yesterday, I was unable to start the disposable from the persistent, because of that. (However, I could simply fire up the disposable directly through the qubes menu.) Tonight I finally did get the Disposable-based firefox to open from the persistent VM either through the menu entry (probably the intended method!) or on the command line; Iā€™ll describe that below.

But first, opening firefox in the disposable, alt-b simply opens the bookmarks menu in Firefox. It does not cause the bookmarks window to open at all. So apparently the hot key doesnā€™t work for some reason.

For the DVM-templateā€™s TemplateVM I cloned a template that has a ā€œhardenedā€ and customized firefox on it (not quite Arkenfox, but Iā€™m headed that way). Many of the user settings I wanted, however, were on the DVM-Template itself; I finally figured out just now that I needed to clone that as well, or Iā€™d lose those settings. (Should have been obvious.)

OK, now what did I do to get it working at all?

The github readme tells me that if I donā€™t want to use whonix, I should link a certain file. However, linking implies a file and a name of the link to the file, and only one is given, so I canā€™t figure out what youā€™re trying to tell me to do. I found the file in /etc/split-browser-dispā€¦ where do you want the link?

Non-ā€œTor Browserā€ versions of Firefox should also work: Symlink [/usr/local]/etc/split-browser-disp/22-firefox.bash.EXAMPLE (or copy it, if you need to adjust the Firefox location) without the .EXAMPLE suffix.

I eventually figured out that I needed to link that file to the same directory (and Iā€™m not sure what you need by putting /usr/local in square brackets). AND I had to rename the whonix file to .SAVE or it would be read. I ended up just renaming the firefox file and editing it because both the path and executable name were wrong [you did warn people about the path].

I think that statement in the github readme could possibly be a bit clearer.

The following error is thrown when I run split-browser on the command line in the persistent VM:

disp: Missing chrome or resource URL: resource://gre/modules/UpdateListener.jsm
disp: Missing chrome or resource URL: resource://gre/modules/UpdateListener.sys.mjs
disp: Missing chrome or resource URL: resource://gre/modules/UpdateListener.jsm
disp: Missing chrome or resource URL: resource://gre/modules/UpdateListener.sys.mjs

Also, closing the browser does NOT shut down the disposable. Is it supposed to?

Anyhow, I think Iā€™m getting closer, but the link between the disposable browser back to the persistent machine doesnā€™t seem to be there quite yet.

[EDIT: UGH. Except for the missing shortcuts, it looks like a lot of previous comments in this thread covered a lot of these issues. Sorry for wasting your time with them.]

Running split-browser-bookmark add (to put some things in the menu so I can see how it looks) results in ā€œline 24: notify-send: command not found.ā€ but the item does get added. (Note that quotes must go around the title if itā€™s more than one word long, i.e., has embedded spaces.)

Oh, and what do I put in place of those three dots? And is that two separate commands?

[EDIT: Never mind that question. It looks like Iā€™m supposed to put the DVM number.]

However, /run/split-browser will have something like cmd-1411 even though the DVM number is completely different (disp4366)! And it insists on 1411, Are the numbers supposed to match? If not, how am I supposed to know, if I have multiple disposable browsers running, which one is which?

Also, the command has no effect on the running browser. Would it, if the numbers matched?

It sounds like that Arkenfox-like setup is clobbering Split Browser on the disposable side:

That shouldnā€™t be necessary. The configuration values in the higher-numbered 22-firefox.bash will essentially override those in the lower-numbered 21-tor-browser.bash in the same directory.

Is there really no firefox-bin executable inside the Firefox directory? What Firefox build is this?

If the persistent side is based on debian-11-minimal, install the libnotify-bin package to get notify-send. (Although given how many dependencies that package pulls in, maybe just switch the persistent side to a non-minimal template instead.)

No, by default it would be the PID of the split-browser process. But itā€™s a moot point: After amending that Arkenfox-like setup you wonā€™t have to invoke split-browser-bookmark manually at all, nor mess around with environment variables.

Iā€™m not on Qubeville right now so I canā€™t try out what youā€™ve suggested, but I can respond to a couple of things. The firefox executable in /usr/bin is simply named ā€œfirefoxā€ (no -bin), and thereā€™s also a ā€œfirefox-esrā€ which is a link to firefox (or maybe itā€™s the other way around). I didnā€™t give the path directly to the firefox directory, I just pointed to /usr/bin.

Iā€™m not actually using Arkenfox, but rather, I just copied a template where I did some custom settings to get rid of behavior that irks me. Nevertheless Iā€™ll look into the chance that that is nuking the keyboard shortcuts tonight (my timezoneā€“I get the impression youā€™re in a very different one than I am, perhaps in Europe. I am in UTC-7 (Mountain Time as itā€™s called in the US)).

Agreed if I can get the keyboard shortcuts to work then trying to invoke from the Persistent is likely unnecessary.

Iā€™ve been pondering a more sophisticated GUI for the bookmark listing (and I know gtk well enough to struggle through it), including nesting bookmarks in folders, etc., and being able to right-click on a bookmark and pick an existing VM to open it in a popup menu, or double click on it and open the bookmark in a new DVM. (That right click would require a way to display the VM name rather than the process ID so maybe not.) It would represent a slight (and optional) change in orientation; the persistent machine could act as a ā€œcontrol panelā€ from which you could launch DVMs (pushing bookmarks rather than the DVMs pulling them), though you could still call things up from the DVMs too as todayā€“it would look no different from that end in fact other than having a nested list. So in addition to the current mode where you start a DVM from the persistent VMā€™s menu, then use the DVM to request and save bookmarks (and open additional tabs), youā€™d be able to fire up the bookmark manager in the persistent VM and either open DVMs from it with a bookmark loaded, or send other bookmarks to an already running DVM. (Additional feature: you could even define a set of related bookmarks (put them all in the same folder) and have the DVM open all of them when it starts.) Compared to what you had to do to get the VMs talking to each other, this should be easy!

But! First things first, I have to get this working in its current configuration!

Thanks for all of your help, thus far, and in the future.

SB_FIREFOX_DIR=/usr/bin definitely canā€™t work, which would explain why the browser-side code (not just hotkeys but everything!) is not running. SB_FIREFOX_DIR has to point to the main Firefox installation directory, where youā€™ll see a bunch of Firefox related files such as platform.ini, libxul.so, firefox-bin. For Firefox ESR on Debian that directory is /usr/lib/firefox-esr. (Both the directory itself and also defaults/pref/ inside it must be made writable by the VMā€™s default user if the packages qubes-core-agent-passwordless-root and sudo arenā€™t installed.)

If Split Browser is installed from qubes-repo-contrib the path is sorted out automatically, i.e. 22-firefox.bash.EXAMPLE would already contain the correct path for your distribution.

1 Like

Itā€™s possible I misremembered and it was actually /usr/lib not /usr/bin.

A browser definitely came up for me yesterday, and it was configured the way I configured it (before installing split-browser stuff that is). The only thing that didnā€™t work is the hotkeys. So I am guessing I misremembered the path when I responded earlier. Will confirm tonight. (I am definite though on there being nothing named firefox-bin wherever it was I looked.)

OK. Started out with a new disposable template, one with just straight up Firefox ESR on it (no ā€œhardening,ā€ no arkenfox).

It turns out the directory is indeed /usr/lib/firefox-esr (though the 22 file doesnā€™t have the -esr suffix).

Thatā€™s what fooled me the first time around. I saw what was in the default 22 file and tried to cd to /usr/lib/firefox and of course that didnā€™t exist, so I did a which on firefox and it pointed me to /usr/bin which is a softlink. Inside of /usr/lib/firefox-esr there is indeed a firefox-bin. So now thatā€™s all set up.

Without hardening and with the correct path, it works!!!

THANK YOU.

I can try experimenting with cloning that template and trying to ā€œhardenā€ it to see if that works or not (I suspect it wonā€™t but who knows?)

Iā€™m also still thinking of trying that nested menu. Do people here object to gtk and C++? (No, I will not use gtkmm, which requires a crap-ton of additional libraries.)

One other tiny nit: on debian-11-minimal, it wouldnā€™t install dmenu, instead it installed something called suckless-tools. Possibly the instructions should be updated. Since the switch happens automatically, you might not feel itā€™s necessary to change the instructions.

Yep, using the package name dmenu makes the installation instructions compatible with more distributions in addition to Debian.

What do you think: @deeplow to split this topic from here for example, so @SteveC could marked some @rustybirdā€™s post as a solution, so as more visible it could help other users too?

1 Like

Oh, I wasnā€™t trying to suggest you shouldnā€™t mention dmenu (itā€™s certainly right for other systems!); I just thought a note that on debian itā€™s replaced by suckless-tools might make sense or reduce confusion.

It really doesnā€™t matter because apt install makes the substitution automatically. (It does, however, throw an error in a salt run, even though itā€™s not really an error.)

[Yes, Iā€™ve got the thing ā€œsaltedā€ for my environment now.]

1 Like

I agree in principle. The difficulty with the split would be assigning the title, because multiple things came up. My original post turned out to be a totally different issue (basically a how-to) than the ā€œbugsā€ (which werenā€™t bugs, they were really a bad install on my part) rustybird helped me with. And then I said I might come up with an ā€œimprovedā€ (your mileage may vary) bookmark gui, so thatā€™s yet a third topic! (I think that one probably shouldnā€™t be reflected in the title.)

A counter argument to the split is that this thread as it exists is a one-stop shop for problems having to do with (mis)installing split-browser and might be more convenient for that reason.