Giter Club home page Giter Club logo

bt's Introduction

Browser Tamer

official home page - documentation

📦Features at a Glance

  • Extremely lightweight on memory and resources, written in safe modern C++.

    • Self-contained single .exe under 2 Mb in size with no dependencies.
    • Available as .msi installer.
    • Portable mode supported.
    • Fits on a floppy disk if you can find it in 2023! 💾
  • Completely free and open-source.

  • Intelligent detection of the most popular browsers.

    • Firefox, Edge, Chrome, Brave and so on.
    • Detection of browser profiles.
    • Support for Firefox Containers.
    • Support for incognito mode / tor mode.
  • Add your own, custom browser or application customised with any parameters you want.

  • Rule-based redirect based on matching inside entire URL, domain, or path. This can be a simple case-insensitive substring or a regular expression.

  • Rule-based redirect based on window title and process name.

  • Assign rule priorities.

  • Supports URL processing pipeline, which allows for custom URL pre-processing with

  • Extensions to integrate with Chrome, Edge, Firefox, or any Chromium-based or Firefox-based browser (Opera, Vivaldi, Brave, Waterfox, LibreWolf etc.). Chrome Web Store Version Mozilla Add-on Version

  • Open links in "chromeless (frameless)" window.

  • Optional audit of rule hits to a csv file.

  • Beautiful UI based on ImGui (GPU-accelerated UI engine used in games) with support for themes.

Statistics

In 2023, Browser Tamer was installed by 5150 people and in December 2023 it had 561 regular users (using BT constantly for more than 7 days in a row)! This is all I can expose, as only very basic anonymous stats are reported (the fact that you have launched BT).

Raising an Issue

Feel free to raise an issue here or start a discussion.

Contributing

I value your interest in this open-source project. While I don't accept pull requests (there is no way to turn them off in GitHub), your support through coffee donations directly contributes to the project's development and sustainability, allowing me to invest more resources into refining, addressing issues, and implementing new features. Your involvement, in any form, is greatly appreciated. Thank you for being a part of our journey!

bt's People

Contributors

aloneguid avatar bluscream avatar neoopus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bt's Issues

Add feature to reader browsers in selection menu

Problem description

I have set Settings > Browser Picker Mode > Always Ask. When I click a link it shows me a selection window with all my browsers and all their profiles. On this list the first browser has a lot of profiles, yet I don't use it that often. Thus I have to scroll through this list to select a different browser with just two profiles that I use 85% of the time.

Not a solution

These are not what I look for:

  1. "Hide this browser from the browser list" - this hides the browser with many profiles, yes, but I do rarely need so it must be available at certain times.
  2. Create rules - I know that this is the main feature of this app, yet knowing myself this won't really help as I really just want to select a specific browser for each link I click. So there's no point in spending way too much time on figuring out all the rules.
  3. Record number of click to order - this is a fancy feature of browser picker window but I'd rather set the order by hand instead of checking if one of many browsers switched places so I intuitively click on spot where it used to be.

Perfect solution (feature request)

Add a feature that let's users reorder browsers on the list which would be reflected in the browser selection menu. It could be placed right above the browsers' list, next to the show/hide hidden browsers icon. See mockup below.

browser-ordering-mockup

Pick a Browser window freezes with cromium based browsers with versions > 3.5.1

Hello,

I've tried it with three different systems. With the version 3.5.1 everything works well, but with the later versions (I've tried up until the 3.6.1) the Pick-a-Browser window freezes upon choosing between Chrome, Brave, Opera, Epic, Maxthon, etc... The browser window opens with the right url, but the Pick-a-Browser window is still there and has no reaction. What's even stranger is that with Firefox, Firefox Developer Edition and Edge it is still working. Also, if I close the browser window, the Pick-a-browser window closes too and everything runs normal. If I click many times the "Pick-a-Browser" window, or if I try closing it, the app crashes.

Am I doing something wrong here?

Many thanks,
Christian

Regex domain rule failed to load and operate properly

Browser Tamer 3.6.2

The below configure to handle a local application like http://localhost:51139/ that the port number changes but starts with 5.

The rules are setup as

