Could we help you? Please click the banners. We are young and desperately need the money
If you're running Linux and using Flatpak applications, you may have encountered a frustrating issue: your printer simply doesn't appear in the print dialog of certain applications. You know your printer works perfectly fine in native applications, but when you try to print from a Flatpak app like Brave Browser, Opera, or even LibreOffice, you only see a "Save as PDF" option or no printer at all. This is a common problem that affects many Linux users, and fortunately, it has a simple solution.
This guide will walk you through understanding why this happens and how to fix it permanently with just a few terminal commands. Whether you're a beginner Linux user or a system administrator managing multiple workstations, this solution will help you restore full printing functionality to your Flatpak applications.
CUPS (Common Unix Printing System) is the standard printing system used on Linux and Unix-like operating systems. It manages print jobs, queues, and printer drivers, acting as the intermediary between your applications and your physical or network printers. When an application wants to print something, it communicates with the CUPS service to discover available printers and send print jobs.
CUPS stores its configuration files in /etc/cups and typically runs as a system service that applications can connect to through a socket (usually located at /var/run/cups/cups.sock). For an application to detect and use printers, it needs access to both the CUPS configuration files and the CUPS socket.
Flatpak is a modern application distribution system for Linux that runs applications in isolated containers or "sandboxes." This sandboxing provides several benefits: it improves security by limiting what an application can access, prevents conflicts between different application versions, and makes applications more portable across different Linux distributions.
However, this security comes at a cost: by default, Flatpak applications have very limited access to your system. They run in their own isolated environment and cannot access system resources unless explicitly granted permission. This includes access to hardware devices, network services, and system configuration files—including the CUPS printing system.
When you install a Flatpak application, the package maintainer defines a set of default permissions for that application. Some applications, like Chromium or Firefox, are packaged with printing permissions already enabled because the maintainers included the necessary CUPS socket access and filesystem permissions in the application's manifest.
Other applications, particularly those based on Chromium (like Brave Browser and Opera), or applications like LibreOffice, may not have these permissions enabled by default. This doesn't mean the applications themselves are broken—they work perfectly fine—but the Flatpak sandbox is blocking their access to CUPS, preventing them from discovering your printers.
The fix is straightforward: we need to grant Flatpak applications permission to access the CUPS configuration directory. This is done using the flatpak override command, which allows you to modify an application's permissions after installation.
To grant CUPS access to a specific Flatpak application, use the following command structure:
flatpak override --user --filesystem=/etc/cups:ro APPLICATION-ID
The --filesystem=/etc/cups:ro parameter grants read-only access to the CUPS configuration directory. The :ro suffix ensures the application can read the configuration but cannot modify it, maintaining system security.
Here are commands for the most commonly affected applications:
# Brave Browser
flatpak override --user --filesystem=/etc/cups:ro com.brave.Browser
# Opera Browser
flatpak override --user --filesystem=/etc/cups:ro com.opera.Opera
# Google Chrome
flatpak override --user --filesystem=/etc/cups:ro com.google.Chrome
# Microsoft Edge
flatpak override --user --filesystem=/etc/cups:ro com.microsoft.Edge
# Vivaldi Browser
flatpak override --user --filesystem=/etc/cups:ro com.vivaldi.Vivaldi
# LibreOffice
flatpak override --user --filesystem=/etc/cups:ro org.libreoffice.LibreOffice
# OnlyOffice
flatpak override --user --filesystem=/etc/cups:ro org.onlyoffice.desktopeditors
# GIMP
flatpak override --user --filesystem=/etc/cups:ro org.gimp.GIMP
# Inkscape
flatpak override --user --filesystem=/etc/cups:ro org.inkscape.Inkscape
# Okular (PDF Viewer)
flatpak override --user --filesystem=/etc/cups:ro org.kde.okular
# Evince (Document Viewer)
flatpak override --user --filesystem=/etc/cups:ro org.gnome.Evince
# Scribus (Desktop Publishing)
flatpak override --user --filesystem=/etc/cups:ro net.scribus.Scribus
If you want to grant CUPS access to all Flatpak applications on your system simultaneously, you can use the override command without specifying an application ID:
flatpak override --user --filesystem=/etc/cups:ro
This creates a global override that applies to every Flatpak application you have installed or will install in the future. This is particularly useful for system administrators managing multiple workstations or for users who frequently install new Flatpak applications and want to avoid this issue entirely.
Note that this command affects only your user account (due to the --user flag). If you want to apply this system-wide for all users, replace --user with --system:
sudo flatpak override --system --filesystem=/etc/cups:ro
In most cases, granting filesystem access to /etc/cups is sufficient. However, if you're still experiencing issues after applying the fix above, you may also need to ensure the CUPS socket permission is enabled. Many Flatpak applications already have this permission by default, but you can verify or enable it with:
# For a specific application
flatpak override --user --socket=cups com.brave.Browser
# For all applications
flatpak override --user --socket=cups
The --socket=cups parameter grants the application access to communicate with the CUPS printing service through its socket interface. Combined with filesystem access to the configuration directory, this ensures complete printing functionality.
After applying the override commands, you should restart the affected applications. Simply close them completely and reopen them. Then try to print a document or web page:
You should now see all your configured CUPS printers in the application's print dialog, just as you would in native applications.
If you want to verify what permissions a Flatpak application currently has, you can use the following command:
flatpak info --show-permissions APPLICATION-ID
For example:
flatpak info --show-permissions com.brave.Browser
This displays all the permissions granted to the application, including filesystem access, socket access, and other capabilities. Look for entries like sockets=cups in the [Context] section to confirm that CUPS access is enabled.
You might wonder whether granting these permissions compromises the security benefits of Flatpak sandboxing. The answer is: minimally. The permissions we're granting are:
These are reasonable permissions for any application that needs printing functionality. The application still runs in its sandbox and cannot access other parts of your system unless explicitly permitted. You're simply giving it the minimum necessary access to fulfill its printing requirements.
While this fix solves the printing issue for Flatpak applications, it's worth noting that some users prefer to install certain applications using native package formats (.deb, .rpm, or distribution repositories) instead of Flatpak. Native packages typically don't have these sandboxing restrictions and will work with CUPS out of the box.
Consider using native packages if:
However, Flatpak offers significant advantages in terms of security, isolation, and cross-distribution compatibility, making it a preferred choice for many users once the necessary permissions are configured.
If you prefer a graphical interface over terminal commands, you can use Flatseal, a permissions manager for Flatpak applications. Flatseal provides a user-friendly way to view and modify Flatpak permissions without using the command line.
To install Flatseal:
flatpak install flathub com.github.tchx84.Flatseal
Once installed, launch Flatseal, select the application you want to modify, scroll down to the "Filesystem" section, and add /etc/cups:ro to the list of allowed paths. You can also enable the "Printing system (cups)" option in the "Socket" section.
The issue of printers not appearing in Flatpak applications is a common frustration for Linux users, but it's easily resolved by understanding how Flatpak sandboxing works and granting the necessary CUPS permissions. With just a single command, you can restore full printing functionality to any Flatpak application.
Whether you choose to fix individual applications as needed or apply a global override for all Flatpak apps, you now have the knowledge to manage printing permissions effectively. This solution balances security with functionality, allowing your Flatpak applications to access printers while maintaining the isolation benefits of containerized applications.
Remember that after applying these permissions, you may need to restart the affected applications for the changes to take effect. If you continue to experience issues, verify that your CUPS service is running correctly and that your printers are properly configured in your system settings.