{"id":18654030,"url":"https://github.com/thebashpotato/slacker","last_synced_at":"2026-01-19T16:32:19.487Z","repository":{"id":187130828,"uuid":"676350114","full_name":"thebashpotato/slacker","owner":"thebashpotato","description":"X11 tiling window manager","archived":false,"fork":false,"pushed_at":"2024-08-13T01:59:19.000Z","size":13531,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T19:17:04.175Z","etag":null,"topics":["tiling-window-manager","x11-wm","xlib"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thebashpotato.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-09T02:27:06.000Z","updated_at":"2024-07-06T12:19:46.000Z","dependencies_parsed_at":"2023-08-09T04:45:11.857Z","dependency_job_id":"667265ad-1fd3-47a5-908d-4c611985980a","html_url":"https://github.com/thebashpotato/slacker","commit_stats":null,"previous_names":["thebashpotato/slacker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thebashpotato/slacker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebashpotato%2Fslacker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebashpotato%2Fslacker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebashpotato%2Fslacker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebashpotato%2Fslacker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thebashpotato","download_url":"https://codeload.github.com/thebashpotato/slacker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thebashpotato%2Fslacker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28574329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T16:29:19.148Z","status":"ssl_error","status_checked_at":"2026-01-19T16:29:17.772Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["tiling-window-manager","x11-wm","xlib"],"created_at":"2024-11-07T07:13:49.182Z","updated_at":"2026-01-19T16:32:19.464Z","avatar_url":"https://github.com/thebashpotato.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"assets/slacker0.png\"\u003e\n   \u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/thebashpotato/slacker/c-cpp.yml?branch=main\u0026style=for-the-badge\u0026logo=ubuntu\u0026label=Linux%20Build\"\u003e\n   \u003cimg alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues/thebashpotato/slacker?style=for-the-badge\u0026logo=github\"\u003e\n   \u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/thebashpotato/slacker?style=for-the-badge\u0026logo=github\"\u003e\n   \u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/y/thebashpotato/slacker?style=for-the-badge\u0026logo=github\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/C-00599C?style=for-the-badge\u0026logo=c\u0026logoColor=white\"\u003e\n\n   \u003cbr\u003e\n   \u003cp\u003eAn X11 Tiling Window Manager for GNU/Linux and BSD's.\u003c/p\u003e\n\u003c/div\u003e\n\n## Background\n\n\u003e Slacker Window Manager (swm) is an X11 (The X Window System) non-reparenting window manager.\n\u003e Slacker uses Xlib (the original library released by MIT in the mid 1980s) as the library to interact with the X11 protocol,\n\u003e rather than the newer XCB library released in the early 2000's. This is mostly because Xlib is better documented, and I find\n\u003e it historically pleasing to program against.\n\n## Table of Contents\n\n- [Features](#features)\n- [Install](#install)\n- [Development](#development)\n- [Maintainers](#maintainers)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\n- [x] Extremely light weight, \u003c **250 mb** of ram and very fast, minimal dependencies.\n- [x] Tiling window management with floating, master/stack and monocal layouts.\n- [x] Keyboard driven with mouse support.\n- [x] Built in status bar with tags as workspaces.\n- [x] Configured through editing the `swm/src/config.c` file. **Swm** relies on being recompiled\n      after changes to its code, this works because it recompiles so fast.\n- [x] Built in program autostart support (doesn't rely on an unwieldly amount of scripts to start programs we all need) found in `swm/src/main.c`.\n- [ ] Multi-monitor support (under development).\n- [ ] System tray support.\n- [x] Window gaps (for the ladies)\n- [x] Arbitrarily swapping windows with master window in stack.\n- [x] Horizontally resizing windows\n- [ ] Vertically resizing windows\n- [ ] Re-write/re-implement the suckless drawable.h FontConfig/XftFont drawing library (it's filthy to read).\n\n## Install\n\n\u003e Installing and using the window manager release build\n\n```bash\n# Installs the X11 libraries, dunst, volumeicon-alsa, network-manager, feh, picom,\n# for apt-get based systems. (will prompt for sudo)\nsudo make init\n\n# Compiles the window manager installs binary, desktop file, picom file, etc.\nsudo make install\n\n# Uninstall the window manager and support files\nsudo make uninstall\n```\n\n### Default Configuration\n\n\u003e See the `swm/src/config.c` file to edit the configuration.\n\n#### The following programs/fonts should be found on your system\n\n1. konsole - the terminal emulator (change to what ever you would like)\n2. JetBrains Mono NerdFont - if not found monospace will be used as the fallback\n3. dmenu - The program launcher\n\n```c\nconst uint32_t G_BORDER_PIXEL                   = 2;\nconst uint32_t G_SNAP_PIXEL                     = 32;\nconst int32_t G_SHOW_BAR                        = 1;\nconst int32_t G_TOP_BAR                         = 1;\nconst char G_USER_FONT[]                        = \"JetBrainsMono Nerd Font Mono:size=16\";\nconst char G_DMENU_FONT[]                       = \"JetBrainsMono Nerd Font Mono:size=17\";\nconst char G_COLORSCHEME_BACKGROUND[]           = \"#131313\";\nconst char G_COLORSCHEME_BORDER[]               = \"#393939\";\nconst char G_COLORSCHEME_FOREGROUND[]           = \"#dde1e6\";\nconst char G_COLORSCHEME_SECONDARY[]            = \"#262626\";\nconst char G_COLORSCHEME_PRIMARY[]              = \"#78a9ff\";\nconst float G_MASTER_FACTOR                     = 0.55;\nconst int32_t G_MASTER_COUNT                    = 1;\nconst int32_t G_RESIZE_HINTS                    = 1;\nconst int32_t G_LOCK_FULLSCREEN                 = 1;\nchar G_DMENU_MONITOR[]                          = \"0\";\nconst char *G_DMENU_COMMAND[]                   = {\"dmenu_run\", \"-m\", G_DMENU_MONITOR, \"-fn\", G_DMENU_FONT, \"-nb\", G_COLORSCHEME_BACKGROUND, \"-nf\", G_COLORSCHEME_FOREGROUND, \"-sb\", G_COLORSCHEME_PRIMARY, \"-sf\", G_COLORSCHEME_SECONDARY, NULL};\nconst char *G_TERMINAL_COMMAND[]                = {\"konsole\", NULL};\nconst char *G_TAGS[]                            = { \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" };\n```\n\n## Development\n\n\u003e Slacker uses a Makefile only approach for its build system, no overly complicated CMake, or Meson\n\u003e will be found here.\n\u003e Install the development tools using the following make commands.\n\n```bash\n# Install all X11 libraries and development tools for apt-get, or pacman based systems.\nsudo make init-dev\n\n# Run the window manager in an embedded X window for testing and development\nmake swm-debug\n\n```\n\n\u003e The following utilities are what a Unix C programmer using Makefiles targeting\n\u003e the X11 environment will need for debugging and testing, and sanity. They are all\n\u003e installed with the above init-dev command.\n\n1. `bear` =\u003e Generates a `compile_commands.json` file so your\n   language service provider (clangd) will know what the hell is going on.\n\n   - Usage: **bear -- make all**\n\n2. `Xephyr` =\u003e Allows the programmer to run the Window Manager in a nested X session\n   so you don't have to log out , and back into the actual window manager. Perfect for developing, debugging and testing.\n\n   - Usage: **make swm-debug**\n\n3. `clang-format` =\u003e Formats all source code files according the the root .clang-format file.\n   This project uses the Linux kernel clang-format.\n\n   - Usage **make format**\n\n4. `clangd` =\u003e Modern C/C++ code analyzing to editors.\n   - Usage: Vim, Emacs, Vscode and Jetbrains all support it and handle it for you.\n\n### Debugging\n\nThis repository includes a [Vscode launch.json](.vscode/launch.json) file for attaching a debugger\nto `swm` while it's running inside an embedded Xephyr window. You will need to llvm debugging extension installed.\nYou will also need to run the following commands.\n\n\u003e This allows the necessary permissions needed for the debugger to attach.\n\n`echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope`\n\n\u003e This is the compile command, there is a 15 second pause to give time to attach the debugger to the process,\n\u003e while compiled in debug mode, all debugging messages from `swm` will be printed to stdout.\n\n`make swm-debug`\n\n## Maintainers\n\n[@thebashpotato](https://github.com/thebashpotato)\n\n## Contributing\n\nPRs accepted.\n\nSmall note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification.\n\n## License\n\nMIT © 2023 Matt Williams\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthebashpotato%2Fslacker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthebashpotato%2Fslacker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthebashpotato%2Fslacker/lists"}