A loose collection of scripts related to i3 and i3blocks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
simon bec677929c
fix sink_id dedector after pipewire update
5 months ago
i3block_py fix sink_id dedector after pipewire update 5 months ago
i3block_shell focus on first ip in list to ignore subnets from virtd 1 year ago
mpd_controller fixed play_next and play_prev if state is pause by removing fade call 1 year ago
weather_applet better rounded output for forecast on left click 1 year ago
.gitignore added some documentation for the weather.py script 1 year ago
LICENSE.md do I really need a license? 1 year ago
README.md added volume manager for pipewire and i3blocks 1 year ago


loose collection of scripts related to i3 and i3blocks


A set of Python scripts to manage mpd (Music Player Daemon). It uses notify-send to display the current song playing with cover art if embeded in the metadata. Is meant to run as a scritp from i3blocks
but can also be called via the media keys on your keyboard.

how to use

The main file is mpd_main.py, called without arguments, it will just output the current status.
The script expects mpd to be running on localhost:6600, and will try to start the daemon
if it looks like it is not running already. Additionaly the following arguments can be passed:

  • toggle: if mpd is playing, it will pause, if is paused it will resume
  • next: jump to next song in playlist
  • prev: jump to previous song in playlist


in mpd_main.py edit signal_id to change to the id used in your i3blocks.conf file so the script can be called from anywhere.


None standard Python dependencies: python-mpd python-mpd2

  • On Arch: sudo pacman -S python-mpd2
  • Via Pip: pip install python-mpd2


notify-send will get called via subprocess, works best with Dunst to show current song playing with cover art extracted from metadata.


A collection of standalone python scripts for the slightly more complicated things.

  • energy.py: parses acpi to output current battery status. Uses notify-send to send messages on changes.
  • cpu.py: parses /proc/loadavg to output load average values for last 1, last 5 and last 15 min.
    • call cpu.py 1 to get the avg from last min
    • call cpu.py 5 to get the avg from last 5 min
    • call cpu.py 15 to get the avg from last 15 min
  • volume.py: Now compatible with pipewire, parses output of pactl to output activ sink and current volume to i3blocks and manages music volume hotkeys.
    • call volume.py without args to output status for i3blocks
    • call volume.py vol_up to increase volume by 5%
    • call volume.py vol_down to decrease volume by 5%
    • call volume.py mute to toggle mute


A bunch of simple bash scripts to be called via i3blocks.

  • coretemp.sh: Echos average temperature of all CPU cores by parsing output of sensors from package lm_sensors, uses icons from fontawesome.com.
  • date.sh: Echos the current date.
    • on left click: uses notify-send to print current three month calendar.
  • df.sh: Echos current diskfree level of the root partition.
    • on left click: uses notify-send to print the df of all relevant connected partitions.
  • ip.sh: Echos current ip addresses in use or inactive when offline.
  • updates.sh: Echos how many updates are pending.
    • on left click: echos the complete list of all pending updates.
    • on right click: refreshes the current pending updates and echos result.
  • wifiinfo.sh: Echos current db level of signal strength.
    • on left click: Uses nmcli to echo all device status.


Standalone script that pulls weather data from openweathermap.org and prints out current temperature and weather. Meant to be used from i3blocks.
Icons used to display the current weather condition are from fontawesome.com.

  • on left click: Get three days forecast, use notify-send to send message, works best with dunst setup.


Get your free openweathermap API key from here.
Create a file called config in the same directory as the weather.py script and copy the sample data from config.sample:

  • Replace the dummy openweathermap_api_key with your key.
  • Add lat and lon values with the latitude and longitude values from your location.
  • Add unit of measurement: metric or imperial to get results in C° or F°.


None standard Python dependencies: python-requests requests

  • On Arch: sudo pacman -S python-requests
  • Via Pip: pip install requests

Fontawesome font pakage:

  • On Arch: sudo pacman -S ttf-font-awesome
  • On Ubuntu: sudo apt install fonts-font-awesome