50 lines
1.2 KiB
Lua
50 lines
1.2 KiB
Lua
local layout = "EN"
|
|
|
|
local function update_layout()
|
|
vim.system({ "im-select" }, { text = true }, function(result)
|
|
if result.stdout then
|
|
layout = result.stdout:find("Russian") and "RU" or "EN"
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- Update layout in background every second, never blocks UI
|
|
local timer = vim.loop.new_timer()
|
|
timer:start(0, 1000, vim.schedule_wrap(update_layout))
|
|
|
|
local function keyboard_layout()
|
|
return layout
|
|
end
|
|
|
|
local function keyboard_layout_color()
|
|
if layout == "RU" then
|
|
return { bg = "#f38ba8", fg = "#1e1e2e", gui = "bold" }
|
|
end
|
|
return { bg = "#a6e3a1", fg = "#1e1e2e", gui = "bold" }
|
|
end
|
|
|
|
return {
|
|
"nvim-lualine/lualine.nvim",
|
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
opts = {
|
|
options = {
|
|
theme = "auto",
|
|
component_separators = { left = "", right = "" },
|
|
section_separators = { left = "", right = "" },
|
|
},
|
|
sections = {
|
|
lualine_a = { "mode" },
|
|
lualine_b = {
|
|
{ keyboard_layout, color = keyboard_layout_color },
|
|
"branch",
|
|
"diff",
|
|
"diagnostics",
|
|
},
|
|
lualine_c = { { "filename", path = 1 } },
|
|
lualine_x = { "encoding", "filetype" },
|
|
lualine_y = { "progress" },
|
|
lualine_z = { "location" },
|
|
},
|
|
},
|
|
}
|