[browser:chrome:Default]
name = Yuan
arg = "%url%" "--profile-directory=Default"
user_arg = "--enable-features=IntelVpSuperResolution"
icon = C:\Users\liny01\AppData\Local\Google\Chrome\User Data\Default\Google Profile Picture.png
rule = scope:domain|type:regex|localhost:5....
rule = scope:domain|intel.com
rule = scope:domain|hemingwayapp.com

It works properly when it's just set

image

But after exit BT and start it again, this rule shows empty in the config box.

image

And it's loaded with the default browser.

Mode: Ask if no rule applies

Hi, I believe this is easy to adapt and it really would fit the "learning" behaviour of it.

-> URL that doesn't fit any rule? -> Ask and add rule
-> URL that should always be asked -> Ask and do not add a rule

Open in Browser Tamer should show the choose browser windows

Installed Browser Tamer (default = Chrome)
Installed in Chrome the extension

What i expected what would happen that the icon "Open in Browser Tamer" or right-menu on a link> "Open in Browser Tamer" would open the browser chooser?

Did i set this up correctly or can i modify the extension to work like this?

Priority feature

The new priority feature is really great! But I think I have found a bug that I hope you can help with. I have "Browser Picker Mode" set to "Ask on Conflict". When I open a rule that match more then one rule, the picker is shown. I think that if one of the rules have a priority, that rule should be selected and the picker should not be shown.

I have also tried where I give all rules a priority, but the picker is still shown. It works perfectly if I set the "Browser Picker Mode" to "Never Ask", but that does not work for me. I would like to show the Picker, if I have not prioritized a rule.

Best Regards
Mads

Links preprocessing

It would've been handy to have an option to pre-pocess URLs (preg replace) before applying any logic, for cases when the "old" URL stopped working due to domain/parameters changes and is not redirect automatically server-side.

[Feature] Option to open in specific tab group

It would be cool if we had the option to open in a specific tab group by name.

So lets say i set a link to open in chrome in the youtube group. First it would search to see if that tab group already exists the currently open chrome browser. If it is then appended the link to the tab group. Or if the tab group doesn't exist then create a new tab group with the name youtube and then append to that.

I assume this might be a pretty complex feature but I think it would be a cool option.

Not a cheap bastard

I apologize, but I am unable to make a donation at this time. However, I will make a donation asap as I am in a dire financial situation (no income) and able to do so. I sincerely appreciate the amount of work you've done on this software and the quality of it.

config.ini

I am just switching from Browser Chooser 2 and this seems like a great update.

In regards to the config.ini I have to questions.

  • I use custom user data directories, which i fixed by manually updating the config.ini. Would be great if this could be done using the editor.
  • Would it be possible to start the exe with an argument so the config.ini can be placed in the same folder as the exe file? I would like this to be truly portable and not lose the ini file after reinstall of Windows.

Thanks for the great work.

Best regards
Mads

Open Browser Picker from Systray

I hope you're doing well. Thank you for your work on the BT browser; it's been a fantastic experience using it.

I have a suggestion that, I believe, would be very helpful. Since the right-click to open config is already implemented, could you please consider adding a quick access feature to the browser list through the right-click context menu? And even better if it opens via double-click on BT icon instead of the Config window. This way, users won't need to search for their browsers in the Start Menu or use other methods to launch it including BT (Config > Tools > Test URL Picker)

I trust your judgment, and I'm convinced that this enhancement would be well-received by many users.

Thank you for considering my request, and keep up the great work!

Application error on startup

I'm excited for this application, but I can't seem to get it to start. Here's the log from Windows Event Viewer: Application

Faulting application name: bt.exe, version: 3.1.6.0, time stamp: 0x649d68f7
Faulting module name: bt.exe, version: 3.1.6.0, time stamp: 0x649d68f7
Exception code: 0xc0000005
Fault offset: 0x000000000004ca88
Faulting process id: 0x0x86E0
Faulting application start time: 0x0x1D9AB7DF77A9645
Faulting application path: C:\Program Files\Browser Tamer\bt.exe
Faulting module path: C:\Program Files\Browser Tamer\bt.exe
Report Id: 93b5c747-409d-4d5d-bbed-d53faf687b75
Faulting package full name: 
Faulting package-relative application ID: 

