{"id":13288900,"url":"https://github.com/ODEX-TOS/tos-desktop-environment","last_synced_at":"2025-03-10T06:33:48.835Z","repository":{"id":48184566,"uuid":"300885554","full_name":"ODEX-TOS/tos-desktop-environment","owner":"ODEX-TOS","description":"Home of TDE - The official desktop environment of TOS","archived":false,"fork":false,"pushed_at":"2022-05-01T11:33:09.000Z","size":35264,"stargazers_count":24,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"release","last_synced_at":"2024-07-29T17:03:54.656Z","etag":null,"topics":["awesome-wm","awesomewm","desktop-environment","linux","lua","tde","tos"],"latest_commit_sha":null,"homepage":"https://tos.odex.be","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ODEX-TOS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2020-10-03T13:22:08.000Z","updated_at":"2024-02-02T10:40:28.000Z","dependencies_parsed_at":"2022-08-30T07:31:49.518Z","dependency_job_id":null,"html_url":"https://github.com/ODEX-TOS/tos-desktop-environment","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODEX-TOS%2Ftos-desktop-environment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODEX-TOS%2Ftos-desktop-environment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODEX-TOS%2Ftos-desktop-environment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ODEX-TOS%2Ftos-desktop-environment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ODEX-TOS","download_url":"https://codeload.github.com/ODEX-TOS/tos-desktop-environment/tar.gz/refs/heads/release","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242805524,"owners_count":20187996,"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":["awesome-wm","awesomewm","desktop-environment","linux","lua","tde","tos"],"created_at":"2024-07-29T16:59:43.702Z","updated_at":"2025-03-10T06:33:43.807Z","avatar_url":"https://github.com/ODEX-TOS.png","language":"Lua","funding_links":["https://www.paypal.com/donate?hosted_button_id=X892LWMTDU6D6"],"categories":[],"sub_categories":[],"readme":"[![Build Status repo][repo-build]][repo-url]\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![GPL License][license-shield]][license-url]\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ODEX-TOS/tos-desktop-environment\"\u003e\n    \u003cimg src=\"https://tos.odex.be/images/logo.svg\" alt=\"Logo\" width=\"150\" height=\"150\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eTOS Desktop Environment\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    A desktop environment build ontop of awesome wm\n    \u003cbr /\u003e\n    \u003ca href=\"https://tos.odex.be/docs/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://wiki.odex.be\"\u003eView wiki\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/ODEX-TOS/tos-desktop-environment/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/ODEX-TOS/tos-desktop-environment/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://www.paypal.com/donate?hosted_button_id=X892LWMTDU6D6\"\u003e\n     \u003cimg src=\"https://raw.githubusercontent.com/stefan-niedermann/paypal-donate-button/master/paypal-donate-button.png\" alt=\"Donate with PayPal\" width=\"300\" height=\"100\"/\u003e\n   \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n## Table of Contents\n\n- [About the Project](#about-the-project)\n  - [Built With](#built-with)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n- [Usage](#usage)\n\n  - [Unit Testing](#unit-test)\n    - [Dockerized](#docker)\n  - [Profiling](#profiling)\n  - [Hot Reload Widgets](#hot-reload-widgets)\n  - [Commit Hooks](#commit-hooks)\n\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact](#contact)\n- [Acknowledgments](#acknowledgements)\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\n### Built By\n\n- [F0xedb](https://www.odex.be)\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nTo get a local copy up and running follow these simple steps.\n\n### Prerequisites\n\n\u003e TDE depends on a lot of different tools and projects. A list can be found\n\u003e [here](https://github.com/ODEX-TOS/tos-desktop-environment/blob/f3a4cbbc74c40268a771947bea0044a9f70d730f/build-utils/PKGBUILD#L30-L37)\n\n![desktop](images/desktop.png)\n\n### Installation\n\n1. Install dependencies\n\n```sh\ntos -S tde xorg-server-xephyr\n# For unit tests\ntos -S lua53-busted\n```\n\nif you are using an arch based distro that is not tos add the following repo to `/etc/pacman.conf`\n\n```ini\n[tos]\nServer = https://repo.odex.be\n```\n\n2. Clone the repo\n\n```sh\ngit clone https://github.com/ODEX-TOS/tos-desktop-environment.git\n```\n\n3. Set the required files in the appropriate locations\n\n```sh\nsudo mkdir -p /etc/xdg/tde\nsudo cp -r tos-desktop-environment/tde/* /etc/xdg/tde\n```\n\n4. Use wm-debug for easier development\n\n```sh\ngit clone https://github.com:ODEX-TOS/wm-debug.git\ncd wm-debug\n# prepare the wm-launch settings etc\nsudo ./wm-launch -i\n\n# you can now access wm-launch from everywhere\n# the -r 100x720 will create a screen of that size with TDE inside of it\nwm-launch -r 1080x720\n```\n\n## Usage\n\n`TDE` has an entire wiki which explains most in detail. It can be found\n[here](https://wiki.odex.be) The README helps you into figuring out how to help\nand how to get started\n\nWe have three major directories\n\n- `tos` contains the configuration files of TDE - this directory contains\n  example conf files (the real once are stored in `~/.config/tos`)\n- `plugins` contains example plugins for TDE (the real once are stored in\n  `~/.config/tde`)\n- `tde` the source code of the desktop environment\n\n### Unit Test\n\nYou can run unit tests by executing the following command in the root project\ndirectory\n\n```sh\nbash test-runner.sh\n```\n\nYou can also get the JUNIT output by executing the following (t will be saved in\nresult.xml)\n\n```sh\nbash test-runner.sh result.xml\n```\n\nAlternative unit testing output is also available\n\n```sh\nRUNNER=\"tap\" bash test-runner.sh\n```\n\n#### Docker\n\nYou can also run the test suite using the `tos` docker image We have provided an\nimage on top of that located in `tests/Dockerfile`` You can build and run it\nlike this:\n\n```sh\n# build the image\ndocker build -t \"tde-test-suite\" tests\n\n# run the test suite\ndocker run -v \"$(pwd):/data\" tde-test-suite\n```\n\nAlternatively we have provided a docker-compose file that does this all for you\n\n```sh\ndocker-compose up\n```\n\n### Profiling\n\nWhen developing you can also perform some profiling.\nThe `TDE profiler` listens for function calls and counts how many times the happen. For each function call we measure the time it took.\nThis way we can have educated guesses where the time gets spent the most.\nThus improving performance in the most critical parts of the system.\n\nProfiling can be done by executing the following command:\n\n```bash\nbash profiler.sh --help\n# for example profile tde (for 10 seconds) and return the top 100 functions (in terms of cpu time)\nbash profiler.sh -t 10 -F 100\n# Same as above but use realtime instead of cpu time\nbash profiler.sh -t 10 -F 100 -r\n\n# Save the result to tde-functions.result\nbash profiler.sh -t 10 -o tde-functions.result\n\n# Run the profiler on a file\nbash profiler.sh -f tests/scripts/full\n\n```\n\n### Hot Reload Widgets\n\nYou can also quickly develop widgets for `tde` this can be done through the `hot-reload-widget.sh` file\nNote that you need to have `inotify-tools` installed.\nIf you are using the `TOS` operating system, this script will auto download it for you.\n\nDevelopment using this script is as followed:\n\n1. create a `.lua` file in our example we will use `hello.lua`\n2. The bare minimum for this file should be the following:\n\n```lua\nlocal wibox = require(\"wibox\")\nreturn wibox.widget.textbox(\"hello\")\n```\n\n3. Run the script on this file\n\n```bash\nbash scripts/hot-reload-widget.sh hello.lua # replace hello.lua with your file\n```\n\n4. develop your widget/plugin\n\n\u003e NOTE: The file you are developing on needs to return a `wibox.widget` object\n\u003e Otherwise `TDE` doesn't know how to display it\n\n\u003e Second NOTE: the script listens for filesystem event and reloads your widget each time it is changed\n\nSome people don't like that the hot-reloaded widget consumes the entire space.\nIf that is the case then use the `-s` option this will make the widget consume 50% of the screen instead of everything. (This issue is not present with multi monitor setups)\n\n#### closing the widget\n\nWe don't use the Escape key to close the widget\nThis is because we would need to consume the Escape key.\nThis would result it the underlying widget from not being able to capture this event.\nThus we decided to strictly use the backdrop/close button to close the widget.\n\n### Commit hooks\n\nBefore creating commits you need to setup commit hooks.\nThese commit hooks perform a series of checks to make sure you didn't forget something important\n\nThis ranges from linting, license checks, correct usage of branching etc\n\nIt is not mandatory to use this feature, however it will make it more likely to be allowed.\n\nSetting the commit hooks is as easy as executing the following commands from the project root:\n\n```bash\nln -s \"$PWD\"/hooks/pre-commit .git/hooks/pre-commit\nln -s \"$PWD\"/hooks/commit-msg .git/hooks/commit-msg\nln -s \"$PWD\"/hooks/pre-push .git/hooks/pre-push\nln -s \"$PWD\"/hooks/prepare-commit-msg .git/hooks/prepare-commit-msg\n\n```\n\n\u003c!-- ROADMAP --\u003e\n\n## Roadmap\n\nSee the\n[open issues](https://github.com/ODEX-TOS/tos-desktop-environment/issues) for a\nlist of proposed features (and known issues).\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to\nbe learn, inspire, and create. Any contributions you make are **greatly\nappreciated**. First ensure you have read the [wiki](https://wiki.odex.be)\nespecially the [style guide](https://wiki.odex.be/Developer/style-guide) page\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nTom Meyers - tom@odex.be\n\nProject Link:\n[https://github.com/ODEX-TOS/tos-desktop-environment](https://github.com/ODEX-TOS/tos-desktop-environment)\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n\n## Acknowledgments\n\n- [F0xedb](https://www.odex.be)\n- [TOS Homepage](https://tos.odex.be)\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[repo-build]: https://jenkins.odex.be/buildStatus/icon?job=tos-repo\u0026style=flat-square\u0026subject=tde-build\n[repo-url]: https://jenkins.odex.be/job/tos-repo/\n[contributors-shield]: https://img.shields.io/github/contributors/ODEX-TOS/tos-desktop-environment.svg?style=flat-square\n[contributors-url]: https://github.com/ODEX-TOS/tos-desktop-environment/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/ODEX-TOS/tos-desktop-environment.svg?style=flat-square\n[forks-url]: https://github.com/ODEX-TOS/tos-desktop-environment/network/members\n[stars-shield]: https://img.shields.io/github/stars/ODEX-TOS/tos-desktop-environment.svg?style=flat-square\n[stars-url]: https://github.com/ODEX-TOS/tos-desktop-environment/stargazers\n[issues-shield]: https://img.shields.io/github/issues/ODEX-TOS/tos-desktop-environment.svg?style=flat-square\n[issues-url]: https://github.com/ODEX-TOS/tos-desktop-environment/issues\n[license-shield]: https://img.shields.io/github/license/ODEX-TOS/tos-desktop-environment.svg?style=flat-square\n[license-url]: https://github.com/ODEX-TOS/tos-desktop-environment/blob/release/LICENSE\n[product-screenshot]: https://tos.odex.be/images/logo.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FODEX-TOS%2Ftos-desktop-environment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FODEX-TOS%2Ftos-desktop-environment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FODEX-TOS%2Ftos-desktop-environment/lists"}