Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
build
builddir
.idea
.vscode
__pycache__
__pycache__
*.snap
prime
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ braus --set http://other.fancy chromium_chromium.desktop
braus --set http://my-videos.org google-chrome.desktop
````

Existing URLs will be overwritten with new `--set` calls.

You can see current mappings by
```
braus --get-mappings
```

If you made a mistake, clear the auto mapping list by
```
braus --clear
Expand Down
38 changes: 20 additions & 18 deletions src/browser_mappings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,39 @@ def __init__(self, settings):
self.settings = settings

def do_setbrowser(self, url, browser):
mappingsArr = self.do_loadUrlMappings()
mappingsArr.append(url + " " + browser)
mappingsDict = self.do_loadUrlMappings()
mappingsDict[url] = browser

mappingsArr = []
for url, browser in mappingsDict.items():
mappingsArr.append(url + " " + browser)

tmpVariant = GLib.Variant('aas', mappingsArr)
self.settings.set_value("url-mapping", tmpVariant)

def do_clearbrowsermappings(self):
mappingsArr=[]
tmpVariant = GLib.Variant('aas', mappingsArr)
self.settings.set_value("url-mapping", tmpVariant)

emptyVariant = GLib.Variant('aas', [])
self.settings.set_value("url-mapping", emptyVariant)

def do_loadUrlMappings(self):
urlMappings = self.settings.get_value("url-mapping")
mappingsArr = []
mappingsDict = {}

for mapping in urlMappings:
pathToMatch = "".join(mapping)
mappingsArr.append(pathToMatch)
pathToMatch = "".join(mapping).split(" ")
mappingsDict[pathToMatch[0]] = pathToMatch[1]

return mappingsArr
return mappingsDict

def do_determinebrowser(self, app, url, browsers):
mappingsArr = self.do_loadUrlMappings()

for mapping in mappingsArr:
matcher = mapping.split(" ")
mappingsDict = self.do_loadUrlMappings()

if(not url.startswith(matcher[0])):
for urlPattern, browserID in mappingsDict.items():
if(not url.startswith(urlPattern)):
continue

for browser in browsers:
if(browser.get_id() != matcher[1]):
for b in browsers:
if(b.get_id() != browserID):
continue
return browser
return b

29 changes: 19 additions & 10 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,17 +65,26 @@ def do_activate(self):

def do_command_line(self, command_line):
args = command_line.get_arguments()
if len(args)== 0:
self.activate()

try:
if(len(args)> 0):
if(args[1] =='--set'):
url = args[2]
browser = args[3]
self.browser_mappings.do_setbrowser(url, browser)
return 0

if(args[1] =='--clear'):
self.browser_mappings.do_clearbrowsermappings()
return 0
if(args[1] =='--set'):
url = args[2]
browser = args[3]
self.browser_mappings.do_setbrowser(url, browser)
return 0

if(args[1] =='--clear'):
self.browser_mappings.do_clearbrowsermappings()
return 0

if(args[1] =='--get-mappings'):
mappings = self.browser_mappings.do_loadUrlMappings()
for url, browser in mappings.items():
print(url, ":", browser)
return 0

except IndexError:
print("No arguments provided")

Expand Down