{"id":13533201,"url":"https://github.com/ErikReider/SwayOSD","last_synced_at":"2025-04-01T21:31:57.916Z","repository":{"id":107347822,"uuid":"547250899","full_name":"ErikReider/SwayOSD","owner":"ErikReider","description":"A GTK based on screen display for keyboard shortcuts like caps-lock and volume","archived":false,"fork":false,"pushed_at":"2025-03-03T14:13:52.000Z","size":24314,"stargazers_count":733,"open_issues_count":32,"forks_count":42,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-31T00:07:02.735Z","etag":null,"topics":["on-screen-display","sway","swaywm","wayland"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/ErikReider.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["erikreider"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2022-10-07T11:28:37.000Z","updated_at":"2025-03-28T13:26:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"b6311c10-74e0-41dd-8c48-fcebab4916df","html_url":"https://github.com/ErikReider/SwayOSD","commit_stats":{"total_commits":65,"total_committers":21,"mean_commits":"3.0952380952380953","dds":0.3846153846153846,"last_synced_commit":"47ef7826bce2c758a156a4a7186b970ff2396ea4"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikReider%2FSwayOSD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikReider%2FSwayOSD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikReider%2FSwayOSD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErikReider%2FSwayOSD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErikReider","download_url":"https://codeload.github.com/ErikReider/SwayOSD/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246713281,"owners_count":20821868,"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":["on-screen-display","sway","swaywm","wayland"],"created_at":"2024-08-01T07:01:17.524Z","updated_at":"2025-04-01T21:31:57.902Z","avatar_url":"https://github.com/ErikReider.png","language":"Rust","readme":"# SwayOSD\n\nA OSD window for common actions like volume and capslock.\n\nThis is my first time coding in Rust so fixes and improvements are appreciated :)\n\n## Features:\n\n- LibInput listener Backend for these keys:\n  - Caps Lock\n  - Num Lock\n  - Scroll Lock\n- Input and output volume change indicator\n- Input and output mute change indicator\n- Customizable maximum Volume\n- Capslock change (Note: doesn't change the caps lock state)\n- Brightness change indicator\n\n## Images\n\n![image](https://user-images.githubusercontent.com/35975961/200685357-fb9697ae-a32d-4c60-a2ae-7791e70097b9.png)\n\n![image](https://user-images.githubusercontent.com/35975961/200685469-96c3398f-0169-4d13-8df0-90951e30ff33.png)\n\n## Install:\n\nThere's a new LibInput watcher binary shipped with SwayOSD (`swayosd-libinput-backend`)\nwhich can automatically detect key presses, so no need for binding key combos.\nThe supported keys are listed above in [Features](#features)\n\n### Through Meson\n\n```zsh\n# Please note that the command below might require `--prefix /usr` on some systems\nmeson setup build\nninja -C build\nmeson install -C build\n```\n\n### AUR\n\nAvailable on the AUR thanks to @jgmdev! (Don't open a issue here about AUR package)\n\n- [swayosd-git](https://aur.archlinux.org/packages/swayosd-git)\n\n### Debian / Ubuntu\n\nStarting with Debian trixie and Ubuntu Plucky swayosd is available via apt.\n\n- [swayosd](https://tracker.debian.org/swayosd)\n\n## Usage:\n\n### SwayOSD LibInput Backend\n\nUsing Systemd: `sudo systemctl enable --now swayosd-libinput-backend.service`\n\nOther users can run: `pkexec swayosd-libinput-backend`\n\n### SwayOSD Frontend\n\n#### Sway examples\n\n##### Start Server\n\n```zsh\n# OSD server\nexec swayosd-server\n```\n\n##### Add Client bindings\n\n```zsh\n# Sink volume raise optionally with --device\nbindsym XF86AudioRaiseVolume exec swayosd-client --output-volume raise\n# Sink volume lower optionally with --device\nbindsym XF86AudioLowerVolume exec  swayosd-client --output-volume lower --device alsa_output.pci-0000_11_00.4.analog-stereo.monitor\n# Sink volume toggle mute\nbindsym XF86AudioMute exec swayosd-client --output-volume mute-toggle\n# Source volume toggle mute\nbindsym XF86AudioMicMute exec swayosd-client --input-volume mute-toggle\n\n# Volume raise with custom value\nbindsym XF86AudioRaiseVolume exec swayosd-client --output-volume 15\n# Volume lower with custom value\nbindsym XF86AudioLowerVolume exec swayosd-client --output-volume -15\n\n# Volume raise with max value\nbindsym XF86AudioRaiseVolume exec swayosd-client --output-volume raise --max-volume 120\n# Volume lower with max value\nbindsym XF86AudioLowerVolume exec swayosd-client --output-volume lower --max-volume 120\n\n# Sink volume raise with custom value optionally with --device\nbindsym XF86AudioRaiseVolume exec  swayosd-client --output-volume +10 --device alsa_output.pci-0000_11_00.4.analog-stereo.monitor\n# Sink volume lower with custom value optionally with --device\nbindsym XF86AudioLowerVolume exec  swayosd-client --output-volume -10 --device alsa_output.pci-0000_11_00.4.analog-stereo.monitor\n\n# Capslock (If you don't want to use the backend)\nbindsym --release Caps_Lock exec swayosd-client --caps-lock\n# Capslock but specific LED name (/sys/class/leds/)\nbindsym --release Caps_Lock exec swayosd-client --caps-lock-led input19::capslock\n\n# Brightness raise\nbindsym XF86MonBrightnessUp exec swayosd-client --brightness raise\n# Brightness lower\nbindsym XF86MonBrightnessDown exec swayosd-client --brightness lower\n\n# Brightness raise with custom value('+' sign needed)\nbindsym XF86MonBrightnessUp  exec swayosd-client --brightness +10\n# Brightness lower with custom value('-' sign needed)\nbindsym XF86MonBrightnessDown exec swayosd-client --brightness -10\n```\n\n### Notes on using `--device`:\n\n- It is for audio devices only.\n- If it is omitted the default audio device is used.\n- It only changes the target device for the current action that changes the volume.\n- You can list your input audio devices using `pactl list short sources`, for outputs replace `sources` with `sinks`.\n\n### Notes on using `--monitor`:\n\n- By default, without using --monitor the osd will be shown on all monitors\n- On setups with multiple monitors, if you only want to show the osd on the focused monitor, you can do so with the help of window manager specific commands:\n```sh\n# Sway\nswayosd-client --monitor \"$(swaymsg -t get_outputs | jq -r '.[] | select(.focused == true).name')\" --output-volume raise\n\n# Hyprland\nswayosd-client --monitor \"$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')\" --output-volume raise\n```\n\n## Theming\n\nSince SwayOSD uses GTK, its appearance can be changed. Initially scss is used, which GTK does not support, so we need to use plain css. \nThe style conifg file is in `~/.config/swayosd/style.css` (it is not automatically generated). For reference you can check [this](https://github.com/ErikReider/SwayOSD/blob/main/data/style/style.scss) and [this](https://github.com/ErikReider/SwayOSD/issues/36).\n\n## Brightness Control\n\nSome devices may not have permission to write `/sys/class/backlight/*/brightness`.\nSo using the provided packaged `udev` rules + adding the user to `video` group\nby running `sudo usermod -a -G video $USER`, everything should work as expected.\n","funding_links":["https://github.com/sponsors/erikreider"],"categories":["Tools","Rust","🗂️ System \u0026 Widgets"],"sub_categories":["Notifications"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FErikReider%2FSwayOSD","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FErikReider%2FSwayOSD","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FErikReider%2FSwayOSD/lists"}