Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Miscellaneous loadout should switch directly, without the base/Boxes subcategory popup

Open Beginner friendly
#149 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Quiet
Tech stack
kotlin
Domain
desktop

Research direction

Start with StyleMenuBuilder.kt at showLoadoutDialog, then check the loadout entries in Loadout.kt and shortcut definitions in programData/utd/shortcutDefs.xml. Confirm Miscellaneous switches directly and Boxes is reachable as its own loadout with Ctrl+Shift+Z. Done when the two behaviors work without the subcategory popup or shortcut conflict.

Written by the indexing model from the issue text.

Description

Problem

File StyleMenuBuilder.kt:247–267 (showLoadoutDialog)

Currently Miscellaneous goes through the generic subcategory-selector branch, which pops up a "Miscellaneous vs Boxes" dialog. The desired behavior: Miscellaneous should switch directly, like Basic/Heading/Notes/Plays, applying its own direct (non-Boxes) styles with Alt+1–8;

To fix ambiguity issues this may cause, Boxes can remain reachable as its own loadout via the Styles → Miscellaneous → Boxes submenu (see below).

Fix add shortcutId == MISCELLANEOUS_CATEGORY_NAME to the direct-switch condition`.

// before
if (shortcutId == "plays") {
    BBIni.propertyFileManager.save(CURRENT_STYLE_LOADOUT_CATEGORY, shortcutId)
    updateLabel()
} else {
    // set current style loadout
    var styleIds = getChildren(shortcutId)
    if (styleIds.isNotEmpty()) {
        BBIni.propertyFileManager.save(CURRENT_STYLE_LOADOUT_CATEGORY, shortcutId)
        updateLabel()
    }
    styleIds = getSubCategories(shortcutId)
    if (styleIds.isNotEmpty()) {
        //select subcategory
        styleIds = getSubCategories(shortcutId)
        val number = showStyleSelector(styleIds, shortcutId)
        if (number != -1) {
            BBIni.propertyFileManager.save(CURRENT_STYLE_LOADOUT_CATEGORY, styleIds[number])
            updateLabel()
        }
    }
}
// after
// Miscellaneous is switched directly (like Basic/Heading/Plays): the loadout is the
// base category and Alt+1-8 applies its direct (non-Boxes) styles, with no subcategory popup
if (shortcutId == "plays" || shortcutId == MISCELLANEOUS_CATEGORY_NAME) {
    BBIni.propertyFileManager.save(CURRENT_STYLE_LOADOUT_CATEGORY, shortcutId)
    updateLabel()
} else {
    // set current style loadout
    var styleIds = getChildren(shortcutId)
    if (styleIds.isNotEmpty()) {
        BBIni.propertyFileManager.save(CURRENT_STYLE_LOADOUT_CATEGORY, shortcutId)
        updateLabel()
    }
    styleIds = getSubCategories(shortcutId)
    if (styleIds.isNotEmpty()) {
        //select subcategory
        styleIds = getSubCategories(shortcutId)
        val number = showStyleSelector(styleIds, shortcutId)
        if (number != -1) {
            BBIni.propertyFileManager.save(CURRENT_STYLE_LOADOUT_CATEGORY, styleIds[number])
            updateLabel()
        }
    }
}

Boxes Submenu

Problem

Files Loadout.kt (new entry after Miscellaneous), programData/utd/shortcutDefs.xml (new entry between styles/notes and styles/applyStyle)

There's no dedicated loadout for the four box styles. Add one so Alt+1–4 applies Box, Colored Box, Full Box, Colored Full Box directly.

Fix use Ctrl+Shift+Z, not X — Ctrl+Shift+X is already bound to the debug-only XML viewer, and getShortcut returns the first matching entry, which would shadow a new binding on X. Z is otherwise unassigned (only plain Ctrl+Z = Undo). The id styles/miscellaneous/boxes resolves (after showLoadoutDialog strips the styles/ prefix) to the exact path whose getChildren returns the four box styles and whose getSubCategories is empty, so no popup appears — the existing else branch in showLoadoutDialog already handles it; no additional StyleMenuBuilder change is needed.

// Loadout.kt — new entry, added after Miscellaneous
list.add(Loadout("Miscellaneous", SWT.MOD1 + SWT.MOD2 + 'W'.code))
list.add(Loadout("Boxes", SWT.MOD1 + SWT.MOD2 + 'Z'.code))
<!-- shortcutDefs.xml — new entry -->
<shortcut>
    <id>styles/miscellaneous/boxes</id>
    <key-combination>Ctrl+Shift+Z</key-combination>
    <description>Set Boxes style loadout.</description>
</shortcut>
Dominant language
Kotlin
Stars
15
Forks
11
Avg merge
1d 2h
Merged PRs (30d)
10

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from aphtech/brailleblaster

All issues in aphtech/brailleblaster

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.