Giter Club home page Giter Club logo

browsers's Introduction

Browsers

Open the right browser at the right time

For Linux, Mac and Windows

MIT/Apache 2.0

Description

Browsers is an intuitive context menu that pops up when you press a link in an app other than a web browser.

See our website for download links and instructions
https://browsers.software

Text with web link is shown. User clicks on the web link. Popover menu with list of browsers and browser profiles is shown that user can choose from.

Special Skills

  • Non-obtrusive design, looking more like a context menu
  • Supports opening popular desktop applications directly, e.g Figma, Linear, Notion, Slack, Spotify, Telegram, Zoom.
  • Supports user profiles for browsers based on Chrome and Firefox
  • Supports Firefox containers (also need Open external links in a container extension installed until #1726634 is resolved)

Technical Special Skills

  • Does not run in the background. Opens and closes only when you use it.
  • Runs on Mac, Linux and Windows

Download

Download for your platform

Social

License

Browsers is free and open source! All code in this repository is dual-licensed under either:

at your option. This means you can select the license you prefer!

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Supporters

  • JetBrains provides us a free open-source license for their IDEs

browsers's People

Contributors

liias avatar renovate[bot] avatar mpsijm avatar dblankevia avatar pricci1 avatar tommoyer avatar

Stargazers

 avatar Twi avatar  avatar Mohsen Khanpour avatar Ignacio avatar  avatar David D Lowe avatar  avatar Martin Vaněk avatar teamNOOB avatar Pedro Lobo avatar  avatar Rausth avatar Ervins Strauhmanis avatar Thiago Braga avatar Dave avatar Ibrahim Beladi avatar Christopher Davison avatar Masoud Ghorbani avatar  avatar Andrey Mavlyanov avatar Ibrahim Kasem avatar Ryan-the-hito avatar Rocky Stuart avatar  avatar RAVENz46 avatar Val Antonini avatar Mustafa Dagtekin avatar Rufus Cable avatar Sintsov Artem avatar Augusto Fornitani avatar Daniel Ursache Dogariu avatar  avatar Matías Agustín Méndez avatar  avatar Roberto Bigi avatar joeli avatar Jhon Pedroza avatar Zachary Kohnen avatar  avatar Andrea Giacobino avatar jacob avatar Lawrence Gripper avatar  avatar David Dennison avatar  avatar goproslowyo avatar Matan Uberstein avatar Adrian Salceanu avatar  avatar  avatar Rayat Rahman avatar Ken Rushia avatar Esron Silva avatar Jan Vlnas avatar tenziro avatar Chris L. avatar Jeff West avatar Percy Carrion avatar t avatar John Sterling avatar  avatar Arturo Martín avatar Chris avatar Charlie Smith avatar  avatar  avatar koin avatar  avatar  avatar Philipp Spindler avatar Jakob Lahmer avatar zualexander avatar  avatar Robert Loomans avatar

Watchers

 avatar  avatar Mateo Šoša avatar

browsers's Issues

Help with installation and usage on Windows

Hello I am Windows user. Trying to use this app.

When I am trying to run the .exe file both privileged and non-privileged. Tried the .bat file & the powershell script without even knowing what it is.

It would be better if the Installation process is documented. Nothing is showing up on the screen whatever I do.

I am really looking forward to using this app. Thank you.

Windows false positive match for `Trojan:Win32/Bearfoos.A!ml`

Windows Defender falsely stops browsers.exe from running stating it's Trojan:Win32/Bearfoos.A!ml

Also, when running install.bat from the zip file directly it can complain that there are shortcut files present and it could remove those. Or it could remove the .exe file.

Open browser with a number hotkey

Even though I use mouse for clicked links, it's very convenient to use keyboard to choose the browser I want.

It would be great to display numbers before (or after) each browser in a list, and open the link in needed browser hitting this hotkey.

Example image
image

Donating to Browsers

Is there a way to give you money for creating such an awesome piece of software?

Google's enshittification of Chrome reached unbearable levels for me, finally pushing for a switch to Firefox. I need to use different profiles for work and personal stuff, and having all links open in one profile was driving me properly mad - almost had to switch back until I found your brilliant utility. And this is just perfect: cross platform, easy install, no further setup needed, and way better UX than any jank I had thought up as a solution to my problem. Thank you!

Match google oauth client_id

Describe the bug
Allow a more general url pattern to be able to match URLs like:

https://accounts.google.com/o/oauth2/v2/auth?client_id=1011112465-4naqjq0qcaqkai02r8slf3u8qlbn6g8i.apps.googleusercontent.com&code_challenge=HcSAHUkKcgDI&code_challenge_method=S256&nonce=n_x0umEr&redirect_uri=http%3A%2F%2Flocalhost%3A8250%2Foidc%2Fcallback&response_type=code&scope=openid+profile+email&state=st_sjpUxE1

Each OAuth have a differente client_id, so I was trying something like:

url_pattern: https://accounts.google.com/o/oauth2/v2/auth?client_id=1011112465**

But does not work.

Maybe allowing regexp?

Icon-related crash on Linux regression of #12

Describe the bug
Crash on KDE Plasma 5.27.6, same crash as in #12 but different line number:

Output from running /usr/bin/browsers at command line

2023-08-21T11:13:13.314774014-04:00  INFO browsers: Starting Browsers
2023-08-21T11:13:13.314801798-04:00  INFO browsers: Logging to /var/home/joe/.local/state/software.Browsers/logs/browsers.log
2023-08-21T11:13:13.314840647-04:00  INFO browsers::communicate: No other instance of Browsers was running
2023-08-21T11:13:13.314974386-04:00  INFO browsers::communicate: Started socket listener for new instances of Browser
Gtk-Message: 11:13:13.383: Failed to load module "colorreload-gtk-module"
2023-08-21T11:13:13.406281647-04:00  INFO browsers::linux_utils: icon: from /var/lib/flatpak/exports/share/icons/hicolor/512x512/apps/com.slack.Slack.png to /var/home/joe/.cache/software.Browsers/icons/com.slack.Slack.desktop.png
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/linux_utils.rs:196:10
stack backtrace:
   0: rust_begin_unwind
             at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/panicking.rs:593:5
   1: core::panicking::panic_fmt
             at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/panicking.rs:67:14
   2: core::panicking::panic
             at /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/panicking.rs:117:5
   3: browsers::linux_utils::OsHelper::get_installed_browsers
   4: browsers::generate_all_browser_profiles
   5: browsers::basically_main
   6: browsers::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

System:

  • OS: Fedora Kinoite 38
  • Browsers Version [e.g. 0.22.1] -> About: 0.4.1

FYI there's a line in the log that says:

tk-Message: 11:13:13.383: Failed to load module "colorreload-gtk-module"

I see that with any GTK app I run and so far it's been safe to ignore it. Doesn't mean it's not related, but I wouldn't put a lot of stock in it either.

Popup isnt shown in Intellj Idea

Describe the bug
Popup doesn't work when cliking link in Inteljj Idea.

For example in Plugin page in settings, when I click this link in More information, it doesn't show at all.
Switching to default Firefox, it works, link is opened.
In other apps it works (skype, slack..)

image

Nor intellj, nor firefox is installed as snap nor as flatpak.

System:

  • OS: Ubuntu 24.04 Gnome running on X11
  • Browsers Version: 0.5.5

Window too small on HiDPI screens

Describe the bug
A clear and concise description of what the bug is.

System:

  • OS: [e.g. Ubuntu 23.10 with Gnome] Fedora 40 with Gnome 46 / Wayland / 4K Monitor
  • Browsers Version [e.g. 0.22.1] -> About

iCloud Sync

This might be a crazy ask, but is there any way you could add iCloud sync for the configs? I'm currently working around this by keeping my configs in a private GitHub repo, but it's not ideal to maintain. It would be awesome if the changes I made on one machine showed up on all of the ones I use.

Safari doesn't "open" automatically anymore

Since a few days, when opening a link in Safari via Browser's menu, I'm not taken to Safari. So after clicking on a link in an email, for example, I'm still in the Mail app. So I have to CMD-TAB to go to Safari manually. When I choose Chrome however, the app switcher goes to Chrome automatically as usual. Maybe a bug or something is up with Safari?

Thanks for a great app that I use dozens of times per day!

System:

  • macOS 14.5
  • Safari 17.5

Browsers UI double-displays if Safari is not already running when a link is clicked

Describe the bug
When the Safari browser specifically (this was not observed with other browsers) is not already running, and a link is clicked in another application (Slack, for example, though it does not matter) and Safari is selected in the Browsers pop-up, Browsers will close, Safari will launch, the URL will open, but the Browsers UI opens a second time.

This only happens if the Safari browser is not already running. If it's open and able to immediately receive the request to open a site, there is no issue. But if the application needs to be launched first, there's some kind of a bounce happening

System:

  • OS: macOS Ventura 13.5
  • Browsers Version: 0.4.0

macOS - some multimonitor setups mess up dialog position

Describe the bug

Mr NTolerance report a bug at
https://www.reddit.com/r/macapps/comments/yt5uf4/browsers_open_the_right_browser_at_the_right_time/

On my Ventura system the app seems to open off screen when I click a link in an app. I can see it via Mission Control, but I don't see a pop-up that takes focus to allow me to select a browser.

The issue is reproducible with all apps. Tested specifically with Slack and VScode. I do have a triple monitor setup with this layout.

Seems like for this to work nicely with multiple monitors it will need to behave like iTerm2's drop-down terminal where the window appears on the monitor where your cursor is located.

ee0BbIm

Window appearing beneath Snap application

Describe the bug
When I click a link with Browsers set as the default application, it appears but beneath the window every time. I tried three different applications (Thunderbird, Obsidian, and Gnome Terminal). This is using the X session for Gnome, not Wayland. I tested this under the default Wayland session with Gnome and it works there as expected.

System:

  • OS: [e.g. Ubuntu 23.10 with Gnome]
  • Browsers Version [e.g. 0.22.1] -> About

Documentation for config.json or an example

Is your feature request related to a problem? Please describe.
I was trying to add some website rules as well as make use of the new feature added for quitting the app (0.4.1). I couldn't find an example file to start the mods. I wish there was a doc or a default JSON file added in the correct location if one is missing.

Describe the solution you'd like
Add documentation or example JSON file.

Describe alternatives you've considered
Read the code, but I don't rust.

Additional context
None

Browsers Stopped Working During Zoom Call

Describe the bug
Browsers is not working when in a Zoom call. Specifically, clicking on a link does not present the Browsers pallet to select a web browser. Browsers works fines outside of Zoom calls.

To Reproduce
Steps to reproduce the behavior:

  1. Perquisite: In an active Zoom meeting.
  2. Click on a web link outside of a web browser.
  3. Expected Result: the Browsers pallet is displayed.
  4. Actual Result: the Browsers pallet is not displayed.

Expected behavior
The expected behavior is that the Browsers pallet will be presented.

Desktop (please complete the following information):

  • OS: macOS 12.6.3
  • Browser version (from Get Info) 0.0.1

Update: After ending the Zoom meeting and quoting Zoom, Browsers is still not working.
Update 2: After reboot Browsers is working again.

Question: Is there a way to invoke the Browsers UI to quit and then restart?

Browsers not working on macOS

Describe the bug
Links in email do not open. Clicking then has no effect. No list of browsers is displayed.

To Reproduce
Steps to reproduce the behavior:

  1. Click on a link.
  2. Nothing happens.

Expected behavior
The app to work.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: macOS 12.6.2
  • Browsers.app 0.0.1

Nix(OS) support

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I made nix derivation to install this to my nixos, however it does not work correctly.
URL link seems not passed to this app, so app open home directory instead of link.

Here is what happened.
Kooha-2024-01-30-19-53-53.webm
And, here is my derivation
{ stdenv
, lib
, fetchzip
, autoPatchelfHook
, makeWrapper
, cairo
, gdk-pixbuf
, gtk3
}:

stdenv.mkDerivation rec {
  pname = "browsers";
  version = "0.5.0";

  src = fetchzip {
    url = "https://github.com/Browsers-software/browsers/releases/download/${version}/browsers_linux.tar.gz";
    hash = "sha256-5BiJ8G77kLlLZr7Ut0jY/hp4zncWsWO55vyCSp6NPqk=";
    stripRoot=false;
  };

  nativeBuildInputs = [
    autoPatchelfHook
    makeWrapper
  ];

  buildInputs = [
    stdenv.cc.cc.lib
    cairo
    gdk-pixbuf
    gtk3
  ];

  installPhase = ''
    mkdir -p $out/{bin,share/applications,lib}
    mv x86_64/${pname} $out/bin
    install -m 444 \
        -D software.Browsers.template.desktop \
        -t $out/share/applications
    substituteInPlace \
        $out/share/applications/software.Browsers.template.desktop \
        --replace 'Exec=€ExecCommand€' 'Exec=${pname}'
    cp -r lib $out
    for size in 16 32 128 256 512; do
      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
      cp icons/"$size"x"$size"/software.Browsers.png $out/share/icons/hicolor/"$size"x"$size"/apps/software.Browsers.png
    done
  '';

  postFixup = ''
    wrapProgram $out/bin/browsers \
      --prefix LD_LIBRARY_PATH : $out/lib
  '';

  meta = with lib; {
    description = "Open the right browser at the right time";
    homepage = "https://github.com/Browsers-software/browsers";
    changelog = "https://github.com/Browsers-software/browsers/blob/${src.rev}/CHANGELOG.md";
    license = with licenses; [ asl20 mit ];
    maintainers = with maintainers; [ ];
    mainProgram = "browsers";
  };
}

It is possible that I have made a mistake somewhere in my derivation, sorry if I did ....

Describe the solution you'd like
A clear and concise description of what you want to happen.

So, if I didn't make mistake, I hope support NixOS.
I would be more than happy to ship it to nixpkgs.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Browsers still shows uninstalled apps/profiles, even after a refresh

Describe the bug
I recently uninstalled Chrome from my system entirely. Browsers still detects and displays it after a refresh, and I'm not sure why. MacOS does prompt me with a "Allow Browsers to access data from other apps?" prompt which I always permit, but then Chrome is re-detected anyway.

I've hidden the profiles in the config for the meantime but am wondering why this is happening.

System:

  • OS: Sonoma 14.3
  • Browsers Version 0.5.1 (I know 0.5.2 is out but it's not yet showing up in Homebrew to install, if that version fixes this issue just let me know!)

Auto-choose browser

I'm always frustrated when I need to open links with different browsers. This app was a delightful cure for my problem, many thanks to you @liias ! But I would like to push it even further.

I would like this software to be able to automatically choose a browser. As far as I understand it's pretty impossible to trace the app that triggers a link opening call, but there is another way – we can make a decision based on a URL.

For example, my work is based around atlassian, bitbucket, and some other custom domains, and I want links like this to always open in my work profile. So I'd like to set regex like https://%my_company_name%.atlassian.net and https://bitbucket.org/%_my_company% and point them to my working profile.

Optionally, there could be some "tick" field in the interface saying "always open this link in this profile" or something like this. It's hard to thoroughly describe all the cases for GUI, but for manual config editing, I could imagine this feature will be not so hard.

I see that simplicity is one of the app's goals, so I would like to know if this feature considers being interesting. If not, still thank you for your efforts in writing such a convenient tool.

Since updating to 0.5.2, Arc does not open automatically based on rules in config.json

Describe the bug
This was working before in 0.5.1 with the profile support removed per advice in #94 (comment)

Now, my configured links that should direct to Arc bring up the app selection pop-up. Selecting Arc does work. But they aren't automatically being routed there.

An example rule:

    {
      "source_app": null,
      "url_pattern": "*://docs.google.com/**",
      "opener": null,
      "profile": "/Applications/Arc.app/Contents/MacOS/Arc#Default",
      "incognito": false
    },

System:

  • OS: Sonoma 14.3.1
  • Browsers Version 0.5.2

Persistently crashing on KDE Neon 22.04

Describe the bug
Persistently crashing on KDE Neon (Ubuntu derivative).

To Reproduce
Steps to reproduce the behaviour:

  1. Open a URL or run browsers from terminal. Looks like an app initialisation issue.

Expected behavior
It should not crash.

Screenshots

Stacktrace below.

~$ RUST_BACKTRACE=full .local/bin/browsers
2023-03-22T18:55:30.046157185Z  INFO browsers: Starting Browsers
2023-03-22T18:55:30.046178349Z  INFO browsers: Logging to /home/dkorah/.local/state/software.Browsers/logs/browsers.log
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/linux_utils.rs:145:31
stack backtrace:
   0:     0x55ded53f9e20 - std::backtrace_rs::backtrace::libunwind::trace::h595f06c70adcc478
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x55ded53f9e20 - std::backtrace_rs::backtrace::trace_unsynchronized::h177a0149c76cdde9
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x55ded53f9e20 - std::sys_common::backtrace::_print_fmt::hc0701fd2c3530c58
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x55ded53f9e20 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hd4cd115d8750fd6c
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x55ded530b6ce - core::fmt::write::h93e2f5923c7eca08
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/core/src/fmt/mod.rs:1213:17
   5:     0x55ded53cebf4 - std::io::Write::write_fmt::h8162dbb45f0b9e62
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/io/mod.rs:1682:15
   6:     0x55ded53fb59f - std::sys_common::backtrace::_print::h1835ef8a8f9066da
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x55ded53fb59f - std::sys_common::backtrace::print::hcb5e6388b9235f41
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x55ded53fb22f - std::panicking::default_hook::{{closure}}::h9c084969ccf9a722
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:267:22
   9:     0x55ded53fc24c - std::panicking::default_hook::h68fa2ba3c3c6c12f
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:286:9
  10:     0x55ded53fc24c - std::panicking::rust_panic_with_hook::h8d5c434518ef298c
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:688:13
  11:     0x55ded53fbcd4 - std::panicking::begin_panic_handler::{{closure}}::hf33414f5dabf6faf
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:577:13
  12:     0x55ded53fbc6c - std::sys_common::backtrace::__rust_end_short_backtrace::hc50389427413bb75
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x55ded53fbc41 - rust_begin_unwind
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/std/src/panicking.rs:575:5
  14:     0x55ded51c0f22 - core::panicking::panic_fmt::h2de7a7938f816de8
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/core/src/panicking.rs:64:14
  15:     0x55ded51c101c - core::panicking::panic::h90931f06a97cc5e0
                               at /rustc/2c8cc343237b8f7d5a3c3703e3a87f2eb2c54a74/library/core/src/panicking.rs:114:5
  16:     0x55ded52c0182 - browsers::utils::OSAppFinder::get_installed_browsers::h4b0ffc42d8c99b5d
  17:     0x55ded52774c6 - browsers::generate_all_browser_profiles::hba51cad9bfc18633
  18:     0x55ded5280e75 - browsers::basically_main::h72baa66db969b663
  19:     0x55ded52fe12c - browsers::main::h85cbb5953f3628db
  20:     0x55ded52f00a3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h9ee69c2e79fe5cb6
  21:     0x55ded52fc189 - main
  22:     0x7f1143629d90 - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  23:     0x7f1143629e40 - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:392:3
  24:     0x55ded51cbbee - _start
  25:                0x0 - <unknown>

Desktop (please complete the following information):

  • OS: KDE Neon (based on Ubuntu) 22.04
  • Browser: chrome, opera, firefox
  • Version: N/A

Smartphone (please complete the following information):

  • N/A

Additional context
None

Open in New Window

Is your feature request related to a problem? Please describe.
Opening a link in my chosen browser is helpful but if I already have many tabs sometimes I want to open a link in a new window. Currently the only way to do that is to click the link open in current browser window and then drag that tab out into it's own window.

Describe the solution you'd like
I'd like to be able to press a modified key like ctrl+# to pass something like --new-window to the browser of choice.
Did some quick research (1, 2), most browsers (Vivaldi, Brave, Opera are Chromium-variants all probably use some form of --new-window.

The only strange one that I noticed so far might be Safari for macOS. It seems like you'd be able to use macOS' native Applescript like:

osascript -e 'tell application "Safari" to make new document with properties {URL:"https://example.com"}'

That said, I'm sure there's probably a few browsers that can't or don't conform this way, For those outliers maybe an override can be specified in the config file but feels hacky.
image

Describe alternatives you've considered
It's not a big problem where I've looked for alternatives. I think it's just a quality of life improvement, that's all :) No big deal if you don't want to implement it yourself.

Additional context
Nope, thanks. I may also try to do this myself because I've been meaning to take an honest shot at rust

Persistent crashing on macOS Ventura

The app crashes on startup on macOS Ventura 13.1 (22C65) without even showing any UI.
This prevents any external link from being opened until the system default browser app is changed to something other than Browsers.

To Reproduce
Steps to reproduce the behavior:

  1. Set browsers as the default browser in macOS System Settings
  2. Click on any link or manually run /Applications/Browsers.app/Contents/MacOS/Browsers
  3. See error

Expected behavior
A context (pop-up) menu is shown, allowing the choice of one of the installed browsers

Desktop (please complete the following information):

  • OS: macOS Ventura 13.1 (22C65)
  • Browsers:
    • Safari 16.2
    • Microsoft Edge 108.0.1462.76
    • Mozilla Firefox 108.0.2
  • Other apps: iTerm 2

Additional context
Rust backtrace:

❯ RUST_BACKTRACE=full /Applications/Browsers.app/Contents/MacOS/Browsers 'https://www.google.com'
2023-01-10T15:23:33.288833+01:00  INFO browsers: Starting Browsers
2023-01-10T15:23:33.288873+01:00  INFO browsers: Logging to /Users/user/Library/Logs/software.Browsers/browsers.log
2023-01-10T15:23:33.39782+01:00  INFO browsers::macos_utils: Added app: InstalledBrowser { executable_path: "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/MacOS/Safari", display_name: "Safari", bundle: "com.apple.Safari", user_dir: "", icon_path: "/Users/user/Library/Caches/software.Browsers/icons/com.apple.Safari.png", profiles: [InstalledBrowserProfile { profile_cli_arg_value: "", profile_cli_container_name: None, profile_name: "", profile_icon: None }] }
2023-01-10T15:23:33.43048+01:00  INFO browsers::macos_utils: Added app: InstalledBrowser { executable_path: "/Applications/iTerm.app/Contents/MacOS/iTerm2", display_name: "iTerm2", bundle: "com.googlecode.iterm2", user_dir: "", icon_path: "/Users/user/Library/Caches/software.Browsers/icons/com.googlecode.iterm2.png", profiles: [InstalledBrowserProfile { profile_cli_arg_value: "", profile_cli_container_name: None, profile_name: "", profile_icon: None }] }
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: RelativeUrlWithoutBase', src/chromium_profiles_parser.rs:43:59
stack backtrace:
   0:        0x1004241ac - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he84d5e26d26c914d
   1:        0x10035b394 - core::fmt::write::h07c7e4739f78f3b0
   2:        0x100401a1c - std::io::Write::write_fmt::h4a3c5f094ffc65e8
   3:        0x100427784 - std::sys_common::backtrace::print::h6fc2cc8be2392a8e
   4:        0x1004273e4 - std::panicking::default_hook::{{closure}}::h3bb44ba6ff437e23
   5:        0x1004282b8 - std::panicking::rust_panic_with_hook::h9b8acc949e1fb807
   6:        0x100427e3c - std::panicking::begin_panic_handler::{{closure}}::hfc38b2cc56e3623c
   7:        0x100427db0 - std::sys_common::backtrace::__rust_end_short_backtrace::hbafd151207fc448f
   8:        0x100427d8c - _rust_begin_unwind
   9:        0x100449100 - core::panicking::panic_fmt::h8c7f3d540a75578f
  10:        0x1004492d0 - core::result::unwrap_failed::h666d2c7e0d130ea0
  11:        0x100305334 - browsers::chromium_profiles_parser::find_chromium_profiles::h4e2a156bece19969
  12:        0x100290178 - browsers::utils::OSAppFinder::get_installed_browsers_cached::ha42eebba31973249
  13:        0x1002e8bfc - browsers::generate_all_browser_profiles::h1b6769b8818a16b2
  14:        0x1002eeadc - browsers::basically_main::h920febe78a4fccdc
  15:        0x10034b400 - browsers::main::h39fef18b4555ca41
  16:        0x10034fb68 - std::sys_common::backtrace::__rust_begin_short_backtrace::h7f8e7c3316bd894f
  17:        0x100349bac - _main

Opening a link doesn't re-use existing app instance on Linux

Is your feature request related to a problem? Please describe.
Sometimes when clicking on a link, browsers can popup but can end up not clicked on. This can leave the app running till its clicked on. I found them all hanging around while closing down all apps before shutting down my laptop.

Describe the solution you'd like
A timeout for selection of browser can resolve this. A visual feedback would be nice to make the user aware of the popup's impending closure.

Describe alternatives you've considered
You could make browsers open only once, there by only one of them will ever keep running.

Additional context
N/A

Browsers seems to cause Arc to crash

Describe the bug
When sending URLs to the Arc browser via Browsers, the browser crashes. It appears to be something to do with the way Arc sends the profile variable.

I've got it configured as follows (retrieving the Profile ID from the config.json after a manual reordering in the UI

 {
      "source_app": null,
      "url_pattern": "*://*.mysite.url/**",
      "profile": "/Applications/Arc.app/Contents/MacOS/Arc#Profile 1",
      "incognito": false
    },

Opening links that match this pattern has the expected behavior of automatically routing the request to Arc, but then Arc immediately "has quit unexpectedly"

I tried disabling the "Little Arc" functionality that opens external URLs as a pop-over window, thinking that might be the cause. It didn't help.

System:

  • OS: MacOS 13.5.2, Arc 1.7.0, M2 silicon
  • Browsers Version 0.4.1

Rules in config.json do not work

Describe the bug
Rules in config.json do not work

System:

  • OS: macOS 14.0 and Windows 11
  • Browsers Version [e.g. 0.22.1]: 0.4.1

macOS config:
{ "hidden_apps": [], "hidden_profiles": [ "/Applications/Firefox.app/Contents/MacOS/firefox#default", "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/MacOS/Safari#" ], "profile_order": [], "default_profile": null, "rules": [ { "url_pattern": "https://www.google.com/", "profile": "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/MacOS/Safari" } ], "ui": { "show_hotkeys": true, "quit_on_lost_focus": false } }

Windows 11 config:
{ "hidden_apps": [], "hidden_profiles": [ "C:\\Program Files\\Mozilla Firefox\\firefox.exe#default" ], "profile_order": [], "default_profile": null, "rules": [ { "url_pattern": "https://www.google.com/", "profile": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe" } ], "ui": { "show_hotkeys": true, "quit_on_lost_focus": false } }

Firefox is not visible in MX-Linux Xfce

Xfce-based Firefox is not reported for https mimetype.
Also the built-in browser is not reported (in .desktop file it uses some xfce specific mimetype field).

Doesn't seem to open in private window in i3

First of all, thanks for putting together this tool, it is extremely useful and important part of my workflows (generally, choosing which application handles links)!

Describe the bug
The documentation says I should be able to open in a private/incognito windows: To open a link in incognito/private mode hold down ⇧ Shift while clicking on the browser. This doesn't seem to work in my desktop environment and instead launches to the correct browser profile but it doesn't open in a private/incognito window.

private-window.webm

Also, could it be possible to press shift+browser number to open in private window for that browsers?
I tried shift+2 but only shift+clicking seemed to respond to launching the desired browser.

Sorry, one more thing -- this is a feature request and I can file it separately but I'd like to be able to press ctrl+# or hold ctrl to open in the chosen browser but in a new window for the profile. (I don't know much Rust but might try to figure out how to do this...) Thanks again for your work :)

System:

  • OS: Ubuntu 23.04 with i3-gaps
  • Browsers Version:
    • Firefox: 114.0.1 (64-bit)
    • Chromium: Version 114.0.5735.90

Quit Doesn't Quit ?

Describe the bug
I choose "Quit" from the menu invoked by clicking the three vertical dots in the browser pallet, and the pallet is dismissed. However, clicking on another link invokes the Browsers pallet.

Update: So I guess this is a consequence of setting Browsers as the default browser, and thus expected behavior. But then, what is the purpose of the "Quit" option?

To Reproduce
Steps to reproduce the behavior:

  1. Invoke the Browsers pallet.
  2. Click on three vertical dots to bring up the menu.
  3. Select "Qui".
  4. Browsers does not appear to quit as the next link click invokes the pallet.

Expected behavior
A clear and concise description of what you expected to happen.

Once quit the browser pallet would not be invoked when links are clicked, until such time the user restarts Browsers.

Screenshots
If applicable, add screenshots to help explain your problem.
N/A

Desktop (please complete the following information):

  • OS: macOS 12.6.3

Additional context
Add any other context about the problem here.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

cargo
Cargo.toml
  • clap 4.5.4
  • tracing 0.1.40
  • tracing-subscriber 0.3.18
  • tracing-appender 0.2.3
  • dirs 5.0.1
  • toml 0.8.12
  • serde_json 1.0.116
  • serde 1.0.200
  • url 2.5.0
  • globset 0.4.14
  • configparser 3.0.4
  • naive-cityhash 0.2.0
  • lazy_static 1.4.0
  • single-instance 0.3.3
  • interprocess 2.1.1
  • core-foundation 0.9.4
  • cocoa-foundation 0.1.2
  • objc 0.2.7
  • libc 0.2.154
  • xdg-mime ^0.4.0
  • freedesktop-desktop-entry 0.6.0
  • freedesktop-icons 0.2.6
  • shell-words 1.1.0
  • winreg 0.52.0
  • winapi 0.3.9
  • winsplit 0.1
  • dunce 1.0.4
  • winres 0.1.12
  • static_vcruntime 2.0
dockerfile
cross/Dockerfile.linux_aarch64
cross/Dockerfile.linux_armv7
cross/Dockerfile.linux_x86_64
github-actions
.github/workflows/builder.yml
  • actions/checkout v4
  • docker/login-action v3
.github/workflows/ci.yml
  • actions/checkout v4
  • docker/build-push-action v6
  • docker/build-push-action v6
  • docker/build-push-action v6
  • actions/cache v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/cache v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/cache v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/download-artifact v4
  • softprops/action-gh-release v2
  • macos 14

  • Check this box to trigger a request for Renovate to run again on this repository

Browsers requests default browser setting on every launch

Describe the bug
I have the following setup on my machine:

  • System default browser is Finicky
  • There are about 20 URL patterns specified in the Finicky config that should always open in a specific browser
  • The default browser in Finicky is set to Browsers

The net impact here is that those 20 URLs always bypass Browsers and open in Chrome, and anything else I click will open Browsers and prompt me where to go.

The problem is that since the system default is set to Finicky, Browsers prompts me on every URL click to set it as the default.

Expected behavior
Once I've told Browsers not to set itself as default once, it should not continue to ask

System:

  • OS: macOS Ventura 13.4.1(c)

Mullvad support

I want you to add Mullvad browsers and ungoogle-chromium's entry points.

Support SVG app icons in Linux

In some linux distributions a theme has only svg icons and no png icons.

Either support svg icons directly, or convert all svg icons to png and store manually (probably better performance, and is somewhat similar as we already do in macos)

%THIS_DIR% not always set correctly. Uncaught error.

Renamed the directory to Browsers!.
Ran the install script in Windows 10 → Elevated Windows Terminal → PowerShell Core (pwsh)

PS E:\Programs\Utils\Browsers!> .\install.bat
Starting Installation
Because you are running this as an administrator we are going to install it to the whole system

The argument 'E:\Programs\Utils\Browsers\announce_default.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter.
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

Browsers has been installed. Enjoy
Please report any issues at https://github.com/Browsers-software/browsers/issues
You can now press Enter to exit this installer.

The script looked for a path without ! and thus failed to execute the PS script.
The error was not caught and handled.
The script falsely reports success.
This isn't good.

install.bat

REM .bat location with trailing \
set THIS_DIR=%~dp0
[…]
powershell -ExecutionPolicy Bypass -File "%THIS_DIR%announce_default.ps1"

Seems like %~dp0 returns the wrong path.

Easier dismissal of popup

Is your feature request related to a problem? Please describe.
It's a little annoying when you click a link, and the Browsers popup displays, but then you decide you didn't want to follow the link. It's normal enough to change your mind, but dismissing the popup requires several clicks; entering the kebab, navigating to "quit", and clicking it.

If you don't take these steps, and don't follow through with your link click, the window hangs around until the next URL interaction. It remains on top of other windows and loses context immediately if you change to a new application.

Describe the solution you'd like
If I click outside the Browsers popup, it should go away as any other context menu would.

Describe alternatives you've considered
Just continuing to use the multi-step workflow, but I don't love it 😄

Support Notion desktop application

Besides browsers, also show Notion desktop application for links with a domain notion.so.

Show Notion app only if:

  • it is installed
  • the link domain is notion.so

To limit the scope of the first iteration:

  • Don't support hiding the Notion app, because there is no obvious way to unhide it.
  • Don't support reordering the Notion app if that's easier to implement. Always show it as first option.
  • Don't support using Notion app as default app (unless it's easy to implement)

Cannot launch qutebrowser

Describe the bug
Qutebrowser does not launch.

To Reproduce
Steps to reproduce the behavior:

  1. Open Browsers
  2. Click on Qutebrowser in the list of options
  3. Browsers closes and nothing happens

Expected behavior
I expected Qutebrowser to open

Screenshots
Not really applicable here because nothing opens.

Desktop (please complete the following information):

  • OS: ArcoLinux (i3)
  • Browser: Qutebrowser (all other browser launch
  • Version: 2.5.4 I don't know how to find out the Browsers version number, I just installed it 2 days ago.

Additional context
Qutebrowser launches just fine from the command line, from Rofi, and is located in the same folder as Vivaldi (which launches just fine from within Browsers), /usr/bin/.

Enabling quit_on_lost_focus makes the "About" dialog not functional 😄

Describe the bug
When you have quit_on_lost_focus enabled in the config.json (LOVE this option BTW, thanks for adding it!), the "about" window can't be displayed, since it's a new modal and the Browsers main window loses focus and quits, taking the About dialog with it

System:

  • OS: MacOS 13.5.2, Arc 1.7.0, M2 silicon
  • Browsers Version 0.4.1

Trying to create a rule that opens all links from Mail in Safari

I'm trying to create a config stanza that will just "open all links from Mail.app in Safari, regardless of the rest of the rules in config.json"

The documentation is still a little light on using the source_app parameters, but this is what I've written:

  {
      "source_app": "com.apple.mail",
      "url_pattern": "*",
      "opener": {
        "profile": "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/MacOS/Safari#",
        "incognito": false
      },
      "profile": "",
      "incognito": false
    }

But this doesn't work. I've also tried using null for url_pattern with the same results.

Any tips?

Edit: I also tried moving the rule to the very top, in case sequential processing was the issue. That didn't work either.

Firefox containers are not working

Describe the bug
The pop-up does not show my Firefox containers, despite installing the suggested extension.

To Reproduce
Steps to reproduce the behavior:

  1. Install firefox
  2. Install Firefox Multi-Account Containers addon
  3. Install Open external links in a container addon
  4. Create a couple of containers, or use the defaults

Expected behavior
When clicking on a URL I would expect to see firefox containers listed there.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: KDE Neon 22.04
  • Browser: Firefox
  • Version: 111.0.1

Smartphone (please complete the following information):

  • N/A

Additional context
N/A

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.