Skip to content

menu management for games (or anything) using dmenu-pango-imlib

Notifications You must be signed in to change notification settings

Earnestly/taverner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

taverner <https://raw.github.com/Earnestly/taverner>

INTRODUCTION

  taverner is a tool designed to generate and maintain a bunch of game
  launchers (or anything else really). It uses a modified dmenu for creating
  list of entries along with a nice cover image and an accompanying tool to
  make creating these entries a bit more convenient.

  Screenshot: <https://raw.github.com/Earnestly/taverner/master/scrot.png>

REQUIRES

  - bash
  - curl
  - imagemagick
  - gawk
  - sort (-z)
  - dmenu-pango-imlib <https://github.com/Cloudef/dmenu-pango-imlib>

INSTALL

    make install

WHAT & HOW

  Briefly, a typical session may look like this

    % taverner -h
    usage: taverner [-h] [-e editor] menu [-h] [--] [arguments]...
           taverner [-h] [-e editor] add [-h] [-c cover] [-t template] [-n title] entry
           taverner [-h] [-e editor] edit [-ht] [-c cover] [-n title] entry
           taverner [-h] [-e editor] ls [-ht0]
           taverner [-h] [-e editor] rm [-h] entry...

    options
        -e editor  specify editor to use instead of EDITOR (default: vi)

    examples
        create an entry called wipeout3 with a psx template using emacs as the
        editor:

            taverner -e emacs add -t psx -c ~/wipeout-3.jpg -n 'Wipeout 3 (PSX 1999)' wipeout-3

        removes both wipeout-3 and crash-bandicoot launchers along with their
        metadata (cover and title):

            taverner rm wipeout-3 crash-bandicoot

    sub-commands
        menu
            usage: menu [-h] [--] [arguments]...

            description
                generate a menu, provide a prompt and execute selections

            options
                -h         this help menu
                arguments  the arguments specified after -- are passed to each selected
                           entry

        add
            usage: add [-h] [-c cover] [-t template] [-n title] entry

            description
                create a new menu entry

            options
                -h           this help menu
                -t template  select a template to base the new entry on
                -c cover     path or url to a cover image
                -n title     media title to display
                entry        the name for the new launcher script

        edit
            usage: edit [-c cover] [-n title] entry
                   edit [-t] [-n title] entry
                   edit [-n title] entry

            description
                edit the selected entry

            options
                -c cover  path or url to cover for the entry
                -n title  specify the title for the entry title
                -t        assumes entry refers to a template
                entry     attempts to open the entry with EDITOR (default: vi)

        ls
            usage: ls [-ht0]

            description
                list entries and templates

            options
                -h  this help menu
                -t  list templates instead of entries
                -0  use NUL instead of a <newline> between items

        rm
            usage: rm [-h] entry...

            description
                remove selected entries and corresponding covers

            options
                -h      this help menu
                entry   the chosen entry to remove



    % taverner ls -t
    ppsspp
    wine

    % taverner add -t ppsspp -c ~/wipeout-pulse-cover.jpg -n 'Wipeout Pulse (PSP 2005)'  wipeout-pulse

  At this point you'll be prompted with your editor to make any changes
  to the template such as specifying what to execute, and where the data
  files are located. E.g.:

    #!/bin/bash --
    exec ppsspp --fullscreen "${XDG_DATA_HOME:-$HOME/.local/share}"/games/psp/wipeout_pure.iso

  After editing the template the title can be selected via dmenu using the menu
  sub-command:

    % taverner menu

WHY

  I wanted to turn an old machine into a game box that could play various
  emulated games on the SNES, PSX, PSP and some older ones via WINE while
  unifying the UI. Many existing solutions were quite sophisticated,
  beautiful but complex graphical frontends, usually existing to serve a
  specific set of emulators.

  Since the machine I was planning to use is quite limited in terms of
  hardware I wanted something simple (and not very clever) which did as
  little as possible and with enough flexibility for anything I might
  conceivably throw at it.

  As Cloudef <https://github.com/Cloudef> had been working on providing
  extra functionality for dmenu which allows me to embed images based on
  the entry selected, I decided that would be perfect to list a bunch of
  games including any cover art.

  Initially I simply wrote a few lines of shell that passed a handwritten
  list to dmenu which launched a second script that contained all the
  logic necessary for starting the program. Eventually this manual
  insertion and deletion of list entries became inconvenient which
  resulted in the creation of the `taverner` script that generates menus
  on the fly.

  Now that was reasonably well solved, I still had the issue of manually
  writing the launcher scripts and setting up the cover image along with
  other potential tweaks. This is where `barkeep` comes in, it exists
  simply to aid me in creating the launchers, copying over templates and
  letting me just add any necessary tweaks.

  Eventually the functionality of taverner was subsumed into barkeep and
  barkeep was renamed as taverner.

About

menu management for games (or anything) using dmenu-pango-imlib

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published