Skip to content

Commit 7e9b7b4

Browse files
committed
Lower minimum macOS to 10.15 (Catalina)
1 parent cdf7ca5 commit 7e9b7b4

6 files changed

Lines changed: 74 additions & 26 deletions

File tree

Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<key>CFBundleIconFile</key>
2828
<string>AppIcon</string>
2929
<key>LSMinimumSystemVersion</key>
30-
<string>12.0</string>
30+
<string>10.15</string>
3131
<key>LSUIElement</key>
3232
<true/>
3333
<key>NSHighResolutionCapable</key>

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ $(APP_BUNDLE): $(SOURCES) Info.plist Resources/AppIcon.icns Resources/MenuBarIco
5252
@mkdir -p $(APP_BUNDLE)/Contents/Resources
5353
@mkdir -p $(APP_BUNDLE)/Contents/Frameworks
5454
@mkdir -p $(BUILD_DIR)/arch
55-
swiftc $(COMMON_FLAGS) -target arm64-apple-macos12 $(SOURCES) -o $(BUILD_DIR)/arch/$(APP_NAME)-arm64
56-
swiftc $(COMMON_FLAGS) -target x86_64-apple-macos12 $(SOURCES) -o $(BUILD_DIR)/arch/$(APP_NAME)-x86_64
55+
swiftc $(COMMON_FLAGS) -target arm64-apple-macos10.15 $(SOURCES) -o $(BUILD_DIR)/arch/$(APP_NAME)-arm64
56+
swiftc $(COMMON_FLAGS) -target x86_64-apple-macos10.15 $(SOURCES) -o $(BUILD_DIR)/arch/$(APP_NAME)-x86_64
5757
lipo -create $(BUILD_DIR)/arch/$(APP_NAME)-arm64 $(BUILD_DIR)/arch/$(APP_NAME)-x86_64 \
5858
-output $(APP_BUNDLE)/Contents/MacOS/$(APP_NAME)
5959
@rm -rf $(BUILD_DIR)/arch

README.md

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,67 @@
1+
![](docs/logo.png)
2+
13
# ЯR Switcher
24

