Skip to content

Japanese characters make the tray menu glitch #1576

@nikitabobko

Description

@nikitabobko

Steps to reproduce:
1.use the config provided with given aerospace version
2.workspaces are using japanese numbers instead of the usual numbers

Expected result:
no glitches in menu
workspaces are ordered from 1 to 7

Actual result:
workspaces are ordered randomly
menu glitches out like crazy

Additional info

im using japanese numbers for workspaces

$ aerospace -v
aerospace CLI client version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8
AeroSpace.app server version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8

screencapture: https://github.com/user-attachments/assets/b79250f8-aac6-4e0e-900c-e548f7445d27

config:

# Place a copy of this config to ~/.aerospace.toml
# After that, you can edit ~/.aerospace.toml to your liking

# You can use it to add commands that run after AeroSpace startup.
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
after-startup-command = [
    "exec-and-forget borders active_color=0xffa9eed6 inactive_color=0xff111d1e width=5.0",
    "exec-and-forget open -na /Applications/Ghostty.app",
    "exec-and-forget open -na /Applications/Brave Browser Nightly.app",
    "exec-and-forget open -na /Applications/WhatsApp.app",
    "exec-and-forget open -na /Applications/Vesktop.app",
    "exec-and-forget open -na /Applications/Spotify.app",
    "exec-and-forget open -na /Applications/Obsidian.app",
]

# Start AeroSpace at login
start-at-login = true

# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true

# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
# The 'accordion-padding' specifies the size of accordion padding
# You can set 0 to disable the padding feature
accordion-padding = 30

# Possible values: tiles|accordion
default-root-container-layout = 'tiles'

# Possible values: horizontal|vertical|auto
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
#               tall monitor (anything higher than wide) gets vertical orientation
default-root-container-orientation = 'auto'

# Mouse follows focus when focused monitor changes
# Drop it from your config, if you don't like this behavior
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
# Fallback value (if you omit the key): on-focused-monitor-changed = []
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']

# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
automatically-unhide-macos-hidden-apps = true

# Possible values: (qwerty|dvorak|colemak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
[key-mapping]
    preset = 'qwerty'

# Gaps between windows (inner-*) and between monitor edges (outer-*).
# Possible values:
# - Constant:     gaps.outer.top = 8
# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
#                 In this example, 24 is a default value when there is no match.
#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
#                 See:
#                 https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
[gaps]
    inner.horizontal = 10
    inner.vertical =   10
    outer.left =       16
    outer.bottom =     5
    outer.top =        5
    outer.right =      16


[[on-window-detected]]
if.app-id = "com.1password.1password"
run = ["layout floating"]
[[on-window-detected]]
if.app-id = "com.apple.finder"
run = ["layout floating"]
[[on-window-detected]]
if.app-id = "com.apple.Preview" # Preview
run = "layout floating"
[[on-window-detected]]
if.app-id="com.mitchellh.ghostty"
run= [ "layout tiling", "move-node-to-workspace 一" ]
[[on-window-detected]]
if.app-id="com.brave.Browser.nightly"
run= "move-node-to-workspace 二"
[[on-window-detected]]
if.app-id="com.apple.Safari"
run= "move-node-to-workspace 二"
[[on-window-detected]]
if.app-id = "com.todesktop.230313mzl4w4u92" # Cursor
run = "move-node-to-workspace 三"
[[on-window-detected]]
if.app-id = "dev.zed.Zed-Preview" # Zed
run = "move-node-to-workspace 三"
[[on-window-detected]]
if.app-id = "md.obsidian"
run = "move-node-to-workspace 四"
[[on-window-detected]]
if.app-id = "notion.id"
run = "move-node-to-workspace 四"
[[on-window-detected]]
if.app-id = "com.tinyspeck.slackmacgap" # Slack
run = "move-node-to-workspace 五"
[[on-window-detected]]
if.app-id = "com.apple.mail" # Mail
run = "move-node-to-workspace 五"
[[on-window-detected]]
if.app-id = "net.whatsapp.WhatsApp" # WhatsApp
run = "move-node-to-workspace 五"
[[on-window-detected]]
if.app-id = "dev.vencord.vesktop" # Discord
run = "move-node-to-workspace 五"
[[on-window-detected]]
if.app-id = "com.spotify.client"
run = "move-node-to-workspace 六" # Music; Spotify
[[on-window-detected]]
if.app-id = "com.apple.Music"
run = "move-node-to-workspace 六" # Music; Spotify
[[on-window-detected]]
if.app-id = "com.apple.TV"
run = "move-node-to-workspace 七"
[[on-window-detected]]
if.app-id = "com.github.thaunknown.miru" # hayase
run = "move-node-to-workspace 七"

