{"id":13561517,"url":"https://github.com/peterlevi/ojo","last_synced_at":"2025-07-21T13:33:59.956Z","repository":{"id":8749126,"uuid":"10428076","full_name":"peterlevi/ojo","owner":"peterlevi","description":"A fast and great-looking image viewer with RAW support for Linux. Written in Python \u0026 JavaScript.","archived":false,"fork":false,"pushed_at":"2025-01-26T17:13:15.000Z","size":6516,"stargazers_count":39,"open_issues_count":14,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-19T20:48:28.382Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/peterlevi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-06-01T20:31:02.000Z","updated_at":"2025-04-08T07:34:23.000Z","dependencies_parsed_at":"2024-01-17T16:08:04.432Z","dependency_job_id":"8cd4eed0-bbd1-4405-b43b-e49a2ca83cf6","html_url":"https://github.com/peterlevi/ojo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterlevi/ojo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterlevi%2Fojo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterlevi%2Fojo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterlevi%2Fojo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterlevi%2Fojo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterlevi","download_url":"https://codeload.github.com/peterlevi/ojo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterlevi%2Fojo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266312057,"owners_count":23909744,"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","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-08-01T13:00:57.789Z","updated_at":"2025-07-21T13:33:59.912Z","avatar_url":"https://github.com/peterlevi.png","language":"Python","readme":"![Ojo Icon 128x128](http://i.imgur.com/C8RZmp2.png)\n\n# Ojo - a fast and pretty image viewer. [pronounced 'oho']\n\n## Ojo's goals:\n\n1. Ojo's general goal is to become the best image viewer for photography-related work on Linux. To serve as the first step in organizing images.\n2. It should start and show a single image as fast as possible - 90% of the time this is all that an image viewer is used for [it does now, need to keep it this way]\n3. It should look great and be very unobstrusive when viewing images, so as not to distract from the main content\n4. It should support RAW - this is lacking in most other images viewers. [it does now, for viewing, no export options]\n5. It should be easy to quickly zoom-in to 100% to a certain part of the image. [we have zooming to 100% now and fit-to-window, but no other-finer grain zooming options]\n6. It should provide some simple but convenient Trash, Copy and Move functionality. [nothing of these yet]\n\n## Tech stack\nOjo is based on these technologies: Python, GTK and HTML/JS/CSS with jQuery in an embedded WebKit.\nThe amazing ExifTool by Phil Harvey (https://exiftool.org/) is used for reading metadata from images.\n\n## Installation\nTo install on Ubuntu, Mint or other Ubuntu derivatives:\n```\nsudo add-apt-repository -y ppa:ojo/daily\nsudo apt-get update\nsudo apt-get install ojo\n```\n\n## Run from code and contribute\n1. First install ojo from the PPA above, this would pull all necessary dependencies. Alternatively, manually install the dependencies listed in [debian/control](debian/control).\n2. Clone repo\n3. Run [bin/ojo](bin/ojo), ojo should start.\n4. Hack away, and open a pull-request when ready, or better - immediately once you decide what you want do. For new features, please sync with me before you start - peterlevi AT peterlevi.com. \n\n## Keyboard shortcuts\n\n#### Browse and image modes\n`Enter` - toggles between single image / browse mode  \n`F11` - toggles fullscreen  \n`Esc` - clear Search, close EXIF info display, or exit Ojo entirely  \n`Esc` / `Alt-F4` - exit  \n`Ctrl-I` - show or hide EXIF info for the curent image \n\n#### Image mode:\n\n`Arrows` and `PgUp/PgDown` - move back and forth between images  \n`Home` / `End` - go to first/last image  \nPress and hold mouse to zoom to specific point at 100%, then hold and move to \"look around\"  \n`Z` - toggles zoom between 100% and Fit-to-window   \n(Partial zooming is not supported yet)  \n\n#### Browse mode:\n\n`Arrows` and `PgUp/PgDown` - navigate around  \n`Home` / `End` - go to first/last image or folder\n`Tab` / `Shift-Tab` - switch focus between files and folders list   \n`Enter` - select currently active link  \n`Backspace` / `Alt-Up` / `Ctrl-Up` - move one folder up  \n`Ctrl-/` - jump to the filesystem root  \n`Alt-Left` / `Alt-Right` - go back / go forward in history  \n`Ctrl +/=` / `Ctrl -` - increase / decrease size of the thumbnails  \n`F5` - reload current folder (file changes are not reflected automatically)  \n`Ctrl-F5` - refresh/recreate all thumbnails in the current folder  \n`Ctrl-F` or `type text directly` - enter search/filter mode.  \nUse this to filter images, folders and commands.  \nE.g. type `.jpg` to see just JPEG files. Or type `date` to focus the `Sort by date` command.\nThe filtered view over the images remains if you go into Image mode and start cycling the images.\nPress `Esc` to clear the filter and exit search mode (but keep in mind a second `Esc` will exit Ojo).\n\n## Screenshots\nRun Ojo with no parameters or by passing a path to a folder with images to start in Browse mode. Or press Enter while viewing a single image to enter Browse mode.\n![Ojo - Browse mode](https://user-images.githubusercontent.com/1457048/83980909-f81ebb80-a921-11ea-94a3-8ffeb567bb6f.png)\n\nRun Ojo with a path to an image to open it directly, or press Enter while in browse mode to open the selected image.\n![Ojo - Single image view](https://user-images.githubusercontent.com/1457048/83980913-fc4ad900-a921-11ea-96a1-15715572e5ef.png)\n\nThe convenient search and filtering is always at your tips - directly start typing words while in Browse mode and Ojo will filter any files, folders, bookmarks, recent files or options that match all the typed words. Use this also to filter by extension, e.g. type \".cr3\".\n![Search and filtering](https://user-images.githubusercontent.com/1457048/83981136-eccc8f80-a923-11ea-8175-c3a3c3eadd3c.png)\n\nFull EXIF viewing with search is available too, coming directly from the bundled amazing ExifTool by Phil Harvey (https://exiftool.org/).\n![EXIF Info using ExifTool](https://user-images.githubusercontent.com/1457048/83981137-ee965300-a923-11ea-8e31-95d8b5d2715f.png)\n\nOjo in the Launcher.\n![Ojo in the Launcher](https://user-images.githubusercontent.com/1457048/83980930-1e445b80-a922-11ea-98c3-92ce08c17a26.png)\n\n\n","funding_links":[],"categories":["Applications","应用"],"sub_categories":["Graphics","图形设计"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeterlevi%2Fojo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeterlevi%2Fojo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeterlevi%2Fojo/lists"}