Skip to content

Commit

Permalink
README.md: simplify and polish
Browse files Browse the repository at this point in the history
  • Loading branch information
rxhfcy committed Apr 8, 2024
1 parent dfb8262 commit 8edc0fc
Showing 1 changed file with 42 additions and 65 deletions.
107 changes: 42 additions & 65 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

<img src="./misc/Menu_Screenshot.png" width="25%" alt="Main menu screenshot"><br>

Select which OS you want to use next on your Apple silicon Mac.
*An alternative to the built-in Apple Silicon boot picker.*

**Asahi Restart Helper (macOS version)** is a macOS menu bar app that
makes it easy to select which OS you want to use next.
The default Startup Disk will remain unchanged unless you explicitly choose to change it.

**Asahi Restart Helper (macOS version)** adds a macOS menu bar icon that makes it easy to restart
using whichever OS you wish. The default doesn't matter and will **not** be changed (unless you explicitly choose to).
- **"Restart in Linux..."**: Restart and load **Linux** this time, even if macOS is the default
- **"Restart in macOS..."**: Or restart *back into macOS*, even if Linux is the default
- **Alternatively**, the app can also be used to change the default Startup Disk<br>
Expand All @@ -25,89 +27,64 @@ using whichever OS you wish. The default doesn't matter and will **not** be chan
---

<img src="./misc/Restart_Dialog_Screenshot.png" width="50%" alt="Restart dialog screenshot"><br>
2\. Click "Restart now!" in the confirmation dialog.


The system will now restart without asking any further questions (if the correct permissions are set).

The default Startup Disk will **NOT** be changed.
2\. Click "Restart now!" in the confirmation dialog. The system will then restart.

---

<img src="./misc/Change_Default_Screenshot.png" width="50%" alt="Change default startup disk dialog"><br>
The app also allows changing the default Startup Disk directly from the menu<br>
(included for parity with the Linux version)

Using the app to restart does not require changing the default.
**Alternatively**, you can use the app to change the default Startup Disk.<br>
(This is optional and **not required** to use the app)

---

## Build the App with Xcode:

1. Clone this repository: `git clone (this URL)` or download the zip file and extract it
2. Launch Xcode, choose "Open Existing Project..."
3. Navigate to the new folder (Xcode will automatically look for and open the `.xcodeproj` bundle)
4. You should now be able to build and test the project (please open a new issue if that was not the case!)
1. Clone this repository: `git clone https://github.com/rxhfcy/Asahi-Restart-Helper--macOS-version.git`
or download the zip file and extract it
3. Launch Xcode, choose "Open Existing Project..."
4. Navigate to the new folder (Xcode will automatically look for and open the `.xcodeproj` bundle)
5. You should now be able to build and test the project (please open a new issue if that was not the case!)

## Technical details:

This application is designed to work around the "invisibility" and slowness of the Apple silicon (ARM64) boot picker.
On traditional x86-based dual-boot systems, a boot picker will usually automatically appear on the screen on startup,
but on Apple silicon, the boot picker is only allowed to be shown
if the user physically holds down the power button for several seconds while starting up the computer.
This makes it rather inaccessible, especially for inexperienced users who aren't already familiar with this quirk.
For technical reasons, Apple's boot picker is also rather slow to load the selected OS.

In essence, this app is a GUI to run Apple's official `bless` tool with --nextonly
(`sudo bless --mount "/Volumes/Linux Disk Name/" --setBoot --nextonly`)
to temporarily use an alternative startup disk for this restart only, and then restart.
This app is designed to address the "invisibility" and clumsiness of the Apple silicon (ARM64) boot picker.
On traditional x86-based dual-boot systems, a boot picker typically appears on the screen automatically upon startup,
but on Apple silicon, the picker will only appear if the user physically holds down the power button while booting.
This makes the boot picker rather inaccessible, particularly for new users unfamiliar with this quirk.

The default Startup Disk setting is never modified unless the user specifically chooses to do that.
Under the hood, the `alt-boot-volume` NVRAM parameter is temporarily added for the next startup only,
i.e. the `boot-volume` NVRAM parameter (the default Startup Disk setting) is not modified.
In essence, this app provides a GUI for running Apple's official `bless` command (with --nextonly),
eliminating the need to use the Apple boot picker.
Behind the scenes, `sudo bless --mount "/Volumes/Linux Disk Name/" --setBoot --nextonly` is executed
to add a temporary `alt-boot-volume` NVRAM parameter for this restart only. The default Startup Disk setting
(the `boot-volume` NVRAM parameter) remains unchanged unless the user explicitly changes it via the submenu.