I'm running Windows 11. Windows Specifications:

Edition	Windows 11 Pro
Version	22H2
Installed on	‎9/‎19/‎2022
OS build	22621.1926
Experience	Windows Feature Experience Pack 1000.22644.1000.0

I'm running Windows PowerToys 0.70.1. I have Chrome, Edge, and Firefox browsers installed. I'm not sure what other information would be relevant.

Links in Outlook do not work

I am using Microsoft® Outlook® für Microsoft 365 MSO (Version 2208 Build 16.0.15601.20676) 64 Bit
This is part of Microssoft 365 for Enterprise.
When I click a link in an Outlook item (message, calender, ...) this error occurs

"Unexpectedd error for URL ... Access denied"

Opened Browser is not being foregrounded

When Browser Tamer decides it should open a link in Chrome's ProfileX, instead of that browser window being foregrounded, it just flashes in my task bar in the background. This happens if I have Chrome's ProfileX already open or not.

When not using Browser Tamer the browser is opened and foregrounded, so the expectation is it would work the same.

As it currently stands this makes Browser tamer only slightly easier to use than what I was previously doing (before clicking a particular link making sure I click the proper Chrome icon in my taskbar first to activate that profile).

Option to automatically close original tab

Hi,

I thought that adding an option to set it to close the original tab/windows after it opens it in another browser (or maybe same but different profile or even window), would be interesting to have since it reduces interaction, resource usage etc.

Not Redirecting Notifications

I'm not sure if notifications are operating on a different protocol or what but they don't open in the correct browser.

Feature req: custom icon for .bat launchers

Hello, this tool is really great. Lots of improvements since last time I passed by !

I'm trying to set it according to my needs and I have one feature request for the upcoming updates.

My main browser is launched "clean" from ram and I used a .bat (or .cmd) script for the launcher (to copy it to ram and start the real launcher with the correct settings - mainly I use the options to launch it googled or ungoogled). I tried assigning the icon in the main browser declaration config.ini but the icon is not taken into account.

[browser:chrlauncher]
name = ChromeX Portable
cmd = C:\PortableApps\Internet Browsers\ChromeX\Chromium Portable\chrlauncher.exe
hidden = n

[browser:chrlauncher:default]
name = Default
arg = "%url%"
icon = C:\PortableApps\Internet Browsers\ChromeX\Chromium Portable\chrlauncher.exe
rule = scope:domain|rsload.net


[browser:chromexram]
name = ChromeX RAM Portable
cmd = C:\PortableApps\Internet Browsers\ChromeX\CX2RAM.bat
icon = C:\PortableApps\Internet Browsers\ChromeX\CX2RAM.ico
hidden = n

[browser:chromexram:default]
name = Default
arg = "%url%"
icon = C:\PortableApps\Internet Browsers\ChromeX\CX2RAM.ico
rule = scope:domain|rsload.net

It's just an aesthetic issue because overall it's actually working, but it would be great to personalize the browsers main icons if possible. Consider that I use several versions of chromium with their default profile and I'd love to have them distinguishable at first glance by using a specific icon for each of them.

Thanks and have a great day !

20230817_103450_Snapshot_bt

Redirect links from Browser to BT via Direct-Click

Hi,

I wanted to test out a feature that requires me to press CTRL+SHIFT+CLICK while using the Edge browser, however I found that it only works with external applications. I wonder if there is a way to make it work how it should through an extension. It would be useful if the BT selector pops up when I click a link in my email that I want to open in a specific profile or browser. I'm guessing that this could be achieved with a specific protocol, associated to BT. The extension could recognize a criterion like CAPSLOCK triggered or USING CTRL+SHIFT globally, causing it to send the link to the appropriate profile or browser.

This would make it easier to open URLs directly to the right browser, without having to set up rules that are only limited to certain domains (as can be done in the browser). It would also make BT more useful in redirecting URLs that match certain criteria, or just Ask on Conflict, and it could be much better than using the right-click menu.

Please let me know if you need any clarification.

Opening link with Chrome Private Profile does not open the link in Incognito window

