{"id":14982719,"url":"https://github.com/robertkist/qtmodernredux","last_synced_at":"2025-10-07T07:34:53.315Z","repository":{"id":45204777,"uuid":"348549328","full_name":"robertkist/qtmodernredux","owner":"robertkist","description":"QtModernRedux is a modern dark window and widget theme for PySide6 and PySide2","archived":false,"fork":false,"pushed_at":"2023-05-19T02:50:34.000Z","size":18597,"stargazers_count":35,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-29T18:10:49.723Z","etag":null,"topics":["gui","pyside2","pyside6","python3","qss","qt","qt5","qt6","style","theme"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robertkist.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-03-17T01:58:22.000Z","updated_at":"2025-08-21T11:17:24.000Z","dependencies_parsed_at":"2022-08-12T11:41:07.795Z","dependency_job_id":"e6d6a097-64cb-4abc-a85c-8d446d37bc33","html_url":"https://github.com/robertkist/qtmodernredux","commit_stats":{"total_commits":15,"total_committers":3,"mean_commits":5.0,"dds":"0.33333333333333337","last_synced_commit":"09c86167bc43dfa318fb2046024666b9e2b60015"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/robertkist/qtmodernredux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertkist%2Fqtmodernredux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertkist%2Fqtmodernredux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertkist%2Fqtmodernredux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertkist%2Fqtmodernredux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertkist","download_url":"https://codeload.github.com/robertkist/qtmodernredux/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertkist%2Fqtmodernredux/sbom","scorecard":{"id":780232,"data":{"date":"2025-08-11","repo":{"name":"github.com/robertkist/qtmodernredux","commit":"09c86167bc43dfa318fb2046024666b9e2b60015"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T04:44:15.750Z","repository_id":45204777,"created_at":"2025-08-23T04:44:15.750Z","updated_at":"2025-08-23T04:44:15.750Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278740784,"owners_count":26037480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","pyside2","pyside6","python3","qss","qt","qt5","qt6","style","theme"],"created_at":"2024-09-24T14:05:54.634Z","updated_at":"2025-10-07T07:34:53.297Z","avatar_url":"https://github.com/robertkist.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://www.travis-ci.com/robertkist/qtmodernredux.svg?branch=master)](https://www.travis-ci.com/robertkist/qtmodernredux)\n\nQtModernRedux\n=============\n\nAuthor: Robert Kist (c) 2021 MIT License\n\nQtModernRedux is a modern dark window and widget theme for PySide2, loosely based on and inspired by\nGerard Marull-Paretas' excellent qtmodern 0.2.0 theme (https://pypi.org/project/qtmodern/, MIT License).\n\n\nQuick-Start - PySide2\n---------------------\n\nIf you just want to use QtModernRedux, then the quickest way is to install QtModernRedux from PyPi (https://www.pypi.org/project/QtModernRedux/) via pip:\n\n```pip install qtmodernredux```\n\nPySide6 Version\n---------------\n\nQtModernRedux for PySide6 (Qt6) can be found here: https://www.pypi.org/project/QtModernRedux6/\n\nYou can also find it in this git repository in the `release_pyside6` branch.\n\nScreenshots\n-----------\n\nBasic Widget on Mac OS:\n\n![QSplitter example](https://user-images.githubusercontent.com/9162068/111871987-e184b500-89c7-11eb-8ec7-be316179a410.png)\n\nWidget collection on Windows:\n\n![widgets example](https://user-images.githubusercontent.com/9162068/111871403-cf554780-89c4-11eb-812b-b78a7366c40d.png)\n\nCustom titlebar on Windows:\n\n![custom titlebar example](https://user-images.githubusercontent.com/9162068/111871399-c8c6d000-89c4-11eb-8266-1b861ef9bedf.png)\n\nCustom titlebar on Mac OS:\n\n![custom titlebar example](https://user-images.githubusercontent.com/9162068/111871747-c6657580-89c6-11eb-8b8c-d19bc550eed0.png)\n\nFeatures\n--------\n* Consistent looks across platforms (Mac, Windows, Ubuntu) and monitor DPI settings (regular-DPI, high-DPI/4k, Retina)\n* Improved support QDialogs: improved icons, support for QDialog's .exec_() method, support for modal dialogs.\n* Provides window scaling controls for 8 cardinal directions.\n* Provides a 'no-title bar' mode, allowing users to create modern applications with widgets placed directly into the title-bar\n  itself, such as Chrome's \"tab titlebar\", or MS Teams' titlebar.\n* Provides a window drop-shadow for window managers which do not support drop shadows by default on Qt frameless windows.\n* Provides vector-based hi-res icons, replacing Qt Fusion style's low quality icons, for some platforms.\n* Improved themeing of additional widgets, such as QTableView, QListView, etc.\n* Works with tools such as PyInstaller and CxFreeze.\n* Provides a work-around for using QMediaPlayer on Windows in styled windows.\n* Use native titlebars provided by MacOS/Windows/Unix Window Manager or use QtModernRedux's own titlebar.\n* Supports definition of custom styles.\n\nCompatibility\n-------------\n* Python 3.8 or newer\n* PySide2 (tested with 5.15.2)\n\nTested operating systems:\n* MacOS Big Sur (regular DPI and Retina)\n* Windows 10 (regular and high-DPI)\n* Ubuntu 20.10 (regular and high-DPI)\n* PopOS 18.04 (regular and high-DPI)\n\nBuilding and Installation\n-------------------------\nSkip this section if you're installing via Pypi.\nThis section is only relevant if you got QtModernRedux from Github.\n\nThis section describes how to create a wheel (.whl) from the code in the repository.\nYou will need to have Python 3.8 or newer installed in a virtual environment (virtualenv). \nThis virtual environment must be located within the root of the qtmodernredux project folder.\nYou will also need a verion of GNU make. \n\n* macOS: you can install make via homebrew\n* linux: install make via your distribution's package manager\n* windows: install make from chocolatey.org (https://chocolatey.org/, https://chocolatey.org/packages/make)\n\nMake sure the virtualenv is active and use pip to install the modules listed in the requirements.txt file.\nThen, with the virtualenv active, run ```make wheel```\nThe wheel (.whl) for your platform can be found in the newly created ```build``` directory.\nUse pip to install the wheel that you just built.\n\nRunning the Examples\n--------------------\nExamples can be found at https://github.com/robertkist/qtmodernredux in src/examples.\n\nBefore you can run the examples you must install QtModernRedux via pip or build it according to the instructions above.\nYou will also need to have PySide2 installed, and optionally the ffpyplayer module (see requirements.txt).\n\nNote: if you want to experiment with the examples, you can use ```make examples``` to update the\nGUIs for examples - this will re-generate the Python sources from the QDesigner .ui files.\n\nRunning the Tests\n-----------------\nInstall the required Python modules from requirements.txt and run ```make tests```.\n\nUsage\n-----\nCurrently, there is no API documentation, but the included examples in the Git repository should provide a \ngood starting point for using QtModernRedux.\n\nNotes\n-----\n\n* Windows: Windows places the window-controls (minimize, maximize, close) on the right-hand side, whereas macOS puts them on \n  the left-hand side. For Linux, QtModernRedux puts them on the right-hand side by default. This behaviour can be overridden.\n* Windows, Linux: on some systems it is not possible to resize a fully maximized window. This is not a bug.\n* Windows: dragging a styled window between screens with different scaling factors results in unpredictable behavior and may\n  break the theme. This is a limitation of Qt and how Windows handles application scaling. A work-around may be added\n  in future versions of QtModernRedux.\n* MacOS: Titlebar-less windows may briefly display a title-bar before being minimized. This is a known limitation\n  of Qt and not a bug.\n* MacOS: Drop shadow: MacOS Big Sur automaticallys add a drop shadow to QtModernRedux windows. Therefore\n  the drop-shadow cannot be controlled or customized on these systems. Drop-shadow settings mostly apply to Linux\n  window managers.\n* All Platforms: Code overriding this style-sheet, e.g. by calling widgets' .setStyleSheet() method, can potentially break the theme.\n\nLimitations\n-----------\n* Qt offers an extensive widget library with a plethora of customization options. It is well possible that this theme\ndoes not cover all of them. E.g. custom widgets, such as the LCD display widget or the calendar widget, are not covered.\n* The goal of this project is not to cover every widget (although it would be nice to eventually achieve this), but \nto cover the most commonly used ones.\n\nCustomization\n-------------\nHave a look at ```src/examples/customstyle``` for an example of a custom style (wow_style).\nStyles have 2 parts: styles for the window frame (windowstyle) and the individual widgets (widgetstyle).\n\nTips:\n* do not remove any of the pre-defined constants (see constants.py in windowstyle and widgetstyle directories)\n* try to work with the pre-defined constants as much as possible. Many of them are used in qtmodernredux's code\n  to enable its functionality.\n* some sub-controls of widgets have been disabled (e.g. width set to 0, colors set to transparent, etc.) because they may\n  cause problems\n\nContributions\n-------------\nContributions, suggestions and forks are welcome - see https://github.com/robertkist/qtmodernredux\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertkist%2Fqtmodernredux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertkist%2Fqtmodernredux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertkist%2Fqtmodernredux/lists"}