Skip to content

peepworks/LangSwitcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

33 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LangSwitcher Logo

๐ŸŒ LangSwitcher

A lightweight macOS menu bar app for faster and more predictable input source switching.

LangSwitcher helps reduce typing interruptions in shortcut-driven workflows such as Spotlight, ChatGPT, Terminal, browsers, and messengers.

macOS Swift Version License

Why LangSwitcher

If you often launch apps or search tools with keyboard shortcuts, you have probably experienced input source mismatches right before typing.

LangSwitcher helps solve that by combining direct language switching, app-specific keyboard rules, app launch shortcuts, and an input source toggle key in one native interface.

โœจ Features

  • Input Source Toggle Key (New in v0.4.0): Assign a single modifier key, such as Right Command or Right Option, as an input source toggle key.
  • Custom Shortcuts: Bind your own shortcut combinations to switch directly to a specific input source.
  • App-Specific Keyboards: Automatically switch to a predefined input source when a specific app becomes active.
  • App Launch Shortcuts (New in v0.4.0): Launch an app or bring it to the front instantly with a global shortcut.
  • Native HUD Feedback (New in v0.4.0): See language changes and rule test results with a native macOS-style HUD.
  • Rules Test Mode: Verify rules safely without triggering actual app launches or input source changes.
  • Backup & Restore: Export your settings to JSON and restore them anytime.
  • Execution Logs: Review recent execution history and export logs for troubleshooting.
  • Smart Conflict Detection: Detect duplicate or conflicting shortcuts before saving them.
  • Modern Native UI: A clean settings window designed with macOS-style sidebar navigation.

๐Ÿ–ผ Screenshots

LangSwitcher Logo

Settings

Add the latest General tab screenshot here.

This section can highlight the updated terminology, input source toggle key setup, backup and restore actions, and default shortcut layout.

๐Ÿ’ป System Requirements

  • OS: macOS 13.5 or later
  • Architecture: Apple Silicon Macs only

๐Ÿ“ฅ Installation

โš ๏ธ Note: Because this is a free open-source project and not signed with a paid Apple Developer account, macOS may show an "unidentified developer" warning on first launch.

  1. Go to the Releases page.
  2. Download the latest release and extract the zip file.
  3. Move LangSwitcher.app to your Applications folder.
  4. Right-click LangSwitcher.app and choose Open.
  5. If macOS says the app is damaged, run the following command in Terminal:
sudo xattr -r -d com.apple.quarantine /Applications/LangSwitcher.app

โš™๏ธ Accessibility Permission

LangSwitcher requires Accessibility permission to detect global keyboard shortcuts.

  1. Open System Settings > Privacy & Security > Accessibility.
  2. Click the + button and add LangSwitcher.app.
  3. Turn the toggle ON.

๐Ÿ”„ When updating: If shortcuts stop working after replacing the old app, remove LangSwitcher from Accessibility settings and add it again.

๐Ÿš€ Quick Start

  1. Open LangSwitcher from the menu bar and choose Preferences.
  2. In General, configure startup behavior, HUD visibility, rules test mode, and your input source toggle key.
  3. In Custom Shortcuts, assign shortcuts for direct language switching.
  4. In App-Specific Keyboards, set default input sources for individual apps.
  5. In App Launch Shortcuts, bind shortcuts to frequently used apps.

๐Ÿงญ Settings Overview

General

Manage startup options, update checks, HUD display, rules test mode, input source toggle key, backup and restore, and default shortcuts.

Custom Shortcuts

Create global shortcuts for switching directly to a selected input source.

App-Specific Keyboards

Assign a default input source to specific apps so language switching feels automatic and predictable.

App Launch Shortcuts

Register shortcuts that launch an app or bring an existing app window to the front.

Info & Support

Use this section for version info, support links, and exported execution logs.

๐Ÿ›  Troubleshooting

  • Make sure Accessibility permission is enabled.
  • Review shortcut conflicts before assigning new combinations.
  • Use Rules Test Mode before enabling a new workflow.
  • Export execution logs when reporting an issue.

โ˜•๏ธ Donations

If you find this app helpful, consider buying me a coffee. Your support helps maintain the project.

Cryptocurrency Wallet Address
Bitcoin (BTC) 14eZvFmfSnste92o66DcFq9ns7JqWepu1s
Dogecoin (DOGE) D9sGuU6wXVCSnAPTESQsy1QcsxmTHt6VDW

๐Ÿค Contributing

Contributions, bug reports, feature requests, and translation help are welcome.

โš–๏ธ License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for details.



๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด ๋ฒ„์ „ ๋ณด๊ธฐ (Click to view Korean version)

๐ŸŒ LangSwitcher

LangSwitcher๋Š” macOS์—์„œ ์ž…๋ ฅ ์–ธ์–ด ์ „ํ™˜์„ ๋” ๋น ๋ฅด๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฐ€๋ฒผ์šด ๋ฉ”๋‰ด๋ฐ” ์•ฑ์ž…๋‹ˆ๋‹ค.

Spotlight, ChatGPT, ํ„ฐ๋ฏธ๋„, ๋ธŒ๋ผ์šฐ์ €, ๋ฉ”์‹ ์ €์ฒ˜๋Ÿผ ๋‹จ์ถ•ํ‚ค ์ค‘์‹ฌ์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ์ž…๋ ฅ์†Œ์Šค ๊ผฌ์ž„์„ ์ค„์ด๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

LangSwitcher๊ฐ€ ํ•˜๋Š” ์ผ

๋‹จ์ถ•ํ‚ค๋กœ ์•ฑ์„ ์—ด์ž๋งˆ์ž ์ž…๋ ฅ ์–ธ์–ด๊ฐ€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์žกํ˜€ ๋‹ค์‹œ ์ง€์šฐ๊ณ  ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ž์ฃผ ์ƒ๊น๋‹ˆ๋‹ค.

LangSwitcher๋Š” ์ง์ ‘ ์–ธ์–ด ์ „ํ™˜, ์•ฑ๋ณ„ ์ž๋™ ์ „ํ™˜, ์•ฑ ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค, ์ž…๋ ฅ ์†Œ์Šค ์ „ํ™˜ ํ‚ค๋ฅผ ํ•˜๋‚˜์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฌถ์–ด ์ด๋Ÿฐ ๋ถˆํŽธ์„ ์ค„์—ฌ ์ค๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ž…๋ ฅ ์†Œ์Šค ์ „ํ™˜ ํ‚ค (v0.4.0 ์‹ ๊ทœ): ์šฐ์ธก Command, ์šฐ์ธก Option ๊ฐ™์€ ๋‹จ์ผ ์ˆ˜์‹์–ด ํ‚ค๋ฅผ ์ž…๋ ฅ ์†Œ์Šค ์ „ํ™˜ ํ‚ค๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ง€์ • ๋‹จ์ถ•ํ‚ค: ํŠน์ • ์ž…๋ ฅ์†Œ์Šค๋กœ ๋ฐ”๋กœ ์ „ํ™˜ํ•˜๋Š” ๋‹จ์ถ•ํ‚ค๋ฅผ ์ง์ ‘ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•ฑ๋ณ„ ํ‚ค๋ณด๋“œ ์„ค์ •: ํŠน์ • ์•ฑ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ๋ฏธ๋ฆฌ ์ง€์ •ํ•œ ์ž…๋ ฅ์†Œ์Šค๋กœ ์ž๋™ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•ฑ ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค (v0.4.0 ์‹ ๊ทœ): ์ „์—ญ ๋‹จ์ถ•ํ‚ค๋กœ ์•ฑ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์•ž์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HUD ์•Œ๋ฆผ (v0.4.0 ์‹ ๊ทœ): ์–ธ์–ด ์ „ํ™˜๊ณผ ๊ทœ์น™ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ macOS ์Šคํƒ€์ผ์˜ HUD๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทœ์น™ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ: ์‹ค์ œ ๋™์ž‘ ์—†์ด ๊ทœ์น™๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค์ • ๋ฐฑ์—… ๋ฐ ๋ณต์›: ์„ค์ •์„ JSON ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ๋กœ๊ทธ: ์ตœ๊ทผ ๋™์ž‘ ๊ธฐ๋ก์„ ํ™•์ธํ•˜๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šค๋งˆํŠธ ์ถฉ๋Œ ๊ฐ์ง€: ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ์ถฉ๋Œํ•˜๋Š” ๋‹จ์ถ•ํ‚ค๋ฅผ ์ €์žฅ ์ „์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋˜ ๋„ค์ดํ‹ฐ๋ธŒ UI: macOS ์Šคํƒ€์ผ์˜ ์‚ฌ์ด๋“œ๋ฐ” ๊ธฐ๋ฐ˜ ์„ค์ • ํ™”๋ฉด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–ผ ์Šคํฌ๋ฆฐ์ƒท