Opening the link with Chrome Private Profile does not open the link in the Incognito window
But when I select Edge (Chromium-based) it works fine.

Chrome version: 120.0.6099.216 (Official Build) (64-bit)
Edge version: 120.0.2210.121 (Official build) (64-bit)
Browser Tamer version: 3.6.2
lmGui Version: 1.89.9 docking version

How to reproduce

  1. Click any link
  2. Select the chrome private profile option

image

This is my config.ini file

fallback = chrome:Default
open_method = pick


[browser:firefox]
name = Mozilla Firefox
cmd = C:\Program Files\Mozilla Firefox\firefox.exe
hidden = n
subtype = firefox


[browser:firefox:Profile0]
name = Primary
arg = "%url%" -P "default-release"


[browser:firefox:private]
name = Private
arg = -private-window "%url%"
icon = C:\Program Files\Mozilla Firefox\firefox.exe
subtype = incognito
order = 1


[browser:chrome]
name = Google Chrome
cmd = C:\Program Files\Google\Chrome\Application\chrome.exe
hidden = n
subtype = chromium


[browser:chrome:Default]
name = Person 1
arg = "%url%" "--profile-directory=Default"


[browser:chrome:InPrivate]
name = Private
arg = "%url%" -inprivate
subtype = incognito
order = 1


[browser:msedge]
name = Microsoft Edge
cmd = C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
hidden = n
subtype = chromium


[browser:msedge:Default]
name = Personal
arg = "%url%" "--profile-directory=Default"
icon = C:\Users\username\AppData\Local\Microsoft\Edge\User Data\Default\Edge Profile Picture.png


[browser:msedge:InPrivate]
name = Private
arg = "%url%" -inprivate
subtype = incognito
order = 1


[popularity]
msedge:Default = 14
msedge:InPrivate = 1
chrome:Default = 48
chrome:InPrivate = 4

Firefox in BT container mode doesn't have option for "No container"

It seems that when you activate container mode you have to pick a container tab rather than having all the containers as options in addition to a "No Container" option.

I use container tabs a lot for specific sites, but I also use the "no container" tab as my primary environment.

Firefox extension omits `:` after `http(s)`

Steps to reproduce

  1. Install BT extension for Firefox
  2. Click the extension button on some website
  3. Open link from BT in any browser

Expected behavior

The new browser opens the original link.

Actual behavior

The new browser opens the original link without : after https, resulting in connection error page, for example: https//github.com

Notes

Since there were no recent releases of BT or the extension, I suspect this could be caused by very recent update of Firefox to v122. Extension in Edge seems unaffected.

Versions:

  • Windows 11 Enterprise, Version 22H2, OS build 22621.3007
  • Firefox 122.0 (64-bit)
  • Extension: 1.2.1
  • BT 3.6.2

Frameless window

Frameless window is not supported by firefox but it's still activated by default.
Would it be possible to have an option in the config to have it enabled/disabled by default?

Office 365 links unwrapping

Hi Ivan

Great new feature with Un-shortening. Could you add eur02.safelinks.protection.outlook.com? Their might be more version so might be that you only need to look for protection.outlook.com.

Best Mads

Can't modify parameters

I can't seem to modify the parameters/arguments that are being passed to the browser, it's read only.
"%url%" "--profile-directory=Default"

I'd like to be able to edit the parameters, ideally both on a per browser and a per profile basis. There are a number of command line flags I want to pass to the browser (such as forcing specific extensions loaded locally, enabling activity logging, etc)

(request) UI zoom

Hello, thank for this piece of software. Makes my digital life better.

As title says, can we have a UI zoom option? I user 1080p monitor with 100% scale (not the recommended scale by windows), and bt looks tiny. Not the end of the world, but that feature would be nice.

Thanks for your time. Regards.

Add Args

Hi,

Please make it possible to add some args (by adding another field) that could be used for Chrome Flags and other command-line switches that are necessary in many cases for Devs.

Example of what I use for MS Edge

