Skip to content

haikal-hakim/athena-eww

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

239 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Athena Elkowars Wacky Widgets

Built on freedom, where users control the system, not the other way around.

showcase.mp4
Rofi Launcher Clipboard Manager

Here is the folder structure configuration:

athena-eww/
├── .config/
│   ├── dunst/
│   ├── eww/
│   │   ├── assets/           # Icons and widget images
│   │   ├── bar/
│   │   ├── corner/
│   │   ├── dashboard/
│   │   ├── panel/
│   │   ├── theme/            # Theme state and color palettes
│   │   ├── eww.yuck
│   │   ├── eww.scss
│   │   └── toggle_theme.sh   # Theme switcher script
│   ├── fastfetch/
│   ├── kitty/
│   ├── rofi/
│   └── starship/
├── extras/                   # Optional Eww configurations
└── .zshrc

Dependencies

Click here to see dependencies

To ensure all features of the Athena Eww setup work correctly, make sure the following packages are installed on your system:

Dependency Purpose
awk Text processor for system output parsing.
bluez-utils Bluetooth management tool (bluetoothctl).
brightnessctl Backlight and brightness control.
curl HTTP tool to fetch weather data API.
dbus Used for bluetooth event listening.
dunst Notifications daemon.
grep Global Regular Expression Print.
hyprshutdown Session and power menu backend.
inotify-tools Real-time file & theme change monitor.
jq JSON parser for widget data.
libnotify System notification dispatcher (notify-send).
networkmanager Network controller backend.
power-profiles-daemon Manages system power profiles.
python Required for helper scripts.
socat Real-time socket listener for Hyprland.
wireplumber Audio volume controller (wpctl).
ttf-jetbrains-mono-nerd Font.
inter-font Font.
Tela circle dark Icon, optional dependencies.

Install (Arch Linux)

You can install the required packages using pacman:

sudo pacman -S awk bluez-utils brightnessctl curl dbus dunst grep hyprshutdown inotify-tools jq libnotify networkmanager power-profiles-daemon python socat ttf-jetbrains-mono-nerd inter-font wireplumber

Installation

Clone this repository:

git clone https://github.com/haikal-hakim/athena-eww.git
cd athena-eww

Copy configuration files:

cp -r .config/* ~/.config/
cp .zshrc ~/

Required Configuration

These settings are required for the widgets to work properly on your system.

Script Permissions

All scripts inside the scripts/ directories must be executable:

chmod +x ~/.config/eww/toggle_theme.sh
chmod +x ~/.config/eww/bar/scripts/*.sh
chmod +x ~/.config/eww/corner/scripts/*.sh
chmod +x ~/.config/eww/dashboard/scripts/*.sh
chmod +x ~/.config/eww/panel/scripts/*.sh

Weather API (Dashboard)

Create an API key from OpenWeatherMap. Activation may take around 30 minutes. Open the weather script:

.config/eww/dashboard/scripts/weather.py

Set your API key and city:

API_KEY = "YOUR_API_KEY" #example: API_KEY = "a1b2c3d4blablabla"
CITY = "YOUR_CITY"       #example: CITY = "New York"

Weather Forecast Scale (Dashboard)

Widget weather forecast uses a vertical progress bar that serves as a temperature graph. My local tropical climate ranges from 15°C to 36°C, and yours may be different.

Open file:

.config/eww/dashboard/src/weather_forecast.yuck

Find this section:

:value {(day.temp - MIN_TEMP) / (MAX_TEMP - MIN_TEMP) * 100}

Hardware Temperature Sensor (Dashboard)

This setting uses Eww's built-in Magic Variables, not external scripts. By default, configured with CORETEMP_PACKAGE_ID_0 because my device uses an Intel CPU. Your device may have different hardware.

Check your available sensors, command in your terminal:

eww get EWW_TEMPS

Look for your sensor key or main packages in the output, and update key inside:

.config/eww/dashboard/src/sysinfo.yuck:

Find section:

(circular-progress :value {((EWW_TEMPS["YOUR_SENSOR_KEY"] ?: EWW_TEMPS["Tdie"] ?: 0) / 100) * 100}
                      ....
                            ....
                   (label :class "sysinfo-stat"
                          :text "${EWW_TEMPS["YOUR_SENSOR_KEY"] ?: EWW_TEMPS["Tdie"] ?: 0}°C")
                   )
)

Tip

An alternative battery.yuck using Eww built-in magic variables is available inside the extras/ folder. This version removes polling scripts but does not include notifications or remaining time estimation.

Todo Widget File (Dashboard)

  • Path: ~/Documents/todo.txt
  • Format: A simple text file containing your tasks (maximum 3 lines).

Example:

Task one
Task two
Task three

Optional Customization

These settings are optional and purely based on personal preference.

Themes (panel)

If you want to modify an existing theme or add your own custom color scheme, you can do so. However, to prevent config corruption, any new theme must use the exact same color variable names (such as base, mantle, crust, peach, mauve, etc.) as the original Catppuccin Mocha theme.

Available themes:

  • Catppuccin Mocha
  • Catppuccin Latte
  • Tokyo Night
  • Tokyo Night Light

Create a new .scss palette inside .config/eww/theme/, and edit:

  1. scripts Actions.config/eww/toggle_theme.sh
  2. Widget file .config/eww/panel/src/switcher.yuck
  3. Style Customization .config/eww/panel/styles/switcher.scss

Website Shortcuts (Corner)

  1. Script Actions .config/eww/corner/scripts/website.sh
  2. Widget file .config/eww/corner/src/website.yuck
  3. Style Customization .config/eww/corner/styles/website.scss

App Launcher (Corner)

  1. Put new .png icons inside the assets directory .config/eww/assets/apps/
  2. Modify the Apps and Commands
.config/eww/corner/src/launcher.yuck.

Example:

(launcher-btn :icon "${EWW_CONFIG_DIR}/assets/apps/firefox.png"
              :cmd "firefox &")

Features

Bar

Module Action Command
Distro Icon Click show dashboard
Notifications Click dunstctl history-pop
Right-Click dunstctl history-clear && dunstctl close-all
Panel Trigger Click show panel

Panel

Module Action Command / Function
Wi-Fi Click Nmcli radio wifi on/off
Row Click Open or close popup Wifi
Bluetooth Click Toggles on/off
Row Click Open or close popup Bluetooth
Power Mode Click Cycles profiles via powerprofilesctl
Do Not Disturb Click Toggles on/off dnd
Screenshot Click Runs local script ~/.config/hypr/scripts/screenshot.sh
Screen Record Click Runs local script ~/.config/hypr/scripts/record.sh
System Theme Click Change the current theme variant

Tip

The Screenshot and Screen Record features are tied to my custom Hyprland scripts. Paths are defined inside ~/.config/eww/panel/src/quicktoggle.yuck.

Universal Wi-Fi Input: Uses a custom Rofi theme password.rasi for password entries, with automatic fallback support for Fuzzel and Wofi.


Autostart

Example hyprland.lua style:

hl.exec_cmd("eww daemon")
hl.exec_cmd("sleep 2 && eww open window_bar")
hl.exec_cmd("sleep 3 && eww open window_website")
hl.exec_cmd("sleep 4 && eww open window_launcher")
hl.exec_cmd("sleep 5 && eww open window_power")

Keybindings

Dashboard toggle:

eww open window_dashboard

Example hyprland.lua style:

hl.bind(mainMod .. " + D", function()
	hl.dispatch(hl.dsp.exec_cmd("eww close window_dashboard || eww open window_dashboard"))
end)

Multimedia Control

To enable the OSD volume and brightness buttons on your keyboard. Example hyprland.lua style:

-- Volume --
hl.bind("XF86AudioRaiseVolume", function()
	hl.dispatch(hl.dsp.exec_cmd("bash " .. home .. "/.config/eww/corner/scripts/osd_vol.sh vol-up"))
end, { repeating = true })

hl.bind("XF86AudioLowerVolume", function()
	hl.dispatch(hl.dsp.exec_cmd("bash " .. home .. "/.config/eww/corner/scripts/osd_vol.sh vol-down"))
end, { repeating = true })

-- Brightness --
hl.bind("XF86MonBrightnessUp", function()
	hl.dispatch(hl.dsp.exec_cmd("bash " .. home .. "/.config/eww/corner/scripts/osd_bright.sh bright-up"))
end, { repeating = true })

hl.bind("XF86MonBrightnessDown", function()
	hl.dispatch(hl.dsp.exec_cmd("bash " .. home .. "/.config/eww/corner/scripts/osd_bright.sh bright-down"))
end, { repeating = true })

Acknowledgments

  • Eww - Created by Elkowar. Huge thanks to the creator and contributors for this amazing widget ecosystem.
  • Also thanks to everyone whose open source configurations were inspiring.

Muhammad Haikal Hakim

About

Elkowars wacky widget ecosystem for Athena

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors