From 995f6834bbfb61c08d3304c9cf44f5ff47dfe503 Mon Sep 17 00:00:00 2001 From: Loc Huynh Date: Sat, 21 Feb 2026 12:02:15 +0700 Subject: [PATCH 1/7] style: replace traditional tray icons with Adwaita-style monochrome glyphs --- .../icons/scalable/apps/fcitx-lotus-emoji.svg | 17 +-------- data/icons/scalable/apps/fcitx-lotus-off.svg | 37 ++++--------------- data/icons/scalable/apps/fcitx-lotus.svg | 36 ++++-------------- 3 files changed, 17 insertions(+), 73 deletions(-) diff --git a/data/icons/scalable/apps/fcitx-lotus-emoji.svg b/data/icons/scalable/apps/fcitx-lotus-emoji.svg index c505995..bedfd36 100644 --- a/data/icons/scalable/apps/fcitx-lotus-emoji.svg +++ b/data/icons/scalable/apps/fcitx-lotus-emoji.svg @@ -1,17 +1,4 @@ - - - - - - - - - - - - + + \ No newline at end of file diff --git a/data/icons/scalable/apps/fcitx-lotus-off.svg b/data/icons/scalable/apps/fcitx-lotus-off.svg index 8004b14..4442da9 100644 --- a/data/icons/scalable/apps/fcitx-lotus-off.svg +++ b/data/icons/scalable/apps/fcitx-lotus-off.svg @@ -1,31 +1,10 @@ - - - - - - - - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/data/icons/scalable/apps/fcitx-lotus.svg b/data/icons/scalable/apps/fcitx-lotus.svg index 03c1659..0835517 100644 --- a/data/icons/scalable/apps/fcitx-lotus.svg +++ b/data/icons/scalable/apps/fcitx-lotus.svg @@ -1,31 +1,9 @@ - - - - - - - - - - - - - - - + + \ No newline at end of file From 3da8d3ce8342c39d5be076daa9e59af04af1ac5f Mon Sep 17 00:00:00 2001 From: Loc Huynh Date: Sat, 21 Feb 2026 23:45:18 +0700 Subject: [PATCH 2/7] style: update SVG icons for fcitx-lotus with new designs and add default icons --- .../scalable/apps/fcitx-lotus-default.svg | 9 ++++ .../scalable/apps/fcitx-lotus-off-default.svg | 10 +++++ data/icons/scalable/apps/fcitx-lotus-off.svg | 36 ++++++++++++---- data/icons/scalable/apps/fcitx-lotus.svg | 41 +++++++++++++++---- 4 files changed, 81 insertions(+), 15 deletions(-) create mode 100644 data/icons/scalable/apps/fcitx-lotus-default.svg create mode 100644 data/icons/scalable/apps/fcitx-lotus-off-default.svg diff --git a/data/icons/scalable/apps/fcitx-lotus-default.svg b/data/icons/scalable/apps/fcitx-lotus-default.svg new file mode 100644 index 0000000..0835517 --- /dev/null +++ b/data/icons/scalable/apps/fcitx-lotus-default.svg @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/data/icons/scalable/apps/fcitx-lotus-off-default.svg b/data/icons/scalable/apps/fcitx-lotus-off-default.svg new file mode 100644 index 0000000..4442da9 --- /dev/null +++ b/data/icons/scalable/apps/fcitx-lotus-off-default.svg @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/data/icons/scalable/apps/fcitx-lotus-off.svg b/data/icons/scalable/apps/fcitx-lotus-off.svg index 4442da9..05bc0df 100644 --- a/data/icons/scalable/apps/fcitx-lotus-off.svg +++ b/data/icons/scalable/apps/fcitx-lotus-off.svg @@ -1,10 +1,30 @@ - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/icons/scalable/apps/fcitx-lotus.svg b/data/icons/scalable/apps/fcitx-lotus.svg index 0835517..2e46969 100644 --- a/data/icons/scalable/apps/fcitx-lotus.svg +++ b/data/icons/scalable/apps/fcitx-lotus.svg @@ -1,9 +1,36 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From fcbb1933ca937502cacba525f0b041b28d952a5e Mon Sep 17 00:00:00 2001 From: Loc Huynh Date: Sat, 21 Feb 2026 23:48:29 +0700 Subject: [PATCH 3/7] style: adjust scaling of SVG icons for fcitx-lotus to improve visual consistency --- data/icons/scalable/apps/fcitx-lotus-off.svg | 2 +- data/icons/scalable/apps/fcitx-lotus.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/icons/scalable/apps/fcitx-lotus-off.svg b/data/icons/scalable/apps/fcitx-lotus-off.svg index 05bc0df..1a681c8 100644 --- a/data/icons/scalable/apps/fcitx-lotus-off.svg +++ b/data/icons/scalable/apps/fcitx-lotus-off.svg @@ -2,7 +2,7 @@ - + - + Date: Sat, 21 Feb 2026 23:52:46 +0700 Subject: [PATCH 4/7] style: update fcitx-lotus emoji SVG icons for improved design and consistency --- .../scalable/apps/fcitx-lotus-emoji-default.svg | 4 ++++ data/icons/scalable/apps/fcitx-lotus-emoji.svg | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 data/icons/scalable/apps/fcitx-lotus-emoji-default.svg diff --git a/data/icons/scalable/apps/fcitx-lotus-emoji-default.svg b/data/icons/scalable/apps/fcitx-lotus-emoji-default.svg new file mode 100644 index 0000000..bedfd36 --- /dev/null +++ b/data/icons/scalable/apps/fcitx-lotus-emoji-default.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/data/icons/scalable/apps/fcitx-lotus-emoji.svg b/data/icons/scalable/apps/fcitx-lotus-emoji.svg index bedfd36..d4ffb1e 100644 --- a/data/icons/scalable/apps/fcitx-lotus-emoji.svg +++ b/data/icons/scalable/apps/fcitx-lotus-emoji.svg @@ -1,4 +1,17 @@ - - + + + + + + + + + + + + \ No newline at end of file From d81297590b24376b12cfe59debe8ea0fccb8f351 Mon Sep 17 00:00:00 2001 From: Loc Huynh Date: Sun, 22 Feb 2026 00:09:22 +0700 Subject: [PATCH 5/7] style: adjust scaling of SVG icons for fcitx-lotus to enhance visual consistency --- data/icons/scalable/apps/fcitx-lotus-emoji.svg | 2 +- data/icons/scalable/apps/fcitx-lotus-off.svg | 2 +- data/icons/scalable/apps/fcitx-lotus.svg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/icons/scalable/apps/fcitx-lotus-emoji.svg b/data/icons/scalable/apps/fcitx-lotus-emoji.svg index d4ffb1e..1cee9fb 100644 --- a/data/icons/scalable/apps/fcitx-lotus-emoji.svg +++ b/data/icons/scalable/apps/fcitx-lotus-emoji.svg @@ -2,7 +2,7 @@ - + diff --git a/data/icons/scalable/apps/fcitx-lotus-off.svg b/data/icons/scalable/apps/fcitx-lotus-off.svg index 1a681c8..400a906 100644 --- a/data/icons/scalable/apps/fcitx-lotus-off.svg +++ b/data/icons/scalable/apps/fcitx-lotus-off.svg @@ -2,7 +2,7 @@ - + - + Date: Sun, 22 Feb 2026 06:03:53 +0700 Subject: [PATCH 6/7] style: add option to use Lotus status icons and update related UI actions --- src/lotus-config.h | 1 + src/lotus-engine.cpp | 33 +++++++++++++++++++++++++++++++-- src/lotus-engine.h | 7 +++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/lotus-config.h b/src/lotus-config.h index d3ce0b4..8e9567a 100644 --- a/src/lotus-config.h +++ b/src/lotus-config.h @@ -208,6 +208,7 @@ namespace fcitx { Option modernStyle{this, "ModernStyle", _("Use oà, _uý (instead of òa, úy)"), true}; Option freeMarking{this, "FreeMarking", _("Allow type with more freedom"), true}; Option fixUinputWithAck{this, "FixUinputWithAck", _("Fix uinput mode with ack"), false}; + Option useLotusIcons{this, "UseLotusIcons", _("Use Lotus status icons"), false}; SubConfigOption customKeymap{this, "CustomKeymap", _("Custom Keymap"), "fcitx://config/addon/lotus/custom_keymap"};); } // namespace fcitx diff --git a/src/lotus-engine.cpp b/src/lotus-engine.cpp index be1007e..cd4940c 100644 --- a/src/lotus-engine.cpp +++ b/src/lotus-engine.cpp @@ -261,6 +261,18 @@ namespace fcitx { })); uiManager.registerAction("lotus-fixuinputwithack", fixUinputWithAckAction_.get()); + lotusIconsAction_ = std::make_unique(); + lotusIconsAction_->setLongText(_("Use Lotus status icons")); + lotusIconsAction_->setIcon("emblem-default"); + lotusIconsAction_->setCheckable(true); + connections_.emplace_back(lotusIconsAction_->connect([this](InputContext* ic) { + config_.useLotusIcons.setValue(!*config_.useLotusIcons); + saveConfig(); + refreshOption(); + updateLotusIconsAction(ic); + })); + uiManager.registerAction("lotus-icons", lotusIconsAction_.get()); + reloadConfig(); globalMode_ = modeStringToEnum(config_.mode.value()); updateModeAction(nullptr); @@ -329,6 +341,7 @@ namespace fcitx { updateModernStyleAction(nullptr); updateFreeMarkingAction(nullptr); updateFixUinputWithAckAction(nullptr); + updateLotusIconsAction(nullptr); } void LotusEngine::setSubConfig(const std::string& path, const RawConfig& config) { @@ -408,6 +421,7 @@ namespace fcitx { statusArea.addAction(StatusGroup::InputMethod, modernStyleAction_.get()); statusArea.addAction(StatusGroup::InputMethod, freeMarkingAction_.get()); statusArea.addAction(StatusGroup::InputMethod, fixUinputWithAckAction_.get()); + statusArea.addAction(StatusGroup::InputMethod, lotusIconsAction_.get()); } void LotusEngine::keyEvent(const InputMethodEntry& entry, KeyEvent& keyEvent) { @@ -731,6 +745,14 @@ namespace fcitx { } } + void LotusEngine::updateLotusIconsAction(InputContext* ic) { + lotusIconsAction_->setChecked(*config_.useLotusIcons); + lotusIconsAction_->setShortText(*config_.useLotusIcons ? _("Lotus Icons: On") : _("Lotus Icons: Off")); + if (ic) { + lotusIconsAction_->update(ic); + } + } + void LotusEngine::loadAppRules() { appRules_.clear(); std::ifstream file(appRulesPath_); @@ -854,10 +876,17 @@ namespace fcitx { } std::string LotusEngine::overrideIcon(const InputMethodEntry& /*entry*/) { + if (!config_.useLotusIcons) { + switch (realMode) { + case LotusMode::Off: return "fcitx-lotus-off-default"; + case LotusMode::Emoji: return "fcitx-lotus-emoji-default"; + default: return "fcitx-lotus-default"; + } + } switch (realMode) { - case LotusMode::Off: return "fcitx-lotus-off"; + case LotusMode::Off: return "fcitx-lotus-off"; case LotusMode::Emoji: return "fcitx-lotus-emoji"; - default: return {}; + default: return {}; } } diff --git a/src/lotus-engine.h b/src/lotus-engine.h index fd134be..bcefe47 100644 --- a/src/lotus-engine.h +++ b/src/lotus-engine.h @@ -234,6 +234,12 @@ namespace fcitx { */ void updateFixUinputWithAckAction(InputContext* ic); + /** + * @brief Updates the Lotus icons toggle action UI. + * @param ic Current input context. + */ + void updateLotusIconsAction(InputContext* ic); + /** * @brief Updates the input method action UI. * @param ic Current input context. @@ -315,6 +321,7 @@ namespace fcitx { std::unique_ptr modernStyleAction_; std::unique_ptr freeMarkingAction_; std::unique_ptr fixUinputWithAckAction_; + std::unique_ptr lotusIconsAction_; std::vector connections_; CGoObject dictionary_; std::unordered_map appRules_; From 7cb9644c1ce50674de26f236a1b3172a0662d862 Mon Sep 17 00:00:00 2001 From: Nguyen Hoang Ky Date: Sun, 22 Feb 2026 07:34:48 +0700 Subject: [PATCH 7/7] fix: get config through pointer --- src/lotus-config.h | 11 +++++------ src/lotus-engine.cpp | 13 ++++++++----- src/lotus-engine.h | 2 ++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/lotus-config.h b/src/lotus-config.h index 7395483..809c2ef 100644 --- a/src/lotus-config.h +++ b/src/lotus-config.h @@ -204,12 +204,11 @@ namespace fcitx { OptionWithAnnotation outputCharset{this, "OutputCharset", _("Output Charset"), "Unicode", {}, {}, StringListAnnotation()}; Option spellCheck{this, "SpellCheck", _("Enable spell check"), true}; Option macro{this, "Macro", _("Enable Macro"), true}; Option capitalizeMacro{this, "CapitalizeMacro", _("Capitalize Macro"), true}; - Option autoNonVnRestore{this, "AutoNonVnRestore", _("Auto restore keys with invalid words"), true}; - Option modernStyle{this, "ModernStyle", _("Use oà, _uý (instead of òa, úy)"), true}; - Option freeMarking{this, "FreeMarking", _("Allow type with more freedom"), true}; - Option fixUinputWithAck{this, "FixUinputWithAck", _("Fix uinput mode with ack"), false}; - Option useLotusIcons{this, "UseLotusIcons", _("Use Lotus status icons"), false}; - Option modeMenu{this, "ModeMenu", _("Open typing mode menu with ` key"), true}; + Option autoNonVnRestore{this, "AutoNonVnRestore", _("Auto restore keys with invalid words"), true}; + Option modernStyle{this, "ModernStyle", _("Use oà, _uý (instead of òa, úy)"), true}; + Option freeMarking{this, "FreeMarking", _("Allow type with more freedom"), true}; + Option fixUinputWithAck{this, "FixUinputWithAck", _("Fix uinput mode with ack"), false}; + Option useLotusIcons{this, "UseLotusIcons", _("Use Lotus status icons"), false}; Option modeMenu{this, "ModeMenu", _("Open typing mode menu with ` key"), true}; SubConfigOption customKeymap{this, "CustomKeymap", _("Custom Keymap"), "fcitx://config/addon/lotus/custom_keymap"};); } // namespace fcitx diff --git a/src/lotus-engine.cpp b/src/lotus-engine.cpp index 1a4eb35..08bb903 100644 --- a/src/lotus-engine.cpp +++ b/src/lotus-engine.cpp @@ -762,6 +762,9 @@ namespace fcitx { lotusIconsAction_->setShortText(*config_.useLotusIcons ? _("Lotus Icons: On") : _("Lotus Icons: Off")); if (ic) { lotusIconsAction_->update(ic); + } + } + void LotusEngine::updateTypingModeMenuAction(InputContext* ic) { typingModeMenuAction_->setChecked(*config_.modeMenu); typingModeMenuAction_->setShortText(*config_.modeMenu ? _("Typing Mode Menu: On") : _("Typing Mode Menu: Off")); @@ -893,17 +896,17 @@ namespace fcitx { } std::string LotusEngine::overrideIcon(const InputMethodEntry& /*entry*/) { - if (!config_.useLotusIcons) { + if (!*config_.useLotusIcons) { switch (realMode) { - case LotusMode::Off: return "fcitx-lotus-off-default"; + case LotusMode::Off: return "fcitx-lotus-off-default"; case LotusMode::Emoji: return "fcitx-lotus-emoji-default"; - default: return "fcitx-lotus-default"; + default: return "fcitx-lotus-default"; } } switch (realMode) { - case LotusMode::Off: return "fcitx-lotus-off"; + case LotusMode::Off: return "fcitx-lotus-off"; case LotusMode::Emoji: return "fcitx-lotus-emoji"; - default: return {}; + default: return "fcitx-lotus"; } } diff --git a/src/lotus-engine.h b/src/lotus-engine.h index 4b93c16..d651edf 100644 --- a/src/lotus-engine.h +++ b/src/lotus-engine.h @@ -239,6 +239,8 @@ namespace fcitx { * @param ic Current input context. */ void updateLotusIconsAction(InputContext* ic); + + /** * @brief Updates the mode-menu action UI. * @param ic Current input context. */