-
-
Notifications
You must be signed in to change notification settings - Fork 165
Configuration ideas
Guilhem C edited this page Oct 24, 2022
·
54 revisions
Feel free to add your own ideas for how to use Finicky.
rewrite: [{
match: ({url}) => url.protocol === "http",
url: {
protocol: "https"
}
}]
handlers: [{
// Open any link clicked in Mail & Outlook in Google Chrome
match: ({opener}) =>
["com.apple.mail", "com.microsoft.Outlook"].includes(opener.bundleId),
browser: "Google Chrome"
}]
or
handlers: [{
// Open any link clicked in Mail & Outlook in Google Chrome
match: ({opener}) =>
["Mail", "Microsoft Outlook"].includes(opener.name),
browser: "Google Chrome"
}]
handlers: [{
match: ({url}) =>
url.host.includes("example.com") && url.pathname.includes("Finicky"),
browser: "us.zoom.xos"
}]
rewrite: [{
match: "amazon.com/*",
url: {
host: "smile.amazon.com"
}
}]
rewrite: [{
match: () => true, // Execute rewrite on all incoming urls to make this example easier to understand
url: ({url}) => {
const removeKeysStartingWith = ["utm_", "uta_"]; // Remove all query parameters beginning with these strings
const removeKeys = ["fbclid", "gclid"]; // Remove all query parameters matching these keys
const search = url.search
.split("&")
.map((parameter) => parameter.split("="))
.filter(([key]) => !removeKeysStartingWith.some((startingWith) => key.startsWith(startingWith)))
.filter(([key]) => !removeKeys.some((removeKey) => key === removeKey));
return {
...url,
search: search.map((parameter) => parameter.join("=")).join("&"),
};
},
}]
rewrite: [{
match: finicky.matchDomains(["google.com"]),
url: "https://duckduckgo.com"
}]
handlers: [{
match: finicky.matchDomains(["trello.com"]),
url: ({url}) =>
({...url, protocol: "trello"}),
browser: "Trello"
}]
handlers: [{
match: finicky.matchDomains("open.spotify.com"),
browser: "Spotify"
}]
handlers: [{
match: /\.zoom.us\/j\//,
browser: "us.zoom.xos"
}]
handlers: [{
// Open Apple Music links directly in Music.app
match: [
"music.apple.com*",
"geo.music.apple.com*",
],
url: {
protocol: "itmss"
},
browser: "Music",
}]
handlers: [{
match: finicky.matchHostnames(['teams.microsoft.com']),
browser: 'com.microsoft.teams',
url: ({url}) =>
({...url, protocol: 'msteams'}),
}]
handlers: [{
match: "https://www.figma.com/file/*",
browser: "Figma",
}]
rewrite: [{
match: /vk\.com\/away.php/,
url: ({url}) => {
const match = url.search.match(/to=(.+)/)
return !match ? url : decodeURIComponent(decodeURIComponent(match[1]));
}
}]
For example, you may want to only open matching URLs in a specific browser when opening those URLs from within a
particular application. In that case, you need to match on both the opener
and the url
:
handlers: [{
// Open Google Drive in Firefox if opened from Slack
match: ({opener, url}) =>
opener.bundleId === "com.tinyspeck.slackmacgap" && url.host.includes("drive.google.com"),
browser: "Firefox"
}]
Open Jitsi links in Jitsi desktop app for MacOS
handlers: [{
match: ({url}) => url.host.includes("jitsi.your-selfhosted-server.com") ||
url.host.includes("meet.jit.si"),
url: ({url}) => {
return {
...url,
protocol: "jitsi-meet",
host: url.host,
pathname: url.pathname
};
},
browser: "/Applications/Jitsi\ Meet.app"
}]