Skip to content

About

Exquisite GitHub style Forgejo themes

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

935 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forgejo GitHub Theme

A Forgejo theme that pursues GitHub style not only in colors but also in styling details.

Dashboard

warm.vodka dark variant

The custom Warm Vodka variant brings warm near-black surfaces, quiet neutral borders, muted text, coral accents, and system monospace fonts to the existing Forgejo GitHub layouts. It is dark-only: theme-github-warm-vodka-dark.css, selected as github-warm-vodka-dark. There is no warm.vodka light or automatic variant. Semantic status and diff colors remain distinct so success, warnings, failures, additions, and deletions retain their meaning. Forgejo brand marks are tinted off-white; repository and user avatars keep their original colors.

Raised surfaces and secondary hover states stay warm-neutral, leaving coral for primary actions, links, active-tab underlines, and keyboard focus. Square controls and panels retain the terminal-like character without changing the shared spacing or responsive layouts.

File-finder prompts size from the active font rather than fixed pixel widths. Repository search and combined query/mode controls wrap when space is constrained, keeping their static labels readable with the monospace stack.

The warm.vodka website and its landing repository are visual references only. This theme implementation is original; no code or assets are copied from the GPL-licensed landing page. Existing themes and templates are retained.

Build and install Warm Vodka locally

With Bun 1.3.14 or newer, run these commands from this customized checkout (the upstream repository does not include this variant):

bun install
bun bundle

The build emits dist/theme-github-warm-vodka-dark.css and assembles the existing templates and their required CSS and JavaScript in dist/forgejo. To retain the project's layouts, install that assembled tree together, not just the theme CSS. Set FORGEJO_CUSTOM below to your instance's custom/data root containing conf/app.ini, templates, and public (commonly data/gitea in the official container):

FORGEJO_CUSTOM=/path/to/forgejo-data
mkdir -p "$FORGEJO_CUSTOM/templates" "$FORGEJO_CUSTOM/public"
cp -R dist/forgejo/templates/. "$FORGEJO_CUSTOM/templates/"
cp -R dist/forgejo/public/. "$FORGEJO_CUSTOM/public/"

Back up existing custom files first. Use templates only with the supported Forgejo release; see Compatibility and Template File Installation. This copies all existing theme CSS as well as the custom variant and retains the shared layout/assets. For packaged installation, the custom CSS is in theme-github-extras.tar.gz; pair it with theme-github-templates.tar.gz to retain those layouts.

In <forgejo-data>/conf/app.ini, append github-warm-vodka-dark to your existing [ui] THEMES list rather than removing other entries. To make it the instance default, also set DEFAULT_THEME:

[ui]
THEMES = gitea-auto, gitea-light, gitea-dark, github-auto, github-light, github-dark, github-soft-dark, github-warm-vodka-dark
DEFAULT_THEME = github-warm-vodka-dark

Restart Forgejo and select github-warm-vodka-dark in your account's appearance settings. Omit the DEFAULT_THEME change if you want to keep your current instance default; existing users can keep their own selected theme. The local preview also includes this choice while keeping github-auto as its default.

Build with Nix

With Nix flakes enabled, build the complete Forgejo custom tree without installing Bun or npm on the host:

nix build
# Equivalent named package:
nix build .#forgejo-github-theme

The output contains result/templates and result/public, including result/public/assets/css/theme-github-warm-vodka-dark.css. Follow the installation and [ui] configuration above, replacing dist/forgejo with result in the copy commands. The package builds every existing theme and stamps the footer with its Nix package version.

The flake exposes packages for x86_64-linux, aarch64-linux, and aarch64-darwin. From another flake, use inputs.warm-vodka-forgejo-theme.packages.${pkgs.stdenv.hostPlatform.system}.default instead of maintaining a separate package expression.

Keep flake.nix, flake.lock, and package-lock.json in Git: Nix's Git source filtering omits untracked files. Before adding these new files to Git, use nix build "path:$PWD" to build the working tree.

flake.lock pins nixpkgs; package-lock.json pins the npm dependencies used by buildNpmPackage. After changing package.json, regenerate the npm lock with npm install --package-lock-only --ignore-scripts --legacy-peer-deps, then run prefetch-npm-deps package-lock.json (available from nixpkgs) and update npmDepsHash in flake.nix with the printed hash. The build invokes TypeScript, Vite, and assembly through Bun directly, preserving the Bun build behavior despite Nix's patched Node shebangs.

Override Warm Vodka colours

Like the landing package, the theme package accepts a partial colors attribute set through .override:

inputs.warm-vodka-forgejo-theme.packages.${pkgs.stdenv.hostPlatform.system}.default.override {
  colors = {
    background0 = "#101820";
    accent = "#80cbc4";
    accent-hover = "#a0dbd5";
    accent-active = "#65aaa4";
    box-border-color = "#567890";
  };
}

Only supplied colours change. Defaults live in themes/warmVodka.json, shared by local Bun builds and the Nix package. Keep that file in Git alongside the flake. The shared landing palette names retain their meaning here; the two additional accent keys control primary-button states.

Attribute Default Use
background0 #171416 Page, inset, editor, and primary-button text
background1 #211d1f Controls, overlays, tooltips, and secondary surfaces
background2 #2b2528 Hover surfaces
background3 #352d31 Active, selected, and editor-selection surfaces
foreground0 #f4e8e8 Primary text
foreground1 #b4a7aa Muted text, placeholders, and icons
accent #ff747e Links, focus, active navigation, and primary buttons
accent-hover #ff929a Primary-button hover background and border
accent-active #f0606c Primary-button active background
box-border-color #3b3336 Borders and emphasized surfaces

Use concrete hex, rgb(), or hsl() colours, not CSS variables: the theme's colour utilities need to parse them. Translucent variants derive from the supplied colours. accent-hover and accent-active are independent defaults; override them too when changing the primary-button colour family. These settings affect only the Warm Vodka theme; GitHub's semantic success, warning, danger, ANSI, and syntax hues remain unchanged.

Compatibility

This project is a Forgejo-focused fork of Gitea GitHub Theme. It retains the upstream theme engine and design system while adapting styles and templates to Forgejo's native markup.

The standard bun bundle command generates all themes in dist; generated CSS remains excluded from Git. The included templates are version-bound and should not be installed on another Forgejo release without reviewing its routes and template data.

Releases are not tied to a Forgejo version number. Each release states the supported Forgejo major version and the exact Forgejo version used for testing in its release notes.

This project is licensed under the Apache License 2.0. See LICENSE and NOTICE for the upstream copyright and attribution information.

Installation

Important

Because the project uses new CSS features, ensure styles are applied correctly by keeping Chrome/Edge >= 120, Firefox >= 121, Safari >= 16.5

Choose one of the following ways to obtain the assets:

Install the resulting files using your Forgejo data directory (commonly data/gitea in the official container):

  1. Extract theme-github-base.tar.gz, then place the contained *.css files in <forgejo-data>/public/assets/css (create the directory if necessary). This archive contains the standard light, dark, auto, and soft-dark themes.
  2. Optionally extract theme-github-accessibility.tar.gz for colorblind and high-contrast themes, or theme-github-extras.tar.gz for Pink, Gitea-compatible, Catppuccin, and Warm Vodka themes. Place their CSS files in the same <forgejo-data>/public/assets/css directory.
  3. Extract the optional theme-github-templates.tar.gz archive into <forgejo-data>. It includes the templates and their required JavaScript and page-specific CSS assets under public/assets.
  4. Modify <forgejo-data>/conf/app.ini and append the CSS filename without the theme- prefix to THEMES under the [ui] section.
  5. Restart Forgejo.
  6. Select the theme in the Forgejo settings.

Example: If the theme filename is theme-github-dark.css, add github-dark to the end of THEMES

Example <forgejo-data>/conf/app.ini:

[ui]
THEMES = gitea-auto, gitea-light, gitea-dark, github-auto, github-light, github-dark, github-soft-dark

Tip

When THEMES is not set, Forgejo will use all themes

Important

Automatic color theme requires both light and dark theme files.

For details, refer to the Forgejo documentation.

Template File Installation (Optional)

Important

The template modifies Forgejo's layout to make it closer to GitHub's layout. Do not use template files across versions, as this may lead to missing functionality, Forgejo failing to start, and other issues.

Template layout is bound to the Forgejo instance and will affect all themes, impacting the experience of other non-project themes.

  1. Download the latest template archive from the release page and extract it into <forgejo-data>.
  2. Restart Forgejo

Screenshots

Default Themes

THEMES = github-auto, github-light, github-dark, github-soft-dark
Default

theme-github-light.css

theme-github-dark.css

theme-github-soft-dark.css

Colorblind Themes (Beta)

THEMES = github-colorblind-auto, github-colorblind-light, github-colorblind-dark
THEMES = github-tritanopia-auto, github-tritanopia-light, github-tritanopia-dark
Colorblind & Tritanopia

theme-github-colorblind-light.css & theme-github-tritanopia-light.css

theme-github-colorblind-dark.css & theme-github-tritanopia-dark.css

HighContrast Themes

THEMES = github-high-contrast-auto, github-high-contrast-light, github-high-contrast-dark, github-high-contrast-soft-dark
HighContrast

theme-github-high-contrast-light.css

theme-github-high-contrast-dark.css

theme-github-high-contrast-soft-dark.css

HighContrast Colorblind Themes ( Beta )

THEMES = github-high-contrast-colorblind-auto, github-high-contrast-colorblind-light, github-high-contrast-colorblind-dark
THEMES = github-high-contrast-tritanopia-auto, github-high-contrast-tritanopia-light, github-high-contrast-tritanopia-dark
HighContrast Colorblind & Tritanopia

theme-github-high-contrast-colorblind-light.css & theme-github-high-contrast-tritanopia-light.css

theme-github-high-contrast-colorblind-dark.css & theme-github-high-contrast-tritanopia-dark.css

Pink Themes

THEMES = github-pink-auto, github-pink-light, github-pink-dark, github-pink-soft-dark
Pink

theme-github-pink-light.css

theme-github-pink-dark.css

theme-github-pink-soft-dark.css

Gitea-Compatible Themes

THEMES = github-gitea-auto, github-gitea-light, github-gitea-dark
Gitea-compatible

theme-github-gitea-light.css

theme-github-gitea-dark.css

Catppuccin Themes

THEMES = github-catppuccin-auto, github-catppuccin-latte, github-catppuccin-frappe, github-catppuccin-macchiato, github-catppuccin-mocha
Catppuccin

theme-github-catppuccin-latte.css

theme-github-catppuccin-frappe.css

theme-github-catppuccin-macchiato.css

theme-github-catppuccin-mocha.css

Custom CSS Variables

You can customize parts of the theme style according to your preferences

Usage Method

Add the following code at the beginning or end of the theme's CSS file

:root {
  --custom-clone-menu-width: 150px;
  ...
}

Important

Please ensure to add custom variables in the :root selector, otherwise they will not take effect

Variables are separated by ;

It is recommended to place custom variables in a separate file and append them to the theme file using shell commands or other methods

CSS Variables

Variable Name Description Default Github Recommend Min Max
--custom-branch-menu-width Branch menu width 320px 320px 320px Gitea 640px
--custom-clone-menu-width Clone button menu width Gitea 332px 200px 150px 400px
--custom-user-menu-width User menu width 192px 200px Gitea 320px
--custom-owner-switcher Owner switcher in the navbar; none hides it flex flex
--custom-footer-credit Theme name and version in the footer; none hides it inline inline
--custom-explore-repolist-columns Number of repository list columns on explore page 2 2 2
--custom-explore-userlist-columns Number of user/organization list columns on explore page 3 1 2/3
--custom-user-repolist-columns Number of repository list columns on user page 2 2 1/2
--custom-org-repolist-columns Number of repository list columns on organization page 1 1 1/2
--custom-org-userlist-columns Number of user list columns on organization page 2 1 1/2

Using the Development Version of the Theme

You might want to use the development version of the theme instead of the released version.

Please ensure you have Bun 1.3.14 or above installed.

git clone https://github.com/whereareiam/forgejo-github-theme.git
cd forgejo-github-theme
bun install
bun bundle

After compilation, CSS files are generated in dist. Install them as described above. The full release packaging step, including templates, is available through the repository's CI workflow.

Local Forgejo Preview

For faster iteration on CSS and templates, run the pinned local Forgejo preview. Its Compose file and helper code live under dev/; Docker and Bun are required.

bun dev:forgejo:watch

Open http://localhost:3000. The preview skips Forgejo's first-run setup, selects github-auto by default, and signs in automatically as alex, including when a public page is opened first. Set FORGEJO_PREVIEW_AUTO_LOGIN=false to keep the normal sign-in page; the default credentials are alex / preview. The watcher rebuilds the theme and restarts Forgejo after source changes so CSS and template updates are visible.

The first start fills the preview from the fixtures under dev/fixtures: the users alex and sam, the organization acme, and two repositories. acme/webapp has branches, tags, issues, pull requests in every state, releases including a draft and a prerelease, packages, and finished workflow runs with logs. alex/notes is nearly empty, for checking empty states. All of it is invented, and dates are written relative to the day of seeding, so the activity feed and contribution heatmap always look recent. No runner is configured and no workflow executes.

The data is kept in the Docker volume forgejo-dev-data, and a repository that already exists is not seeded again. After changing a fixture, start from an empty volume:

bun dev:forgejo:reset
bun dev:forgejo

See dev/fixtures/README.md for the fixture format.

Override the local login before starting when needed:

FORGEJO_PREVIEW_USER=alice FORGEJO_PREVIEW_PASSWORD='local-password' bun dev:forgejo

Stop the preview with:

bun dev:forgejo:stop

To rebuild and sync once without watching, use bun dev:forgejo. After a later manual build, use bun dev:forgejo:sync to copy the generated files into the running container.

The preview automatically reloads open pages after a successful rebuild or dev:forgejo:sync. Each refresh uses versioned theme stylesheets (including auto-theme imports) and custom scripts, so browser cache clearing is unnecessary. Run bun dev:forgejo:watch while editing to rebuild, restart, and reload automatically. These reload hooks exist only in the preview's own copy of the build under dev/.generated; dist and release archives contain the normal theme assets.

About

Exquisite GitHub style Forgejo themes

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages