0.1.4 • Public • Published

FirefoxCSS CLI

A command-line tool to install and manage Firefox userstyles seamlessly.

Get started

Example installation of MaterialFox. Run the following commands in console/terminal.

  1. Enable custom userstyles for Firefox

    npx firefoxcss-cli enable
  2. Install theme from GitHub URL

    npx firefoxcss-cli install
  3. Activate the theme

    npx firefoxcss-cli activate MaterialFox

Find a collection of beautiful Firefox themes at FirefoxCSS Store

Note: Installation without executable requires Node.js 14.x or higher


  • [x] Enable userstyles globaly
  • [x] Install theme from URL
  • [x] Activate and deactivate installed themes
  • [ ] Installing from repository with multiple variants: Example
  • [ ] Multiple active themes
  • [ ] Incemental theme updates
  • [ ] Custom advanced prefrences (about:config) from theme user.js file
  • [ ] Works without git (using simple-git)


firefoxcss-cli - a command-line tool to install and manage Firefox userstyles seamlessly

Usage: firefoxcss-cli COMMAND [ arguments ] [...options]

        Enable custom userstyles for current Firefox profile.
    install URL
        Install a theme from a GitHub URL.
    activate THEME
        Activate THEME after deactivating current one.
        List installed themes.
    remove THEME
        Remove/uninstall THEME.
        Deactivate currently active theme.
    update THEME
        Update THEME by reinstalling it. Any modifications will be lost.
        Echo directory for default Firefox profile.
        Echo current theme properties or null.

    -h --help      Display this help message.

    firefoxcss-cli enable

    firefoxcss-cli install

    firefoxcss-cli activate MaterialFox

Running with Node.js

git clone
cd FirefoxCSS-CLI
npm install
node index

Using precompiled executable

  1. Download CLI executable for your operating system from releases
  2. Call executable from the command-line: ex. ./firefoxcss-cli.exe

Compiling executable locally

  1. Clone the repository:
    git clone
  2. Go to cloned repository:
    cd FirefoxCSS-CLI
  3. Install dependencies:
    npm install
  4. Build executable for current system (specify custom pkg build settings in package.json):
    npm run build
  5. Run CLI executable:
    Windows: ./firefoxcss-cli.exe
    Unix: ./firefoxcss-cli

Node.js API

The manager.js file exports the Profile class that contains methods for each command mentioned above. It also contains JSDoc comments for each method and property.

Example implementation:

npm install firefoxcss-cli
// example.js
const { Profile } = require("FirefoxCSS-CLI/manager")


 * Firefox profile instance: where themes can be installed, activated, removed, updated
 * and userstyles can be enabled for said profile.
export class Profile {
   * Optional path to the Firefox profile to modify, otherwise the default one.
   * @param {string | undefined} profileDir path to Firefox profile
  constructor(profileDir: string | undefined)
  PREFIX: string
  THEMEINI: string
  profileDir: string
   * Generate unique base36 string when called, based on current timestamp.
  unique(): string
   * Get human-readable part of git(hub) uri.
   * @param {string} url github url
  repoName(url: string): string
   * Get default Firefox profile.
   * @return {string} path to default Firefox profile
  defaultProfile(): string
   * Get current theme configuration file or null if unofficial or non-existent userstyle.
   * @return {Object | null} Object representing theme config or null
  get theme(): any
   * List of installed themes in profile.
   * @return {string[]} list of theme names
  get themes(): string[]
   * Install a theme from a github url, regardless of the repos folder structure.
   * @param {string} url github link to a single theme
   * @return {string} theme name - if succesfull install
  install(url: string): string
   * Deactivate current theme.
   * @return {string | null} deactivated theme name or null
  deactivate(): string | null
   * Deactivate current theme (if any) and activate the new `theme`.
   * @param {string} theme the git repo name of the theme
   * @return {null} null if no such theme is installed
  activate(theme: string): null
   * Removes a theme if it exists.
   * @param {string} theme the git repo name of the theme
   * @return {string | null} removed theme path or null if no theme was removed
  remove(theme: string): string | null
   * Updates a theme by reinstalling it.
   * Warning: will remove any modifications made to the theme files locally.
   * @param {string} theme the git repo name of the theme
  update(theme: string): string
   * Enable userstyles for the Firefox profile.
   * Required for themes to work.
   * @param {boolean=} force overwrite existing user.js file in profile folder
  enable(force?: boolean | undefined): void



Package Sidebar


npm i firefoxcss-cli

Weekly Downloads






Unpacked Size

19 kB

Total Files


Last publish


  • elias123tre