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.
And … guess what … www.bleepingcomputer.com, the source of the story, is one of those.