No description
Find a file
toby.gethin 3b64d27ca5 Add README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 15:50:21 +10:00
.gitignore Add Zoho Cliq RPM/DEB → Linux repack tool 2026-04-30 15:16:20 +10:00
README.md Add README 2026-04-30 15:50:21 +10:00
repack.py Add --deb / --deb-only output flags 2026-04-30 15:39:21 +10:00
zoho-cliq-hide-menubar.md Add Zoho Cliq RPM/DEB → Linux repack tool 2026-04-30 15:16:20 +10:00

Zoho Cliq Linux Repack Tool

Repacks the official Zoho Cliq RPM or DEB package with a newer Electron binary and a set of Linux compatibility patches. The result is a runnable directory, an installable .deb, or a self-contained AppImage.

Why

Zoho ships Cliq with an outdated bundled Electron (35.x as of v1.8.1). This tool swaps it for a current release (~41.x) to get security fixes and better Wayland support, and applies three patches to bundle.js that fix Linux-specific bugs in the shipped app code.

Requirements

  • Python 3.9+
  • bsdtar (libarchive — handles RPM CPIO, DEB ar, and tar in one tool)
  • npx / Node.js (used to run asar for ASAR extraction)
  • Internet access on first run (downloads Electron zip and appimagetool)

On Fedora/RHEL: sudo dnf install bsdtar nodejs
On Debian/Ubuntu: sudo apt install libarchive-tools nodejs npm

Usage

python3 repack.py <cliq-package.rpm|deb> [options]

Options

Flag Description
--electron-version X.Y.Z Electron version to embed (default: 41.3.0)
--output-dir DIR Where to write the assembled app (default: Cliq-linux/ next to the package)
--appimage Also produce Cliq.AppImage
--appimage-only Produce AppImage only, delete the staging directory afterwards
--deb Also produce a repacked .deb
--deb-only Produce .deb only, delete the staging directory afterwards
--cache-dir DIR Cache directory for downloaded files (default: cliq-repack-cache/ next to the script)

Examples

Run from directory and install desktop entry:

python3 repack.py cliq-1.8.1_x86_64.rpm
./Cliq-linux/cliq

Produce an installable DEB from an RPM:

python3 repack.py cliq-1.8.1_x86_64.rpm --deb-only
sudo dpkg -i cliq_1.8.1_amd64-repacked.deb

Repack a DEB to a DEB (preserves original control metadata):

python3 repack.py cliq_1.8.1_amd64.deb --deb-only
sudo dpkg -i cliq_1.8.1_amd64-repacked.deb

Build an AppImage:

python3 repack.py cliq-1.8.1_x86_64.rpm --appimage-only
./Cliq.AppImage

Patches applied

Three patches are applied to resources/app/app/bundle.js inside the ASAR archive:

  1. autoHideMenuBar on Linux — The BrowserWindow constructor only set autoHideMenuBar on Windows. Enabling it on Linux hides the menu bar by default; press Alt to reveal it temporarily.

  2. menuBarHeight() Linux fix — The view resize handler subtracts menuBarHeight() from the BrowserView height. On Linux this hardcodes 25 regardless of menu bar visibility, leaving a permanent 25 px white gap at the bottom of the window. Patched to return 0.

  3. mainPath /app suffixglobal.mainPath is set using app.isPackaged to decide whether to append /app to getAppPath(). When running from an extracted directory (not an ASAR), isPackaged is false so the suffix is skipped, making all image/resource paths one level too shallow and crashing on startup. Patched to always append /app.

Caching

Downloaded files (Electron zip, appimagetool) are kept in cliq-repack-cache/ and reused on subsequent runs. Delete the directory to force a fresh download.

Notes

  • Re-run after Cliq updates. Each update ships a new app.asar; run the tool again with the updated package.
  • Known non-fatal error. TypeError: g.resetAppMenu is not a function may appear in the console when a view is reloaded. This is a pre-existing bug in the Cliq source and does not affect normal use.
  • --appimage and --deb can be combined with --output-dir to keep the staging directory while also producing a distributable artifact.