Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "palette/ida-cmake"]
path = palette/ida-cmake
url = https://github.com/Jinmo/ida-cmake.git
url = https://github.com/blue-devil/ida-cmake.git
[submodule "palette/pybind11"]
path = palette/pybind11
url = https://github.com/pybind/pybind11.git
63 changes: 57 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,55 @@
# Changelog

## [2025-12-10]
## [2026-09-03][2026.09.03]

### Added

* IDA Pro v9.4 support - rebuilt against the IDA Pro SDK v9.4 (hotfix 1)
* Windows on ARM64 (aarch64) support
* `Edit > Plugins > ifred` menu with **Settings** and **About** entries
* Settings window with two tabs: a **Theme Selector** and an in-place
**config.json** editor
* Light theme, and a gitkraken-light theme (gitkraken is now split into
gitkraken-dark / gitkraken-light)
* Version information embedded in the built binaries, stamped with the build
date (`YYYY.MM.DD`): a Windows VERSIONINFO resource, the Mach-O
`current_version` on macOS, and a greppable `ifred version ...` string on all
platforms

### Fixed

* Replaced the IDA SDK notification functions deprecated in 9.4
(`hook_to_notification_point` / `unhook_from_notification_point`) with the new
event-listener API: dedicated `event_listener_t` listener classes registered
via `hook_event_listener` / `unhook_event_listener`. The plugin no longer
calls any deprecated SDK function.
* gitkraken theme: list rows were unreadable (text drawn in the background
colour); reworked and split into gitkraken-dark / gitkraken-light
* ayudark theme: black/invisible text, wrong sizing and a missing search icon
* Search-box placeholder ("Enter action or option name...") was invisible on
the ayudark / ayumirage / ayuwhite themes
* macOS arm64 binary is now stripped at link time (`-Wl,-x`), which keeps
`LC_ID_DYLIB` intact so the plugin loads - a post-build `strip` removed it
* Silenced a signed/unsigned comparison warning and fixed undefined behaviour
when reading an enum back through `va_arg` in the type enumeration

### Changed

* Every theme now lives in its own folder under `theme/`, so users can add or
remove themes and switch between them live from Settings while working in
IDA Pro
* The default (built-in) theme is now a real `dark/` folder; ifred ships
dark, light, solarized-dark and solarized-light (the remaining themes stay in
the repository for manual installation)
* The palette font is now resolved per-OS and set with a single-value CSS
`font-family` (Qt does not reliably honour multi-family lists in the palette's
rich-text rows)

## [2026-02-16][2026.02.16]

This release is just a rebuilt for IDA Pro v9.3

## [2025-12-10][2025.12.10]

### Added

Expand All @@ -23,7 +72,7 @@
palette by using shortcut, then IDA pro crashes. Now it opens and
empty palette if no binary have loaded to prevent crash.

## [2025-09-14]
## [2025-09-14][2025.09.14]

### Added

Expand All @@ -35,13 +84,15 @@
* Qt5 support removed
* Created a new branch for IDA pro v9.1 and Qt5

## [2024-10-29][2024-10-29]
## [2024-10-29][2024.10.29]

### Added

* IDA Pro v9.0 support
* Prebuilt binaries provided

[2025-12-10]: https://github.com/blue-devil/ifred/compare/v2025.09.14...HEAD
[2025-09-14]: https://github.com/blue-devil/ifred/compare/v2024.10.29...v2025.09.14
[2024-10-29]: https://github.com/blue-devil/ifred/releases/tag/v2024.10.29
[2026.09.03]: https://github.com/blue-devil/ifred/compare/v2026.02.16...HEAD
[2026.02.16]: https://github.com/blue-devil/ifred/compare/v2025.12.10...v2026.02.16
[2025.12.10]: https://github.com/blue-devil/ifred/compare/v2025.09.14...v2025.12.10
[2025.09.14]: https://github.com/blue-devil/ifred/compare/v2024.10.29...v2025.09.14
[2024.10.29]: https://github.com/blue-devil/ifred/releases/tag/v2024.10.29
29 changes: 20 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@

Tested on all operating systems that run IDA Pro.

