This gets a bit messy. Here's a python code snippet that gives you some idea what I'm up to with my Debian/Gnome desktop:
if while_tweaking('all', 'default browser', '√'):
ChangeSymbolicLink(
name='gnome-www-browser',
action='Make Tor the default browser.',
old=f'~ccrhode/tor-browser_en-US/{TBB_SCRIPT}',
new='/etc/alternatives/gnome-www-browser',
)
ChangeSymbolicLink(
name='x-www-browser',
action='Make Tor the default browser.',
old=f'~ccrhode/tor-browser_en-US/{TBB_SCRIPT}',
new='/etc/alternatives/x-www-browser',
)
ChangeGConf(
name='http handler',
action='Change default Gnome http handler.',
path='/desktop/gnome/url-handlers/http',
key_values={'command': 'gnome-www-browser "%s"'},
)
ChangeGConf(
name='https handler',
action='Change default Gnome https handler.',
path='/desktop/gnome/url-handlers/https',
key_values={'command': 'gnome-www-browser "%s"'},
)
ChangeGConf(
name='default browser',
action='Change default Gnome browser.',
path='/desktop/gnome/applications/browser',
key_values={'exec': 'gnome-www-browser'},
)
if while_tweaking('personal', 'desktop_icons', 'all', 'default browser', '√'):
full_path = home_path(f'tor-browser_en-US/{TBB_SCRIPT}')
ChangeDesktopLauncher( # 2013 Jun 29
name='firefox',
action='Desktop icon for browser.',
exec_=f'{full_path} -new-window %U', # 2015 May 14
desktop_name='New Window',
icon='/usr/share/pixmaps/other/Web.png',
comment="New window for Tor browser.",
)
ChangeDesktopLauncher( # 2013 Jun 29
name='firefox',
action='Desktop icon for browser.',
exec_=f'{full_path} -new-tab %U', # 2015 May 14
desktop_name='New Tab',
icon='/usr/share/pixmaps/other/Web.png',
comment="New tab for Tor browser. This desktop item IS the default browser. Please leave as-is.",
key_values={
'MimeType':
'text/html;'
'text/xml;'
'application/xhtml+xml;'
'application/xml;'
'application/vnd.mozilla.xul+xml;'
'application/rss+xml;'
'application/rdf+xml;'
'image/gif;'
'image/jpeg;'
'image/png;'
'x-scheme-handler/http;'
'x-scheme-handler/https;'
'x-scheme-handler/about;'
'x-scheme-handler/unknown;'
},
)
path_local_apps = home_path('.local/share/applications')
ChangeMkdir(
name='firefox',
action='Make default mime desktop files',
path=path_local_apps,
)
APPS_REPERTOIRE = [
home_path('Desktop/tweaks-New Tab.desktop'),
'/usr/share/applications/org.gnome.Evince.desktop', # 2020 Jul 31
'/usr/share/applications/org.gnome.gedit.desktop', # 2020 Jul 31
]
for app_name in APPS_REPERTOIRE:
ChangeSymbolicLink(
name='firefox',
action=f'Link {app_name}.',
old=app_name,
new=path_local_apps,
)
ChangeCommand(
name='firefox',
action='Update Mime cache',
args=f'update-desktop-database "{path_local_apps}"',
)
ChangeCommand( # 2023 Jan 10
name='firefox',
action="Force ownership of mimeinfo.cache.",
args=f'chown {USER.name}:{USER.name} "{path_local_apps}/mimeinfo.cache"',
)
ChangeScript(
name='firefox',
action='Create defaults list.',
file_name=f'{path_local_apps}/mimeinfo.cache',
regexs_subs=[
(r'\[MIME Cache\]','[Default Applications]'),
]
)
ChangeSymbolicLink(
name='firefox',
action='Link mimeinfo.cache',
old=f'{path_local_apps}/mimeinfo.cache',
new=f'{path_local_apps}/defaults.list',
)
ChangeDesktopLauncher(
name='tor',
action='Desktop icon for anonymizing browser.',
exec_=full_path,
desktop_name='Tor',
icon=home_path('tor-browser_en-US/onion.png'),
comment="TOR anonymizing browser",
)
ChangeDesktopLauncher(
name='firefox',
action='Desktop icon for Firefox browser.',
exec_='firefox', # 2022 Jan 10
desktop_name='Firefox',
icon='/usr/share/icons/hicolor/64x64/apps/firefox-esr.png', # 2023 Jan 23
comment="Firefox browser",
)
IS_DESKTOP_DIRTY = True
In other words, in place of your browser invocation, you want a script that applies the -new-tab option to the browser invocation and you have to correct a bunch of Gnome configs, symlinks, and MimeTypes to get that to stick.
OK, I'm going to wade in here. It occurs to me that the OP could make use of my Tonto2 Python3 script for Linux and Windows. It puts a spreadsheet-like user interface over a *.csv file or files. You just need to make a home for the tag file(s). You can make bookmark lists that way and open the embedded http:// links in your browser. You could use file:/// links for local images. You could add as many columns as you want for all kinds of tags and sort and search the values to your heart's content.