Vector35 / Vector35/binaryninja-api

Theming System Improvements

Open
#3,077 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: UI Effort: Low Impact: Low
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

Misc Improvements:

  • Certain UI elements utilize seemingly random theme attributes (e.g. New Tab uses Graph View theming attributes) This should probably be cleaned up.
  • Allow colors passed as [r, g, b] to have a 4th optional alpha field ([r, g, b, a])
  • Documentation for stylesheet support and how it interfaces with binaryninja is badly needed.
  • Documentation for theming in general needs some improvements.

Feature Suggestions

Theme Inheritance

One critical pain at the moment is that there are no "defaults", or simple method to grab one of the embedded themes as a "template".

Rather than manually exporting the embedded themes and uploading them somewhere, I'd propose a "parent" optional flag in the bntheme that allows inheriting another theme's dictionaries.

This would allow making "theme packs" a bit easier as well

Pallete Brush feature

Currently, themes can define args that specify the palette color, but not the palette brush. This would allow for the ability to load QPixmaps (passed as image urls) as pane backdrops.

Icon Overrides

Not quite sure about this one, but I think it would be a nice feature to have. An access method in the API that fetches the theme override or default would be great.

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

Start by mapping the existing stylesheet support, bntheme dictionaries, embedded themes, palette color parsing, and theme override/default API. Review how the proposed parent flag, alpha values, palette brushes, and icon overrides relate to those entry points. Done would require a defined scope for the selected improvements plus documentation for stylesheet support and theming.

Written by the indexing model from the issue text.

Assessment

Domain
api, design, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.