Skip to content

mwhitney57/PiPAA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

191 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


PiPAA

Picture-in-Picture Anything Anywhere — Play almost any media, whatever the source, within simple, always-on-top windows.

Designed for and Tested on Windows PiPAA v0.9.4 Written in Java GPL License v3.0

Table of Contents

📃 Description

Create any number of independent windows, each capable of playing its own media, whether it be video, images, or audio! Since each window is in an always-on-top state, it will stay above all other windows on your system, which is great for multitasking. Windows can be moved, resized, duplicated, fullscreened, minimized, hidden, and more, all with simple keyboard and mouse controls.

Once the app is started, the PiPAA icon will appear in the system tray, and an empty window will open by default. The tray is your control hub for windows and configuring the application. It also allows you to fully exit the application.

Media can be played from a local source on your computer, and it can often be downloaded straight from the web. Either way, simply drag and drop or copy and paste your media into a PiPAA window to start playback. If a site or media type doesn't work, check out the configuration via the tray icon. If things still aren't working, feel free to drop an Issue with details, and a developer can look into it.

With no windows running, PiPAA is designed to take up as little processing power and memory as possible. Since the app is programmed in Java, it may hold onto more memory than it needs at any given time. If it does, it should let go of that memory once your computer needs it. Otherwise, the memory will likely be released as the app idles. These factors allow for PiPAA to be used when needed, then forgotten about, running in the background until you need it again.

✨ Features

  • Play media locally from your computer, or remotely from the web!
  • Run as many media windows as you need, within the limits of your computer.
  • Control windows and media with ease via simple keyboard and mouse shortcuts.
  • Advanced functionality, such as downloading/caching media from the web.
  • Display embedded album art on audio files, or add your own.
  • Configurable, over-the-air (OTA) updating ensures you stay up-to-date. Be notified when an update is available.
  • Themes! Custom themes coming soon.
  • Much more! Read on for more info or download PiPAA from the Releases section.

📸 Images

With numerous features to explore, here's an introduction to some basics of PiPAA!

Tray Menu

PiPAA Tray Menu.

Configuration Menu

PiPAA Configuration Menu.

PiPAA Dark Theme.

Loading Media

PiPAA Web Load.

PiPAA Web Load Finished.

PiPAA Web Load Cache.

Resizing Windows

PiPAA Resizing Windows.

PiPAA Resizing Windows Result.

PiPAA Duplicate Windows.

YouTube Example

PiPAA YouTube Loading Example.

PiPAA YouTube Loading Example Progress.

PiPAA YouTube Loading Example Done

Multitasking

PiPAA Multitasking.

Note

Click on a title to display the associated image(s).

💾 Installation and Usage

PiPAA is a semi-portable application with no dedicated installer. Just download and run! It should work with almost any machine running Windows 10 or 11. It may also run on older versions of Windows, but this has not been tested.

Pick an option below:

✔️ I have Java 17 or later installed.

  1. Download either PiPAA.jar or PiPAA.exe from a release.
  2. Run the application.

ℹ️ If you like having an application icon, you may prefer to use the .exe over the .jar, but they should function the same on a computer with Java installed.

❌ I do not have Java 17 or later.

Download the PiPAA-with-Java.zip asset from a release. This ZIP archive contains a Java bundle, so you are not required to install Java!

  1. Extract PiPAA-with-Java.zip.
  2. Run PiPAA.exe within the extracted folder.

⚠️ Do not move PiPAA.exe outside of this folder unless you have Java installed on your system. It will not be able to locate the Java bundle it shipped with and you will receive an error.

That's it! You are set and PiPAA should be working on your system.

Note

PiPAA is currently developed using Java 17, but will use Java 21 by release of v1.0.0. You do not need to update to Java 21 if you use the pre-packaged .zip, which contains a portable Adoptium build of Java for you.

⚙ Loading Media

Media can be loaded in two ways:

  1. Drag and Drop
  2. Copy and Paste
  • Media can be dragged and dropped into any PiPAA window. If the window is empty, it will load there. If the window has media, a new window will be opened for it.
  • Media can originate from a local file, or from a web source (i.e. YouTube, Google Images, etc.).
  • You can quickly paste a link, source location, or the media itself by double-clicking inside an empty window.
  • Loading web media can take some time, especially if PiPAA has to download it in order to start playback.

