{"id":13792394,"url":"https://github.com/lehitoskin/ivy","last_synced_at":"2026-01-21T05:08:49.748Z","repository":{"id":47597053,"uuid":"36596570","full_name":"lehitoskin/ivy","owner":"lehitoskin","description":"Ivy, the Taggable Image Viewer","archived":false,"fork":false,"pushed_at":"2021-08-22T20:28:02.000Z","size":918,"stargazers_count":16,"open_issues_count":26,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-18T06:49:04.513Z","etag":null,"topics":["flif","gif","image-viewer","ivy","jpeg","png","racket","svg","xmp-metadata"],"latest_commit_sha":null,"homepage":null,"language":"Racket","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lehitoskin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-31T09:39:02.000Z","updated_at":"2024-04-07T07:21:30.000Z","dependencies_parsed_at":"2022-08-26T12:12:01.372Z","dependency_job_id":null,"html_url":"https://github.com/lehitoskin/ivy","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehitoskin%2Fivy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehitoskin%2Fivy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehitoskin%2Fivy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lehitoskin%2Fivy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lehitoskin","download_url":"https://codeload.github.com/lehitoskin/ivy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253754967,"owners_count":21958934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flif","gif","image-viewer","ivy","jpeg","png","racket","svg","xmp-metadata"],"created_at":"2024-08-03T22:01:11.766Z","updated_at":"2026-01-21T05:08:49.741Z","avatar_url":"https://github.com/lehitoskin.png","language":"Racket","funding_links":[],"categories":["Racket"],"sub_categories":["game"],"readme":"Ivy, the Taggable Image Viewer\n==============================\n\nIvy is an image viewer that allows the user to set or remove tags that are\ntracked solely by the application.\n\n## Installation\n\n### Dependencies\n\n- [Racket](http://racket-lang.org/) version 6.6 and up\n- [gif-image](https://github.com/lehitoskin/gif-image)\n- [png-image](https://github.com/lehitoskin/png-image)\n- [racquel](https://github.com/brown131/racquel)\n- [riff](https://github.com/lehitoskin/riff) v0.2 (which uses FLIF v0.3, see below)\n- [rsvg](https://github.com/takikawa/rsvg) (which uses librsvg)\n- [sugar](https://github.com/mbutterick/sugar)\n- [txexpr](https://github.com/mbutterick/txexpr)\n\n### Compilation\n\nYou actually don't *need* to install Ivy, per se. Simply point the Racket\ninterpreter to the location of the `main.rkt` file. However, it will be\neasier to use Ivy if the executable is in your PATH. Compiling Ivy is simple:\nin the directory where you saved Ivy, you can just run\n\n```\nmake\nsudo make install\n```\n\nYou may change the DESTDIR variable to install ivy to an arbitrary location -\none that may not require super user privileges.\n\nWe provide a .desktop file, which will add Ivy to your desktop application menu.\nIf you installed to a nonstandard location, you may need to copy\n`ivy-image-viewer.desktop` to `~/.local/share/applications/`, and edit the the\npaths for the `Exec` and `Icon` lines. You may need to log out and log back in\nbefore your app menu will notice the new entry.\n\nOr on Windows:\n\n``` bash\nraco exe -o ivy main.rkt\n```\n\nThis creates an executable binary (called `ivy`), which you can then move to\nany directory in your PATH. You should then be able to call `ivy` from\nanywhere.\n\nOS X note: `make` will generate an .app bundle, and `make install` by default will\nplace it in `/Applications/`.\n\n\n## Usage\n\n### GUI Interface\n\nOS X note: All \u003ckbd\u003eCtrl\u003c/kbd\u003e- keyboard shortcuts are available as\n\u003ckbd\u003eCmd\u003c/kbd\u003e-.\n\n- Calling `ivy` by itself will start Ivy with the image-viewing area blank. You\n  can then load images from the menu (File -\u003e Open), or with the keyboard\n  shortcut \u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eO\u003c/kbd\u003e.\n\n- To load an image right away, call `ivy` and then the path to the image.\n  For example: `ivy \"praise the sun.jpg\"`\n\n- Once you have loaded an image, you can view all the other images in the same\n  folder, cycling through the image files by either clicking on the arrow\n  buttons or hitting the arrow keys. Pressing the Home or End keys will take you\n  to the first and last images available respectively.\n\n- If you want to view images from disparate locations, Ivy can also create\n  a temporary collection, so that you only cycle through the set of images that\n  you specified. For example, `ivy ~/Downloads/cat*.jpg ~/Pictures/dog*.jpg`\n  will allow you to look at all your downloaded cat pictures and all the photos\n  you've taken of your dog, and only those photos. (Assuming, of course, that\n  your cat and dog pictures have \"cat\" and \"dog\" at the beginning of their\n  filenames.) The same effect occurs when selecting multiple images from File -\u003e\n  Open.\n\n- You may append files to a collection through File -\u003e Append, or with the\n  keyboard shortcut \u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eShift\u003c/kbd\u003e-\u003ckbd\u003eO\u003c/kbd\u003e. When using\n  the Append functionality on an empty collection (e.g. when first opening Ivy)\n  only the files selected will be available for viewing. Appending files is also\n  accomplished by the drag-and-drop feature: simply drag and drop images onto\n  the canvas and they will be appeneded to the collection.\n\n- To add a tag or list of tags to an image, simply enter them into the tag text\n  field, separated by a comma. E.g., `flower, beach, roller coaster` and then\n  press the \"Set\" button or the \u003ckbd\u003eEnter\u003c/kbd\u003e key.\n\n- If you are currently editing tags and wish to revert any unsaved changes, simply\n  hit the \u003ckbd\u003eEsc\u003c/kbd\u003e key. Hitting \u003ckbd\u003eEsc\u003c/kbd\u003e when there's no pending changes\n  to be saved will unfocus the tag text field.\n\n- To remove any set tags, simply delete the contents in the tag text field,\n  press the \"Set\" button or \u003ckbd\u003eEnter\u003c/kbd\u003e key, and the entry for that image will be\n  deleted.\n\n- To set a rating for an image, simply select a number (with a neat unicode\n  shining star) from the choice selection drop-down menu. 0 (the default)\n  means the picture hasn't yet been rated, -1 means the image should be rejected\n  from the rating system, and numbers 1 through 5 mean how you rate this image\n  against its peers (with 1 being the lowest and 5 being the highest). This\n  rating is also available from the Metadata Editor under the tag \"xmp:Rating\".\n\n- Sorting a collection may now be done from the View menu. Available sorting\n  methods are by alphabetical name (the default), by the highest image rating,\n  and by the lowest image rating.\n\n### Tag Browser\n\nIvy comes with a tag browser mode (available from the `View` menu or with\n\u003ckbd\u003eCtrl\u003c/kbd\u003e-\u003ckbd\u003eB\u003c/kbd\u003e) so that you may view every tag category and its\ncontents. Clicking on a tag will show the images you have tagged. Clicking on\nthe image will show a thumbnail preview which is itself clickable. Clicking on\nthe thumbnail button will tell Ivy to load the source image for further viewing.\n\nFrom the tag browser it is also possible to delete entire tag categories or\nrename them. Also, it is possible to edit the taglist of an image by clicking on\nan image path and selecting \"Edit Tags\" from the menu.\n\n### Animated GIF Support\n\nAnimated GIF support is currently marked as experimental. To animate a GIF,\nselect View -\u003e Animation. Due to the unstable nature of the related code, know\nthat some GIF's may not load properly or at all.\n\n### FLIF Support\n\n[FLIF](https://github.com/FLIF-hub/FLIF) support is marked as experimental! To\nload a FLIF file in Ivy, simply open like any other image. Currently, the FLIF\ndecoder is not optimized, so decoding takes much longer than for other formats.\n\n### Embedding Tags as XMP metadata\n\nIvy embeds the taglist as XMP metadata in the file itself (if that file supports\nXMP metadata). That way if you move your images around, the tags will stay the\nsame. However, the information in the database will then be out of date, so it\nis recommended that if you move files around, utilize Ivy's command-line\ninterface with the switch `-M` to ensure the changes are tracked.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flehitoskin%2Fivy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flehitoskin%2Fivy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flehitoskin%2Fivy/lists"}