3-
Форк проекта [Bilingual Switcher](https://github.com/komandakycto/bilingual-switcher) от автора komandakycto, распространяется по лицензии [MIT](LICENSE).
5+
Бесплатная замена **Punto Switcher / Caramba / etc** для macOS: выделите текст, набранный в неправильной раскладке, нажмите горячую клавишу — и он станет правильным.
6+
7+
![](docs/demo.gif)
8+
9+
Работает **c любой парой раскладок** (русская ↔ английская, немецкая ↔ английская и т.д.), читает их прямо из macOS — без хардкода и «костылей» на каждый язык.
10+
11+
![macOS 10.15+](https://img.shields.io/badge/macOS-10.15%2B-blue) ![Architecture arm64 + x86_64](https://img.shields.io/badge/Архитектура-universal-blue) ![License MIT](https://img.shields.io/badge/Лицензия-MIT-green)
12+
13+
##### Скачайте последний релиз: [YRSwitcher.dmg](https://github.com/gluck-59/yr-switcher/releases/latest/download/YRSwitcher.dmg)
14+
15+
## Чем ЯR Switcher отличается от других?
16+
17+
В ЯR Switcher всего одна функция: переключение раскладки выделенного текста горячей клавише. Как дополнение — переключение раскладки **последнего слова**, когда ничего не выделено.
18+
Здесь нет и не будет комбайна из проверки орфографии, автоматических переключений, ИИ, записи экрана, правил и исключений, измерения скорости интернета и т.д. и т.п.
419

5-
Приложение для macOS в строке меню: конвертирует выделенный текст между любыми двумя установленными раскладками клавиатуры (например, английская ↔ русская) по глобальной горячей клавише.
20+
## Возможности
621

7-
## Скачать
22+
- **Любые раскладки.** Маппинг символов строится динамически из системных данных клавиатуры (`UCKeyTranslate`). Поддерживаются ANSI/ISO/JIS клавиатуры — не нужно ждать поддержку «вашего» языка.
23+
- **Одна клавиша.** Настроили хоткей один раз — переключаете текст в любом приложении: браузер, терминал, редактор, Telegram.
24+
- **Конвертация «последнего слова».** Ничего не выделено? Приложение само возьмёт предыдущее слово и переключит его — идеально для чатов.
25+
- **Настройка горячих клавиш.** Обычные сочетания (например ⌥⌘S) или «модификаторные» (нажатие и отпускание ⌥⌘ без букв).
26+
- **Чистый clipboard.** Содержимое буфера обмена возвращается на место после конвертации.
27+
- **macOS 10.15+ (Catalina и новее)**, универсальный бинарник для Intel и Apple Silicon.
28+
29+
## Сравнение
30+
31+
| | Punto Switcher | Caramba Switcher | **ЯR Switcher** |
32+
|---|---|---|---|
33+
| Цена | бесплатно, с рекламой | платная | бесплатно |
34+
| Ошибки/глюки | частые | редкие | редкие |
35+
| Любые раскладки | нет | да | да |
36+
| минимальная версия macOS | неизвестно | 12.0 | 10.15 |
37+
38+
## Установка
839

940
Скачайте последний релиз: [YRSwitcher.dmg](https://github.com/gluck-59/yr-switcher/releases/latest/download/YRSwitcher.dmg)
1041

11-
Приложение подписано self-signed (не нотаризовано). При первом запуске macOS может показать предупреждение Gatekeeper — разрешите через «Open Anyway» (Системные настройки → Конфиденциальность и безопасность) или выполните:
42+
Приложение подписано self-signed (не нотаризовано). При первом запуске macOS может показать предупреждение Gatekeeper:
43+
44+
1. Откройте **Системные настройки → Конфиденциальность и безопасность**.
45+
2. Нажмите **«Всё равно открыть»** (Open Anyway).
1246

47+
Или выполните в терминале:
1348
```bash
1449
xattr -cr /Applications/YRSwitcher.app
1550
```
1651

17-
## Отличия от оригинала
52+
Затем дайте разрешение **Доступность** (приложение откроет нужный раздел само) и задайте горячую клавишу в настройках.
1853

19-
1. **Конвертация последнего слова, если ничего не выделено** — при пустом выделении приложение само выделяет предыдущее слово и конвертирует его.
20-
2. **Локализация интерфейса на русский** — окно настроек, меню и алерты переведены на русский.
21-
3. **Поддержка macOS 12** — минимальная версия снижена с macOS 13 до macOS 12 (Monterey).
22-
4. **Авто-открытие настроек доступности** — при отсутствии разрешения приложение само открывает нужный раздел Системных настроек.
23-
5. **Новые иконки** — иконка приложения и глиф в строке меню.
54+
## FAQ
2455

25-
## Оригинальный проект
56+
**Работает ли с русской и английской раскладкой?**
57+
Да, и не только: любые установленные раскладки — немецкая, французская и др.
2658

27-
- GitHub: https://github.com/komandakycto/bilingual-switcher
28-
- Лицензия: MIT — см. [LICENSE](LICENSE)
59+
**У меня не переключается текст в приложении X.** Убедитесь, что разрешение «Доступность» выдано, и что хоткей не конфликтует с системным.
2960

30-
## Сборка
61+
**Это бесплатно? Где подвох?**
62+
Бесплатно. Проект открыт, слежка и реклама отсутствуют, исходный код на GitHub.
63+
64+
## Сборка из исходников
3165

3266
Требуется Xcode Command Line Tools (`xcode-select --install`).
3367

@@ -39,6 +73,10 @@ make # сборка универсального бинарника
3973
make install # копирование в /Applications
4074
```
4175

42-
## Лицензия
76+
## Обратная связь
77+
78+
Баг или пожелание — [откройте issue](https://github.com/gluck-59/yr-switcher/issues).
79+
80+
## Credits
4381

44-
[MIT](LICENSE)
82+
Проект основан на [Bilingual Switcher](https://github.com/komandakycto/bilingual-switcher) от komandakycto. Лицензия — [MIT](LICENSE).

Sources/AppDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
4747
image.isTemplate = true
4848
image.size = NSSize(width: 18, height: 18)
4949
button.image = image
50-
} else if let image = NSImage(
50+
} else if #available(macOS 11.0, *), let image = NSImage(
5151
systemSymbolName: "keyboard.badge.ellipsis",
5252
accessibilityDescription: "ЯR Switcher"
5353
) {

Sources/PreferencesWindow.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,15 @@ class ShortcutRecorderView: NSView {
172172
/// appearance, and re-running from `viewDidChangeEffectiveAppearance`
173173
/// keeps it correct when the user toggles the system theme live.
174174
private func applyLayerColors() {
175-
effectiveAppearance.performAsCurrentDrawingAppearance {
176-
layer?.backgroundColor = NSColor.controlBackgroundColor.cgColor
177-
let border = isRecording ? NSColor.systemOrange : NSColor.separatorColor
178-
layer?.borderColor = border.cgColor
175+
let update: () -> Void = {
176+
self.layer?.backgroundColor = NSColor.controlBackgroundColor.cgColor
177+
let border = self.isRecording ? NSColor.systemOrange : NSColor.separatorColor
178+
self.layer?.borderColor = border.cgColor
179+
}
180+
if #available(macOS 11.0, *) {
181+
effectiveAppearance.performAsCurrentDrawingAppearance(update)
182+
} else {
183+
update()
179184
}
180185
}
181186

Sources/TextSwitcher+Diagnostics.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@ extension TextSwitcher {
1616
let url = URL(fileURLWithPath: diagLogPath)
1717
if FileManager.default.fileExists(atPath: diagLogPath) {
1818
if let handle = try? FileHandle(forWritingTo: url) {
19-
_ = try? handle.seekToEnd()
20-
try? handle.write(contentsOf: data)
19+
if #available(macOS 10.15.4, *) {
20+
_ = try? handle.seekToEnd()
21+
try? handle.write(contentsOf: data)
22+
} else {
23+
_ = handle.seekToEndOfFile()
24+
handle.write(data)
25+
}
2126
try? handle.close()
2227
return
2328
}

0 commit comments

Comments
 (0)