| OS | Arch | Status |
| ------- | ------ | ------ |
| Linux | x86_64 | ✅ |
| macOS | x86_64 | ✅ |
| macOS | arm64 | ✅ |
| Windows | x86_64 | ✅ |
| OS | Arch | Status |
| ------- | ------- | ------ |
| Linux | x86_64 | ✅ |
| Linux | aarch64 | ✅ |
| macOS | x86_64 | ✅ |
| macOS | aarch64 | ✅ |
| Windows | x86_64 | ✅ |
| Windows | aarch64 | ✅ |

Currently this repo supports IDA Pro with Qt6. For IDA Pro v9.1 and earlier
with Qt5 support head to [qt5 branch][04]. To build you need IDA Pro SDK.
Expand Down Expand Up @@ -103,9 +105,18 @@ solarized dark:

![screenshot3][03]

[01]: screenshots/1.png
[02]: screenshots/2.png
[03]: screenshots/3.png
## TODO

* [ ] Support HCLI (Will think about this)
* [ ] Proper versioning (HCLI cries for date versioning)
* [ ] Palette translation map
* [x] Map ready
* [ ] Is `standalone` working, check this
* [ ] Custom palette using IDAPython does it still working?

[01]: ./assets/screenshots/1.png
[02]: ./assets/screenshots/2.png
[03]: ./assets/screenshots/3.png
[04]: https://github.com/Jinmo/ifred/tree/qt5
[05]: https://github.com/Vector35/qt-artifacts/releases
[06]: https://github.com/blue-devil/ifred/releases
Expand Down
Binary file added assets/cover-og-1280x640.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ifred-banner-896x280.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ifred-logo-square-640x640.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
7 changes: 5 additions & 2 deletions ida-plugin.json
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"IDAMetadataDescriptorVersion": 2,
"plugin": {
"name": "ifred",
"version": "0.0.5",
"version": "2026.09.03",
"description": "IDA command palette & more",
"entryPoint": "ida_palette64",
"authors": [
Expand All @@ -17,10 +17,13 @@
"license": "MIT",
"platforms": [
"windows-x86_64",
"windows-aarch64",
"linux-x86_64",
"linux-aarch64",
"macos-x86_64",
"macos-aarch64"
],
"idaVersions": ["9.2"],
"idaVersions": ["9.4"],
"keywords": ["palette", "command", "launcher", "fuzzy"]
}
}
2 changes: 1 addition & 1 deletion palette/ida-cmake
Submodule ida-cmake updated 6 files
+301 −0 .gitignore
+61 −35 README.md
+66 −147 build.py
+30 −28 cmake/IDA.cmake
+152 −0 cmake/IDAArch.cmake
+25 −5 cmake/QtIDA.cmake
19 changes: 18 additions & 1 deletion palette/include/palette/utils.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,21 @@ QString loadFile(const char* filename, bool force_update = false,

// File handler
typedef QString (*pathhandler_t)(char const* path);
extern pathhandler_t pluginPath;
extern pathhandler_t pluginPath;

// Themes.
//
// A theme is a directory <plugin>/theme/<name>/ holding window.css (required)
// plus optional styles.json and images. Which one is active is the "theme" key
// of <plugin>/config.json; with no key at all, PALETTE_DEFAULT_THEME is used.
// A theme file that does not exist on disk falls back to the bundled copy, so a
// partial theme still works. The whole theme/ tree is folders only - there are
// no top-level theme files.
#define PALETTE_DEFAULT_THEME "dark"

// Every theme directory on disk (one with a window.css), sorted.
QStringList availableThemes();
QString currentTheme();
// Persists the choice to config.json and makes it effective for the next
// palette shown. Returns false if config.json could not be written.
bool setCurrentTheme(const QString& name);
Binary file removed palette/res/theme/ayudark/bg.png
Binary file not shown.
Binary file added palette/res/theme/ayudark/input-search.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 0 additions & 19 deletions palette/res/theme/ayudark/item.css

This file was deleted.

11 changes: 0 additions & 11 deletions palette/res/theme/ayudark/searchbox.css

This file was deleted.

10 changes: 3 additions & 7 deletions palette/res/theme/ayudark/styles.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
{
"itemHeight": 47,
"itemMarginLeft": 25,
"itemMarginTop": 8,
"itemHoverBackground": "#0c1014",
"shadow": 5
}
{
"shadow": 15
}
Loading
Loading