{"id":13537175,"url":"https://github.com/cococry/ragnar","last_synced_at":"2025-05-14T23:02:03.496Z","repository":{"id":153775887,"uuid":"627479972","full_name":"cococry/ragnar","owner":"cococry","description":"Minimal, flexible \u0026 user-friendly X tiling window manager","archived":false,"fork":false,"pushed_at":"2025-04-11T17:09:09.000Z","size":9442,"stargazers_count":1098,"open_issues_count":16,"forks_count":22,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-04-13T19:44:53.258Z","etag":null,"topics":["i3","linux","tiling-window-manager","window-manager","x11"],"latest_commit_sha":null,"homepage":"https://ragnarwm.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cococry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://www.paypal.com/donate/?hosted_button_id=YZN5K2X7NZ95E"]}},"created_at":"2023-04-13T14:52:31.000Z","updated_at":"2025-04-11T17:09:13.000Z","dependencies_parsed_at":"2024-01-16T15:40:17.220Z","dependency_job_id":"f1739f39-7822-4b43-b8d4-8528e39c2e61","html_url":"https://github.com/cococry/ragnar","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococry%2Fragnar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococry%2Fragnar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococry%2Fragnar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococry%2Fragnar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cococry","download_url":"https://codeload.github.com/cococry/ragnar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254243353,"owners_count":22038044,"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":["i3","linux","tiling-window-manager","window-manager","x11"],"created_at":"2024-08-01T09:00:55.886Z","updated_at":"2025-05-14T23:02:03.181Z","avatar_url":"https://github.com/cococry.png","language":"C","readme":"\u003cimg align=\"left\" style=\"width:128px\" src=\"https://github.com/cococry/ragnar/blob/main/branding/logo.png\" width=\"128px\"\u003e\n\n**Ragnar is a feature-rich, straight-to-the-point dynamic window manager for X**\n\nThe goal of ragnarwm is to create a window manager that can be used as a solid foundation\nfor fully fledged desktop environments but also serve as a minimal daily driver. Ragnar \ncontains about 5k lines of code which contain features like an IPC API, configuration file, \ntiling layouts, EWMH \u0026 ICCM implementation and much more key features.\n\nSince Version 2.0, the window manager uses the **XCB API** for communicating with the X server,\nwhich is far less bloated compared to the Xlib API.\n\n\u003cimg src=\"https://github.com/cococry/ragnar/blob/main/branding/screenshot.png\" width=\"500px\"\u003e\n\n---\n\n# Installation\n\nInstalling ragnarwm is a process that involes two main steps. \n\n- Install build depdencies\n```console\nxcb-util, xcb-proto, xcb-util-keysyms, xcb-util-cursor, xcb-util-wm, xorg-server, xorg-xinit, mesa, libconfig\n```\n\n- Install the window manager\n```console\n$ ./install.sh\n```\n\n# Technical\n\n### General\nRagnar uses **reparenting** to handle client windows which gives it the ability to easily create decoration\nfor client windows. \nClient windows are stored within a doubly linked list. \nAs for the tiling fuctionality, **ragnar does not use some kind of tree datastructure**, instead, \nthere are **preset layouts** which always resemble the same shape. This choice was made to keep the experience\nsmooth without thinking about where to place the spawning window. Layouts are still very customizable by changing the sizes of master and slave windows with a simple keybind. \n\n### IPC\nThe source code also contains an **abstracted IPC API** for creating plugins. The API works through\na **socket with binary data**.\n\n### Config file\nRagnar uses libconfig to read an external configuration file for the window manager (/home/user/.config/ragnarwm.cfg).\nThis configuration is read on startup and can be reloaded while the WM is running (Typically through a keybind).\n\n### Code Structure\n\n- **funcs.h**\nThis file contains the documented function declarations that the window manager uses. Allthough,\nit does **not** contain the callback functions that are fired via keybindings.\n\n- **keycallbacks.h**\nThis file contains the documented function **definitions** of all callback functions that can be specified\nin the configuration file.\n\n- **ragnar.c**\nThis is the main translation unit that contains the definitions of all systematic window manager functions,\ncontaing the application loop, event handling, calculating tiling layouts and more.\n\n- **structs.h**\nThis file contains structures and function declaration that are used throughout the window manager's code.\n\n- **config.h/config.c**\nThose files handle loading the configuration file with libconfig.\n\n- **ipc/**\nThe files socket.h and socket.c handle socket connections from clients via IPC.\n","funding_links":["https://www.paypal.com/donate/?hosted_button_id=YZN5K2X7NZ95E"],"categories":["C","Window Manager","Linux"],"sub_categories":["Dynamic","Other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcococry%2Fragnar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcococry%2Fragnar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcococry%2Fragnar/lists"}