A dark and light Neovim theme written in fennel, inspired by IBM Carbon.

Overview

oxocarbon.nvim

Note: The old rust version can be found on the rust branch of this repository

Oxocarbon is looking for ports! If you're a user of another editor or tool, join our discord to learn more about porting oxocarbon to other applications. https://discord.gg/M528tDKXRG

A dark and light Neovim theme written in fennel, inspired by IBM Carbon. This is the reference implementation of the oxocarbon theme.

The color palette expands on Nyoom's unique aesthetic and represents a contemporary and ever-changing IBM. Balancing mankind and machine, the colors are harmonious with nature, yet chosen for their luminous quality in the digital world. The oxocarbon color palette is a subset of the broader IBM palette.

The colorscheme is centered around a vibrant set of blues, combined with an industrial set of grays. The full palette extends from the blue family to the edges of the blue spectrum—even the reds contain a hint of blue.

The resulting palette is a set of colors that portrays a singular IBM. Of the world and digital. Useful and judicious. Having multiple gray families gives each design the opportunity for nuance and meaningful moments of color. Each experience should be dominated by the grays and the core colors of black, white, and the blue family, allowing the other color families to have vibrancy and provide purpose.

merged

image

Features

  • Support for popular plugins, such as Lsp, Treesitter, and Semantic Highlighting
  • Fast and Featureful. Supports all the highlights you'll ever need without making a dent on startuptime
  • Uses Termguicolors but its compatible with 16-color terminals as well

Plugin support

The colorscheme explicitly adds highlights for the following plugins:

  • Vim Diagnostics
  • Vim LSP
  • Nvim-Treesitter
  • Telescope
  • Nvim-Notify
  • Nvim-Cmp
  • NvimTree
  • Neogit
  • Gitsigns
  • Hydra

And many others should "just work!" If you have a plugin that needs explicit highlights, feel free to open an issue or PR and I would be happy to add them.

Install

The colorscheme requires the latest stable or nightly neovim (> v0.7.0)

Packer.nvim

use {'nyoom-engineering/oxocarbon.nvim'}

Lazy.nvim

return { 
  "nyoom-engineering/oxocarbon.nvim"
  -- Add in any other configuration; 
  --   event = foo, 
  --   config = bar
  --   end,
}, 

Usage

For neovim nightly users:

vim.opt.background = "dark" -- set this to dark or light
vim.cmd.colorscheme "oxocarbon"

For neovim stable users:

vim.opt.background = "dark" -- set this to dark or light
vim.cmd("colorscheme oxocarbon")

For nyoom.nvim users: Nyoom comes bundled with a version of oxocarbon. Enable the ui.nyoom module

Development

You must install hotpot, since is what is used for compiling the fennel code.

Workflow

  • Fork the project
  • Make changes in the files under fnl/
  • Compile your changes by running :Fnlfile make.fnl
  • Make a PR

License

The project is licensed under the MIT license