Tip

You can quickly load drag and drop images if you disable Prefer Links with Drag and Drop in the PiPAA configuration, but they may be lower resolution.

▶ Media Playback and Display

There are many controls available to you once media has loaded. They may differ depending on where the media was loaded from and what kind of media it is.


The following is more technical. Continue if you would like to understand how PiPAA works or its advanced features.

📁 Application Folder

After running PiPAA, an application folder will be created at %APPDATA%\PiPAA. PiPAA almost exclusively operates within this folder. PiPAA extracts its dependencies to %APPDATA%\PiPAA\bin. Any cached media, by default, will be saved and categorized within %APPDATA%\PiPAA\cache.

🍪 Web Media and Cookies

PiPAA can play media from many web sources. To do so, it may have to cache the media, which means downloading it to the application's cache folder. You can clear the cache at any time in the PiPAA configuration panel or by manually deleting the cache folder.

Important

Some websites will not let you play or download media from them without being logged in. For these sites, PiPAA can utilize a Netscape HTTP Cookie File containing login cookies. The sites' cookies are stored in this file and used to authorize downloads. To do this, follow the guide.

🔌 Using yt-dlp Plugins with PiPAA

Since PiPAA utilizes the open-source project yt-dlp, it can also utilize plugins for yt-dlp that the user provides. These plugins can provide many benefits, including the ability to load media from additional sites that yt-dlp does not natively support.

For more information on how to use plugins, check the Plugins section on the yt-dlp repository. This is also where you can find how the directories should be laid out within the folder PiPAA provides, located here: %APPDATA%\PiPAA\bin\yt-dlp-plugins

Custom VLC Installation

Under the hood, PiPAA uses libVLC, developed by the VideoLAN Organization and used in VLC media player, to play video and audio. This library is bundled with PiPAA and extracted to the application folder when the application is first launched. PiPAA allows the user to utilize the VLC installation on their system, if preferred. This option is located here: PiPAA Tray Icon -> Config... -> Advanced -> Use System VLC

Warning

Enabling this option is generally not recommended, as it can slow down application startup and cause issues if using an old version of VLC.

⌨ Shortcuts

PiPAA is designed to be powerful and easy-to-use. There are a bunch of default shortcuts available to get things done quicker and in a more convenient way. Please reference the tables below with the available shortcuts and how they can be used.

🔑 Key
Symbol Meaning
LMB Left Mouse Button
MMB Middle Mouse Button
RMB Right Mouse Button
* Respects CTRL and SHIFT modifiers:
CTRL Increases severity or scale of shortcut. (e.g. skip forward more, raise volume more.)
SHIFT Decreases severity or scale of shortcut. (e.g. skip forward less, lower volume less.)
CTRL + SHIFT Maximum severity or scale of shortcut to bounds. (e.g. skip backwards to start, max volume, reset playback speed to 1x.)
✂️ Default Shortcuts Table
Action Keyboard Mouse Works on Video Works on Audio Works on Images
Play/Pause Spacebar LMB ✔️ ✔️
Seek Forwards* Right Arrow MMB -> RMB ✔️ ✔️
Seek Backwards* Left Arrow MMB -> LMB ✔️ ✔️
Volume Up* Up Arrow Scroll Up ✔️ ✔️
Volume Down* Down Arrow Scroll Down ✔️ ✔️
Increase Playback Rate* + RMB -> Scroll Up ✔️ ✔️
Decrease Playback Rate* - RMB -> Scroll Down ✔️ ✔️
Mute / Unmute M ✔️ ✔️
Global Mute / Unmute CTRL + SHIFT + M ✔️ ✔️
Seek to 0%, 10%, ... 90% 0, 1, ... 9 ✔️ ✔️
Cycle Audio Track T ✔️ ✔️
Add Artwork to Audio File A ✔️
Flash Window Borders B ✔️ ✔️ ✔️
Fullscreen F Double-Click LMB ✔️ ✔️ ✔️
Show Window and Media Information I ✔️ ✔️ ✔️
Relocate Window Back On-Screen L ✔️ ✔️ ✔️
Move Window RMB and Drag ✔️ ✔️ ✔️
Add Window SHIFT + A Double-Click MMB ✔️ ✔️ ✔️
Hide Window CTRL + H ✔️ ✔️ ✔️
Hide All Windows CTRL + SHIFT + H ✔️ ✔️ ✔️
Duplicate Window SHIFT + D ✔️ ✔️ ✔️
Close Window ESC Triple-Click RMB (Empty Window) ✔️ ✔️ ✔️
Close All Windows SHIFT + ESC ✔️ ✔️ ✔️
Paste Media (Open from Clipboard) CTRL + V Double-Click LMB (Empty Window) ✔️ ✔️ ✔️
Reload Media CTRL + R ✔️ ✔️ ✔️
Open Media Location (if Local or Cached) CTRL + O ✔️ ✔️ ✔️
Save Current Media to Cache CTRL + S ✔️ ✔️ ✔️
Quick-Save Current Media to Cache CTRL + ALT + S ✔️ ✔️ ✔️
Close Media CTRL + C Triple-Click RMB ✔️ ✔️ ✔️
Close and Delete Cached Media CTRL + SHIFT + D ✔️ ✔️ ✔️
Zoom Scroll Up/Down ✔️
Reset Zoom CTRL + MMB ✔️
Pan (While Zoomed) LMB and Drag ✔️

