From 6168089274c25e4ef96e748881d1f37b04e6d135 Mon Sep 17 00:00:00 2001 From: jc <46619361+juancwu@users.noreply.github.com> Date: Sat, 15 Jun 2024 22:09:02 -0400 Subject: [PATCH] (nvim) use asadesuka if available makes theme switching better --- nvim/lua/juancwu/utils/colors.lua | 21 ++++++++++++++++++++- nvim/lua/juancwu/utils/os.lua | 21 +++++++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/nvim/lua/juancwu/utils/colors.lua b/nvim/lua/juancwu/utils/colors.lua index 7a05e2c..553ba36 100644 --- a/nvim/lua/juancwu/utils/colors.lua +++ b/nvim/lua/juancwu/utils/colors.lua @@ -5,7 +5,26 @@ local dark = "catppuccin-mocha" ---@return boolean function M.is_daytime() - local current_hour = tonumber(os.date("%H")) + -- check if command exists or not + local cmd_name = "asadesuka" + local cmd_flags = "-offset 30" + local has_asadesuka = require("juancwu.utils.os").cmd_exists(cmd_name) + if has_asadesuka then + local handle = io.popen(cmd_name .. " " .. cmd_flags) + if handle == nil then + return M.legacy_is_daytime() + end + local result = handle:read("*a") + handle:close() + return result:match("true") + else + return M.legacy_is_daytime() + end +end + +---@return boolean +function M.legacy_is_daytime() + local current_hour = tonumber(os.date("%h")) return current_hour >= 7 and current_hour < 19 end diff --git a/nvim/lua/juancwu/utils/os.lua b/nvim/lua/juancwu/utils/os.lua index 40a7596..f1cbbc9 100644 --- a/nvim/lua/juancwu/utils/os.lua +++ b/nvim/lua/juancwu/utils/os.lua @@ -3,22 +3,35 @@ local M = {} ---@return boolean function M.is_linux() - return vim.loop.os_uname().sysname:find("Linux") ~= nil + return vim.loop.os_uname().sysname:find("Linux") ~= nil end ---@return boolean function M.is_mac() - return vim.loop.os_uname().sysname:find("Darwin") ~= nil + return vim.loop.os_uname().sysname:find("Darwin") ~= nil end ---@return boolean function M.is_win() - return vim.loop.os_uname().sysname:find("Windows") ~= nil + return vim.loop.os_uname().sysname:find("Windows") ~= nil end ---@return boolean function M.is_wsl() - return vim.fn.has("wsl") == 1 + return vim.fn.has("wsl") == 1 +end + +---@param cmd string +---@return boolean +function M.cmd_exists(cmd) + local handle = io.popen("command -v " .. cmd) + if handle ~= nil then + local result = handle:read("*a") + handle:close() + return #result > 0 + else + return false + end end return M