{ "info": { "author": "Rob McMullen", "author_email": "feedback@playermissile.com", "bugtrack_url": null, "classifiers": [], "description": "============================\nRexMenu\n============================\n\nA simple image-tiling program launcher, designed primarily as frontend for MAME but easily supporting other emulators.\n\n.. image:: https://playermissile.com/_images/rexmenu_screenshot.png\n :align: center\n\n.. contents:: **Contents**\n\nPrerequisites\n=============\n\n* Python 2.7\n* pygame\n* python-evdev (optional, for screen blanking utility on Raspberry Pi)\n\nPygame has recently become installable through pip if the correct dependencies\nare installed. On linux it is probably available through your package manager.\nIt is installed by default in the RetroPie distribution for the Raspberry Pi.\nBinaries are also available at the `Pygame website\n`_.\n\nLimitations\n===========\n\nRexMenu does not perform any discovery of ROMs or any scraping to get metadata.\nAny images used have to be sourced outside this program.\n\nInstall\n=======\n\nInstall with::\n\n pip install rexmenu\n\nUsage\n=====\n\nThe program may be started from the command line, or autostarted by some means\ndepending on your operating system. Either way, if you have installed rexmenu\nthrough pip, the script will be in your search path and can be started simply\nby::\n\n rexmenu.py\n\nRexMenu takes no command line arguments; it needs a configuration file that\nlists all of the emulators and games. An example file is in the source\ndistribution as ``rexmenu.cfg.sample``. See the Configuration section below for\nmore details.\n\nAfter starting the program, the display will change to a grid of thumbnail\nimages with one highlighted. If there are more games defined in the config file\nthan will fit on screen, up or down arrows will appear indicating that there\nare more games in that direction. The joystick or arrow keys can be used to\nmove the highlight box to different games, and will scroll the list in the\ndirection of the arrow when you attempt to move the highlight box off the\nscreen in that direction. Pressing a predefined key will start that game.\nExiting from the game will return you to the RexMenu screen.\n\nRaspberry Pi\n============\n\nRexMenu works well on the Raspberry Pi because pygame works on the console\ngraphics. You do not need to have X running.\n\nRetroPie\n--------\n\nThe `RetroPie `_ distribution on `Raspberry Pi 3\n`_ is a Raspbian- based linux distribution that\nprovides many emulators. Its default frontend was too complicated for my small\nkids to use, so I designed this based on some code from a listener (I host the\n`Player/Missile Podcast `_) Rex. And hence the name.\n\nIn RetroPie, you can autostart RexMenu by editing the file::\n\n /opt/retropie/configs/all/autostart.sh\n\nExtras\n------\n\nFor the RaspberryPi, I have included some extras. The program ``rpi-screen-blank.py``\nwill turn off the monitor after a set amount of time (default of 10\nminutes) where it doesn't detect any keyboard or mouse input. It works by using\nthe Python evdev module to monitor keyboard events and uses some RaspberryPi-\nspecific commands to blank the console screen, which enables the DPMS of the\nmonitor, putting it into low power standby mode.\n\nConfiguration\n=============\n\nThe RexMenu configuration file tis in INI-style format, with one required\nsection that sets some application options, and any number of other sections\ndescribing the available programs to launch. Here is an example of a\nconfiguration file::\n\n [rexmenu]\n title = title.png\n quit = ESCAPE\n image path = /home/pi/src/arcade-screenshots\n thumbnail size = 250\n windowed = False\n window width = 1280\n window height = 1024\n highlight size = 8\n\n [advmame]\n digdug = Dig Dug\n mappy = Mappy\n mpatrol = Moon Patrol\n flicky = Flicky\n pacmania = Pac-Mania\n pacman = Pac-Man\n mspacman = Ms. Pac-Man\n nrallyx = Rally X\n berzerk = Berzerk\n\n [atari800 -xl -pal]\n /share/atari/yoomp.atr = Yoomp!\n\n [python]\n image path = /share/rex\n /share/rex/atari/combat.py = Combat\n\nThe configuration file can be stored as ``.rexmenu`` in your home directory, or\nas ``rexmenu.cfg`` in the same directory as the ``rexmenu.py`` program.\n\nrexmenu Section\n---------------\n\nThe ``rexmenu`` section defines the appearance and control of the launcher.\n\nKeystroke Options\n~~~~~~~~~~~~~~~~~\n\nThe configuration options for keystrokes are::\n\n run\n quit\n up\n down\n left\n right\n konami_a\n konami_b\n\nwhere each of those takes a text list of `pygame keyboard identifiers\n`_ without the leading ``K_``. For\nexample, the default set of controls for ``run`` is::\n\n [rexmenu]\n run = Z X LSHIFT LCTRL SPACE RETURN 1 2 3 4\n\nThe Konami code is available (up up down down left right left right B A) for a\nfunction, currently to exit the frontend, but in the future will be user-\ndefined. The ``konami_a`` and ``konami_b`` config items are available to set\nwhat the program will use for the B and A keys, defaulting to ``2`` and ``1``\nrespectively.\n\nImage Options\n~~~~~~~~~~~~~\n\n* ``image path`` *(space separated list)* list of paths to search for images if\n the image isn't found in emulator-specific image paths. If a path has spaces\n within it, enclose the path in single or double quotes.\n* ``thumbnail size`` *(int)* images will be resized to fit within the square with each side being this size in pixels\n\nOther Options\n~~~~~~~~~~~~~\n\n* ``title`` *(string)* path to an optional title graphic displayed at the top of the screen\n* ``windowed`` *(boolean)* if True, use window instead of full screen\n* ``window width`` *(int)* height of window in pixels if in windowed mode\n* ``window height`` *(int)* width of window in pixels if in windowed mode\n* ``highlight size`` *(int)* width in pixels of the line used to draw the highlight box\n* ``grid spacing`` *(int)* number of pixels padding between grid entries\n* ``name spacing`` *(int)* number of pixels padding between grid image and text showing the name of the game\n* ``clear screen`` *(boolean)* whether or not to clear the console screen before displaying the menu\n* ``wrap menu`` *(boolean)* allow the cursor to wrap to the top or bottom when attempting to move beyond the bottom or top\n* ``konami code`` *(string)* action to perform when the Konami code is completed (see the `Konami Code`_ section below)\n\nOther Sections\n--------------\n\nThe remaining sections of the config file describe a command line used to\nlaunch the emulator, and the list of filenames of games that use that emulator.\nAny number of sections may be included in the config file, and the program will\ndisplay all games in alphabetical order regardless of which section of the\nconfig file they appear.\n\nThe section name is the path and command line arguments to the emulator that\nwill run all the entries in that section. Entries for the same emulator but\nusing different command line options are possible. For instance, to use the\n`atari800 `_ emulator in NTSC (60 Hz display)\nfor some games and PAL (50 Hz display) for others, two sections could be\nadded::\n\n [atari800]\n /opt/games/atari8bit/Jumpman.atr = Jumpman\n\n [atari800 -pal]\n /opt/games/atari8bit/Jumpman.atr = Jumpman (PAL)\n\nThis is the format of entries: the key (the left hand side, before the ``=``)\nwhich is the path to the ROM file, and the value (the right hand side, after\nthe ``=``) which is the name of the game to display in the grid.\n\nIf the title is the same name as the filename, you can use the entry \"title\nfrom name\" and just list the paths to the games separated by whitespace (the\ndirectory portion and the file extension will be removed for display)::\n\n [atari800]\n title from name = /opt/games/atari8bit/Jumpman.atr /opt/games/atari8bit/Livewire.xex\n\nIf the emulator program is not in the search path, you can use the full path to\nthe emulator as the section title::\n\n [/opt/games/bin/atari800 -xl]\n /opt/games/atari8bit/yoomp.atr = Yoomp!\n\nImages\n------\n\nImages for the grid are loaded based on the filename of the game, not the text\ntitle. PNG and JPEG files are supported. The path is stripped off of the game\nand the extension \".png\" or \".jpg\" is added to both the whole filename and the\nfilename stripped of its extension. The first one found is used. So for\n``/opt/games/atari8bit/Jumpman.atr``, the names::\n\n Jumpman.atr.png\n Jumpman.atr.jpg\n Jumpman.png\n Jumpman.jpg\n\nare searched for in that order.\n\nThey are searched for in the same directory as the game, or in one of the paths\nspecified by the ``image path`` item in either in the individual emulator\nsection, or the ``rexmenu`` section. The path specified in the emulator\nsections will be searched before the paths in the ``rexmenu`` section.\n\nNote again that RexMenu has no metadata scraping, so you'll have to download or\ncreate the images yourself. For MAME, a relatively complete set of screenshot images can be found at::\n\n http://www.progettosnaps.net/snapshots/\n\nKonami Code\n-----------\n\nWhen the Konami code is completed, RexMenu will perform the action defined in\nthe ``konami code`` entry in the main configuration section. Currently, there\nare two types of actions:\n\n* ``exit``: exit the menu, back to the command line\n* *config file name*: load an alternate configuration file and display that menu.\n\nWhen the alternate configuration file is used, it can have its own Konami code\naction, so you can chain menus in this manner.\n\nLicense\n=======\n\nRexMenu, the MAME frontend sponsored by the Player/Missile Podcast\nCopyright (c) 2016-2017 Rob McMullen (feedback@playermissile.com)\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/robmcmullen/rexmenu", "keywords": null, "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "rexmenu", "package_url": "https://pypi.org/project/rexmenu/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/rexmenu/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/robmcmullen/rexmenu" }, "release_url": "https://pypi.org/project/rexmenu/2.0/", "requires_dist": null, "requires_python": null, "summary": "Simple image tiling program launcher/MAME frontend using Pygame", "version": "2.0" }, "last_serial": 2679012, "releases": { "2.0": [ { "comment_text": "", "digests": { "md5": "9553195fe179e26200d022bf6806c131", "sha256": "9cab6536eb34e082d5fe7174440d5fd67cab3ad194554e0acb685804b09384c7" }, "downloads": -1, "filename": "rexmenu-2.0.tar.gz", "has_sig": false, "md5_digest": "9553195fe179e26200d022bf6806c131", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14593, "upload_time": "2017-03-02T19:51:17", "url": "https://files.pythonhosted.org/packages/0a/e8/3d2b5f15c3956afacd48f11348bd2b340f81e1f748aab98ee0cc2699f719/rexmenu-2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9553195fe179e26200d022bf6806c131", "sha256": "9cab6536eb34e082d5fe7174440d5fd67cab3ad194554e0acb685804b09384c7" }, "downloads": -1, "filename": "rexmenu-2.0.tar.gz", "has_sig": false, "md5_digest": "9553195fe179e26200d022bf6806c131", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14593, "upload_time": "2017-03-02T19:51:17", "url": "https://files.pythonhosted.org/packages/0a/e8/3d2b5f15c3956afacd48f11348bd2b340f81e1f748aab98ee0cc2699f719/rexmenu-2.0.tar.gz" } ] }