์„ค์ • ํ™”๋ฉด

LangSwitcher Logo

๐Ÿ’ป ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

  • ์šด์˜์ฒด์ œ: macOS 13.5 ์ด์ƒ
  • ์ง€์› ๊ธฐ๊ธฐ: Apple Silicon Mac ์ „์šฉ

๐Ÿ“ฅ ์„ค์น˜ ๋ฐฉ๋ฒ•

โš ๏ธ ์ฐธ๊ณ : ์ด ์•ฑ์€ ์œ ๋ฃŒ Apple Developer ๊ณ„์ •์œผ๋กœ ์„œ๋ช…๋˜์ง€ ์•Š์€ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ, ์ตœ์ดˆ ์‹คํ–‰ ์‹œ macOS์—์„œ "ํ™•์ธ๋˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž" ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Releases ํŽ˜์ด์ง€์—์„œ ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. ์••์ถ•์„ ํ’€๊ณ  LangSwitcher.app์„ Applications ํด๋”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. LangSwitcher.app์„ ์šฐํด๋ฆญํ•œ ๋’ค ์—ด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ๋งŒ์•ฝ ์•ฑ์ด ์†์ƒ๋˜์—ˆ๋‹ค๊ณ  ํ‘œ์‹œ๋˜๋ฉด, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
sudo xattr -r -d com.apple.quarantine /Applications/LangSwitcher.app

โš™๏ธ ์†์‰ฌ์šด ์‚ฌ์šฉ ๊ถŒํ•œ

LangSwitcher๋Š” ์ „์—ญ ๋‹จ์ถ•ํ‚ค๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์†์‰ฌ์šด ์‚ฌ์šฉ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  1. ์‹œ์Šคํ…œ ์„ค์ • > ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ > ์†์‰ฌ์šด ์‚ฌ์šฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ LangSwitcher.app์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. LangSwitcher ์Šค์œ„์น˜๋ฅผ ์ผœ์ง ์ƒํƒœ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๐Ÿ”„ ์—…๋ฐ์ดํŠธ ์‹œ: ๊ธฐ์กด ์•ฑ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•œ ๋’ค ๋‹จ์ถ•ํ‚ค๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด, ์†์‰ฌ์šด ์‚ฌ์šฉ ๋ชฉ๋ก์—์„œ LangSwitcher๋ฅผ ์ œ๊ฑฐํ•œ ๋’ค ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

  1. ๋ฉ”๋‰ด๋ฐ”์—์„œ LangSwitcher๋ฅผ ์—ด๊ณ  ์„ค์ •์œผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
  2. ์ผ๋ฐ˜ ํƒญ์—์„œ ์ž๋™ ์‹คํ–‰, HUD, ๊ทœ์น™ ํ…Œ์ŠคํŠธ, ์ž…๋ ฅ ์†Œ์Šค ์ „ํ™˜ ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‚ฌ์šฉ์ž ์ง€์ • ๋‹จ์ถ•ํ‚ค์—์„œ ํŠน์ • ์–ธ์–ด๋กœ ๋ฐ”๋กœ ์ „ํ™˜ํ•˜๋Š” ๋‹จ์ถ•ํ‚ค๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  4. ์•ฑ๋ณ„ ํ‚ค๋ณด๋“œ ์„ค์ •์—์„œ ์•ฑ๋งˆ๋‹ค ๊ธฐ๋ณธ ์ž…๋ ฅ์†Œ์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  5. ์•ฑ ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค์—์„œ ์ž์ฃผ ์“ฐ๋Š” ์•ฑ์„ ๋‹จ์ถ•ํ‚ค์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงญ ์„ค์ • ๋ฉ”๋‰ด ์•ˆ๋‚ด

์ผ๋ฐ˜

์ž๋™ ์‹คํ–‰, ์—…๋ฐ์ดํŠธ ํ™•์ธ, HUD ํ‘œ์‹œ, ๊ทœ์น™ ํ…Œ์ŠคํŠธ, ์ž…๋ ฅ ์†Œ์Šค ์ „ํ™˜ ํ‚ค, ๋ฐฑ์—… ๋ฐ ๋ณต์›, ๊ธฐ๋ณธ ๋‹จ์ถ•ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ๋‹จ์ถ•ํ‚ค

์›ํ•˜๋Š” ์ž…๋ ฅ์†Œ์Šค๋กœ ๋ฐ”๋กœ ์ „ํ™˜ํ•˜๋Š” ์ „์—ญ ๋‹จ์ถ•ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ๋ณ„ ํ‚ค๋ณด๋“œ ์„ค์ •

ํŠน์ • ์•ฑ์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ž…๋ ฅ์†Œ์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค

์•ฑ ์‹คํ–‰ ๋˜๋Š” ์•ฑ ์•ž์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์œ„ํ•œ ๋‹จ์ถ•ํ‚ค๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

์ •๋ณด ๋ฐ ์ง€์›

๋ฒ„์ „ ์ •๋ณด, ์ง€์› ๋งํฌ, ์‹คํ–‰ ๋กœ๊ทธ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  ๋ฌธ์ œ ํ•ด๊ฒฐ

  • ์†์‰ฌ์šด ์‚ฌ์šฉ ๊ถŒํ•œ์ด ํ—ˆ์šฉ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.
  • ์ƒˆ ๋‹จ์ถ•ํ‚ค๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์ „์— ๊ธฐ์กด ์ถฉ๋Œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.
  • ๊ทœ์น™ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋กœ ๋จผ์ € ๋™์ž‘์„ ์ ๊ฒ€ํ•ด ๋ณด์„ธ์š”.
  • ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์‹คํ–‰ ๋กœ๊ทธ๋ฅผ ํ•จ๊ป˜ ์ฒจ๋ถ€ํ•ด ์ฃผ์„ธ์š”.

โ˜•๏ธ ํ›„์›

์ด ์•ฑ์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ปคํ”ผ ํ•œ ์ž” ํ›„์›์„ ๊ณ ๋ คํ•ด ์ฃผ์„ธ์š”. ํ”„๋กœ์ ํŠธ ์œ ์ง€๋ณด์ˆ˜์— ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”ํ ์ง€๊ฐ‘ ์ฃผ์†Œ
๋น„ํŠธ์ฝ”์ธ (BTC) 14eZvFmfSnste92o66DcFq9ns7JqWepu1s
๋„์ง€์ฝ”์ธ (DOGE) D9sGuU6wXVCSnAPTESQsy1QcsxmTHt6VDW

๐Ÿค ๊ธฐ์—ฌ

๋ฒ„๊ทธ ์ œ๋ณด, ๊ธฐ๋Šฅ ์ œ์•ˆ, ๋ฒˆ์—ญ ๊ธฐ์—ฌ, ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

โš–๏ธ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” GNU General Public License v3.0 (GPL-3.0) ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

About

A menu bar app that pins the language set to macOS shortcuts

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages