Java Picture Organizer
Homepage: https://j-po.sourceforge.io/
JPO is a desktop program that helps you organise your digital pictures by putting them in collections that are saved as
plain XML files. You can label the picture, capture its location and associate it with Keywords.
When you open up a collection you can browse or search the pictures, skip through the thumbnails, share them by
email or generate a website. A picture viewer allows you to see the pictures in full screen with simple Zoom-in and
Zoom-out with the left and right mouse buttons or mouse wheel.
A fundamental design principle is that JPO doesn't alter your pictures. They stay unchanged on your disk unless you
ask JPO to move them somewhere or to delete them. It does allow you to "consolidate" all the picture files into
a directory.
JPO is not a photo editing application. There are many excellent packages out there with which you can touch up your
pictures. You can make JPO open such a program for you.
Richard Eigenmann from Zürich has spent the last 22 years building and improving JPO as an OpenSource project. He
hopes you will find it useful and enjoys feedback.
Visit the SourceForge.net download page by clicking this green button. Note that the download starts directly after 5
seconds. Install the application like any other Windows application. Note that the developer has not paid for Microsoft
Certifications and you will get a lot of warnings about the application being from an "Unknown Publisher". JPO does
not collect data about you. Check the Privacy Policy. If you
know how I can improve this at low cost, please let me know.
You can remove it just like any other windows
application by opening the Start menu, clicking on the cogwheel icon (Settings), choosing Apps in the Settings Window
that opens up, scroll down to JPO and there click on the uninstall button. It is not supposed to leave any files
or registry settings behind.
Alternatively, visit the SourceForge download area
I apologise for the mess SourceForge have made of this page with all the ads.
Many Laptops have super High Resolution Displays (HiDPI) which Java doesn't deal with very well by default. The UI then
shows up with unusably small fonts and icons. You can fix this by setting the environment variables.
Set the GDK_SCALE environment variable to the desired scale factor. This variable controls the scaling of the UI elements.
Replace 2 with your preferred scale factor.
export GDK_SCALE=2
Set the GDK_DPI_SCALE environment variable to the inverse of the GDK_SCALE value. This variable adjusts the DPI scaling
of fonts and other elements to maintain their proper size. For example, if you set GDK_SCALE to 2, then GDK_DPI_SCALE should be set to 0.5.
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
JPO is an Open Source project and you can contribute to it. To connect with the author simply send an email to
<a href="mailto:richard.eigenmann@gmail.com"richard.eigenmann@gmail.com
As of 2025 JPO is being developed with the community edition of IntelliJ IDEA.
Once you have your IntelliJ IDEA installed and working you can clone the JPO repository from GitHub and open it in IntelliJ IDEA.
git clone https://github.com/richardeigenmann/JPO.git
To run the project go to the Gradle Tasks Window click
Jpo > Tasks > application > run
.
Or if you prefer the GUI, you can do the following:
On the Welcome screen click on Check out from Version Control
Enter the URL https://github.com/richardeigenmann/JPO.git
and click Clone
Confirm You have checked out and IntelliJ IDEA project file: .../build.gradle
On the right margin you have a tab Gradle
which gives you access to the tasks
Pick JPO > Tasks > build > build
and it should download dependencies compile and run the tests
export LANG=en_US.UTF-8
sourcetrail
# Project > New Project
# give it a name: JPO
# tell it where you want it to create it's working files
# Add Source Groups
# Pick Java > Java Source Group from Gradle > Next
# Java Standard: 12
# Gradle Project File: Jpo/build.gradle
# Next > Next
# on the New Project screen click on the plus (+) icon
# Add a new Source Group Type - Java - Empty Java Source Group
# Java Standard: 12
# Files and Directories to index: src/main/java
# Next > Create
# Classes > Main > ApplicationStartupRequest > ApplicationEventHandler > handleApplicationStartupRequest
flatpak-builder build-dir --force-clean io.sourceforge.j-po.json
flatpak-builder --run build-dir io.sourceforge.j-po.json flatpak-run.sh
flatpak-builder --repo=repo --force-clean build-dir io.sourceforge.j-po.json
flatpak --user remote-add --no-gpg-verify --if-not-exists tutorial-repo repo
flatpak --user install tutorial-repo org.richinet.jpo
flatpak run org.richinet.jpo
flatpak remove org.richinet.jpo
Ensure you have Netbeans set up:
Check that Netbeans is using the correct version of Gradle by opening Tools > Options > Java > Gradle > Execution . The Gradle Distribution should be Custom and point at your Gradle directory i.e. C:\Gradle\gradle-6.0.1 (knowing that the gradle.exe is actually in C:\Gradle\gradle-6.0.1\bin\gradle.exe)
On the menu pick Team > Git > Clone
Enter the Repository URL https://github.com/richardeigenmann/JPO.git
and click Next
On the panel the tick should be on the "master" branch. Click Next > Finish
To run the application, click on Projects in the left Panel and expand the JPO project in the left panel, expand the Build Scripts item and click on the green build.gradle item. In the Navigator panel underneath, the various Gradle tasks will appear. Click on Build > run to launch the app.
JPO is a Java Swing application which uses the Guava EventBus
to order and fulfil the GUI tasks.