{"id":13602072,"url":"https://github.com/madic-creates/Sway-DE","last_synced_at":"2025-04-11T08:31:28.257Z","repository":{"id":39568957,"uuid":"164264272","full_name":"madic-creates/Sway-DE","owner":"madic-creates","description":"🏠 Sway desktop environment dotfile installation for Arch Linux","archived":false,"fork":false,"pushed_at":"2025-02-11T13:08:47.000Z","size":14795,"stargazers_count":345,"open_issues_count":1,"forks_count":27,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-03T06:11:57.236Z","etag":null,"topics":["ansible","sway","swaywm","systemd","waybar","wayland"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/madic-creates.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":"2019-01-06T01:04:50.000Z","updated_at":"2025-04-02T18:28:46.000Z","dependencies_parsed_at":"2024-11-07T05:33:05.480Z","dependency_job_id":"2fe096e4-d209-41f6-8463-baed8020e33c","html_url":"https://github.com/madic-creates/Sway-DE","commit_stats":null,"previous_names":["madic-creates/sway-de","madic-/sway-de"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madic-creates%2FSway-DE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madic-creates%2FSway-DE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madic-creates%2FSway-DE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madic-creates%2FSway-DE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madic-creates","download_url":"https://codeload.github.com/madic-creates/Sway-DE/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248361541,"owners_count":21090925,"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":["ansible","sway","swaywm","systemd","waybar","wayland"],"created_at":"2024-08-01T18:01:13.528Z","updated_at":"2025-04-11T08:31:26.501Z","avatar_url":"https://github.com/madic-creates.png","language":"Shell","funding_links":[],"categories":["ansible","Shell"],"sub_categories":[],"readme":"# Sway [![Maintenance](https://img.shields.io/maintenance/yes/2023.svg)]()  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\u003cdiv align=\"center\"\u003e\u003cb\u003eMy \u003ca href=\"https://swaywm.org/\" target=\"_blank\"\u003eSway\u003c/a\u003e configuration.\u003cbr/\u003eDE stands for desktop environment because I strive to create an easy to use feeling similar to a DE.\u003c/b\u003e\u003c/div\u003e\n\n![Screenshot](screenshots/screen08.png)\n\nMore Screenshots can be found in the [screenshots](screenshots/) folder.\n\n## Table of content\n\n* [Current setup](#current-setup)\n* [Features](#features)\n* [Prerequisites](#prerequisites)\n* [Installation](#installation)\n* [Applications beeing installed](#applications-beeing-installed)\n  * [Arch Repository](#arch-repository)\n  * [Aur](#aur)\n* [Theming with pywal](#theming-with-pywal)\n* [Hotkeys](#hotkeys)\n* [Custom Sway configuration](#custom-sway-configuration)\n  * [Device specific configuration](#device-specific-configuration)\n  * [Output configuration](#output-configuration)\n  * [Example host specific configuration](#example-host-specific-configuration)\n* [Clipboard Manager](#clipboard-manager)\n* [Custom bash configuration](#custom-bash-configuration)\n* [Environment variables](#environment-variables)\n  * [Weather information in waybar](#weather-information-in-waybar)\n  * [Gammastep](#gammastep)\n* [Mozilla Firefox and Thunderbird](#mozilla-firefox-and-thunderbird)\n* [Breaking Changes](#breaking-changes)\n* [Testing via molecule](#testing-via-molecule)\n\n## Current setup\n\n* **OS:** [EndeavourOS](https://endeavouros.com/) (Arch Based)\n* **Shell:** [Bash](https://www.gnu.org/software/bash/)\n* **Wayland compositor:** [Sway](https://github.com/swaywm/sway)\n* **Bar:** [Waybar](https://github.com/Alexays/Waybar)\n* **Launcher:** [bemenu](https://github.com/Cloudef/bemenu) as wayland native dmenu\n* **Terminal:** [Alacritty](https://github.com/alacritty/alacritty)\n* **Color Scheme:** Based on [Nord theme](https://www.nordtheme.com/)\n* **Font:** DejaVuSansMono Nerd Font\n* **GTK:** [Windows 10](https://www.gnome-look.org/p/1013482/)\n* **Icons:** [Windows 10](https://github.com/B00merang-Artwork/Windows-10)\n* **Prompt:** [Starship](https://github.com/starship/starship)\n* **Background:** [Mushrooms](https://wallpaperscraft.com/download/mushrooms_toadstools_glow_135444/3840x2160)\n\n## Features\n\n* Services are started / stopped via systemd when sway starts / stops\n* Dynamic monitor [output configuration](#output-configuration) via kanshi, even when reloading sway via $mod+Shift+C\n* [Device specific sway configuration](#device-specific-configuration)\n* Multi-monitor lock screen support via [swaylock-effects](https://github.com/mortie/swaylock-effects)\n* Notifications support via mako\n* Window activity follows mouse\n* Inactive windows are semi-transparent\n* Suppress lockscreen when a window is in fullscreen, usefull when e.g. watching videos\n* Multiple [floating window rules](config/sway/sway.d/06_floating.conf) for a more familiar desktop feeling\n* Tag XWayland windows with an [X] in title bar to know which application is wayland native\n* Alacritty as \"scratchpad terminal\"\n* Waybar tooltips actually do feel like tooltips and not like a sway application container\n* Setting custom environment variables to tailor the desktop environment to your needs\n* Wayland Screensharing via [script](screenshots/SCREENSHARING.md) or natively in browsers via  [xdg-desktop-portal-wlr](https://github.com/emersion/xdg-desktop-portal-wlr)\n* [Autotiling](https://github.com/nwg-piotr/autotiling) depending on the currently focused window dimensions\n* [Hotkey Dialog](./screenshots/README.md#remontoire-hotkey-overview-modshiftk). View every available Hotkey in your sway session\n* [Emoji selector](./screenshots/README.md#emoji-selector-alte) via bemenu. Select an emoji from a drop down menu and put it into your clipboard or [configure ydotool](.bin/dmenuunicode.sh) to automatically input it into any application\n* [Color adaptive waybar](./screenshots/README.md#color-adaptive-waybar)\n* Automount removable drives via [udiskie](https://pypi.org/project/udiskie/)\n* Full QHD Support (I also assume WHD). I haven't noticed scaling problems with XWayland applications\n* Clipboard Manager (clipman) which hides KeePassXC data\n* pywal support!\n* [Flatpak Support](./screenshots/README.md#flatpak-support)\n\n## Prerequisites\n\n* git\n* xdg-user-dirs\n* ansible \u003e= 2.7\n* When using arch: [ansible-aur module](https://github.com/kewlfft/ansible-aur), though it will be installed when using the playbook setup01-arch-prerequirements.yml\n* Disable your display manager. It can work, but I can not guarantee it because I do not use one\n\n## Installation\n\nI prefer using ansible for managing my desktop environment so you need it to install everything.\n\nReasons why I use ansible:\n\n* integrated idempotence tests\n* templating\n* been using it on a daily base\n* can use system facts, e.g. ansible_distribution\n\nThe playbooks are completely idempotent and can be re-run without problems. The playbook setup-01 is required for the other playbooks as it will install the ansible aur module. setup-02 installs the desktop environment and setup-03 does adjustments mainly to suit my preferences, which can also be useful for others. Every task in the playbooks has a describing name. So it should be easy even without ansible knowledge to know, what each task does.\n\n```bash\nansible-galaxy collection install community.general kewlfft.aur\nansible-playbook setup-01-arch-prerequirements.yml -K -e 'ansible_python_interpreter=/usr/bin/python3' --diff\nansible-playbook setup-02-de.yml -K -e 'ansible_python_interpreter=/usr/bin/python3' --diff\nansible-playbook setup-03-additions-arch.yml -K -e 'ansible_python_interpreter=/usr/bin/python3' --diff\n```\n\nIf you would like to use my [zsh config](config/zsh/.zshrc) in alacritty, run step 2 with the following option:\n\n```bash\nansible-playbook setup-02-de.yml -K -e 'ansible_python_interpreter=/usr/bin/python3' -e 'SWAY_ZSH=true' --diff\n```\n\nAt the moment my main focus is on arch. It was previously on Fedora. But Fedora has become obsolete and got removed.\n\nThe ansible playbook will do the following changes to the system:\n\n* Install required software (see the playbook *.yml files for details)\n\n* Files from the config folder will be symlinked to the appropriate location\n\n* Enables ssh-agent via systemd --user\n\n* Downloads Windows-10 themes and icons to $HOME/.local/share/.themes and $HOME/.local/share/.icons\n\n* Sets Windows-10 themes and icons in ~/.config/gtk-3.0/settings.ini and ~/.gtkrc-2.0\n\n  * ~/.config/gtk-3.0/settings.ini\n\n  ```bash\n  [Settings]\n  gtk-theme-name = Windows-10\n  gtk-icon-theme-name = Windows-10\n  ```\n\n  * ~/.gtkrc-2.0\n\n  ```bash\n  gtk-theme-name = Windows-10\n  gtk-icon-theme-name = Windows-10\n  ```\n\n* [Add entries to /root/.bashrc and ~/.bashrc](#custom-bash-configuration)\n\n* setup03 installs / removes some GTK applications. I try to avoid QT applications if I'm not forced to use them...\n\n## Applications beeing installed\n\nThis role installs multiple applications from arch repository and aur.\n\n### Arch Repository\n\n| Name                                                  | Description                                         |\n| ----------------------------------------------------- | --------------------------------------------------- |\n| [Alacritty](https://github.com/alacritty/alacritty)   | A cross-platform, GPU-accelerated terminal emulator |\n| antiword                                              |                                                     |\n| [bemenu](https://github.com/Cloudef/bemenu)           | Dmenu replacement                                   |\n| bemenu-wlroots                                        | Wayland renderer for bemenu                         |\n| [blueman](https://github.com/blueman-project/blueman) | Blueman is a GTK+ Bluetooth Manager                 |\n| cdrtools                                              |                                                     |\n| docx2txt                                              |                                                     |\n| ffmpeg                                                |                                                     |\n| [gammastep](https://gitlab.com/chinstrap/gammastep)   | Adjust color temperature in the evening             |\n| gnome-power-manager                                   |                                                     |\n| [grim](https://github.com/emersion/grim)              | Grab images from a Wayland compositor               |\n| highlight                                             |                                                     |\n| imagemagick                                           |                                                     |\n| jq                                                    |                                                     |\n| [kanshi](https://github.com/emersion/kanshi)          |                                                     |\n| libpipewire02                                         |                                                     |\n| lsd                                                   |                                                     |\n| [mako](https://github.com/emersion/mako)              | A lightweight Wayland notification daemon           |\n| ncmpcpp                                               |                                                     |\n| network-manager-applet                                |                                                     |\n| noto-fonts-emoji                                      |                                                     |\n| odt2txt                                               |                                                     |\n| otf-font-awesome                                      |                                                     |\n| pavucontrol                                           |                                                     |\n| pcmanfm-gtk3                                          |                                                     |\n| perl-image-exiftool                                   |                                                     |\n| playerctl                                             |                                                     |\n| polkit-gnome                                          |                                                     |\n| qt5-wayland                                           |                                                     |\n| rsync                                                 |                                                     |\n| slurp                                                 |                                                     |\n| sway                                                  |                                                     |\n| swayidle                                              |                                                     |\n| ttf-dejavu                                            |                                                     |\n| [udiskie](https://pypi.org/project/udiskie/)          | Manage removeable media from userspace              |\n| waybar                                                |                                                     |\n\n### Aur\n\n| Name                                                                         | Description                                                                              |\n| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |\n| [archivemount](https://github.com/cybernoid/archivemount)                    | FUSE based filesystem for mounting compressed archives                                   |\n| [autotiling](https://github.com/nwg-piotr/autotiling)                        | Switches the layout splith / splitv depending on the currently focused window dimensions |\n| [avizo](https://github.com/misterdanb/avizo)                                 | Avizo is a simple notification daemon, intended to be used for multimedia keys           |\n| bemenu-dmenu                                                                 |                                                                                          |\n| [clipman](https://github.com/yory8/clipman)                                  | A simple clipboard manager for Wayland                                                   |\n| [edir](https://github.com/bulletmark/edir)                                   | Rename, Delete, and Copy Files and Directories Using Your Editor                         |\n| fedora-firefox-wayland-bin                                                   |                                                                                          |\n| glow-bin                                                                     |                                                                                          |\n| j4-dmenu-desktop                                                             |                                                                                          |\n| [lf](https://github.com/gokcehan/lf)                                         | Terminal file manager written in Go. For full functionality open with **lfcd**.          |\n| [otf-font-awesome-4](https://aur.archlinux.org/packages/otf-font-awesome-4/) |                                                                                          |\n| remontoire-git                                                               |                                                                                          |\n| [swappy](https://github.com/jtheoof/swappy)                                  | A Wayland native snapshot editing tool, inspired by Snappy on macOS                      |\n| [starship-bin](https://github.com/starship/starship)                         | The minimal, blazing-fast, and infinitely customizable prompt for any shell              |\n| [swaylock-effects-git](https://github.com/mortie/swaylock-effects)           | Swaylock, with fancy effects                                                             |\n| [ttf-font-awesome-4](https://aur.archlinux.org/packages/ttf-font-awesome-4/) |                                                                                          |\n| [wf-recorder-git](https://github.com/ammen99/wf-recorder)                    | Screen recording of wlroots-based compositors                                            |\n| [wl-clipboard-git](https://github.com/bugaevc/wl-clipboard)                  | Command-line copy/paste utilities for Wayland                                            |\n| [wshowkeys](https://git.sr.ht/~sircmpwn/wshowkeys)                           | Shows keypresses on first output                                                         |\n| xdg-desktop-portal-wlr                                                       |                                                                                          |\n\n## Theming with pywal\n\nIt's possible to change the theme from various applications via [pywal](https://github.com/dylanaraps/pywal).\n\n![Theme Switching](screenshots/ThemeSwitcher.gif)\n\nThe following applications are currently supported:\n\n* alacritty\n* bemenu-run.sh (and all scripts depending on this)\n* mako\n* sway\n* waybar\n\nTo list all supported themes:\n\n```bash\nwal --theme\n```\n\nChoose one of the available themes and apply it with\n\n```bash\nwal -o wal.sh --theme solarized\n```\n\nThe [wal.sh](bin/wal.sh) script takes care to update the theme from applications pywal can't directly update.\n\n### pywal supported applications\n\nMore applications are supported but need to be configured separately.\n\n#### Firefox\n\nFirefox requires the addon [pywalfox](https://addons.mozilla.org/en-US/firefox/addon/pywalfox/).\n\n#### VS Code\n\nVS Code requires the [Wal Theme](https://marketplace.visualstudio.com/items?itemName=dlasagno.wal-theme) extension.\n\n## Hotkeys\n\n[\u003cimg align=\"right\" height=\"200\" src=\"./screenshots/screen05.png\"\u003e](screenshots/README.md#remontoire-hotkey-overview-modshiftk)\n\nThis is not a list of all hotkeys but more for some none defaults. You can view all hotkeys in **config/sway.d/07_hotkeys.conf** or within sway by opening a hotkey overview with $mod+Shift+k.\n\nBy default $mod is the super key (or windows key) and $alt is the Alt key.\n\n| Action                                          | Binding             |\n| ----------------------------------------------- | ------------------- |\n| Reload Sway                                     | $mod+Shift+r        |\n| Open bemenu                                     | $mod+d              |\n| Toggle Gammastep                                | $mod+Shift+t        |\n| Make current focus fullscreen                   | $mod+f              |\n| Make current container fullscreen               | $mod+Shift+f        |\n| Open KeePassXC from scratchpad                  | $mod+k              |\n| Screenshot whole screen                         | Print               |\n| Screenshot focused window                       | $mod+Print          |\n| Screenshot selected region                      | $mod+Shift+Print    |\n| Desktop color picker                            | $mod+c              |\n| Open floating terminal                          | Menu                |\n| Screensharing                                   | $mod+x              |\n| Toggle Hotkey GUI                               | $mod+Shift+k        |\n| Emoji Selector                                  | $alt+Shift+e        |\n| Show notification actions                       | $alt+Shift+m        |\n| Show keypresses like in YouTube videos          | $mod+Shift+s        |\n| Open clipboard manager                          | $mod+y              |\n| Pause / resume audio / video player (playerctl) | $mod+Shift+c        |\n| Previous track from playlist (playerctl)        | $mod+Shift+Previous |\n| Next track from playlist (playerctl)            | $mod+Shift+Next     |\n\nScreenshots are saved via swappy to **$XDG_PICTURES_DIR/screenshots/** and the path is copied to the clipboard.\n\n## Custom Sway configuration\n\nYou can add your own sway configuration by creating a folder with the hostname of your device and putting your specific configuration in there (recommended).\n\n```bash\nmkdir -p $HOME/.config/sway/$(hostname)\n```\n\nAlternatively all config/sway.d/99_*.conf files are ignored in git.\n\n### Device specific configuration\n\nAt the moment the following settings are considered device specific:\n\n* Background (02_output.conf)\n\n* Workspace to monitor assignment (03_workspace.conf)\n\nThe files do provide some commented examples. You can copy them to **\\$HOME/.config/sway/$(hostname)** and adjust them to your needs.\n\n### Output configuration\n\nIn the past I used sway to handle monitor configuration (e.g. resolution and position). But it wasn't reliable for me so I switched to [kanshi](https://github.com/emersion/kanshi). Kanshi dynamically changes output configuration depending on the connected devices, which sway can't. Very convenient when using a notebook on different places. You can find an example configuration in [config/kanshi/config.example](/config/kanshi/config.example).\n\n### Example host specific configuration\n\n```clean\nnano $HOME/.config/sway/$(hostname)/example.conf\n```\n\n```clean\n# https://wallpaperscraft.com/download/mushrooms_toadstools_glow_135444/3840x2160\noutput \"*\" background ~/Pictures/mushrooms_toadstools_glow_135444_3840x2160.jpg stretch\n\ninput * {\n    xkb_layout de\n    xkb_numlock enable\n    natural_scroll enabled\n}\n\nexec nextcloud\nexec evolution\nexec firefox\n\nset $my_cursor volantes_light_cursors\nset $my_cursor_size 48\nset $my_gtk_theme Qogir-win-light\nset $my_icon_theme Qogir\n\nseat seat0 xcursor_theme $my_cursor $my_cursor_size\nexec_always {\n    gsettings set $gnome-schema cursor-theme $my_cursor\n    gsettings set $gnome-schema cursor-size $my_cursor_size\n    gsettings set $gnome-schema gtk-theme $my_gtk_theme\n    gsettings set $gnome-schema icon-theme $my_icon_theme\n}\n```\n\n## Clipboard Manager\n\n[Clipman](https://github.com/yory8/clipman) is used as a clipboard manager and can be viewed in bemenu with $mod+y. Because many people handle sensitive data in their clipboard it's not activated by default. To activate the clipboard manager you need to add the following line to your host specific sway configuration.\n\n```clean\nexec wl-paste -t text --watch myclipman.sh\n```\n\n[myclipman.sh](https://www.reddit.com/r/swaywm/comments/ljl0dh/keeping_secrets_secret_with_keepassxc_clipman_and/) is a script from reddit user [u/StrangeAstronomer](https://www.reddit.com/user/StrangeAstronomer/) which avoids, that content copied from KeePassXC is saved with clipman.\n\n## Custom bash configuration\n\nThe playbooks do add the following lines to your ~/.bashrc and /root/.bashrc:\n\n```bash\n # BEGIN Sway desktop environment config\nfor f in $HOME/.local/bin/bash/*.sh; do source $f; done\n # END Sway desktop environment config\n```\n\nThis will source all *.sh files from your $HOME/.local/bin/bash folder.\n\n## Environment variables\n\nThere are two files where environment variables can be set / modified: **~/.config/sway/env** and **~/.config/environmentd/*.conf**\n\n~/.config/sway/env is for sway / wayland specific variables and ~/.config/environmentd/*.conf for the more generic ones. This allows to load the more generic ones in other desktop environments or ttys without problems. You can e.g. add the following snippet at the top of your .bashrc and your tty will use the same XDG settings variables like in sway.\n\n```bash\nset -a\n[ -f \"$HOME/.profile\" ] \u0026\u0026 . \"$HOME/.profile\"\nset +a\n```\n\n.profile gets a \"magic\" snippet to source all variables from ~/.config/environment.d/*.conf. Or you can let your display manager source $HOME/.profile before loading the desktop environment. The custom provided startup script /usr/local/sbin/sway will source both files before executing sway. This way the command **sway** can be executed via command line or from a display manager and every required environment variable will be set properly.\n\n### Weather information in waybar\n\nWeather information is provided from [wttr.in](http://wttr.in) and downloaded with a scrip from [Robinhuet](https://github.com/Robinhuett/dotfiles).\n\n| Variable    | Description                  |\n| ----------- | ---------------------------- |\n| WEATHER_LOC | Postal code of your location |\n\n#### Weather Example\n\n```clean\nWEATHER_LOC=44444\n```\n\n### Gammastep\n\n| Variable | Description                  |\n| -------- | ---------------------------- |\n| RS_LAT   | Latitude                     |\n| RS_LON   | Longitude                    |\n| RS_DAY   | Display temperature at day   |\n| RS_NIGHT | Display temperature at night |\n\n#### Gammastep Example\n\n```clean\n# Gammastep\nRS_LAT=51.16\nRS_LON=6.34\nRS_DAY=6500\nRS_NIGHT=5000\n```\n\n## Font config\n\nThis role is not going to alter your fontconfig because everyone chooses a different font.\n\nBut to get colored emojis in every application you can use the following fontconfig as an example. It needs to be placed into **~/.config/fontconfig/fonts.conf**.\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003c!DOCTYPE fontconfig SYSTEM \"fonts.dtd\"\u003e\n\u003cfontconfig\u003e\n\n \u003calias\u003e\n   \u003cfamily\u003esans-serif\u003c/family\u003e\n   \u003cprefer\u003e\n     \u003cfamily\u003eNoto Sans\u003c/family\u003e\n     \u003cfamily\u003eNoto Color Emoji\u003c/family\u003e\n     \u003cfamily\u003eNoto Emoji\u003c/family\u003e\n     \u003cfamily\u003eDejaVu Sans\u003c/family\u003e\n   \u003c/prefer\u003e\n \u003c/alias\u003e\n\n \u003calias\u003e\n   \u003cfamily\u003eserif\u003c/family\u003e\n   \u003cprefer\u003e\n     \u003cfamily\u003eNoto Serif\u003c/family\u003e\n     \u003cfamily\u003eNoto Color Emoji\u003c/family\u003e\n     \u003cfamily\u003eNoto Emoji\u003c/family\u003e\n     \u003cfamily\u003eDejaVu Serif\u003c/family\u003e\n   \u003c/prefer\u003e\n \u003c/alias\u003e\n\n \u003calias\u003e\n  \u003cfamily\u003emonospace\u003c/family\u003e\n  \u003cprefer\u003e\n    \u003cfamily\u003eNoto Mono\u003c/family\u003e\n    \u003cfamily\u003eNoto Color Emoji\u003c/family\u003e\n    \u003cfamily\u003eNoto Emoji\u003c/family\u003e\n   \u003c/prefer\u003e\n \u003c/alias\u003e\n\n\u003c/fontconfig\u003e\n```\n\n## Mozilla Firefox and Thunderbird\n\nFirefox and Thunderbird are started with native wayland support. For best performance in Firefox you need to enable the new WebRender.\n\n```clean\nabout:config --\u003e gfx.webrender.all --\u003e Value: True\nabout:config --\u003e layers.acceleration.force-enabled --\u003e Value: True\n```\n\nTo verify if it's enabled go to **about:support** and check if **Compositing** contains the value **WebRender**. This can lead to problems on some configurations because the WebRender is still in beta.\n\n## Chromium based\n\nTo enable screensharing in Chromium based browsers, pipewire needs to be enabled\n\n```clean\nchrome://flags --\u003e pipewire --\u003e Enable\n```\n\nScreensharing can be tested on the [Mozilla GetUserMedia Test Page](https://mozilla.github.io/webrtc-landing/gum_test.html).\n\nFurther xdg-desktop-portal-wlr compatibility can be seen on the [Screencast compatibility](https://github.com/emersion/xdg-desktop-portal-wlr/wiki/Screencast-Compatibility) page.\n\n## Breaking changes\n\n* ~~In the past it was enough to run sway as command. Now for a full experience you need to run the script **$HOME/.local/bin/sway**. Since the deprecation of [.pam_environment](https://github.com/linux-pam/linux-pam/commit/ecd526743a27157c5210b0ce9867c43a2fa27784) this script will source all required environment variables.~~\n\n* There is now a script with the name \"sway\" that sources required environment variables. It should be usable from a display manager and tty.\n\n## Testing via molecule\n\nBecause I don't install my system that often this repository uses the ansible testframework [molecule](https://molecule.readthedocs.io/). It creates a vagrant vm with libvirt backend and runs the playbooks inside the vm.\n\nRequirements on the host:\n\n* molecule\n* vagrant\n* libvirt\n* qemu\n\nAll commands are run in the root folder of this repository.\n\n### Installing testing framework in virtual python environment\n\n```shell\n#yay -Sy vagrant virtualbox\nyay -Sy vagrant libvirt virt-manager qemu-base\nsudo systemctl enable libvirtd.service --now\nvagrant plugin install vagrant-libvirt\npython3 -m venv --copies molecule\nsource molecule/bin/activate\n# Updating all installed python packaes within the virtual environment\npython3 -m pip list --outdated --format=json | jq -r '.[] | \"\\(.name)==\\(.latest_version)\"' | xargs --no-run-if-empty -n1 python3 -m pip install -U\n# Installing molecule and dependencies\npython3 -m pip install -r molecule/requirements.txt\n```\n\nOptionally give your user permission to use libvirtd\n\n```shell\nsudo sed -i -e 's/^#unix_sock_group\\(.*\\)/unix_sock_group\\1/' -e 's/^#unix_sock_rw_perms\\(.*\\)/unix_sock_rw_perms\\1/' /etc/libvirt/libvirtd.conf\nsudo usermod -a -G libvirt $(whoami)\nnewgrp libvirt\nsudo systemctl restart libvirtd.service\n```\n\n### Workflow\n\n#### Building scenario\n\n```shell\nmolecule create\n```\n\nTips after creating the VM. Haven't found a way to automate that in the molecule config. Help appreciated.\n\nSet the following config via virtual machine manager:\n\n* Display Spice --\u003e Type: Spice Server\n* Display Spice --\u003e Listen Type: None\n* Add Sound Device\n\n#### Linting\n\n```shell\nmolecule lint\n```\n\n#### Testing / running playbooks\n\n```shell\nmolecule converge\n```\n\n#### Logging into virtual machine\n\n```shell\nmolecule login -h instance-1\n```\n\n#### Idempotence test\n\n```shell\nmolecule idempotence\n```\n\n#### Destroying scenario\n\n```shell\nmolecule destroy\n```\n\n#### Everything in one step, without possible login\n\n```shell\nmolecule test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadic-creates%2FSway-DE","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadic-creates%2FSway-DE","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadic-creates%2FSway-DE/lists"}