Fandom

How To Wiki

Howto show volume in Linux with On-Screen Display

1,795pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

libaosd Method is much prettier than the XOSD Method

libaosd MethodEdit

Libaosd volume screenshot

RequirementsEdit

UsageEdit

all the following displays volume

  • Increase volume
    • aosd_volume volup
  • Decrease volume
    • aosd_volume voldown
  • Mute volume
    • aosd_volume mute

ScriptEdit

name the script, aosd_volume

#!/bin/bash

# Detect mute status and set OSD color
MUTESTATUS=$(amixer get $MIXERNAME | grep "Left:" | awk '{print $4}' | tr -d '[]')

if [ $MUTESTATUS == "off" ]; then
   OSDCOLOR=red; else
   OSDCOLOR=green
fi


# Create the "I" bar based on mixer setting and granularity
volset=$(amixer get $MIXERNAME | grep "Left:" | awk '{print $4}')

let volcounter=volset/$VOLINC
if [ $volcounter -gt $GRANULARITY ]; then
   volcounter=$GRANULARITY
fi

OSDI=""

while [ $volcounter -gt 0 ]
do
   OSDI=`echo $OSDI"I"`
   let volcounter=volcounter-1
done    

# Clean up any running aosd_cat processes
killall aosd_cat &> /dev/null

# Display the "I" bar
echo "$OSDI" | aosd_cat   -n "Arial Black $FONTSIZE" -u 1000 -o 200 -R $OSDCOLOR -S none -f 0 -y -10



# END

XOSD MethodEdit

Xosd volume-screenshot

RequirementsEdit


UsageEdit

all the following displays volume

  • Display volume
    • xosd_volume show
  • Increase volume
    • xosd_volume incr
  • Decrease volume
    • xosd_volume decr
  • Mute volume
    • xosd_volume mute on/off


ScriptEdit

Name the script xosd_volume

#!/bin/bash

#####################
# Config
CHANNEL='PCM'
FONT='10x20'


####################
# Code
action=$1; shift

# Unmute the volume and increase/decrease it
# Arg 1: volume change to set (1+ or 1-)
set_volume() {
    amixer sset $CHANNEL unmute &> /dev/null &
    volume=$(amixer sset $CHANNEL $1 unmute | \
             grep "Left: Playback" | \
             grep -o "\[[0-9]*%\]" | \
             tr '[%]' ' ')
}

# Get the current volume %
# No args
get_volume() {
    volume=$(amixer sget $CHANNEL | \
             grep "Left: Playback" | \
             grep -o "\[[0-9]*%\]" | \
             tr '[%]' ' ')
}

# Toggle Master volume mute on/off
# No args
mute_volume() {
    status=$(amixer sset $CHANNEL toggle | \
             grep "Left: Playback" | \
             grep -o "\[on\]\|\[off\]" | \
             tr '[]' ' ')
}

# Use xosd to show a volume guage on the screen
# Arg 1: Current volume as percent of full volume
# Arg 2: (optional) Text to show above bar
show_volume() {
    killall -9 -q osd_cat &>/dev/null

	osd_cat     --font="$FONT"     --shadow=1     --color=green     --pos=middle     --align=center     --delay=2 --text "$( [ "z$2" = "z" ] && echo Volume: $1% || echo $2 )"    --barmode=percentage --percentage=$1 
}

case "$action" in
    show)
        get_volume
		show_volume $volume 
        ;;

    incr)
        delta=1+
        set_volume $delta
        show_volume $volume 
        ;;

    decr)
        delta=1-
        set_volume $delta
        show_volume $volume 
        ;;

    mute)
        mute_volume
        case "$status" in
            off)
                show_volume 0 "Muted"
                ;;
            on)
                get_volume
                show_volume $volume
                ;;
        esac
        ;;
    *)
        echo "Usage: $0 {incr|decr|mute|show}"
        ;;
esac

External LinksEdit

Also on Fandom

Random Wiki