EvilScheme - 19.07.2002


3.83/5 (24 votes).

  • EvilScheme - 19.07.2002
  • EvilScheme - 19.07.2002


Dedicated to the memory of Lorenzo Pane


Evil Scheme takes advantage of iOS URL schemes to allow users to change default apps in which links open.


Default apps can be set in the Evil Scheme preference pane within the Settings app. To add a default app, select the highlightedAdd newrow. Choose a preset, or dismiss the view to build your own. To apply your changes, return to the primary Evil Scheme menu and press theSavebutton in the top right corner; no need to respring! Try opening a link that would typically open a stock app, and /viola/, your selected app should open!

Creating Custom Presets

Is there no provided preset for an app you would like to use? No problem: provided that app has a URL scheme, you can add a preset for it! Building a preset can be done in three steps:

1. Translate bundle identifiers

Find the bundle identifier of the your new app, and its stock counterpart.BundleIDsXIIis a great user-friendly tool for this. Paste the strings in their respective fields on theAdd Newscreen. You can target as many apps as you would like.

2. Capture URLs with a regular expression

Apps that open other apps use URLs to communicate with each other and encode information. In case you would like to have multiple actions for different URLs, you should make your regular expression as specific as possible, while still capturing all URLs you want to modify. If you only need one kind of action, you can use.*(meaning "any character, any number of times") as your regular expression.

Regular expressions can be re-ordered by priority and action corresponding to the first match will be used. If no matches are found, redirection will be aborted.

3. Build a new URL blueprint

I've engineered Evil Scheme to give users the tools to make any modification to a URL they need to by creating a framework called Evil Kit. All you need to know is it lets you create a blueprint for a new URL using various "fragments" or "portions" representing different pieces of the original URL, static pieces of text, or regular expression templates which are brought together in sequence. For example, the blueprint for a spotlight search that should open as a DuckDuckGo search in Firefox Focus looks like this:

  • Constant string: "firefox-focus://open-url?url="
  • Percent encoded constant string: "https://ddg.gg/?q="
  • Percent encoded original query value

Build your outline by selectingAdd new fragment, selecting the fragment type you want, and filling in its various options. If the context in which you use a given fragment means it will be interpreted as a query value or it it contains special characters that would interfere with the URL, you may need to enable a positive level ofPercent encodingfor that fragment. If you are taking a URL portion /from/ a query and using it elsewhere, you may need to use a negative level ofPercent encodingiterations. For a deeper dive into Evil Kit portions, check out their well documentedheaders.


This tweak was originally made by Lorenzo Pane. I am now the maintainer of this package. for any bugs or features you want me to add check out the source code repo: https://github.com/0xkuj/EvilScheme




106.88 KB

iOS 13, iOS 14, iOS 15, iOS 16


  • Cydia

No comment.