Конечно, это должно быть проще, чем это.

Есть некоторые вещи, которые я давно хотел написать, но которые просто не имеют смысла как веб-приложение. Поскольку сейчас я в основном использую macOS (по крайней мере, для отдыха), я хочу приложение для macOS.

После долгих поисков и отчаяния лучшее решение, которое я нашел для создания приложений с графическим интерфейсом на macOS, на самом деле Xamarin.Mac от Microsoft. В этом определенно есть доля иронии.

(И, если быть откровенным, то плохое положение вещей, а не Xamarin.)

Быстрый

Swift хорош, но я не могу найти даже основ вроде «как мне прочитать содержимое каталога». Я уверен, что это недостаток моего гугловского фу — это довольно простое требование — но если веб-поиск не выдает ничего подобного, что будет, если я наткнусь на что-то более сложное?

Обновление: с тех пор я нашел как это сделать благодаря ответу StackOverflow (помечен как iOS для дополнительного удовольствия). Я пробовал этот ответ раньше, и он не смог собраться, а Xcode жаловался, что FileManager не существует. Оказывается, вам нужно import Foundation.

JavaScript

В последнее время я неплохо знаком с JavaScript, но ни одна из вещей «JavaScript как приложение», на которые я смотрел, не вызывает у меня теплых чувств.

(Пока это в основном Electron и nwjs — было что-то еще, но я забыл.)

Обновление: Трей указал мне на Таури, который, как я теперь помню, был тем, на что я бегло взглянул ранее. Я не помню, почему я обесценивал его раньше; это определенно выглядит лучше, чем Электрон. Я попробую еще раз и посмотрю, как пойдет.

Помимо общей вещи, связанной с ношением сотен мегабайт интерпретатора JavaScript, все это кажется довольно громоздким. Это напоминает мне фразу, которую я встретил давным-давно:

Представьте себе стегозавра, который носит роликовые коньки с ракетным двигателем, и вы получите четкое представление об его элегантности, устойчивости и простоте восстановления после аварии. — Лайонел Лауэр

питон

Было бы неплохо использовать Python и Qt, но прежде чем я смогу их использовать, им нужно выпустить версию, которая работает на Apple Silicon. В прошлый раз, когда я пробовал, этого не было. Хотя он не сообщил мне об этом, я узнал об этом, когда попытался импортировать библиотеку Qt, и он выдал мне исключение.

Кроме того, я думаю, что мне придется купить лицензию Qt, чтобы распространять все, что я написал (при условии, что я не сделаю это совместимым с OSI). Я хотел бы иметь выбор в этом.

Python и Gtk — ну, это Gtk. Если бы я хотел такой боли, я бы просто несколько раз ударился головой о стену, это было бы быстрее и легче.

Кложур

Clojure — я еще недостаточно хорошо его знаю, но, честно говоря, я все равно не хотел, чтобы меня заставляли вручную выкладывать свой пользовательский интерфейс в код. Есть некоторые туториалы от людей, которые прошли этот путь, но… нет, спасибо.

Приведенный выше код взят с веб-сайта Мэтью Д. Миллера. Нет никакого неуважения к Мэтью — если вы пишете код с графическим интерфейсом в Clojure, это кажется вполне функциональным способом сделать это. (Каламбур абсолютно намеренно…)

Другие варианты

Rust — я немного поискал, но в итоге он еще не готов для основного графического интерфейса.

Go — также еще не готов к массовому построению графического интерфейса.

ObjectiveC — я знаю, что это сработает, но я никогда не мог понять все [notation :weirdness], что с ним связано.

C++ — просто нет. Какой ты мазохист? (Звучит как одна из тех «двадцати вопросов» викторины на Facebook.)

Xamarin.Mac

Так что это возвращает нас к началу, так сказать. И я должен сказать, что команда Xamarin проделала хорошую работу.

Я следовал пошаговому руководству Hello Mac. Есть несколько мест, где графический интерфейс Xcode изменился, но он был четко написан.

Он интегрируется с Xcode для использования Interface Builder. Visual Studio позаботится обо всех подводных работах за кулисами, хотя вам не нужно об этом заботиться. И самое главное — после завершения прохождения я смог тривиально расширить пример «Hello Mac» для сброса счетчика, не требуя гугления или головоломок.

Вывод

Я рад, что нашел что-то, что, кажется, заслуживает дальнейшего изучения, но должен быть честным, что мне немного грустно от количества усилий, которые потребовались.

Конечно, я должен упустить что-то очевидное? Не может быть, чтобы инструментов для написания приложений с графическим интерфейсом настолько не хватало? Пожалуйста, дайте мне знать (вежливо!), я хотел бы иметь больше вариантов.

Фото Драгоса Гонтариу на Unsplash.