{"id":21905314,"url":"https://github.com/pedrolcl/frameless-qt-poc","last_synced_at":"2025-04-15T23:34:26.390Z","repository":{"id":65871321,"uuid":"490845800","full_name":"pedrolcl/frameless-qt-poc","owner":"pedrolcl","description":"FramelessWindow with Qt POC","archived":false,"fork":false,"pushed_at":"2023-11-13T22:23:59.000Z","size":39,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-11-14T22:37:18.645Z","etag":null,"topics":["client-side-decoration","frameless","linux","macos","poc","qt","widgets","window","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pedrolcl.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}},"created_at":"2022-05-10T20:09:54.000Z","updated_at":"2023-11-14T22:37:18.645Z","dependencies_parsed_at":"2023-02-14T15:25:17.969Z","dependency_job_id":null,"html_url":"https://github.com/pedrolcl/frameless-qt-poc","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrolcl%2Fframeless-qt-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrolcl%2Fframeless-qt-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrolcl%2Fframeless-qt-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrolcl%2Fframeless-qt-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pedrolcl","download_url":"https://codeload.github.com/pedrolcl/frameless-qt-poc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226950376,"owners_count":17708216,"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","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":["client-side-decoration","frameless","linux","macos","poc","qt","widgets","window","windows"],"created_at":"2024-11-28T16:32:44.050Z","updated_at":"2024-11-28T16:32:44.735Z","avatar_url":"https://github.com/pedrolcl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# frameless-qt-poc\n\nFramelessWindow Demo for Qt Applications (POC)\n\n![screenshot](screenshot.png \"screenshot\")\n\n## Why this exists?\n\nSince Qt 5.15 there are two new [QWindow](https://doc.qt.io/qt-5/qwindow.html) slots (functions):\n* [startSystemMove](https://doc.qt.io/qt-5/qwindow.html#startSystemMove)\n* [startSystemResize](https://doc.qt.io/qt-5/qwindow.html#startSystemResize)\n\nThese functions can be used to implement frameless windows ( using the *Qt::FramelessWindowHint*\n[window flag](https://doc.qt.io/qt-5/qt.html#WindowType-enum) ) that can be moved and resized\nlike normal windows having a frame and a title bar, but the application is totally free to\ndraw those elements. This is called Client Side Window Decorations (CSD).\nThere is a similar [QML based demo](https://github.com/johanhelsing/qt-csd-demo)\nand also a [blog post](https://www.qt.io/blog/custom-window-decorations) by Johan Helsing.\n\nThis POC is not design oriented, but on functionality and simplicity. There are several other similar\ndemos with much more elaborated design, and based on native functions which may be of interest for\nolder Qt versions, for instance:\n* [GoodWindow](https://github.com/antonypro/QGoodWindow)\n* [qt-csd](https://github.com/Longhanks/qt-csd)\n\nThis is an easier way, and has the advantage of working on Windows, macOS and Linux (both X11/xcb and\nWayland). It can be used with projects based on Qt 5.15 and Qt 6.x.\n\n## Results\n\nTests built with Qt 5.15.2 and Qt 6.3.0\n\n:white_check_mark: means that it is usable.\n\n:x: means that it is not usable.\n\n:question: means that the results are not conclusive.\n\n| Platform:      | Qt5 + move window  | Qt5 + resize       | Qt6 + move window  | Qt6 + resize       |\n| -------------- | ------------------ | ------------------ | ------------------ | ------------------ |\n| Windows        | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |\n| macOS          | :white_check_mark: | :x:                | :white_check_mark: | :white_check_mark: |\n| Linux X11/xcb  | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |\n| Linux Wayland  | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |\n\n## Other Projects using the FramelessWindow class\n\n* [Drumstick MIDI File Player](https://github.com/pedrolcl/dmidiplayer)\n* [GenPassword](https://github.com/CM0use/GenPassword)\n* [TimeOut](https://github.com/CM0use/TimeOut)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedrolcl%2Fframeless-qt-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpedrolcl%2Fframeless-qt-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedrolcl%2Fframeless-qt-poc/lists"}