Note

Shortcut customization will come in a future release. Changes to the underlying system have already been made.

📜 Guides

A collection of simple guides to help new PiPAA users.

How to create and use a cookies file with PiPAA.

  1. Download a browser extension to easily export your cookies, or export them manually. A few open-source solutions:
  2. Go to the website you would like to export your cookies from.
  3. Export the cookies from that site to a Netscape HTTP Cookie File. If you already have a cookies.txt file, copy the content of the new file to your current one.
  4. Ensure the file is named cookies.txt and is located in %APPDATA%\PiPAA.

It is not recommended to export your cookies from every site, as that is unnecessary and could include critical logins. Only give access to the specific sites you might use with PiPAA.

How to bypass Windows Defender SmartScreen warning.

Windows Defender SmartScreen may display a warning when you first try to launch the application. This warning often displays when an application does not have a verified publisher. It is not an indicator of malicious code. To bypass this warning and run the application:

PiPAA SmartScreen1.

PiPAA SmartScreen2.

Upgrade from PiPAA with Java 17 to PiPAA with Java 21.

By the release of v1.0.0, PiPAA will migrate from using Java 17 to Java 21. This upgrade comes with many benefits for both the developers and users of PiPAA. Once the change is made, you may have to upgrade your Java version.

Starting with v0.9.5, the pre-packaged Java build within PiPAA-with-Java.zip will be Java 21. Therefore, if you are using any version from v0.9.5 onwards you should not need to upgrade!

Still don't know what to do? Pick an option below to see if you need to upgrade:

✔️ I am using PiPAA v0.9.5 or later and downloaded PiPAA-with-Java.zip.

You do not need to upgrade! If something goes wrong, you can always redownload; you will not lose your configuration.

❌ I am using PiPAA v0.9.4 or earlier and only have older versions of Java on my system.

Download the PiPAA-with-Java.zip asset from a release. This ZIP archive contains a Java 21 bundle, so you are still not required to install Java!

  1. Extract PiPAA-with-Java.zip.
  2. Run PiPAA.exe within the extracted folder.

⚠️ Do not move PiPAA.exe outside of this folder unless you have Java installed on your system. It will not be able to locate the Java bundle it shipped with and you will receive an error.

Note

Video demonstrations and more guides will likely come in the future.

🤔 F.A.Q.

What is the point of PiPAA? How should I use it?

At its core, PiPAA is a basic, lightweight media player that supports loading media from the web. However, it has a few other key features which differentiate it. The always-on-top behavior of the windows allows for easy multitasking. Only have one monitor? No problem. You can still enjoy your content and you get far more control than, for example, the built-in picture-in-picture windows on most browsers. Here's a table with a few of the feature differences:

Feature Most Browser PiP Windows PiPAA Windows
Stay on top of other windows. ✔️ ✔️
Full Media Player Controls ✔️
Support for Images ✔️
Support for Audio ✔️
Easy and Limitless Resizing ✔️
Save Media ✔️
Lightweight* ✔️

*The browser PiP windows themselves may be "lightweight" but they require the entire browser to be open, and browsers are notorious memory hogs.

You can also use PiPAA as a media downloader. In fact, it has potential to be much faster than other downloaders. All it takes is a simple copy/paste or drag and drop onto a PiPAA window. In some cases, the media is instantly saved.

If you have any suggestions on how to make PiPAA better in any way, even as simple as changing a shortcut, please feel free to create an Issue.

Why are PiPAA windows not showing up above my fullscreen application, like a game?

Many applications, especially games, have the option to run in fullscreen mode. There are two main types of fullscreen modes. Without getting too technical, Exclusive Fullscreen is when the application takes up the entire screen and gets more control over what is displayed. Other windows, even always-on-top ones like PiPAA's, get suppressed behind it, so they do not show up on top of it. Windowed Fullscreen or Borderless Fullscreen is when the window is simply maximized to take up the entire screen, but it does not have the additional permissions and complexity of Exclusive Fullscreen.

If your application is running in Exclusive Fullscreen mode, PiPAA windows will not be able to show on top of it. This is a limitation of the app in its current state, but it could be possible to add this functionality in the future. PiPAA windows should still show up on top of other types of fullscreen windows. If a window shares the same always-on-top property as a PiPAA window, they will have equal priority, and the last focused window will be on top.

How do I update PiPAA?

The easiest way to update PiPAA is using the built-in over-the-air (OTA) updating feature. It should be enabled by default, but you can tweak the update settings within the Updates panel. Go to PiPAA Tray Icon -> Config... -> Updates. Here you can adjust the update frequency, as well as which PiPAA builds you would like to receive when checking for updates. Release builds are recommended and will be the most stable. If you are more technical and accepting of bugs, you can use Beta or Snapshot builds for the bleeding edge of PiPAA development.

If you prefer updating manually, you can simply replace the PiPAA.jar or PiPAA.exe file you downloaded previously. Simple as that!

I got a Windows Defender SmartScreen warning? Is this bad? How do I bypass it?

This is completely normal. When you first launch a new application that does not have a verified publisher, you may get a Windows Defender SmartScreen pop-up. This is just a precautionary warning, and it can be quickly bypassed with two clicks. Check the guide here.

What sites or types of media does PiPAA not support?

PiPAA supports a wide variety of formats and sites. PDF files are not supported right now, but that will likely change in the future. Unfortunately, PiPAA will likely not work with certain paid streaming sites (i.e. Netflix).

If you found a site or file that you feel should work but doesn't, let me know! Consider leaving an Issue.

Is this a portable app?

In many ways, PiPAA is a portable app. You just need to download or transfer the executable and run it; that's it. However, a truly portable application is self-contained, keeping everything in one directory. PiPAA does not strictly adhere to this as of v0.9.4:

  • PiPAA's application folder is stored in the user's AppData, specifically at %APPDATA%\PiPAA on Windows.
  • Additional, small cache folders could be created in the user folder %USERPROFILE% when caching media.
  • As with most Windows applications, temporary files are created in %TEMP%.

Any files or directories created by PiPAA can be safely deleted at any time, only losing things like your user configuration and cached media.

Note

Click on a question to see the answer.

🔐 Privacy

All projects I create adhere to a basic principle. Privacy first. Do not track the user. Only collect data that is absolutely necessary for the application to work, and be maximally transparent if doing so. I write this section not because I feel obligated to, but because I want to. I care about privacy. I care about transparency.

In this case, PiPAA does not perform any tracking or collection of data. It was designed to be noninvasive and require very little of your system under normal use. PiPAA relies on multiple projects maintained by other developers. These projects have been listed and linked to in full below in the Binaries and Libraries sections, so you can easily get more information about their privacy practices. To my knowledge, none of PiPAA's dependencies track the user. Please reach out if you know this to be false so that I may look into it further.

Connections

  • PiPAA offers over-the-air (OTA) updating. This makes basic requests to the PiPAA API to get the available versions. No user data is sent to the API. Each request is anonymous. You can view the source code for this part of the application here. Furthermore, you can completely disable automatic update checks within the configuration.
  • The yt-dlp and gallery-dl projects that PiPAA utilizes also feature OTA updating. This can be similarly controlled in the application's configuration, including being disabled entirely. However, it is not recommended to do so. These projects are critical to the process of playing and caching media from the web, and the updates often keep them working properly. If disabled and certain sources stop working, this is likely why.
  • Besides that, PiPAA will only make connections to the Internet to perform tasks at the user's discretion (not randomly in the background).
    • For example, when PiPAA loads a video from the web, it must obviously make a request to that URL.

