Code Monkey home page Code Monkey logo

bluloco.nvim's Introduction

banner-light banner-dark

Bluloco.nvim

A fancy and sophisticated designer neovim theme built with lush.nvim. It features a much more comprehensive usage of syntax scopes and color consistency, with due regards to aesthetics, contrast and readability. There is a light and dark variant. Most popular plugins are also supported, see Plugins

This theme also works very good with blue light filters like Apple's Nightshift Mode or f.lux.

This is a port of the popular Visual Studio Code Themes Bluloco Light and Bluloco Dark

Support

If you like using this, please consider donating a little bit. It takes a lot of time to keep this updated with neovim and plugin updates. I want to keep bluloco a great experience for everybody and your help would be immensely motivating to keep me doing this. :)

Buy Me A Coffee

Dark

dark

Light

light

Features

  • Auto switching light & dark style
  • Configureable transparency and italics
  • Exhaustive plugin support
  • Written in lua

Plugins

Currently supported (aka. tested) plugins:

Plugin showcase

You can see a lot of screenshots of themed plugins in the wiki page. No config needed, works out of the box.

Install

Install Bluloco with your favorite package manager.

use {
    'uloco/bluloco.nvim',
    requires = { 'rktjmp/lush.nvim' }
}
{
  'uloco/bluloco.nvim',
  lazy = false,
  priority = 1000,
  dependencies = { 'rktjmp/lush.nvim' },
  config = function()
    -- your optional config goes here, see below.
  end,
},

Usage

⚠️ The setup() function is optional but please call it before you set the colorscheme if you want to adjust the config.

These are the default values:

require("bluloco").setup({
  style = "auto",               -- "auto" | "dark" | "light"
  transparent = false,
  italics = false,
  terminal = vim.fn.has("gui_running") == 1, -- bluoco colors are enabled in gui terminals per default.
  guicursor   = true,
})

vim.opt.termguicolors = true
vim.cmd('colorscheme bluloco')

You can also apply the style variant directly.
These are especially helpful when switching in an already running vim session.

:colorscheme bluloco-dark
:colorscheme bluloco-light

Lualine

Make sure your lualine settings are set to auto:

require('lualine').setup {
  options = {
    theme = 'auto'
  }
}

Config

style

There are three styles you can configure here: auto, dark and light.
The auto setting is the default and will adjust automatically to your vim.o.background value. If you change this value during runtime, it will also adjust accordingly.

ℹ️ The style value only applies if you set the theme with vim.cmd('colorscheme bluloco').
Setting the theme with a variant directly will override this setting.

transparency (default: false)

This setting will disable the background and use the default background of your terminal. You need to enable this if you want the terminal to be transparent. You would still need to configure your terminal accordingly for light and dark backgrounds when switching often.

italics (default: false)

This setting will enable italics for keywords, comments and markup attributes.

terminal (default: true in gui, otherwise false)

This setting will enable the bluloco colors in your integrated terminal. You most likely want to keep your terminal colors instead of overriding them if you are running neovim in a terminal. When you are running neovim inside a gui application this setting is enabled per default.

You can skip the terminal setting completely to have it disabled in terminals and enabled in gui neovim.

ℹ️ Please note that some terminals will display bold text as the bright color variant but enabling this feature will override this behavior in the intergrated terminal. This is by design and has nothing to do with this theme. see

guicursor (default: true)

This setting sets a guicursor to fix your terminal cursor and make it colorful (as intended). It is enabled by default. If you want to override this, make sure to set your :set guicursor after loading the theme or disable it completely.

Terminal Colors

I've added a bunch of terminal themes for your terminal emulators. I've used the great iTerm-Color-Schemes repository for this, thanks @mbadolato!

They are located at terminal-themes/. Please follow your terminals installation guide in how to apply them.

Switching light and dark theme according your OS settings

This themes light and dark variant are meant to be used during day and night. To make this easily possible I am using the auto-dark-mode.nvim plugin For a seamless integration make sure your bluloco.config.style is set to "auto". My auto-dark-mode.nvim config looks like this:

local auto_dark_mode = require('auto-dark-mode')

local function isAuto()
  return require('bluloco').config.style == 'auto'
end

