{"id":13395482,"url":"https://github.com/leftwm/leftwm","last_synced_at":"2025-05-12T07:50:07.142Z","repository":{"id":37359651,"uuid":"178893391","full_name":"leftwm/leftwm","owner":"leftwm","description":"A tiling window manager for Adventurers","archived":false,"fork":false,"pushed_at":"2025-05-11T07:32:36.000Z","size":15312,"stargazers_count":2962,"open_issues_count":109,"forks_count":191,"subscribers_count":29,"default_branch":"main","last_synced_at":"2025-05-12T05:42:36.625Z","etag":null,"topics":["hacktoberfest","linux","tiling-window-manager","window-manager","x11"],"latest_commit_sha":null,"homepage":"http://leftwm.org","language":"Rust","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/leftwm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2019-04-01T15:32:57.000Z","updated_at":"2025-05-11T07:32:40.000Z","dependencies_parsed_at":"2023-10-30T06:32:58.222Z","dependency_job_id":"5562d58e-ef32-4e40-ab6a-d34aab93bf76","html_url":"https://github.com/leftwm/leftwm","commit_stats":{"total_commits":794,"total_committers":107,"mean_commits":7.420560747663552,"dds":0.6662468513853904,"last_synced_commit":"6c25afb31e333eb7c7defb4bf592422c5863069e"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftwm%2Fleftwm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftwm%2Fleftwm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftwm%2Fleftwm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftwm%2Fleftwm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leftwm","download_url":"https://codeload.github.com/leftwm/leftwm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253692207,"owners_count":21948312,"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":["hacktoberfest","linux","tiling-window-manager","window-manager","x11"],"created_at":"2024-07-30T17:02:01.555Z","updated_at":"2025-05-12T07:50:07.111Z","avatar_url":"https://github.com/leftwm.png","language":"Rust","funding_links":[],"categories":["Rust","Table of Contents","linux","Packages","Window Manager"],"sub_categories":["Window Management","window-managers","Tiling"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\u003cstrong\u003eLeftWM\u003c/strong\u003e\u003c/h1\u003e\n  \u003cp\u003e\n\t\u003cstrong\u003eA window manager for adventurers\u003c/strong\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n\t\u003ca href=\"https://github.com/leftwm/leftwm/actions?query=workflow%3ACI\"\u003e\n\t\t\u003cimg src=\"https://github.com/leftwm/leftwm/workflows/CI/badge.svg\" alt=\"build status\" /\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://github.com/leftwm/leftwm/wiki\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/wiki-0.5.0-green.svg\" alt=\"wiki\" /\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://docs.rs/leftwm/\"\u003e\n\t\t\u003cimg src=\"https://docs.rs/leftwm/badge.svg\" alt=\"Documentation\" /\u003e\n\t\u003c/a\u003e\u003cbr /\u003e\n\t\u003ca href=\"https://discord.gg/c9rB3wDnVs\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/discord/889371782388256818?color=%235865F2\u0026label=Discord\" alt=\"discord\" /\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://matrix.to/#/#leftwm-announcements:matrix.org\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/matrix%20chat-Announcements-green.svg\" alt=\"Matrix Chat: Announcements\" /\u003e\n\t\u003c/a\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://matrix.to/#/#leftwm-general:matrix.org\"\u003e\n\t\t\t\u003cimg src=\"https://img.shields.io/badge/matrix%20chat-General-green.svg\" alt=\"Matrix Chat: General\" /\u003e\n\t\u003c/a\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://matrix.to/#/#leftwm-support:matrix.org\"\u003e\n\t\t\t\u003cimg src=\"https://img.shields.io/badge/matrix%20chat-Support-green.svg\" alt=\"Matrix Chat: Support\" /\u003e\n\t\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n![Screenshot of LeftWM in action](screenshots/5.png)\n\n**IMPORTANT NOTE: LeftWM has changed the config language from `TOML` to `RON` with the `0.4.0` release. Please use `leftwm-check --migrate-toml-to-ron` to migrate your config and visit the [wiki](https://github.com/leftwm/leftwm/wiki) for more info.**\n\n# Table of contents\n\n- [Why go left](#why-go-left)\n- [Dependencies](#dependencies)\n- [Installation (with package manager)](#installation-with-package-manager)\n- [Manual Installation (no package manager)](#manual-installation-no-package-manager)\n  - [Using a graphical login such as LightDM, GDM, LXDM, and others](#using-a-graphical-login-such-as-lightdm-gdm-lxdm-and-others)\n  - [Optional Development Installation](#optional-development-installation)\n  - [Optional Build Features](#optional-build-features)\n  - [Using the Makefile](#using-the-makefile)\n  - [Starting with startx or a login such as slim](#starting-with-startx-or-a-login-such-as-slim)\n- [Theming](#theming)\n  - [With LeftWM-Theme](#with-leftwm-theme)\n  - [Without LeftWM-Theme](#without-leftwm-theme)\n- [Configuring](#configuring)\n  - [Default keys](#default-keys)\n  - [Floating Windows](#floating-windows)\n  - [Workspaces](#workspaces)\n  - [Tags / Desktops](#tags--desktops)\n  - [Layouts](#layouts)\n- [Troubleshooting](#troubleshooting)\n- [Support](#support)\n\n# Why go left\n\nLeftWM is a tiling window manager written in [Rust] that aims to be stable and performant. LeftWM is\n[designed to do one thing and to do that one thing well][unix-philosophy]: _be a window manager_.\nLeftWM follows the following mantra:\n\n\u003e LeftWM is not a compositor.\n\u003e LeftWM is not a lock screen.\n\u003e LeftWM is not a bar. But, there are lots of good bars out there. With themes, picking one is as\n\u003e simple as setting a symlink.\n\nBecause you probably want more than just a black screen, LeftWM is built around the concept of\nthemes. With themes, you can choose between different bars, compositors, backgrounds, colors, docks,\nand whatever else makes you happy.\n\nLeftWM was built from the very beginning to support multiple screens and ultrawide monitors. The\ndefault keybindings support ultrawide monitors and multiple screens.\n\n[Rust]: https://github.com/rust-lang/rust\n[unix-philosophy]: https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well\n\n## One of the core concepts/features of LeftWM is theming\n\nWith LeftWM, there are two types of configuration files:\n\n- **LeftWM Configuration files:** LeftWM configurations are specific to you and don’t change for\n  different themes. These are settings like keybindings, workspace locations, and names of\n  desktops/tags. These settings can be found in `$XDG_CONFIG_HOME/leftwm/config.ron`.\n\n- **Theme Configuration files:** The appearance of your desktop is different. It’s fun to try new\n  looks and feels. It’s fun to tweak and customize the appearance (AKA: [ricing]). It’s fun to share\n  so others can experience your awesome desktop! LeftWM is built around this concept. By pulling all\n  these settings out into themes, you can now easily tweak, switch, and share your experiences. This\n  configuration is spread between `theme.ron` and related files contained within a theme's folder.\n\n**Note:** some example config and themes can be found in the share dir, e.g. `/usr/share/leftwm` oh Arch based disros.\n\n[ricing]: https://www.reddit.com/r/unixporn/comments/3iy3wd/stupid_question_what_is_ricing/\n\n# Dependencies\n\nWhile LeftWM has very few dependencies, this isn't always the case for themes.\nThemes typically require the following to be installed. However, this is up to the\nauthor of the theme and could be different.\n\nList of LeftWM dependencies:\n\n- xorg (runtime, build): specifically libx11, xrandr, xorg-server, libxinerama\n- sh (runtime): any posix-compliant shell for starting up and down files\n- rust (build): \u003e= 1.74.0\n- bash (optional): Most of the themes available use bash, though the scripts maybe converted to any posix-compliant shell\n\nList of common dependencies for themes:\n\n| Dependency\u003cbr\u003e(git)      | Ubuntu 20.4.1\u003cbr\u003e _sudo apt install {}_ | Arch\u003cbr\u003e _sudo pacman -S {}_ | Fedora 33\u003cbr\u003e _sudo dnf install {}_ | PKGS                     |\n| ------------------------ | --------------------------------------- | ---------------------------- | ----------------------------------- | ------------------------ |\n| [feh][feh-git]           | feh                                     | feh                          | feh                                 | [feh][feh-pkg]           |\n| [compton][compton-git]   | compton                                 | picom                        | compton                             | [compton][compton-pkg]   |\n| [picom][picom-git]       | manual \\*\\*                             | picom                        | picom                               | [picom][picom-pkg]       |\n| [polybar][polybar-git]   | manual \\*\\*                             | polybar                      | polybar                             | [polybar][polybar-pkg]   |\n| [xmobar][xmobar-git]     | xmobar                                  | xmobar                       | xmobar                              | [xmobar][xmobar-pkg]     |\n| [lemonbar][lemonbar-git] | lemonbar                                | paru -S lemonbar\\*           | manual \\*\\*                         | [lemonbar][lemonbar-pkg] |\n| [conky][conky-git]       | conky                                   | conky                        | conky                               | [conky][conky-pkg]       |\n| [dmenu][dmenu-git]       | dmenu                                   | dmenu                        | dmenu                               | [dmenu][dmenu-pkg]       |\n\n[feh-git]: https://github.com/derf/feh\n[feh-pkg]: https://pkgs.org/search/?q=feh\u0026on=provides\n[compton-git]: https://github.com/chjj/compton\n[compton-pkg]: https://pkgs.org/download/compton\n[picom-git]: https://github.com/yshui/picom\n[picom-pkg]: https://pkgs.org/download/picom\n[polybar-git]: https://github.com/polybar/polybar\n[polybar-pkg]: https://pkgs.org/download/polybar\n[xmobar-git]: https://github.com/jaor/xmobar\n[xmobar-pkg]: https://pkgs.org/download/xmobar\n[lemonbar-git]: https://github.com/LemonBoy/bar\n[lemonbar-pkg]: https://pkgs.org/download/lemonbar\n[conky-git]: https://github.com/brndnmtthws/conky\n[conky-pkg]: https://pkgs.org/download/conky\n[dmenu-git]: https://git.suckless.org/dmenu\n[dmenu-pkg]: https://pkgs.org/download/dmenu\n\n\u003e \\* You can use whichever AUR wrapper you like. See [paru] and [yay].\n\u003e \\*\\* See the git page (link in first column) for how to install these manually\n\n# Installation (with package manager)\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/leftwm.svg)](https://repology.org/project/leftwm/versions)\n\n## Gentoo ([GURU])\n\n```sh\nsudo layman -a guru \u0026\u0026 sudo emerge --sync\nsudo emerge --ask --verbose x11-wm/leftwm\n```\n\n## Archlinux ([AUR])\n\n```sh\nparu -S leftwm\n```\n\n[paru] is an AUR helper like [yay], but written in [Rust].\n\n## Fedora ([copr])\n\n```sh\nsudo dnf copr enable th3-s4lm0n/leftwm -y \u0026\u0026 sudo dnf install leftwm\n```\n\n## NetBSD ([Official repositories])\n\n```sh\npkgin install leftwm\n```\n\nor, if you prefer to build it from source\n\n```sh\ncd /usr/pkgsrc/wm/leftwm\nmake install\n```\n\n## Void ([XBPS])\n\n```sh\nsudo xbps-install -S leftwm\n```\n\n## Cargo ([crates.io])\n\n```sh\ncargo install leftwm\n```\n\nIf you install LeftWM with crates.io, you will need to link to the [xsession desktop file](https://github.com/leftwm/leftwm/blob/758bbf837a8556cdc7e09ff2d394f528e7657333/leftwm.desktop) if you want\nto be able to login to LeftWM from a display manager (GDM, SSDM, LightDM, etc.):\n\n```sh\nsudo cp PATH_TO_LEFTWM/leftwm.desktop /usr/share/xsessions\n```\n\nAlso see [the build options](#optional-build-features) for more feature options, especially if you don't use `systemd` or want to use your own hotkey daemon like `sxhkd`.\n\n## OpenBSD ([OpenBSD])\n\nAt the moment LeftWM is not packaged with OpenBSD package manager, but it could be installed via Cargo.\n\n```sh\ncargo install leftwm --no-default-features --features lefthk,leftwm-watchdog\n```\n\n`leftwm-config` not yet ported to OpenBSD, as it requires a nightly Rust compiler to build.\nThe default config is generated by LeftWM when it is first started.\n\nTo start LeftWM with `xenodm` add the following to your `~/.xsession`. Make sure to remove or comment-out the `exec` to the previous WM you had there.\n\n```sh\nexec dbus-launch ~/.cargo/bin/leftwm \u003e\u003e ~/.cache/leftwm.log 2\u003e\u00261\n```\n\n[AUR]: https://aur.archlinux.org/packages/leftwm\n[GURU]: https://gitweb.gentoo.org/repo/proj/guru.git/tree/x11-wm/leftwm\n[copr]: https://copr.fedorainfracloud.org/coprs/atim/leftwm/\n[Official repositories]: https://pkgsrc.se/wm/leftwm/\n[XBPS]: https://voidlinux.org/packages/?arch=x86_64\u0026q=leftwm\n[crates.io]: https://crates.io/crates/leftwm\n[paru]: https://github.com/Morganamilo/paru\n[yay]: https://github.com/Jguer/yay\n[OpenBSD]: https://openbsd.org\n\n# Manual Installation (no package manager)\n\n## Using a graphical login such as LightDM, GDM, LXDM, and others\n\n1. Dependencies: Rust, Cargo\n2. Clone the repository and cd into the directory\n\n   ```bash\n   git clone https://github.com/leftwm/leftwm.git\n   cd leftwm\n   ```\n\n3. Build leftwm\n\n   ```bash\n   cargo build --profile optimized\n   ```\n\n   For more options see the [build options](#optional-build-features) section.\n\n4. Copy leftwm executables to the /usr/bin folder\n\n   ```bash\n   sudo install -s -Dm755 ./target/optimized/leftwm ./target/optimized/leftwm-worker ./target/optimized/lefthk-worker ./target/optimized/leftwm-state ./target/optimized/leftwm-check ./target/optimized/leftwm-command -t /usr/bin\n   ```\n\n5. Copy leftwm.desktop to xsessions folder\n\n   ```bash\n   sudo cp leftwm.desktop /usr/share/xsessions/\n   ```\n\nYou should now see LeftWM in your list of available window managers. At this point, expect only a\nsimple black screen on login. For a more customized look, install a theme.\n\n## Optional Development Installation\n\nIf your goal is to continuously build leftwm and keep up to date with the latest releases, you may\nprefer to symlink the leftwm executables instead of copying them. If you choose to install this\nway, make sure you do not move the build directory as it will break your installation.\n\nNote that if you want to build leftwm with another build profile, you will have to change the\n`--profile \u003cprofile-name\u003e` option and the target folder to `target/\u003cprofile-name\u003e`.\nCurrently available are `dev`, `release` and `optimized`.\n\n1. Dependencies: Rust, Cargo\n2. Clone the repository and cd into the directory\n\n   ```bash\n   git clone https://github.com/leftwm/leftwm.git\n   cd leftwm\n   ```\n\n3. Build leftwm\n\n   ```bash\n   # With systemd logging (view with 'journalctl -f -t leftwm-worker')\n   cargo build --profile optimized\n   ```\n\n   For more options see [build options below](#optional-build-features).\n\n4. Create the symlinks\n\n   ```bash\n   sudo ln -s \"$(pwd)\"/target/optimized/leftwm /usr/bin/leftwm\n   sudo ln -s \"$(pwd)\"/target/optimized/leftwm-worker /usr/bin/leftwm-worker\n   sudo ln -s \"$(pwd)\"/target/optimized/lefthk-worker /usr/bin/lefthk-worker\n   sudo ln -s \"$(pwd)\"/target/optimized/leftwm-state /usr/bin/leftwm-state\n   sudo ln -s \"$(pwd)\"/target/optimized/leftwm-check /usr/bin/leftwm-check\n   sudo ln -s \"$(pwd)\"/target/optimized/leftwm-command /usr/bin/leftwm-command\n   ```\n\n5. Copy leftwm.desktop to xsessions folder\n\n   ```bash\n   sudo cp leftwm.desktop /usr/share/xsessions/\n   ```\n\nYou should now see LeftWM in your list of available window managers. At this point, expect only a\nsimple black screen on login. For a more customized look, install a theme.\n\n### Rebuilding the development installation\n\n1. Now if you want to get the newest version of leftwm run this command from your build directory:\n\n   ```bash\n   git pull origin main\n   ```\n\n2. Build leftwm\n\n   ```bash\n   # With systemd logging (view with 'journalctl -f -t leftwm-worker')\n   cargo build --profile optimized\n   ```\n\n3. And press the following keybind to reload leftwm\n\n   ```bash\n   Mod + Shift + R\n   ```\n\n### Optional Build Features\n\nSince `LeftWM` is targeting to be more and more modular, there are a few features that can be selected at compile time:\n\nUse `cargo` with the added flags `--no-default-features --features=` and then commaseparated a selection from the following features:\n\n| feature      | info                                                                                                                                                                                           | default |\n| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |\n| lefthk       | built-in hotkey daemon, if you build with out make sure you bring your own (e.g. `sxhkd`) to manage any keybinds, be sure you install the `lefthk-worker` binary if you build with this option | ✔      |\n| journald-log | logging to `journald`, depends on `systemd`                                                                                                                                                    | ✔      |\n| sys-log      | use standard system logging                                                                                                                                                                    | ✘       |\n| file-log     | log to `/tmp/leftwm/\u003clog-file-by-datetime-of-launch\u003e`                                                                                                                                          | ✘       |\n| xlib (\\*)    | legacy backend linking to `libX11`                                                                                                                                                             | ✔       |\n| x11rb (\\*)   | rust based backend using [`x11rb`](https://github.com/psychon/x11rb)                                                                                                                           | ✔       |\n| leftwm (\\*)  | whether to build the `leftwm` binary                                                                                                                                                           | ✔       | \n\n⚠️ You need to select **at least one** backend feature (\\*) for leftwm to build, and leftwm-watchdog in order to get the `leftwm` binary ⚠️\n\nExample:\n\n```bash\n# With `lefthk` and logging to `sys-log` (`x11rb` backend), with `leftwm` binary\ncargo build --profile optimized --no-default-features --features=x11rb,lefthk,sys-log,leftwm-watchdog\n\n# Without `lefthk` and logging to file (`xlib` backend), without `leftwm` binary\ncargo build --profile optimized --no-default-features --features=xlib,file-log\n```\n\nThere are also multiple levels of optimization. These are specified by the cargo profiles, available are `dev`, `release` and `optimized`. The dev and release profiles are default profiles used by cargo, whereas the optimized profile is recomended for production builds.\n\nExample:\n\n```bash\n# With the dev profile\ncargo build --profile dev\n\n# With the release profile\ncargo build --profile release\n```\n\n## Using the Makefile\n\nFor conveniece we also have a Makefile with the following rules:\n\n| make ...       | info                                                                                                                         |\n| -------------- | ---------------------------------------------------------------------------------------------------------------------------- |\n| all            | implies `build` and `test`                                                                                                   |\n| test           | runs same tests as CI on github                                                                                              |\n| test-full      | deprecated, do not use                                                                                                       |\n| test-full-nix  | same as `test-full` but additionally compiles the nix package, resulting in a full representation of ci checks               |\n| build          | builds with cargo profile `optimized` by default; read build output on how to change the profile.                            |\n| clean          | clean all buildfiles                                                                                                         |\n| install        | install by copying binaries to `/usr/bin`, also places `leftwm.desktop` file to `/usr/share/xsession` and cleans build files |\n| install-linked | installs by symlinking, copies `leftwm.desktop`, no clean                                                                    |\n| uninstall      | removes `leftwm-*` files from `/usr/bin` and `leftwm.desktop` file                                                           |\n\nNote that for `build`, `install` and `install-linked`, you can specify the build profile to use by adding the `profile=\u003cprofile-name\u003e` argument. Currently available are `dev`, `release` and `release-optimized`.\n\n## Starting with startx or a login such as slim\n\nMake sure this is at the end of your `.xinitrc` file:\n\n```bash\n# .xinitrc\nexec dbus-launch leftwm\n```\n\nOn some distros like Archlinux, the environment variables are being setup by sourcing `/etc/X11/xinit/xinitrc.d`, as described in [the Arch docs](https://wiki.archlinux.org/title/Xinit#xinitrc), please make sure you copy the default xinitrc like this:\n\n```bash\ncp /etc/X11/xinit/xinitrc ~/.xinitrc\n```\n\n**Note:** In this case it is not necessary to start leftwm through `dbus-launch` and might even result in some cases in services like `gnome-keyring` to fail. In such an occasion just use:\n\n```bash\n# .xinitrc\nexec leftwm\n```\n\n# Theming\n\nIf you want to see more than a black screen when you login, select a theme:\n\n## With [LeftWM-Theme](https://github.com/leftwm/leftwm-theme)\n\n```bash\nleftwm-theme update\nleftwm-theme install NAME_OF_THEME_YOU_LIKE\nleftwm-theme apply NAME_OF_THEME_YOU_LIKE\n```\n\n## Without [LeftWM-Theme](https://github.com/leftwm/leftwm-theme)\n\nTo set up your own custom theme, you will need to create a directory containing the theme files and then symlink it to `$XDG_CONFIG_HOME/leftwm/themes/current`.\n\nA theme directory contains at least 2 files:\n\n- `up`: a script which is loaded with the theme.\n- `down`: a script which is called when the theme is unloaded.\n\nThese files need to be made executable. Many theme directories also contain:\n\n- `theme.ron`: which contains additional configuration options specific to the theme.\n- `polybar.ini`: a configuration file for the `polybar` application. _You need to have polybar installed!_\n- `picom.conf`: a configuration file for the `picom` compositor. _You need to have picom installed!_\n\nSee the [theme guide][theme-guide] for examples and further information. There is also a\n[community repository][community-repo] for sharing themes.\n\n[community-repo]: https://github.com/leftwm/leftwm-community-themes\n[theme-guide]: /themes\n\n---\n\n# Configuring\n\nYou can configure key bindings, default mod key and many other options:\n\n## With [LeftWM-Config](https://github.com/leftwm/leftwm-config)\n\n```bash\nleftwm-config -n # Generate new config\nleftwm-config    # Open configuration file in $EDITOR\nleftwm-config -t # Edit configuration via TUI (Beta)\n```\n\n## Manually editing the configuration file\n\n```bash\n$XDG_CONFIG_HOME/leftwm/config.ron\n```\n\n---\n\n**Note:** The configuration file is automatically generated when leftwm or leftwm-check is run for the first time.\n\n---\n\n## Default keys\n\n| Keybinding           | Description                                                            |\n| -------------------- | ---------------------------------------------------------------------- |\n| Mod + (1-9)          | Switch to a desktop/tag                                                |\n| Mod + Shift + (1-9)  | Move the focused window to desktop/tag                                 |\n| Mod + W              | Switch the desktops for each screen. Desktops [1][2] changes to [2][1] |\n| Mod + Shift + W      | Move window to the other desktop                                       |\n| Mod + (⬆️⬇️)         | Focus on the different windows in the current workspace                |\n| Mod + Shift + (⬆️⬇️) | Move the different windows in the current workspace                    |\n| Mod + Enter          | Move selected window to the top of the stack in the current workspace  |\n| Mod + Ctrl + (⬆️⬇️)  | Switch between different layouts                                       |\n| Mod + Shift + (⬅➡) | Switch between different workspaces                                    |\n| Mod + Shift + Enter  | Open a terminal                                                        |\n| Mod + Ctrl + L       | Lock the screen                                                        |\n| Mod + Shift + X      | Exit LeftWM                                                            |\n| Mod + Shift + Q      | Close the current window                                               |\n| Mod + Shift + R      | Reload LeftWM and its config                                           |\n| Mod + p              | Use dmenu to start application                                         |\n\n**Note:** Although we encourage you to use [Alacritty](https://github.com/alacritty/alacritty),\nLeftWM will set your default terminal to the first terminal it finds in this list (in the order\npresented):\n\n1. Alacritty\n2. Termite\n3. Kitty\n4. URXVT\n5. RXVT\n6. ST\n7. ROXTerm\n8. Eterm\n9. XTerm\n10. Terminator\n11. Terminology\n12. Gnome Terminal\n13. XFCE4 Terminal\n14. Konsole\n15. UXTerm\n16. Guake\n\n## Floating Windows\n\nYou can optionally switch between tiling or floating mode for any window.\n\n| Keybinding              | Description                             |\n| ----------------------- | --------------------------------------- |\n| Mod + MouseDrag         | Switch a tiled window to floating mode  |\n| Mod + RightMouseDrag    | Resize a window                         |\n| Drag window onto a tile | Switch a floating window to tiling mode |\n| Mod + Shift + (1-9)     | Switch a floating window to tiling mode |\n\n## Workspaces\n\nWorkspaces are how you view tags (desktops). A workspace is an area on a screen or most likely the whole screen. in these areas you can view a given tag.\n\nDefault: `workspaces: []` (one workspace per screen)\n\nWorkspaces are only applied if the specified output is the name of a connected screen. The output is also used as identifier of the workspace.\n\nYou can get the output names by running xrandr in your terminal.\n\nExample (two workspaces on a single ultrawide):\n\n```rust\nworkspaces: [\n\t( output: \"HDMI-1\", y: 0, x: 0, height: 1440, width: 1720 ),\n\t( output: \"HDMI-1\", y: 0, x: 1720, height: 1440, width: 1720 ),\n],\n```\n\n## Tags / Desktops\n\nThe default tags are 1-9. They can be renamed in the config file by setting the\nlist of tags.\n\nHere is an example config changing the list of available tags. NOTE: tag navigation (Mod + #)\nis based on the index of the tag in the list (starting with index 1).\n\n```rust\ntags: [\"Web\", \"Code\", \"Shell\", \"Music\", \"Connect\"],\n```\n\n## Layouts\n\nLeftwm supports user definable layouts. The relevant entries in the configuration file are the `layouts` and `layout_definitions` lists.\n\nOnly the layouts whose name appears in `layouts` will be accessible when switching layouts through the commands `NextLayout`, `PreviousLayout` and `SetLayout`. Each layout appearing in the `layouts` list must have a corresponding definition in `layout_definitions`.\n\nExample:\n\n```rust\nlayouts: [\n\t\"Monocle\",\n\t\"MainAndDeck\",\n\t\"MainAndVertStack\",\n],\nlayout_definitions: [\n\t(name: \"Monocle\", flip: None, rotate: North, reserve: None, columns: (flip: None, rotate: North, main: None, stack: (flip: None, rotate: North, split: None), second_stack: None)),\n\t(name: \"MainAndDeck\", flip: None, rotate: North, reserve: None, columns: (flip: None, rotate: North, main: (count: 1, size: 0.5, flip: None, rotate: North, split: None), stack: (flip: None, rotate: North, split: None), second_stack: None)),\n\t(name: \"MainAndVertStack\", flip: None, rotate: North, reserve: None, columns: (flip: None, rotate: North, main: (count: 1, size: 0.5, flip: None, rotate: North, split: Vertical), stack: (flip: None, rotate: North, split: Horizontal), second_stack: None)),\n]\n```\n\n[More detailed configuration information can be found in the Wiki.][config-wiki]\n\n[config-wiki]: https://github.com/leftwm/leftwm/wiki/Config\n\n## LeftWM is [EWMH](https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints) compliant\n\nThe default layouts are [all of the kinds defined here](https://github.com/leftwm/leftwm-layouts/blob/main/leftwm-layouts/src/layouts/defaults.rs).\n\n## Troubleshooting\n\n| Issue                              | Description                                                                                                             |                        Solution                        |\n| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------: |\n| LeftWM not listed by login manager | You likely need to add the xsessions file to the right folder.                                                          | See [installation](#installation-with-package-manager) |\n| No `config.ron` file exists        | LeftWM does not always ship with a `config.ron`. You will need to execute LeftWM at least once for one to be generated. |           Try the following: `leftwm-worker`           |\n| `config.ron` is not being parsed   | LeftWM ships with a binary called leftwm-check. It might not be installed by the AUR.                                   |           Try the following: `leftwm-check`            |\n| Keybinding doesn't work            | It's likely you need to specify a value or have a typo.                                                                 |                        See Wiki                        |\n\n## Support\n\nLeftWM now has a [Discord](https://discord.gg/c9rB3wDnVs) channel for faster help.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleftwm%2Fleftwm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleftwm%2Fleftwm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleftwm%2Fleftwm/lists"}