Example 1 :
--profile-directory=Default --max-old-space-size=61440 --disable-extension-activity-logging --enable-features=msEdgeAVIF,RawDraw,DrDc,UseSurfaceLayerWithDirectComposition,CanvasOopRasterization,msEdgeAVIF,WebUITabStrip,AsyncDns,BlocklistGpuModes,ChromeLabs,CustomizeChromeSidePanel,DeferredShaping,DesktopDetailedLanguageSettings,HistoryClustersOnDeviceClustering,Journeys,JourneysKeywordFiltering,JourneysLabel,JourneysOmniboxAction,JourneysOmniboxHistoryClusterProvider,JourneysOnDeviceClusteringContentClustering,OmniboxPedalSuggestions,OptimizedReadabilityDetection,PageContentAnnotations,ParallelDownloading,Portals,PortalsCrossOrigin,PostQuantumCECPQ2,Prerender2,PrivacyGuide2,QuickCommands,SanitizerAPI,SearchWebInSidePanel,SidePanelImprovedClobbering,SidePanelJourneys,SideSearch,SplitLargeText,TabGroupsSave,TabSearchFuzzySearch,UnifiedSidePanel,UseFlutterBalloons,UseSuggestEndingsApi,VariableCOLRV1,Vp9kSVCHWDecoding,WebBluetoothNewPermissionsBackend,WebBundles,WebShare,WebUsbDeviceDetection,sdch3

Example 2 :
--profile-directory=Default --no-experiments

Example 3 :
--profile-directory=Default --disable-extensions-except

But what would be amazing and maybe too much to ask is to have it fetch the flags from a curated online list or maybe added as a file that contains the various flags for chromium and also the derivative browsers, it could be a checkbox based with some basic (grouping, search, naming, etc) to allow testing, debugging and setting preferences who are optimal for specific hardware, user liking and scenarios (url, nat, www, etc)

I hope both make sense to you and inspire you,

Thank you.

regex with alternation ("|") in patten causes crashes

Regex rules that contain a pipe character for doing regex alternation cause a crash. For example, I have the following rule to handle certain Zoom URLs:

rule = type:regex|.*zoom.us/(join|my|j).*

The problem appears to originate from https://github.com/aloneguid/bt/blob/master/bt/app/match_rule.cpp#L21 where the rule is split on "|" indiscriminately. The machine I'm on isn't set up for development, otherwise I would try to put a fix together. As a workaround, I've created multiple rules so this isn't urgent.

Scoop persist broken

Ivan,

For some reason, the "persist" feature does not function as intended. The config.ini file is both written to and read from the executable's directory. However, when an update occurs, the settings are lost.
The bt.ini file is created, and the files still exist, but they are currently not being utilized.

MSIX firefox not discovered

The MSIX firefox is the containerized variant where updates are handled by the windows store.

A firefox.exe exists on PATH, placed here C:\Users\aelius\AppData\Local\Microsoft\WindowsApps\firefox.exe

Unfortunately browser tamer refuses to use it, "the file cannot be accessed by the system".

Absent a sample config file or config documentation, I've played around with reverse engineering your code to try and manually create the config entries. The basics seem to work just fine

[Request] Complex Matching with AND/OR

Hi, as mentioned in Title, would it be possible to select if we want a "AND" or a "OR" when building up our rules? Guess the default now is "OR" for each rule, with the 'and' operator we would be able to get more complex.

My current situation: I use telegram to both talk to friends as well as work. I wanted a "and" operator to create a filter:

If from Telegram.exe AND this url matches > work browser ; Else if from telegram.exe > second browser; Else, default browser.

Hope that makes sense!

Crash on update check when no internet available

Hi,

I've spoken too quickly the other day, actually the issue with it crashing when the firewall is active and not allowing any internet traffic is still around.

I tend to block all traffic but the browser…

Sorting of rules

With multiple rules it would be great if one could sort them. Right now I just hack the ini file and use that.

Thanks for this great application!

AV False Positives (Malware, Riskware, Adware, Virus, Trojan and other BS)

After reinstalling Windows and configuring Bluetooth, MS Defender removed it after identifying it as malware (I didn't have time to add it to a whitelist)

Please figure out why it's happening and get it signed now. Even if it's free, some people might not like using it because it might scare them or be taken off their computers.

Screenshot 2023-08-11 102854
image

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.