Skip to content

baduhai/Koi

Repository files navigation

Koi

Koi

Scheduling LIGHT/DARK Theme Converter for the KDE Plasma Desktop

Koi is a program designed to provide the KDE Plasma Desktop functionality to automatically switch between light and dark themes. Koi is under semi-active development, and while it is stable enough to use daily, expect bugs. Koi is designed to be used with Plasma, and while some features may function under different desktop environments, they are untested and unlikely to work . . .


Features

  • Toggle between Light and Dark preset themes based on time / coordinated schedule
  • Change Plasma style
  • Change QT Colour scheme
  • Change Icon theme
  • Change GTK/GNOME theme
  • Change KDE Konsole (Light/Dark) profiles
  • Change Light/Dark wallpapers
  • Hide application to system tray (it is currently unable to hide Koi from system tray)
  • Enable/Disable notifications about Light/Dark theme switching
  • Toggle between LIGHT/DARK themes by clicking middle mouse button (wheel)
  • Full DBus service integration*; when setup correctly, enables possibility using Koi and theme switching using custom commands & keyboard shortcuts*
  • Run custom BASH scripts when switching between Light/Dark themes

Screenshots

Screenshots


Using Koi

Koi is designed to be very simple to use. After the initial run of Koi, settings for the light and dark presets will be empty, all you need to do is select which themes you would like for Koi to manage and select your desired themes by clicking the Preferences button.

If you would like that Koi switch between your light and dark settings automatically, you can select this option in the main page of the program, and choose between following a user set schedule, or at sunrise and sunset (planned/scheduled feature). To switch between light and dark manually right click the tray icon and select the desired preset, or do so from Koi's main window.

After installation, Koi creates ~/.config/koirc file inside user's Home configuration directory with established theme presets . . .

Startup/Autostart

In order to have Koi started at login, you can do so with the KDE Plasma System Settings.

Search for: Autostart

Plasma version 5 navigate to System Settings -> Startup and Shutdown -> Autostart; and select "+ Add... -> + Add Application -> Utilities -> Koi"

Plasma version 6 navigate to System Settings -> System -> Autostart, and select "+ Add... -> + Add Application -> Utilities -> Koi"

In addition, it is recommended having the option to Start Koi hidden checked, this will prevent Koi from popping up every time you start your operating system.


Getting Koi

Latest version: 0.6

Building from SOURCE

Prerequisites:

Click to expand for GENERIC Dependencies:

GENERIC Dependencies:

KDE Plasma Desktop Environment

KDE Frameworks [Development files]:

  • KF 6 Config
  • KF 6 Core Addons
  • KF 6 Widgets Addons

QT [Development files]:

  • QT 6 Core
  • QT 6 DBus
  • QT 6 Gui
  • QT 6 Widgets
  • QT 6 Xml

CMake Program

Click to expand for Arch Linux Dependencies:

Arch Linux - [AUR]

Build Dependencies:

'gcc' 'qt6-base' 'qt6-tools' 'qt6-svg' 'cmake' 'extra-cmake-modules'

Run Dependencies:

'plasma-desktop' 'plasma-integration'
Click to expand for SUSE Leap 16 / TumbleWeed / SlowRoll Dependencies:

SUSE Leap 16 / TumbleWeed / SlowRoll - [OBS]

Build Dependencies:

'cmake' 'cmake-extras' 'kf6-kconfigwidgets-devel' 'kf6-kconfig-devel' 'kf6-kcoreaddons-devel' 'kf6-kdbusaddons-devel' 'qt6-base'  'qt6-dbus-devel' 'qt6-gui-devel' 'qt6-widgets-devel' 'qt6-xml-devel' 'hicolor-icon-theme'

Run Dependencies:

'plasma6-desktop' 'plasma6-workspace'
Click to expand for SUSE Leap 15.6 Dependencies:

SUSE Leap <= 15.6 - [OBS]

Build Dependencies:

'cmake' 'cmake-extras' 'kf5-kconfigwidgets-devel' 'kf5-kconfig-devel' 'kf5-kcoreaddons-devel' 'kf5-kdbusaddons-devel' 'qt5-dbus-devel' 'qt5-gui-devel' 'qt5-widgets-devel' 'qt5-xml-devel' 'hicolor-icon-theme'

Run Dependencies:

'plasma5-desktop' 'plasma5-workspace' 'plasma-framework'
Click to expand for Fedora 40+ Dependencies:

Fedora >= 40 - [COPR]

Build Dependencies:

