DEV Community

Cover image for How to Force GitHub Actions to Light Theme Using Tampermonkey
Masayoshi Haruta
Masayoshi Haruta

Posted on

How to Force GitHub Actions to Light Theme Using Tampermonkey

Introduction

I'm not a fan of dark mode. Due to my astigmatism, the text appears blurry, and high-contrast themes are extremely straining on my eyes.

One of the painful is GitHub Actions console.

GitHub Actions console

The text is a very bright white, and the font appears small and bold, making it very difficult to look at. Debugging or any prolonged work becomes unbearable as I can't stare at the screen for long periods.

Even after selecting the Light theme in Theme preferences, this issue wasn't resolved.
https://github.com/settings/appearance

To solve this, I decided to use Tampermonkey to force GitHub Actions pages to use the Light Theme. Here’s what the final result looks like.

After GitHub Actions console

What is Tampermonkey

Tampermonkey is a browser extension that allows you to run custom JavaScript on any website. In short, it's a user script.
https://www.tampermonkey.net/

It supports almost all browsers. As a Chrome user, I’ll show you how to set it up on Chrome.

Setting

Here's the downloaded URL: https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja

After downloading, launched the extension.

Image description

Create a new style by clicking on + button.
Image description

Now, let's create the style.
Image description

Here's snippet.

// ==UserScript==
// @name         Remove data-dark-theme attributes
// @namespace    http://tampermonkey.net/
// @version      2024-06-23
// @description  Remove data-dark-theme attributes from GitHub Actions console
// @author       masayoshi haruta
// @match        https://github.com/*/*/actions/runs/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Function to remove data-dark-theme attribute from all elements
    function removeDataDarkThemeAttributes() {
        // Get all elements with the data-dark-theme attribute
        var elements = document.querySelectorAll('[data-dark-theme]');

        // Loop through the elements and remove the attribute
        elements.forEach(function(element) {
            element.removeAttribute('data-dark-theme');
        });
    }

    // Run the function once the DOM is fully loaded
    document.addEventListener('DOMContentLoaded', removeDataDarkThemeAttributes);

    removeDataDarkThemeAttributes()
})();
Enter fullscreen mode Exit fullscreen mode

Header

Fill in the properties in the header section. These fields are intuitive and easy to fill out. One key point is using @match with a regular expression to apply the user script to all GitHub Actions run pages, https://github.com/*/*/actions/runs/*

If you have any questions, please refer this. https://www.tampermonkey.net/documentation.php?locale=en

Script

The script is straightforward, removing the dark theme attribute from all elements after the DOM is fully loaded.

Finally, save the script with Command+S to complete.

When you access the page, you can confirm that Tampermonkey is applied.
Applying Tampermonkey

Appendix

That concludes the Tampermonkey setup. However, I’d like to add a note about the green color seen in the screenshot. You might wonder how the green color is assigned and if white text becomes hard to read with the light theme.

how to attach light green color

I used Stylus to adjust the colors, and forcefully changing white text to black. While I think this isn’t the cleanest method, it’s effective.

.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger) {
    background: #99ffcc 
}

.color-text-white {
    color: black  !important;
}
Enter fullscreen mode Exit fullscreen mode

If you are new to Stylus, please refer to the following article. It describes the installation procedure and I guess it's useful.

Happy CI/CD running!

Top comments (1)

Collapse
 
raajaryan profile image
Deepak Kumar

Hello everyone,

I hope you're all doing well. I recently launched an open-source project called the Ultimate JavaScript Project, and I'd love your support. Please check it out and give it a star on GitHub: Ultimate JavaScript Project. Your support would mean a lot to me and greatly help in the project's growth.

Thank you!