auto_dark_mode.setup({
  update_interval = 1000,
  set_dark_mode = function()
    if isAuto() then
      vim.o.background = 'dark'
    end
  end,
  set_light_mode = function()
    if isAuto() then
      vim.o.background = 'light'
    end
  end
})

If you are also using lazygit as your git client, you might be interested in this wiki guide to set it up correctly with bluloco.
Auto-dark light mode included.

Contributing

I'd be more than happy for any bugs you find and add an issue.
Pull requests are warmly welcome especially for missing plugin support.

bluloco.nvim's People

Contributors

gabriel-tapes avatar hankertrix avatar james-delorenzo avatar lv avatar techdufus avatar uloco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bluloco.nvim's Issues

support breadcrumbs in winbar

i don't know where the breadcrumbs came from (probably some treesitter thing) but it looks kinda neat and we should suppor that.

background color of WinSeparator

I use blueloco-dark and lualine with 'auto' setting. The background of the WinSeparator is very close to the background color of the windows so it is difficult for me to see that I have a split window.

I have tried to change this using:

hi WinSeparator ctermbg = #ffffff

as an example. I have termguicolors set. However, I can't apparently change the WinSeparator background color.

How do I make the WinSeparator a bit brighter so it is more obvious to my old eyes?

Lack of highlight group for "TODO" in comments

The theme seems to color other special comment things just fine but not TODOs when connected to tree-sitter for some reason (this is with javascript + comment tree-sitter installed).
image

I tested another theme (onedark) just to confirm that this is a bluloco + tree-sitter issue.

Disabling tree-sitter seems to bring back some TODO highlighting in bluloco:
image

Appreciate you looking into this, thanks!

Porting the theme to Replit

This isn't an issue per se, but I'm porting the theme to Replit and just want to ensure that the theme is as close to the original as possible. If there are any incorrect colours, please tell me and I'll change them!

You can view the highlight groups by clicking on the words in the code example and you can change the language using the drop-down at the top right of the theme.




Bluloco Light

image

image

image




Bluloco Dark

image

image

image

fix `:colorscheme bluloco` always uses dark

  1. be in light mode and set config to auto
  2. switch to another color scheme e.g. tokyonight with :colorscheme tokyonight
  3. switch to bluloco with :colorscheme bluloco
  4. dark colors are used but should be light.

indent blankline rainbow delimiters

 "RainbowDelimiterRed",
 "RainbowDelimiterYellow",
 "RainbowDelimiterBlue",
 "RainbowDelimiterOrange",
 "RainbowDelimiterGreen",
 "RainbowDelimiterViolet",
 "RainbowDelimiterCyan",

Plugin showcase

Add small screenshot snippets and needed config for the plugins:

  • git-signs
  • lspsaga
  • git-conflict
  • telescope etc.
  • hlargs (semantic params)
  • lualine
  • diffview
  • cmp (with symbols)
  • ? bufferline / barbar

Probably nice to have them foldable with

<details>
<summary> Example config </summary>
</details
- Foldable with screenshots
- Add needed config here

Add more interesting plugin examples if they come to mind.

Indent blankline updated to version 3

indent-blankline.nvim was updated to version 3, which changed quite a few things. The biggest one is that the highlight group for the scope now takes from the LineNr highlight group instead of the Label highlight group. A suggestion to restore the previous colour is to set the highlight group IblScope to take the colour from the Label highlight group, i.e.

-- In lush_theme/bluloco.lua
-- Inside the return value of the lush() function
IblScope = { Label },

Old version:
image

New version:
image

Provide base16 theme

Hi!

The terminal themes are nice to have, but it would be even more useful to have a base16 yaml file so we can generate themes for other apps automatically!

Terminal Themes

Add a bunch of terminal themes for easy access

  • iTerm2
  • Alacritty
  • Kitty

What else?

Icon design

Create a new and more appealing logo for light and dark combined.

Improve Bufferline theme

Bufferline theme is basically just what is used per default using the standard Tabline hl groups and could be improved.

When I tried the first time, the issue was with the underline as selected tab messing up everything when set manually. I need to theme all variants manually but then the icon colors don't auto change. Need to figure out how to do it.

Possible workaround would be, keep the select stuff as is and only theme the selected visible / window bg etc.

Won't work with lazy package manage

Here is the lazy.nvim config for the theme:

	{
		"uloco/bluloco.nvim",
		lazy = false,
		priority = 1000,
		dependencies = { "rktjmp/lush.nvim" },
		config = function()
			require("bluloco").setup({
				style = "auto", -- "auto" | "dark" | "light"
				transparent = false,
				italics = false,
				terminal = vim.fn.has("gui_running") == 1, -- bluoco colors are enabled in gui terminals per default.
			})
			vim.cmd([[colorscheme bluloco]])
		end,
	},

Attempt to index local 'injected_functions' (a nil value)

Error detected while processing /remote/us01home57/urmish/.local/share/nvim/lazy/bluloco.nvim/colors/bluloco.lua:
E5113: Error while calling lua chunk: .../share/nvim/lazy/bluloco.nvim/lua/lush_theme/bluloco.lua:238: attempt to index local 'injected_functions' (a nil value)
stack traceback:
	.../share/nvim/lazy/bluloco.nvim/lua/lush_theme/bluloco.lua:238: in function 'lush_spec_fn'
	...ish/.local/share/nvim/lazy/lush.nvim/lua/lush/parser.lua:502: in function 'parse'
	...e57/urmish/.local/share/nvim/lazy/lush.nvim/lua/lush.lua:70: in function 'lush'
	.../share/nvim/lazy/bluloco.nvim/lua/lush_theme/bluloco.lua:237: in main chunk
	[C]: in function 'require'
	....local/share/nvim/lazy/bluloco.nvim/lua/bluloco/init.lua:22: in function 'load'
	...h/.local/share/nvim/lazy/bluloco.nvim/colors/bluloco.lua:12: in main chunk

My LazyVim based config is (using lazy.nvim)

  {
    "uloco/bluloco.nvim",
    version = false,
    priority = 1000,
    dependencies = { "rktjmp/lush.nvim" },
    config = function()
      -- your optional config goes here, see below.
      require("bluloco").setup({
        style = "dark", -- "auto" | "dark" | "light"
        transparent = false,
        italics = false,
      })
    end,
  },

What could be the issue?

Thank you.

theme patch file diffview

e.g.

diff --git a/node_modules/react-native/react.gradle b/node_modules/react-native/react.gradle
index 4f6db40..03d43aa 100644
--- a/node_modules/react-native/react.gradle
+++ b/node_modules/react-native/react.gradle
@@ -38,7 +38,8 @@ def hermesCommand = config.hermesCommand ?: "../../node_modules/hermes-engine/%O
 def detectCliPath(config, reactRoot) {
     // 1. preconfigured path
     if (config.cliPath) {
-        def cliJsAbsolute = new File(config.cliPath)
+        def cliJsAbsolute = new File(config.cliPath.toString())
+
         if (cliJsAbsolute.exists()) {
             return cliJsAbsolute.getAbsolutePath()
         }
diff --git a/node_modules/react-native/scripts/.packager.env b/node_modules/react-native/scripts/.packager.env
new file mode 100644
index 0000000..361f5fb
--- /dev/null
+++ b/node_modules/react-native/scripts/.packager.env
@@ -0,0 +1 @@
+export RCT_METRO_PORT=8081

Banner

Create a nice banner for the README header and as a social media link preview.

Add P3 gamut mode

Newer terminals can enable a wider gamut for colors. This messes up the original colors of bluloco making everything more saturated. While more colors can be displayed I find not all of the colors look good when interpreted as P3. This setting is default in alacritty and iTerm2 (beta currently).

I want to adjust the bluloco colors for use with P3 gamut color space displays / settings to make it look better in general.
For example the reds (type) and yellows(string) and parameters (lightblue) look too saturated and distracting imo.

There could be a setting in the config to adjust how the colors should be interpreted. I would need to create a new theme based on this setting, which is better balanced.

Need to get a good calibrated P3 screen first though.

Cursorcolumn no bg

Cursorcolumn has no bg, because virt-column looks better with fg only.
Both variants should be supported.

Do not store showcase images in repository

Showcase images are stored in the repository, which mean they have to be downloaded by every user installing the repository causing bloat for users.

Instead you should consider uploading the images to e.g. a GitHub issue and using the url from GitHub's CDN.

The guicursor changes even when set to false in setup

I'm using lazy.nvim as plugin manager in AstroNvim.

This is my bluloco config:

return {
  'uloco/bluloco.nvim',
  dependencies = { 'rktjmp/lush.nvim' },
  config = function ()
    require("bluloco").setup {
      guicursor = false
    }

    vim.opt.guicursor = 'n-v-c:hor20,i-ci-ve:ver25,r-cr-o:hor20'
  end
}

and this is my init.lua:

return {
  colorscheme = 'bluloco',
  options = {
    opt = {
      number = true,
      relativenumber = false,
      guicursor = { 'n-v-c:hor20,i-ci-ve:ver25,r-cr-o:hor20' },
      clipboard = "unnamedplus"
    }
  },
}

The cursor is always changed, unless I use the line vim.opt.guicursor = 'n-v-c:hor20,i-ci-ve:ver25,r-cr-o:hor20' in setup function.
I think this is not the expected behavior when the "guicursor" field is set to false, I'm right?

Add transparent popupmenu

if possible, add a transparent popupmenu for the people who have set pmenu.
check pmenu highlight, pumblend transparency
pmenu border (cmp), with and without transparency

How to install

Hi uloco,

I'm using this theme with vscode and I'd like to have it on nvim and lunarvim but failed to install it.
Could you please share how to do that on nvim or lunarvim and how to choose the variant?

Regarding the color issue of inlay_hint

Its background color is the same as the annotation, so it doesn't look clear enough. Maybe we can make the difference by deepening the background color of inlay_hint.

image

Error when trying to apply the colorscheme: "error loading module 'lush_theme.bluloco'"

Hi I'm getting this error when calling the colorscheme - does not matter if I choose it through telescope or natively:


E5108: Error executing lua ...lazy/telescope.nvim/lua/telescope/builtin/__internal.lua:988: Vim(colorscheme):E5113: Error while calling lua chunk: ....local/share/nvim/lazy/bluloco.nvim/lua/bluloco/init.lua:28: lo
op or previous error loading module 'lush_theme.bluloco'
stack traceback:
        [C]: in function 'require'
        ....local/share/nvim/lazy/bluloco.nvim/lua/bluloco/init.lua:28: in function 'load'
        ...l/.local/share/nvim/lazy/bluloco.nvim/colors/bluloco.lua:12: in main chunk
        [C]: in function 'cmd'
        ...lazy/telescope.nvim/lua/telescope/builtin/__internal.lua:988: in function 'run_replace_or_original'
        ...re/nvim/lazy/telescope.nvim/lua/telescope/actions/mt.lua:65: in function 'key_func'
        ...hare/nvim/lazy/telescope.nvim/lua/telescope/mappings.lua:352: in function 'execute_keymap'
        [string ":lua"]:1: in main chunk
stack traceback:
        [C]: in function 'cmd'
        ...lazy/telescope.nvim/lua/telescope/builtin/__internal.lua:988: in function 'run_replace_or_original'
        ...re/nvim/lazy/telescope.nvim/lua/telescope/actions/mt.lua:65: in function 'key_func'
        ...hare/nvim/lazy/telescope.nvim/lua/telescope/mappings.lua:352: in function 'execute_keymap'
        [string ":lua"]:1: in main chunk

I'm using lazy and I'm installing it like this:

return{

{
  'uloco/bluloco.nvim',
  lazy = false,
  priority = 1000,
  dependencies = { 'rktjmp/lush.nvim' },
  config = function()
    require('bluloco').setup{

    -- your optional config goes here, see below.
    style = "auto",               -- "auto" | "dark" | "light"
    transparent = false,
    italics = false,
    terminal = vim.fn.has("gui_running") == 1, -- bluoco colors are enabled in gui terminals per default.
    guicursor   = true, 
    }
    -- vim.cmd.colorscheme 'bluloco'
    end,
}


}

I can change theme to other stuf like Carbon fox or Tokyonight just fine.

I'm still learning nvim so I apologize if I'm missing some important information, or not seeing something obvious. Please correct me in this case. thank you for this wonderful theme, that I like to be able to use :D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.