Perhaps it should also be noted that the app doesn't validate whether the "Linux" disk actually is a "real"
Asahi Linux stub. It is just assumed that the "other" disk probably contains Linux. In the vast majority of cases,
this will not cause any confusion. Also, if more than one "Linux" disk is found, the menu will just list the actual
names of the "other" disks instead of displaying the normal "Restart in Linux..." item,
e.g. "Restart in macOS...", "Restart in 'Fedora Linux'..." and "Restart in 'Another Linux Distribution'...".
Note: If multiple "Linux" disk are detected, the menu will display the name of each disk instead,
e.g. *"Restart in Fedora Linux..."* and *"Restart in Another Linux Distribution..."*.
Also, note that the app doesn't verify whether the "other" disks are indeed "Linux" disks.
It simply assumes that they are likely to be "Linux". In most cases, this should not cause confusion.

Note: macOS does not allow any app to directly use the macOS standard Restart dialog, so a custom dialog must be used.
However, the "custom" restart does seem to honor any previously selected "Reopen windows when logging back in" setting
from the aforementioned system restart dialog (?)
Note: macOS does not permit apps to directly use the standard macOS Restart dialog, so a custom dialog must be used.
However, the custom restart appears to respect any previously selected "Reopen windows when logging back in" setting
from the aforementioned system restart dialog.

## Download initial demo version:
## Download:

Download:<br>
Download the UI demo version here:<br>
[Asahi Restart Helper.app.zip](https://github.com/rxhfcy/Asahi-Restart-Helper--macOS-version/raw/main/misc/Asahi%20Restart%20Helper.app.zip)
- Self-signed
- UI demo only
- Doesn't actually restart yet
- Can't actually change default Startup Disk yet
- UI demo only, does not actually restart the system

## Project goals:

- **macOS menubar icon**: Aim to have the Asahi Linux installer automatically install this app on macOS.
- **Linux System Tray icon**: Aim to have what the Asahi Linux installer installs (Fedora Asahi Remix, others) to
automatically install [the Linux version of this app](https://github.com/rxhfcy/Asahi-Restart-Helper--Linux-version)
on Linux
- Also install a GNOME extension that enables showing System Tray icons? (works on KDE Plasma)

## Requirements:
- For Apple silicon Macs only (Asahi Linux is ARM64-only)
- For macOS Ventura 13.5 or newer only (or whatever the Asahi Linux installer requires)
- Apple silicon only (Asahi Linux is ARM64-only)
- Requires macOS Ventura 13.5 or newer, as required by the Asahi Linux installer
- Asahi Linux must already be installed on the computer
- Can't launch Asahi Linux installer from this app, at least for now

## Goals:
- The actual point of this app (and the Linux version): make it easy to select which OS to use next
- instead of requiring every user to already know the holding-down-the-power-button trick
(and/or to already know how to change the default startup disk)
- Use non-technical language (give newbies a chance, experts will know how to use the app regardless of terminology)

## Stretch goals:
- Convince the official Asahi installer to automatically install this app, i.e. add the app icon on macOS (!)
- Bonus goal: convince Asahi installer to not silently make Asahi Linux the default Startup Disk
- reason: from a new user's perspective, the installer by default completely hides all evidence of the user's
macOS installation ever having existed, unless you already happen to know the secret spell or gesture (!)

### (Stretch goals for the Linux version)
- Convince "Linux" (currently Fedora Asahi Remix) to automatically install the Linux version of this app (add icon)
- Additional benefit: `asahi-bless` will be useful to users (required dependency)
- Also install the extension that allows showing the icon on Gnome? (KDE Plasma allows showing the icon by default)
- Bonus goal: convince the developer of `asahi-bless` (the Linux `bless` counterpart) to add more helpful
command line options, and generally make the tool easier to use

# See also: [TODO.md](./Asahi%20Linux%20Helper/TODO.md)

0 comments on commit 8edc0fc

Please sign in to comment.