# 'main' binding mode declaration
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
# 'main' binding mode must be always presented
# Fallback value (if you omit the key): mode.main.binding = {}
[mode.main.binding]

    # All possible keys:
    # - Letters.        a, b, c, ..., z
    # - Numbers.        0, 1, 2, ..., 9
    # - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
    # - F-keys.         f1, f2, ..., f20
    # - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon,
    #                   backtick, leftSquareBracket, rightSquareBracket, space, enter, esc,
    #                   backspace, tab, pageUp, pageDown, home, end, forwardDelete,
    #                   sectionSign (ISO keyboards only, european keyboards only)
    # - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
    #                   keypadMinus, keypadMultiply, keypadPlus
    # - Arrows.         left, down, up, right

    # All possible modifiers: cmd, alt, ctrl, shift

    # All possible commands: https://nikitabobko.github.io/AeroSpace/commands

    # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
    # You can uncomment the following lines to open up terminal with alt + enter shortcut
    # (like in i3)
    alt-enter = '''exec-and-forget osascript -e 'tell application "Ghostty"
      if it is running then
      activate
      tell application "System Events" to keystroke "n" using {command down}
      else
      activate
      end if
    end tell''''

    cmd-shift-v = '''exec-and-forget osascript -e 'tell application "System Events" to set textToType to (the clipboard as text)' -e 'tell application "System Events"' -e 'delay 1' -e 'repeat with eachChar in characters of textToType' -e 'keystroke eachChar' -e 'delay 0.02' -e 'end repeat' -e 'end tell''''

    # See: https://nikitabobko.github.io/AeroSpace/commands#layout
    alt-comma = 'layout tiles horizontal vertical'
    alt-slash = 'layout accordion horizontal vertical'

    # See: https://nikitabobko.github.io/AeroSpace/commands#focus
    # vim-like focus keys
    alt-h = 'focus left'
    alt-j = 'focus down'
    alt-k = 'focus up'
    alt-l = 'focus right'

    # fullscreen
    alt-f = 'fullscreen'

    # See: https://nikitabobko.github.io/AeroSpace/commands#move
    alt-shift-h = 'move left'
    alt-shift-j = 'move down'
    alt-shift-k = 'move up'
    alt-shift-l = 'move right'

    # See: https://nikitabobko.github.io/AeroSpace/commands#resize
    alt-minus = 'resize smart -50'
    alt-equal = 'resize smart +50'

    # See: https://nikitabobko.github.io/AeroSpace/commands#workspace
    alt-1 = 'workspace 一' # terminal
    alt-2 = 'workspace 二' # browser
    alt-3 = 'workspace 三' # code
    alt-4 = 'workspace 四' # notes
    alt-5 = 'workspace 五' # chat around
    alt-6 = 'workspace 六' # music
    alt-7 = 'workspace 七' # anime/streaming

    # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
    alt-shift-1 = 'move-node-to-workspace 一'
    alt-shift-2 = 'move-node-to-workspace 二'
    alt-shift-3 = 'move-node-to-workspace 三'
    alt-shift-4 = 'move-node-to-workspace 四'
    alt-shift-5 = 'move-node-to-workspace 五'
    alt-shift-6 = 'move-node-to-workspace 六'
    alt-shift-7 = 'move-node-to-workspace 七'

    # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
    alt-tab = 'workspace-back-and-forth'

    # See: https://nikitabobko.github.io/AeroSpace/commands#mode
    alt-shift-semicolon = 'mode service'
    alt-space = 'mode launch'

    # See: https://github.com/nikitabobko/AeroSpace/issues/1097
    alt-w = 'exec-and-forget current_workspace="$(aerospace list-workspaces --focused)"; aerospace close; aerospace workspace "$current_workspace"'

# 'service' binding mode declaration.
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.service.binding]
    esc = ['reload-config', 'mode main']
    r = ['flatten-workspace-tree', 'mode main'] # reset layout
    f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
    backspace = ['close-all-windows-but-current', 'mode main']

    # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
    #s = ['layout sticky tiling', 'mode main']

    alt-shift-h = ['join-with left', 'mode main']
    alt-shift-j = ['join-with down', 'mode main']
    alt-shift-k = ['join-with up', 'mode main']
    alt-shift-l = ['join-with right', 'mode main']

    down = 'volume down'
    up = 'volume up'
    shift-down = ['volume set 0', 'mode main']

[mode.launch.binding]
    esc = ['mode main']
    t = [ '''exec-and-forget osascript -e 'tell application "Ghostty" to activate'''', 'mode main' ]
    f = [ '''exec-and-forget osascript -e 'tell application "Finder" to activate'''', 'mode main' ]
    c = [ '''exec-and-forget osascript -e 'tell application "Cursor" to activate'''', 'mode main' ]
    b = [ '''exec-and-forget osascript -e 'tell application "Brave Browser Nightly" to activate'''', 'mode main' ]
    w = [ '''exec-and-forget osascript -e 'tell application "WhatsApp" to activate'''', 'mode main' ]
    o = [ '''exec-and-forget osascript -e 'tell application "Obsidian" to activate'''', 'mode main' ]
    n = [ '''exec-and-forget osascript -e 'tell application "Notion" to activate'''', 'mode main' ]
    d = [ '''exec-and-forget osascript -e 'tell application "Vesktop" to activate'''', 'mode main' ]
    s = [ '''exec-and-forget osascript -e 'tell application "Spotify" to activate'''', 'mode main' ]
    h = [ '''exec-and-forget osascript -e 'tell application "Hayase" to activate'''', 'mode main' ]
    m = [ '''exec-and-forget osascript -e 'tell application "Mail" to activate'''',  'mode main' ]
    z = [ '''exec-and-forget osascript -e 'tell application "Zed Preview" to activate'''', 'mode main' ]
    alt-s = [ '''exec-and-forget osascript -e 'tell application "Slack" to activate'''', 'mode main' ]

Originally posted by @0oAstro in #1574

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working as expecteduiThe issue involves working on UI

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions