eww/docs/src/eww.md
Temmie 1b819fb646
System Tray (#743)
* Allow tokio on gtk thread

* Basic notifier host implementation

* Implement systray widget

* Use dbusmenu-gtk3

* Update flake.nix

* US spelling of license

* Fix possible TOCTOU

* Change how hosts are started

* Add watcher

* Bunch of refactor

* Handle errors better

* Refactor service parsing

* Avoid duplicate dbus connections

* Fix watcher producing bad items

* Handle zbus::Error::NameTaken

* Refactor icon loading & don't panic on zoom

* Implement pixbuf icons

Co-authored-by: Bojan Nemčić <bnemcic@gmail.com>

* Don't panic on icon/menu error

* Improve icon error handling to make discord work

* Update comments

* Big refactor into actor model

* Reword error messages

* Remove redundant watcher_on function

* Big icon handling refactor

* Don't unnecessarily wrap StatusNotifierItem

* cargo fmt

* Documentation

* Avoid registering to StatusNotifierWatcher multiple times

* None theme means default theme

* Add dbus logging

* Add libdbusmenu-gtk3 dependency to docs

* Some code tidying

* Make Item more clearer

* Make clippy happy

* Systray widget improvements

* Remove unwraps from dbus state

* Temporarily add libdbusmenu-gtk3 to flake buildInputs

* Fix blurry tray icon for HiDPI display

* feat: dynamic icons

* fix: don't cache IconPixmap property

this fixes dynamic icons for some icons, e.g. syncthingtray

* fixup! feat: dynamic icons

* Fix unused borrow warning

* Add some documentation to notifier_host

* Rename notifier_host::dbus to more descriptive notifier_host::proxy

* fixup! Rename notifier_host::dbus to more descriptive notifier_host::proxy

* fixup! Merge remote-tracking branch 'upstream/master' into tray-3

* fixup! Merge remote-tracking branch 'upstream/master' into tray-3

* Remove commented out fields of DBusSession

* Refactor host

* Remove git conflict marker

* Various improvements

* Icon documentation

* cargo fmt

* Add dependency to CI

---------

Co-authored-by: Bojan Nemčić <bnemcic@gmail.com>
Co-authored-by: MoetaYuko <loli@yuko.moe>
Co-authored-by: hylo <hylo@posteo.de>
2024-03-30 10:55:01 +01:00

1.8 KiB

Eww - Widgets for everyone!

Eww (ElKowar's Wacky Widgets, pronounced with sufficient amounts of disgust) is a widget system made in Rust, which lets you create your own widgets similarly to how you can in AwesomeWM. The key difference: It is independent of your window manager!

Configured in yuck and themed using CSS, it is easy to customize and provides all the flexibility you need!

How to install Eww

Prerequisites

  • rustc
  • cargo

Rather than with your system package manager, I strongly recommend installing it using rustup.

Additionally, eww requires some dynamic libraries to be available on your system. The exact names of the packages that provide these may differ depending on your distribution. The following list of package names should work for arch linux:

Packages
  • gtk3 (libgdk-3, libgtk-3)
  • gtk-layer-shell (only on Wayland)
  • pango (libpango)
  • gdk-pixbuf2 (libgdk_pixbuf-2)
  • libdbusmenu-gtk3
  • cairo (libcairo, libcairo-gobject)
  • glib2 (libgio, libglib-2, libgobject-2)
  • gcc-libs (libgcc)
  • glibc

(Note that you will most likely need the -devel variants of your distro's packages to be able to compile eww.)

Building

Once you have the prerequisites ready, you're ready to install and build eww.

First clone the repo:

git clone https://github.com/elkowar/eww
cd eww

Then build:

cargo build --release --no-default-features --features x11

NOTE: When you're on Wayland, build with:

cargo build --release --no-default-features --features=wayland

Running eww

Once you've built it you can now run it by entering:

cd target/release

Then make the Eww binary executable:

chmod +x ./eww

Then to run it, enter:

./eww daemon
./eww open <window_name>