gowall is a free, open source photo & video editors project written in Go and released under MIT. It has 2,313 GitHub stars, 37 forks and 13 open issues, and was last pushed yesterday. On this registry it ranks #47 of 68 tracked projects in Photo & Video Editors, with 5 head-to-head comparisons available.

What is gowall?

Gowall is a command-line image-processing toolkit for Linux, macOS, and Nix users who want to recolor wallpapers and icons to a theme, run OCR, compress, and upscale images from the terminal.

What it is

Gowall is an MIT-licensed image-processing CLI written in the Go ecosystem. It began as a tool to recolor an image — specifically a wallpaper — to any color scheme or palette, and has since grown into what its README describes as a "swiss army knife of image processing," covering OCR, image upscaling, compression, and more. Despite being a CLI tool, it includes an image-preview feature that prints images directly in the terminal, and it supports Unix pipes and redirection, reading from stdin and writing to stdout.

The concrete problem it solves is matching visual assets to a chosen desktop aesthetic and handling routine image tasks without a GUI editor. It replaces manual recoloring work in an image editor with a single command that maps an image onto themes such as Catppuccin, Dracula, Everforest, Gruvbox, Nord, Onedark, Solarized, and Tokyo-dark/storm/moon, plus a longer list including Kanagawa, Material, Melange, Night Owl, Rose Pine, and Synthwave 84. Custom themes can be defined in ~/.config/gowall/config.yml, and gowall list shows all themes, both default and user-created.

Key capabilities

  • Recolor an image or wallpaper to a supported theme, and recolor SVG and ICO icons to match a theme.
  • Extract text from images and PDFs via OCR, supporting 9+ providers across traditional OCR, visual language models, and hybrid methods.
  • Compress png, jpeg, jpg, and webp images to reduce file size, and change formats between them (for example, .webp to .png).
  • Upscale image resolution using adversarial networks while preserving or improving quality, and extract the dominant colors from an image, similar to pywal.
  • Transform an image into pixel art, remove the background, and replace a specific color within an image.
  • Create a GIF from a set of images treated as frames, with a specified delay and loop count.
  • Apply effects including mirror, flip, grayscale, brightness changes, invert colors, and drawing borders or grids on the image.

Who uses it and how

  • Desktop customizers who want wallpapers, icons, and extracted palettes to line up with a single theme such as Gruvbox or Tokyo Storm, managing those themes through ~/.config/gowall/config.yml.
  • Users who batch routine image work in scripts, relying on stdin/stdout pipes and redirection to chain Gowall with other command-line tools.
  • Anyone performing text extraction from documents, reading from images and PDFs and choosing between traditional OCR, VLM, or hybrid providers depending on the task.
  • People working with mixed image formats who convert between webp, png, and jpeg, compress assets, and upscale lower-resolution images.
  • Users browsing the community-voted daily wallpapers feature for new backgrounds.

Getting started

The preferred method is to grab the latest .tar.gz from the release section for your operating system and architecture, extract the binary named gowall, and place it in your $PATH with sudo cp gowall /usr/local/bin/; alternatively install it with brew install gowall, yay -S gowall from the AUR, or sudo dnf copr enable achno/gowall && sudo dnf install gowall on Fedora.

How it compares

Among similar tools, Gowall sits at the intersection of CLI color-palette extractors like pywal and general image converters, but it bundles OCR, upscaling, compression, GIF creation, and background removal into a single binary rather than requiring separate programs for each. Its built-in theme library and custom-theme config make it aimed specifically at desktop theming workflows rather than at general-purpose image editing.

When to use it — and when not to

Because OCR requires 9+ providers and upscaling uses adversarial networks, a user should expect to configure external provider credentials and dependencies rather than relying purely on local, offline operation. It is not the right pick for someone who wants a graphical image editor or expects polished, GUI-driven workflows, and it is written in Go rather than being a script a casual user can extend lightly. The README notes that documentation and commands reflect only the latest released version, so users installing via a package manager should check gowall -v against the release page, since packages such as Homebrew may lag behind at v0.2.0, and with 13 open issues there is a visible backlog of unresolved reports.

project readme (upstream, from github) — read inline
Design By Achno



  
 Overview 
 
    
 Installation 
 
    
 Contributions 
 
 




Overview :framed_picture:

Gowall started as a tool to convert an image ( specifically a wallpaper ) to any color-scheme / palette you like! It has now evolved to a swiss army knife of image prosessing offering (OCR,Image upsacling,image compression and a lot more)

Docs

Gowall is really well documented with visual examples: Gowall Docs


Features

❗ Although Gowall is a CLI tool, it has an Image preview feature that allows printing images directly in the terminal. See Gowall Terminal Image preview

  • Convert Wallpaper's theme – Recolor an image to match your favorite + (Custom) themes (Catppuccin...).
  • Image compression - Reduce the size of png,jpeg,jpg,webp images.
  • OCR - Extract text from images and pdfs', supporting 9+ providers (Traditional OCR, Visual Language Models and hybrid methods).
  • AI Image Upscaling - Increase the resolution of the image while preserving or improving its quality.
  • Convert Icon's theme (svg,ico) - Recolor your icons to match a theme.
  • Support for Unix pipes/redirection - Read from stdin and write to stdout.
  • Image to pixel art - Transforms your image to the typical blocky appearance of pixel art.
  • Replace a specific color in an image - Pretty self explanatory.
  • Create a gif from images - Use the images as frames and specify a delay and the number of loops.
  • Extract color palette - Extracts all the dominant colors in an image (like pywal).
  • Change Image format - Ex. change format from .webp to .png.
  • Invert image colors - Pretty self explanatory.
  • Draw on the Image - Draw borders,grids on the image
  • Remove the background of the image - Pretty self explanatory.
  • Effects - Mirror,Flip,Grayscale,change brightness and more to come!
  • Daily wallpapers - Explore community-voted wallpapers that reset daily.












Themes :art:

You can check the section here on how to create a Custom Theme.

The currently supported themes are featured below, if your favourite theme is missing open an issue or a pull request All themes can be shown (both default and user-created via ~/.config/gowall/config.yml) by gowall list.

  • Catppuccin flavors
  • Dracula
  • Everforest
  • Gruvbox
  • Nord
  • Onedark
  • Solarized
  • Tokyo-dark/storm/moon
Click to see more themes
  • Arc Dark
  • Atom Dark
  • Atom One Light
  • Cat Frappe/latte
  • Cyberpunk
  • Github Light (black & white)
  • Kanagawa
  • Material
  • Melange (Dark & Light)
  • Night Owl
  • Oceanic Next
  • Rose Pine
  • Shades of Purple
  • Sunset Aurant
  • Sunset Saffron
  • Sunset Tangerine
  • Sweet
  • Synthwave 84


Installation :package:

Make sure to do gowall -v and compare it against the release page version, since the docs only show the commands/flags and capabilities of the latest released version.

Grab the binary from the release section (Stable Release) 🢀 Prefered Method

  • If the installation options do not cover your package manager of your distro/OS
  • If gowall in your package manager is not up to date as per the release section's latest version
  • If you don't know how to install gowall and don't want to build the project.

Head over to the release section

Choose the latest version of gowall. You should see a .tar.gz for your operating system and architecture. Simply Extract the binary inside named gowall and place it inside your $PATH

sudo cp gowall /usr/local/bin/

MacOS (Homebrew) - currently on v0.2.0

brew install gowall

Thank you to chenrui333. You can find the ruby formula there.

Arch linux - AUR

yay -S gowall

Fedora - COPR

sudo dnf copr enable achno/gowall
sudo dnf install gowall

NixOS - ( Maintainer : Emily Trau)

  environment.systemPackages = [
    pkgs.gowall
  ];

More installation options : here

Void Linux - ( Maintainer : elbachir-one)

sudo xbps-install -S gowall

Build from source (Cutting Edge)

If you are a normal user, consider using using the method above for a stable gowall release.

If you want to contribute to the project

Or have all the latest features that have not been released yet then

🔨 Clone the repo, build the project and move it inside your $PATH

git clone https://github.com/Achno/gowall
cd gowall
go build
sudo cp gowall /usr/local/bin/
gowall

If this threw any errors while building simply follow the solution below.

Windows (Or any OS if git cloning and go build did not work)

For Windows we need to install zig & go to build it. I advise you to use a package manager like scoop to install it. Obviously you can just go the zig website and download the installer, it doesn't really matter, the zig binary needs to be in your $PATH.

scoop install main/zig # or just go to the website and download zig if you don't want to use a package manager
git clone https://github.com/Achno/gowall
cd gowall

export CGO_ENABLED=1 # if you are using powershell : $env:CGO_ENABLED=1
export CC="zig cc" # if you are using powershell : $env:CC="zig cc"
export CXX="zig c++" # if you are using powershell : $env:CXX="zig c++"

go clean -cache 
go build -v

# then simply add the binary to your PATH

Contributions :handshake:

If you wish to contribute by adding a new theme please open an issue I would also be very happy if you can provide the rgb values of your theme as well :) but not required if it's popular

Feel free to suggest any cool features that would improve gowall even further by opening an issue

Community

Community Extensions

The following are third-party projects built by the community that extend or integrate with gowall.

[!Warning] These tools are not officially affiliated with the gowall project. Please audit/inspects scripts before running them.

🔗 Projects

  • tinted-gowall — A bridge between gowall and the tinted-theming ecosystem. This project enables users to apply their base16/base24 themes with gowall, unlocking hundreds of new visual styles.

Special Thanks

Special thanks to lutgen for the original implementation of the color correction algorithm which i adapted for this project.

Frequently asked questions

Is gowall free to use?

gowall is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does gowall do?

A tool to convert a Wallpaper's color scheme / palette, OCR with VLM's Traditional & Hybrid, Image Compression ,color palette extraction, image upsacling with

What is gowall written in?

gowall is primarily written in Go. Its source is publicly available at https://github.com/Achno/gowall, and it has 2,313 GitHub stars.