puneetchd / multi

Create a custom, lightweight macOS app from a group of websites

Home Page:https://kofi.sexy/blog/slack-app-fewer-resources

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Multi

Create a custom, lightweight macOS app from a group of websites. Watch me create a Slack clone from scratch in 30 seconds (click the GIF for a higher resolution video):

Demo GIF

  • Create apps from a UI or the command line
  • Configure settings with JSON
  • Built-in ad-blocker, provided by https://better.fyi (macOS 10.13+)
  • View one tab at a time or all at once with side-by-side view
  • Native bridges for Web APIs
    • window.Notification
    • window.alert
    • window.confirm
    • window.prompt
    • <input type="file">

Installation

Download the latest .dmg file from the releases page.

Note: Multi 2.0.0 is a complete rewrite and works differently from previous versions. Any older Multi apps on your computer will continue but will lack the new features listed above.

Note: Multi is not notarized, so you'll need to allow it to run via your "Security & Privacy" system preferences. See Licensing for more about sponsoring Multi's development.

JSON configuration

Multi apps store their configuration in a single JSON file. If your app is named Test, then you'll find that file at /Applications/Multi/Test.app/Contents/Resources/config.json. The JSON configuration allows 3 top-level fields:

Field Name Type Description
tabs Array (Required) Titles and URLs of tabs for this app
sideBySide Boolean (Optional, default false) Show each tab simultaneously in one row
alwaysNotify Boolean (Optional, default false) Show macOS notifications even if your app is currently focused

The tabs field is an array of objects with the following fields:

Field Name Type Description
title String (Required) Whatever you want to call this tab
url String (Required) Starting page for this tab

Here's the bare minimum example used in the Slack demo video above:

{ "tabs": [{ "title": "Slack Lite", "url": "https://app.slack.com/client" }] }

Here's a fancier example that uses the optional fields referenced above:

{
  "tabs": [
    { "title": "Dancing", "url": "https://rc.kofi.sexy/bathroom-floss" },
    { "title": "Walking", "url": "https://kofi.sexy/cel-shading" }
  ],
  "sideBySide": true,
  "alwaysNotify": true
}

If your configuration file fails to decode for any reason, your Multi app will open to the preferences window, where you can fix any issues.

Using the CLI: create-mac-app

You can create and update Multi apps entirely from the command-line with the included script. In fact, the Multi configuration UI just runs this script under-the-hood! The create-mac-app script takes its options as environment variables. For instance, here's how you'd create a bare-minimum app named Test:

MULTI_APP_NAME='Test' /Applications/Multi.app/Contents/Resources/create-mac-app

When you open Test, you'll be greeted with the preferences window, where you can finish configuring your app. If you'd like to configure your app entirely from the command-line, you can set any of the following variables:

MULTI_ICON_PATH PNG path to icon image
MULTI_JSON_CONFIG See JSON configuration
MULTI_OVERWRITE Set to 1 to replace an existing Multi app with the same name

Keyboard shortcuts

Multi's shortcuts should work equivalently to those in modern browsers.

⌘X Cut ⌘[ Back
⌘C Copy ⌘] Forward
⌘V Paste ⌘R Reload This Page
⌘A Select All ^Tab Select Next Tab
⌘M Minimize ^↑Tab Select Previous Tab
⌘H Hide ⌘1 - ⌘9 Select Tab
⌘Q Quit

Licensing

Multi is open source software (GPLv3), but it is also paid software. One week after you install Multi, you'll see a message in your apps asking you to purchase a license. Since Multi is open source, and since I've made no attempt to obfuscate the code, you could remove the license check and recompile the project. Please don't do that. I'd like to continue improving Multi with new features and bug fixes, and license purchases enable me to do so.

About

Create a custom, lightweight macOS app from a group of websites

https://kofi.sexy/blog/slack-app-fewer-resources

License:GNU General Public License v3.0


Languages

Language:Swift 68.9%Language:Shell 16.3%Language:HTML 12.4%Language:Makefile 2.3%