Fork of [~grmat/statusbar](https://sr.ht/~grmat/otf-statusbar/) See also https://lists.sr.ht/~grmat/otf-statusbar
volume: add perentages above 100%
icons: add earpiece_volume_0-100%
battery: Update icon to newer version of ionicons



You can also use your local clone with git send-email.


builds.sr.ht status

This is an icon font designed specifically for plain text statusbars.

Usually, icon fonts only have an icon for a specific thing, like a battery. Users then see a featureless battery icon next to a textual representation of the battery's state.

otf-statusbar features different variants of icons, e.g. for good and bad wifi signals, or for empty and charged batteries.


otf-statusbar utilises ligatures to get the desired rendering. All icon variants have their own glyph in a Unicode Private Use Area. To make them easy to use and not require input of 'weird' unicode symbols ligatures are utilised. Select the font to render the whole ligature phrase. See Glyph overview

#Usage with a Donor Font

Because of using ligatures, the base font file includes many empty characters. To replace the empty characters with those from another font, the script patchicons.pe can be used.

./patchicons.pe statusbar.sfd DonorFont.ttf
cp DonorFont-statusbar.otf ~/.local/share/fonts/

use DonorFont-statusbar, DonorFont to refer to the combined font.

For convenience of reference, and for distribution maintainers packaging multiple combined fonts, the script genFontconfig.sh can make a fontconfig file to standardize the naming and set a preferred font.

./genFontconfig.sh 'Cousine' 'DonorFont' > 41-statusbar.conf
cp 41-statusbar.conf ~/.config/fontconfig/conf.d/

Then you can refer to the combined font in a more generic way, and it will behave as expected (provided the source font had correct metadata).

  • statusbar
  • DonorFont-statusbar
  • Cousine-statusbar Italic

#Glyph overview


icon ligature alternative ligatures (range_start..range_end) unicode
preview battery_0 battery_1..battery_9 0xF00B0
preview battery_10 battery_11..battery_19 0xF00B1
preview battery_20 battery_21..battery_29 0xF00B2
preview battery_30 battery_31..battery_39 0xF00B3
preview battery_40 battery_41..battery_49 0xF00B4
preview battery_50 battery_51..battery_59 0xF00B5
preview battery_60 battery_61..battery_69 0xF00B6
preview battery_70 battery_71..battery_79 0xF00B7
preview battery_80 battery_81..battery_89 0xF00B8
preview battery_90 battery_91..battery_99 0xF00B9
preview battery_100 0xF00BA
preview battery_0_charging battery_1_charging..battery_9_charging 0xF00C0
preview battery_10_charging battery_11_charging..battery_19_charging 0xF00C1
preview battery_20_charging battery_22_charging..battery_29_charging 0xF00C2
preview battery_30_charging battery_33_charging..battery_39_charging 0xF00C3
preview battery_40_charging battery_44_charging..battery_49_charging 0xF00C4
preview battery_50_charging battery_55_charging..battery_59_charging 0xF00C5
preview battery_60_charging battery_66_charging..battery_69_charging 0xF00C6
preview battery_70_charging battery_77_charging..battery_79_charging 0xF00C7
preview battery_80_charging battery_88_charging..battery_89_charging 0xF00C8
preview battery_90_charging battery_99_charging..battery_99_charging 0xF00C9
preview battery_100_charging battery_100_full 0xF00CA


icon ligature alternative ligatures (range_start..range_end) unicode
preview wifi_off airplane_mode 0xF00A0
preview wifi_bar_1 wifi_signal_0..wifi_signal_33 0xF00A1
preview wifi_bar_2 wifi_signal_34..wifi_signal_66 0xF00A2
preview wifi_bar_3 wifi_signal_67..wifi_signal_100 0xF00A3
preview bluetooth 0xF00AB
preview cellular 0xF00AC
▂      cellular_bar_1 cellular_signal_1..cellular_signal_25 0xF0101
▂ ▄    cellular_bar_2 cellular_signal_26..cellular_signal_50 0xF0102
▂ ▄ ▆  cellular_bar_3 cellular_signal_51..cellular_signal_75 0xF0103
▂ ▄ ▆ █ cellular_bar_4 cellular_signal_76..cellular_signal_100 0xF0104

#Phone / Modem States (based on Modem Manager states)

icon ligature alternative ligatures unicode
📱x phone_failed 0xF010F
📱? phone_unknown 0xF0110
📱… phone_initializing 0xF0111
📱🔒 phone_locked 0xF0112
📵 phone_disabled 0xF0113
→📵 phone_disabling 0xF0114
📲 phone_enabling 0xF0115
📱 phone_enabled 0xF0116
📱🔍 phone_searching 0xF0117
📱® phone_registered 0xF0118
📲® phone_disconnecting 0xF0119
📲✓ phone_connecting 0xF011A
📱✓ phone_connected 0xF011B
Reserved for future MMModemStates 0xF011C-0xF011F
Reserved for other MMModemStateFailedReasons 0xF0120-0xF0121
💳? sim_missing 0xF0122
💳x sim_error 0xF0123
Reserved for future MMModemStateFailedReasons 0xF0124-0xF012F


icon ligature alternative ligatures (range_start..range_end) unicode
🔈 volume_bar_0 volume_off, volume_mute, volume_0(%)? 0xF00D0
🔉 volume_bar_1 volume_1..volume_33(%)? 0xF00D1
🔉) volume_bar_2 volume_34..volume_66(%)? 0xF00D2
🔊 volume_bar_3 volume_67..volume_100(%)? 0xF00D3
🔊: volume_bar_4 volume_101..volume_153(%)? 0xF00DD
🕻   earpiece_volume_bar_0 earpiece_volume_mute, earpiece_volume_0(%)? 0xF0130
🕻🔉 earpiece_volume_bar_1 earpiece_volume_1..earpiece_volume_33(%)? 0xF0131
🕻🔉) earpiece_volume_bar_2 earpiece_volume_34..earpiece_volume_66(%)? 0xF0132
🕻🔊 earpiece_volume_bar_3 earpiece_volume_67..earpiece_volume_100(%)? 0xF0133
🕻🔊: earpiece_volume_bar_4 earpiece_volume_101..earpiece_volume_153(%)? 0xF0134


icon ligature alternative ligatures unicode
preview skip_backward 0xF00D4
preview skip_forward 0xF00D5
preview rewind 0xF00D6
preview fastforward 0xF00D7
preview pause 0xF00D8
preview play 0xF00D9
preview stop 0xF00DA
preview shuffle 0xF00DB
preview repeat 0xF00DC


icon ligature alternative ligatures unicode
preview mic_off mic_mute 0xF00E0
preview mic 0xF00E1


icon ligature alternative ligatures unicode
preview notifications 0xF00F0
preview notifications_off notifications_mute 0xF00F1
preview notifications_none 0xF00F2


icon ligature alternative ligatures unicode
preview mail 0xF00F3
preview mail_unread 0xF00F4
preview mail_open 0xF00F5


icon ligature alternative ligatures unicode
preview moon 0xFF000
preview infinity 0xF0001
preview eye 0xF0002
preview eye_off 0xF0003
preview crop 0xF0004
preview radio_button_on 0xF0005
preview radio_button_off 0xF0006


The icons are based on Ionicons 4.x, iOS-Style.

The font is built with FontForge. For a quick info on how ligatures work, this tutorial was helpful.


This font is licensed under the SIL OFL (see LICENSE). Read more about the license in the official FAQ.