'cmake' 'extra-cmake-modules' 'kf6-kconfigwidgets-devel'  'kf6-kconfig-devel' 'kf6-kcoreaddons-devel' 'kf6-kwidgetsaddons-devel' 'qt6-qtbase-devel' 'hicolor-icon-theme'

Run Dependencies:

'plasma-desktop' 'plasma-integration' 'plasma-workspace'
Click to expand for Debian 12- / Ubuntu 24.04- Dependencies:

Debian <= 12 / Ubuntu <= 24.04 - OBS

Build Dependencies:

'g++' 'cmake' 'cmake-extras' 'extra-cmake-modules' 'libkf5config-dev' 'libkf5coreaddons-dev' 'libkf5dbusaddons-dev' 'libkf5widgetsaddons-dev' 'qtbase5-dev'

Run Dependencies:

'plasma-desktop' 'plasma-framework' 'plasma-integration' 'plasma-workspace'
Click to expand for Debian 13+ / KDE Neon / Ubuntu 24.10+ Dependencies:

Debian >= 13 / KDE Neon / Ubuntu >= 24.10 - OBS

Build Dependencies:

'g++' 'cmake' 'cmake-extras' 'extra-cmake-modules' 'libkf6config-dev' 'libkf6coreaddons-dev' 'libkf6dbusaddons-dev' 'libkf6widgetsaddons-dev' 'qt6-base-dev'

Run Dependencies:

'plasma-desktop' 'plasma-integration' 'plasma-workspace'
Click to expand for Void Linux Dependencies:

Void Linux - SRCPKGS (GitHub)

Build Dependencies:

'gcc' 'cmake' 'extra-cmake-modules' 'qt6-base-devel' 'kf6-kcoreaddons-devel' 'kf6-kconfig-devel' 'kf6-kwidgetsaddons-devel' 

Run Dependencies:

'kf6-kcoreaddons' 'kf6-kconfig' 'kf6-kconfigwidgets' 'kf6-kdbusaddons' 'plasma-desktop' 'plasma-integration' 'plasma-workspace' 'qt6-base' 'qt6-core'
Click to expand for NixOS Instructions:
  • Install Directly from NixPKGs to your NIX Profile with: nix-env -iA nixpkgs.koi ;

  • Using NixOS Configuration (configuration.nix):
    environment.systemPackages = with pkgs; [koi];

  • Or Compile Manually Using nix-build https://github.com/NixOS/nixpkgs/blob/master/pkgs/kde/third-party/koi/default.nix

Click to expand for Guix GNU/Linux Instructions:
  • Install Directly from Guix Package Database with: guix install koi or guix install [email protected]

  • You might need / want to use customized environmental variables when BUILDing from SOURCE: They should already be a part of the CMakeLists.txt file - Check it out . . .

  src/plugins/colorscheme.cpp                                               
    QDir colorsNixDir("/var/run/current-system/sw/share/color-schemes");       
  src/plugins/kvantumstyle.cpp                                              
    QDir kvantumStyleNixDir("/var/run/current-system/sw/Kvantum");             
  src/plugins/icons.cpp                                                     
    QDir iconsNixDir("/var/run/current-system/sw/share/icons");                
  src/plugins/plasmastyle.cpp                                               
    QDir stylesNixDir("/var/run/current-system/sw/share/plasma/desktoptheme"); 
  src/plugins/gtk.cpp                                                       
    QDir gtkNixDir("/var/run/current-system/sw/share/themes");                 

Build & Install Instructions:

Click to expand for "All-In-One" Build Instructions:

Copy all:

# 1.  CLONE Koi Repository
# a) 
  git clone "https://github.com/baduhai/Koi.git"  # Using [git] Command
# b)
# gh repo clone "baduhai/Koi"                     # Using [gh]  Command

# 2.  CHANGE to Koi Directory
  cd ./Koi/

# 3.  MAKE from SOURCE to BUILD Directory
  cmake -S "." -B "./build/"

# 4.  BUILD Koi BINARY from SOURCE
  cmake --build "./build/" --parallel  # Remove [--parallel] Option on Weaker Hardware

# 5.  INSTALL Koi into the SYSTEM
# a)
  sudo cmake --install "./build/"  # This Will, by Default, Install Koi into [/usr/local/bin/] Directory
# b)
# sudo cmake --install "./build/" --prefix="/usr/"  # This Will Install Koi into [/usr/bin/] Directory

# (6.) 
# sudo make uninstall -C "./build/"

Credits

References

The following is a list of resources that was used as reference and inspiration for writing Koi.

Koi was written as a project to practice QT by a novice programmer, expect code to be written sloppily.