Comments
  • HDR Screenshots Look Terrible on Linux

    HDR Screenshots Look Terrible on Linux

    They're all way too low contrast. There's a stream of theprimeagen spending way too long trying to find a good screenshot. (He finally manages to get one here.)

    I don't know what the hell you used, but please for the love of your theme, don't disgrace it with these terrible screenshots. For the record, it looks great on my machine (and probably yours too). image

    opened by wildwestrom 7
  • module 'oxocarbon' not found

    module 'oxocarbon' not found

    This is my config:

    use { "shaunsingh/oxocarbon.nvim", run = "./install.sh" }
    

    I install successfully using :PackerSync but enabling the colourscheme displays the following error:

    Error detected while processing /Users/integralist/.local/share/nvim/site/pack/packer/start/oxocarbon.nvim/colors/oxocarbon.lua:
    E5113: Error while calling lua chunk: ...te/pack/packer/start/oxocarbon.nvim/colors/oxocarbon.lua:1: module 'oxocarbon' not found:
            no field package.preload['oxocarbon']
            no file './oxocarbon.lua'
            no file '/opt/homebrew/share/luajit-2.1.0-beta3/oxocarbon.lua'
            no file '/usr/local/share/lua/5.1/oxocarbon.lua'
            no file '/usr/local/share/lua/5.1/oxocarbon/init.lua'
            no file '/opt/homebrew/share/lua/5.1/oxocarbon.lua'
            no file '/opt/homebrew/share/lua/5.1/oxocarbon/init.lua'
            no file '/Users/integralist/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/oxocarbon.lua'
            no file '/Users/integralist/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/oxocarbon/init.lua'
            no file '/Users/integralist/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/oxocarbon.lua'
            no file '/Users/integralist/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/oxocarbon/init.lua'
            no file './oxocarbon.so'
            no file '/usr/local/lib/lua/5.1/oxocarbon.so'
            no file '/opt/homebrew/lib/lua/5.1/oxocarbon.so'
            no file '/usr/local/lib/lua/5.1/loadall.so'
            no file '/Users/integralist/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/oxocarbon.so'
    stack traceback:
            [C]: in function 'require'
            ...te/pack/packer/start/oxocarbon.nvim/colors/oxocarbon.lua:1: in main chunk
    
    opened by Integralist 7
  • Update colorscheme to better support c++

    Update colorscheme to better support c++

    Before I made my changes, my c++ code wasn't being highlighted very well. Most noticeable were the lack of highlighting on the builtin types and the namespaces. This confused me at first as I thought that treesitter wasn't working. Screen Shot 2023-02-02 at 4 31 22 PM

    After adding highlighting to builtin types and namespaces, the highlighting looks something like this: Screen Shot 2023-02-05 at 10 16 57 PM

    I hope that this is an improvement that fixes something that just wasn't implemented and doesn't break some other language's highlighting.

    Thanks for this amazing theme!

    opened by theVerySharpFlat 4
  • Bug: oxocarbon can only be set as color scheme once

    Bug: oxocarbon can only be set as color scheme once

    To reproduce:

    1. remove everything that sets a colorscheme from your neovim config
    2. run :colorscheme oxocarbon
    3. run :colorscheme blue (or any other colorscheme)
    4. run :colorscheme oxocarbon again

    The first two colorscheme will work, but setting oxocarbon as colorscheme a second time does not work. This is relevant for some use cases where you want to change your colorscheme during runtime, for example styler or auto-dark-mode.

    I checked, oxocarbon seems to be the only theme that has this issue, other themes, builtin or from the community, do not have this problem.

    opened by chrisgrieser 3
  • Inconsistent colors

    Inconsistent colors

    I have treesitter with typescript and tsx installed.

    When I do this:

    vim.cmd.colorscheme "oxocarbon"
    

    I get incorrect colors:

    Screenshot from 2022-10-23 14-31-58


    But when I load a different theme first:

    vim.cmd.colorscheme "everforest"
    vim.cmd.colorscheme "oxocarbon"
    

    I get correct colors:

    Screenshot from 2022-10-23 14-41-13

    Am I doing something wrong? It might have to do something with #4

    opened by sorashi 3
  • Fatal runtime error: Rust panic on nightly neovim

    Fatal runtime error: Rust panic on nightly neovim

    Hey! Great colorscheme.

    For some reason, a few days ago it started crashing nightly neovim for me. I'm using the AppImage version.

    thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: NvimError("\'ctermbg\' must be string or integer")', /home/ml/.cargo/git/checkouts/nvim-oxi-68d2fdc1d1cdbe82/15fb30d/nvim-oxi/src/lua/lua.rs:41:12
               note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
                                                                                            fatal runtime error: Rust panics must be rethrown
                                   Aborted (core dumped)
    

    It crashes with the above message. With RUST_BACKTRACE=1, we get more verbosity.

    thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: NvimError("\'ctermbg\' must be string or integer")', /home/ml/.cargo/git/checkouts/nvim-oxi-68d2fdc1d1cdbe82/15fb30d/nvim-oxi/src/lua/lua.rs:41:12
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/1.63.0/library/std/src/panicking.rs:584:5
       1: core::panicking::panic_fmt
                 at /rustc/1.63.0/library/core/src/panicking.rs:142:14
       2: core::result::unwrap_failed
                 at /rustc/1.63.0/library/core/src/result.rs:1805:5
       3: luaopen_oxocarbon
    [?25l(B[?1004h[?12h[?25h   4: lj_BC_FUNCC
       5: lj_cf_package_require
                 at /home/runner/work/neovim/neovim/.deps/build/src/luajit/src/lib_package.c:464:3
       6: lj_BC_FUNCC
       7: lua_pcall
                 at /home/runner/work/neovim/neovim/.deps/build/src/luajit/src/lj_api.c:1145:12
       8: nlua_pcall
                 at /home/runner/work/neovim/neovim/src/nvim/lua/executor.c:135:16
       9: nlua_exec_file
                 at /home/runner/work/neovim/neovim/src/nvim/lua/executor.c:1631:7
      10: do_source
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:1991:5
      11: source_callback
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:197:9
      12: do_in_cached_path
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:404:14
      13: do_in_runtimepath
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:749:16
      14: source_runtime
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:767:10
      15: load_colors
                 at /home/runner/work/neovim/neovim/src/nvim/highlight_group.c:582:14
      16: ex_colorscheme
                 at /home/runner/work/neovim/neovim/src/nvim/ex_docmd.c:5160:14
      17: execute_cmd0
                 at /home/runner/work/neovim/neovim/src/nvim/ex_docmd.c:1569:29
      18: do_one_cmd
                 at /home/runner/work/neovim/neovim/src/nvim/ex_docmd.c:2218:7
      19: do_cmdline
                 at /home/runner/work/neovim/neovim/src/nvim/ex_docmd.c:571:20
      20: source_using_linegetter
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:1774:16
      21: do_source_str
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:1825:10
      22: nvim_exec
                 at /home/runner/work/neovim/neovim/src/nvim/api/vimscript.c:67:3
      23: nlua_api_nvim_exec
                 at /home/runner/work/neovim/neovim/build/src/nvim/auto/lua_api_c_bindings.generated.c:5473:22
      24: lj_BC_FUNCC
      25: lj_cf_package_require
                 at /home/runner/work/neovim/neovim/.deps/build/src/luajit/src/lib_package.c:464:3
      26: lj_BC_FUNCC
      27: lua_pcall
                 at /home/runner/work/neovim/neovim/.deps/build/src/luajit/src/lj_api.c:1145:12
      28: nlua_pcall
                 at /home/runner/work/neovim/neovim/src/nvim/lua/executor.c:135:16
      29: nlua_exec_file
                 at /home/runner/work/neovim/neovim/src/nvim/lua/executor.c:1631:7
      30: do_source
                 at /home/runner/work/neovim/neovim/src/nvim/runtime.c:1991:5
      31: do_user_initialization
                 at /home/runner/work/neovim/neovim/src/nvim/main.c:1943:10
      32: source_startup_scripts
                 at /home/runner/work/neovim/neovim/src/nvim/main.c:2020:9
      33: main
                 at /home/runner/work/neovim/neovim/src/nvim/main.c:396:3
      34: <unknown>
      35: __libc_start_main
      36: _start
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    fatal runtime error: Rust panics must be rethrown
    
    opened by astridlyre 3
  • Error in `oxocarbon.so:1`

    Error in `oxocarbon.so:1`

    Hi, I get this error when trying the theme with :colo oxocarbon.

    E5113: Error while calling lua chunk: .../site/pack/packer/start/impatient.nvim/lua/impatient.lua:264: ...m/site/pack/packer/start
    /oxocarbon.nvim/lua/oxocarbon.so:1: '=' expected
    

    The theme has been installed, the install.sh script has been run by packer and I tried running it manually (it succeeded). Rust version is 1.62, neovim is latest head:

    NVIM v0.8.0-dev-751-g8952def50                                                                                                                                                                                                                                         
    Build type: Release                                                                                                                                                                                                                                                    
    LuaJIT 2.1.0-beta3 
    

    EDIT: Forgot to add, I'm on macOs Monterey, 12.3.1, Apple M1.

    opened by metalelf0 3
  • color isn't applied to all jsx tags

    color isn't applied to all jsx tags

    Only applying the colors to custom components (like "Section") and not for normal tags (like "div"): Obs: I don't know if it's a bug report or a feature request. image Also, white for props/attributes doesn't seems right.

    opened by datsfilipe 2
  • Abort --> free-ing un-malloc'd memory - when starting on MacOS / iterm2

    Abort --> free-ing un-malloc'd memory - when starting on MacOS / iterm2

    I'm running nvim version 0.9.0 installed from Brew

    After setting the color theme to oxocarbon, neovim crashes with this message:

    nvim(64121,0x1047ec580) malloc: *** error for object 0x1046886ae: pointer being freed was not allocated
    nvim(64121,0x1047ec580) malloc: *** set a breakpoint in malloc_error_break to debug
    zsh: abort
    nvim init.lua
    

    I'm assuming that this is due to the new nvim minor version. Just guessing that the native oxocarbon stuff was compiled against 0.8.*.

    Other details

    oxocarbon version: commit: bb59d8689820a0b5f1cf9508ebc0d429b15348d1

    neovim version:

    ❯ nvim --version
    NVIM v0.9.0-dev-1549+g523b1943c-dirty
    Build type: Release
    LuaJIT 2.1.0-beta3
    Compiled by ririchardson@LUSHF66P5Q2K0
    
    Features: +acl +iconv +tui
    See ":help feature-compile"
    
       system vimrc file: "$VIM/sysinit.vim"
      fall-back for $VIM: "/opt/homebrew/Cellar/neovim/HEAD-523b194/share/nvim"
    
    Run :checkhealth for more info
    
    opened by rrichardson 2
  • missing diff & CurSearch highlights

    missing diff & CurSearch highlights

    Hello, seems like oxocarbon.nvim does not set up any highlighting groups for diffs. This results in ugly (default) highlights in various plugins like neogit and diffview.

    Also, CurSearch highlight is used for highlighting search result under the cursor - at the moment such search result gets no highlight at all. It could be as simple as linking it to IncSearch.

    Could you please add those as well?

    opened by gegoune 2
  • fix 0.8.0 crashes

    fix 0.8.0 crashes

    closes #22 and other crashes related to neovim 0.8

    This was done by bumping the version of nvim-oxi dependency.

    To make this backwards compatible and not cause breaking changes to those who already have a working version, the package now incorporates the same features as nvim-oxi. As for the installer, install.sh script was also updated to grab neovim's current minor release and match it with the corresponding feature to compile appropriately.

    opened by xEgoist 2
  • warning at startup when setup{} empty param

    warning at startup when setup{} empty param

    my config used lazy.nvim

    local M = {
      "nyoom-engineering/oxocarbon.nvim",
      lazy = false,
      priority = 1000,
      enabled = function() return vim.g.theme == 'oxocarbon' end,
    }
    
    function M.config()
      require('oxocarbon').setup {
      }
      vim.cmd [[ colorscheme 'oxocarbon' ]]
    end
    
    return M
    

    Screenshot 2023-06-20 224713

    opened by lost22git 4
  • Brighter grays for comment to improve legibility

    Brighter grays for comment to improve legibility

    I am in love with the theme, I just have trouble reading comments because of the current gray in base03. The new value improves legibility while not standing out too much.

    opened by pfaure 0
  • Fold column cyan and sign column blue

    Fold column cyan and sign column blue

    Currently the fold column is not visible. (If this is intentional please disregard)

    I have included pull request with cyan;

    NOTE: I have a few other tweaks on the way....

    before

    after

    opened by boydkelly 0
  • Light colorscheme LspReferences Highlight

    Light colorscheme LspReferences Highlight

    Hi, I just started using oxocarbon, both the dark and light versions and really like it. Thanks for this!

    In the light version everything is great, however the LspReferenceText background is quite dark, I think it is base03=#161616. Not sure if this is a choice by design, but it really makes it difficult to see the text behind it many times:

    CleanShot 2023-03-12 at 09 16 11@2x

    I just want to know if this is a design choice, otherwise I can change it in my own config.

    Thanks in advance!

    opened by idr4n 0
Owner
Nyoom Engineering
A Neovim framework and doom emacs alternative for the stubborn martian hacker. Powered by fennel and the oxocarbon theme
Nyoom Engineering
Get your loadshedding schedule in your calendar and never be left in the dark! Open-source, up-to-date, and developer friendly.

Loadshedding schedules in your digital calendar. No apps, no ads, up-to-date, and developer friendly. Get it • Key Features • Using the data • Project

Boyd Kane 117 Apr 26, 2023
Example of an dark-mode toggle button based on progressive enhancement

Leptos Starter Template This is a template for use with the Leptos web framework and the cargo-leptos tool. Creating your template repo If you don't h

Leptos 5 Jan 12, 2023
IntelliJ version of the Afterglow Sublime Text theme

Afterglow IntelliJ This theme for IntelliJ is based on the the Afterglow Sublime Text theme, and replaces the default sidebar icons and colour of Inte

Sidney Just 81 Jun 29, 2022
A flexible simple theme manager for *nix systems

tema A theme manager for *nix systems respecting the FHS spec configuration As of now all the configuration is done via $XDG_CONFIG_HOME/tema/config.y

lb06 2 Sep 23, 2022
🦀 Soothing pastel theme for Rust

catppuccin ?? Soothing pastel theme for Rust. Usage Add Catppuccin to your project's Cargo.toml: [dependencies] catppuccin = "1.0.4" Example use catpp

Catppuccin 13 Dec 22, 2022
📁 Soothing pastel theme for egui

Catppuccin for egui Previews ?? Latte ?? Frappé ?? Macchiato ?? Mocha Usage Add this to your Cargo.toml: [dependencies] catppuccin-egui = "1.0" To use

Catppuccin 18 Jan 19, 2023
A grub theme in the style of the Minecraft singleplayer (sp) world selection screen!

Minecraft World Selection Grub Theme Wowie, another Minecraft grub theme! But this time it's in the style of the singleplayer world selection menu, wh

null 3 Oct 8, 2023
Neovim plugin for moving lines up and down, written in Rust

Moveline.nvim Moveline is a simple plugin for moving lines up and down. It's written in Rust using my library nvim-utils. Installation Moveline can be

Will Hopkins 34 Mar 18, 2023
A ln scraper to read light novels and watch anime in your terminal (Written in rust)

Readme Table of content Why use kami Dependencies Install Linux/mac Windows Honorable mentions Why use kami Well its a fast and easy way to watch anim

mrfluffy 26 Dec 23, 2022
🔭 Search Dash.app from Neovim with Telescope. Built with Rust 🦀 and Lua

Dash.nvim Query Dash.app within Neovim with a Telescope picker! The theme used in the recording is lighthaus.nvim. Note: Dash is a Mac-only app, so yo

Mat Jones 193 Dec 28, 2022
Failed experiment in downloading random cat image, turning it into ascii and displaying it in Neovim.

cat.nvim Failed experiment in downloading random cat image, turning it into ascii and displaying it in Neovim. Failed as I realized far too late, that

James Vero 4 Aug 5, 2022
WIP. Goals: Treesitter highlighting, snippets, and a smooth intergration with neovim.

typst.nvim WIP. Goals: Tree-sitter highlighting, snippets, and a smooth integration with neovim. For the past week, I've been thinking what I want for

SeniorMars 66 Apr 9, 2023
nvim-oxi provides safe and idiomatic Rust bindings to the rich API exposed by the Neovim text editor.

?? nvim-oxi nvim-oxi provides safe and idiomatic Rust bindings to the rich API exposed by the Neovim text editor. The project is mostly intended for p

Riccardo Mazzarini 655 Jul 13, 2023
Neovide - No Nonsense Neovim Client in Rust

Neovide This is a simple graphical user interface for Neovim (an aggressively refactored and updated Vim editor). Where possible there are some graphi

Neovide 9.3k Jan 5, 2023
An async autocompletion framework for Neovim

⚡ nvim-compleet This plugin is still in early development. ?? Table of Contents Installation Features Configuration Sources Commands Mappings Colors R

Riccardo Mazzarini 520 Dec 25, 2022
Xcode Neovim Replacement-ish.

An XCode replacement-ish development environment that aims to be your reliable XCode alternative to develop exciting new [apple] software products ??

null 272 Dec 30, 2022
Neovim Configuration Manager (Swap/Backup/Try Configurations Easily)

ncm-rs Neovim Configuration Manager (Swap/Backup/Try Configurations Easily) I created this package because I wanted to try out Lazyvim (which is why i

instance.id 4 Mar 5, 2023
this-week-in-neovim.org official webapp repository

This Week In Neovim This repository holds the source code of https://this-week-in-neovim.org. Architecture How does it run in production Automatic upd

Dimitri Sabadie 189 Jun 23, 2023
Light and fast indexer for Ordinals.

ordi ordi is a fast light indexer for building ordinals data source. Usage export btc_data_dir= export ordi_data_dir= export btc_rpc_host= export btc

null 21 Oct 1, 2023