Skip to content
anticlockwise edited this page Dec 29, 2014 · 21 revisions

<- widgets

A widget for showing the current song track's information from MOC (Music On Console). Also provides next track notifications using naughty

mocwidget = lain.widgets.contrib.moc()

Now playing songs are notified like this:

+--------------------------------------------------------+
| +-------+                                              |
| |/^\_/^\| Now playing                                  |
| |\ O O /| Cannibal Corpse (Hammer Smashed Face) - 1993 |
| | '.o.' | Hammer Smashed Face (Radio Disney Version)   |
| +-------+                                              |
+--------------------------------------------------------+

You need a file like this

 (Front|front|Cover|cover|Art|art|Folder|folder)\.(jpg|jpeg|png|gif)

in the album folder in order to show album art too.

input table

Variable Meaning Type Default
timeout Refresh timeout seconds int 1
music_dir Music directory string "~/Music"
cover_size Album art notification size int 100
default_art Default art string ""
settings User settings function empty function

Pay attention to case sensitivity when defining music_dir.

settings can use moc_now table, which contains the following string values:

  • state (possible values: "PLAY", "PAUSE", "STOP")
  • file
  • artist
  • title
  • album
  • elapsed (Time elapsed for the current track)
  • total (The current track's total time)

and can modify moc_notification_preset table, which will be the preset for the naughty notifications. Check here for the list of variables it can contain. Default definition:

moc_notification_preset = {
   title   = "Now playing",
   timeout = 6,
   text    = string.format("%s (%s) - %s\n%s", moc_now.artist,
             moc_now.album, moc_now.elapsed, moc_now.title)
}

output table

Variable Meaning Type
widget The textbox wibox.widget.textbox
update The notification function

You can control the widget with key bindings like these:

-- MOC control
awful.key({ altkey, "Control" }, "Up",
    function ()
        awful.util.spawn_with_shell("mocp -G")
        mocwidget.update()
    end),
awful.key({ altkey, "Control" }, "Down",
    function ()
        awful.util.spawn_with_shell("mocp -s")
        mocwidget.update()
    end),
awful.key({ altkey, "Control" }, "Left",
    function ()
        awful.util.spawn_with_shell("mocp -r")
        mocwidget.update()
    end),
awful.key({ altkey, "Control" }, "Right",
    function ()
        awful.util.spawn_with_shell("mocp -f")
        mocwidget.update()
    end),

where altkey = "Mod1".

Clone this wiki locally