🚩 Known Issues

PiPAA is actively being developed and not yet at a Release v1.0 state. Major known issues will be cataloged here for maximum transparency until then.

  • Background processes, such as downloading/caching media, may continue running until they complete, even after the application closes.
    • This is due to how PiPAA asynchronously executes these tasks without tracking or monitoring them.
    • A fix has been implemented and is being tested in the latest Snapshot release.
    • If you encounter this issue in the meantime, open Task Manager and terminate the processes. Look for processes named:
      • javaw
      • yt-dlp
      • gallery-dl
      • ffmpeg
      • magick

🧱 Building

PiPAA should be simple to build on your own. It requires Java 17 or later and Maven. If you already have an IDE such as Eclipse, Maven should already be available within the application.

Download the project code archive. If using Eclipse, import as a Maven project. Run Maven install on the project's pom.xml. Use the shaded JAR file from the output. To wrap within an EXE, you can use launch4j.

⚙ Binaries

Projects bundled with PiPAA which help make it work, even if certain files are missing on your system.

For video and audio playback.

  • libVLC @ https://www.videolan.org/vlc/libvlc.html
    • Licensed under LGPL 2.1
    • Bundled with PiPAA and exported to the application's folder in %HOMEPATH%\AppData\Roaming\PiPAA if not using system VLC installation in the configuration.
    • No changes to library's source code.

For media caching, attribution, and sourcing.

  • yt-dlp @ https://github.com/yt-dlp/yt-dlp
    • Licensed under Unlicense
    • Bundled with PiPAA and exported to the application's bin folder in %HOMEPATH%\AppData\Roaming\PiPAA\bin if not using system binaries in the configuration.
    • No changes to library's source code.
  • gallery-dl @ https://github.com/mikf/gallery-dl
    • Licensed under GPL 2.0
    • Bundled with PiPAA and exported to the application's bin folder in %HOMEPATH%\AppData\Roaming\PiPAA\bin if not using system binaries in the configuration.
    • No changes to library's source code.

For media conversions.

  • FFmpeg @ https://github.com/FFmpeg/FFmpeg
    • Licensed under LGPL 2.1+/GPL 2.0+
    • Bundled with PiPAA and exported to the application's bin folder in %HOMEPATH%\AppData\Roaming\PiPAA\bin\ffmpeg if not using system binaries in the configuration.
    • No changes to library's source code.
  • ImageMagick @ https://github.com/ImageMagick/ImageMagick
    • Licensed under ImageMagick License
    • Bundled with PiPAA and exported to the application's bin folder in %HOMEPATH%\AppData\Roaming\PiPAA\bin\imagemagick if not using system binaries in the configuration.
    • No changes to library's source code.

📖 Libraries

For VLC/libVLC integration, allowing video and audio playback. Huge thanks to the developers of vlcj, including caprica.

For a much prettier and more functional system tray experience.

For simplifying the configuration window's layout.

Miscellaneous:

ℹ Additional Information

Many thanks again to all developers who created or contributed to the projects listed in the Binaries and Libraries sections. These libraries heavily streamlined the process of developing PiPAA, and they have vastly increased its capability.

The PiPAA-with-Java.zip archive found in each release contains an Adoptium JRE build for Windows x64. If you have a Windows aarch64 system, you can download a replacement here.

System Compatibility
PiPAA was designed just for computers running versions of Windows. Other operating systems are highly unlikely to work. Support for them may come with future updates, but do not expect positive results on other systems until then.

Java Compatibility
PiPAA is built using Java 17, and will be using Java 21 by release of v1.0.0. If you do not have Java 17 or higher installed, you may download the PiPAA-with-Java.zip asset from a full PiPAA release. Unzip after downloading and run PiPAA.exe. Keep the application in the unzipped folder so that it can use the provided Java build. To update, simply replace the PiPAA.exe file with the new one. Instead, you can use PiPAA's over-the-air updating feature within the app to automatically update for you.

About

Picture-in-Picture Anything Anywhere (PiPAA) makes it easy to play almost any media, whatever the source, within simple, always-on-top windows.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages