added more widgets, rewritten folder structure
This commit is contained in:
@@ -8,7 +8,7 @@ local color = require("theme.crylia.colors")
|
||||
local dpi = require("beautiful").xresources.apply_dpi
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
require("Main.Signals")
|
||||
require("main.signals")
|
||||
|
||||
-- Icon directory path
|
||||
local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/kblayout/"
|
||||
@@ -54,6 +54,7 @@ return function ()
|
||||
end,
|
||||
widget = wibox.widget.background
|
||||
}
|
||||
|
||||
local layout = "";
|
||||
local get_kblayout = function ()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
@@ -67,25 +68,271 @@ return function ()
|
||||
return layout
|
||||
end
|
||||
|
||||
local set_kblayout = function (kblayout)
|
||||
kblayout = "de"
|
||||
if get_kblayout():gsub("\n", "") == "de" then
|
||||
kblayout = "ru"
|
||||
|
||||
local function create_kb_layout_item (keymap)
|
||||
-- TODO: Add more, too lazy rn
|
||||
local longname, shortname
|
||||
|
||||
local xkeyboard_country_code = {
|
||||
{"ad", "", "AND"}, -- Andorra
|
||||
{"af", "", "AFG"}, -- Afganistan
|
||||
{"al", "", "ALB"}, -- Albania
|
||||
{"am", "", "ARM"}, -- Armenia
|
||||
{"ara", "", "ARB"}, -- Arabic
|
||||
{"at", "", "AUT"}, -- Austria
|
||||
{"az", "", "AZE"}, -- Azerbaijan
|
||||
{"ba", "", "BIH"}, -- Bosnia and Herzegovina
|
||||
{"bd", "", "BGD"}, -- Bangladesh
|
||||
{"be", "", "BEL"}, -- Belgium
|
||||
{"bg", "", "BGR"}, -- Bulgaria
|
||||
{"br", "", "BRA"}, -- Brazil
|
||||
{"bt", "", "BTN"}, -- Bhutan
|
||||
{"bw", "", "BWA"}, -- Botswana
|
||||
{"by", "", "BLR"}, -- Belarus
|
||||
{"ca", "", "CAN"}, -- Canada
|
||||
{"cd", "", "COD"}, -- Congo
|
||||
{"ch", "", "CHE"}, -- Switzerland
|
||||
{"cm", "", "CMR"}, -- Cameroon
|
||||
{"cn", "", "CHN"}, -- China
|
||||
{"cz", "", "CZE"}, -- Czechia
|
||||
{"de", "Deutsch (Germany)", "GER"}, -- Germany
|
||||
{"dk", "", "DNK"}, -- Denmark
|
||||
{"ee", "", "EST"}, -- Estonia
|
||||
{"es", "", "ESP"}, -- Spain
|
||||
{"et", "", "ETH"}, -- Ethiopia
|
||||
{"eu", "?", "?"}, -- EurKey
|
||||
{"fi", "", "FIN"}, -- Finland
|
||||
{"fo", "", "FRO"}, -- Faroe Islands
|
||||
{"fr", "", "FRA"}, -- France
|
||||
{"gb", "English (Bri'ish)", "ENG"}, -- United Kingdom
|
||||
{"ge", "", "GEO"}, -- Georgia
|
||||
{"gh", "", "GHA"}, -- Ghana
|
||||
{"gn", "", "GIN"}, -- Guinea
|
||||
{"gr", "", "GRC"}, -- Greece
|
||||
{"hr", "", "HRV"}, -- Croatia
|
||||
{"hu", "", "HUN"}, -- Hungary
|
||||
{"ie", "", "IRL"}, -- Ireland
|
||||
{"il", "", "ISR"}, -- Israel
|
||||
{"in", "", "IND"}, -- India
|
||||
{"iq", "", "IRQ"}, -- Iraq
|
||||
{"ir", "", "IRN"}, -- Iran
|
||||
{"is", "", "ISL"}, -- Iceland
|
||||
{"it", "", "ITA"}, -- Italy
|
||||
{"jp", "", "JPN"}, -- Japan
|
||||
{"ke", "", "KEN"}, -- Kenya
|
||||
{"kg", "", "KGZ"}, -- Kyrgyzstan
|
||||
{"kh", "", "KHM"}, -- Cambodia
|
||||
{"kr", "", "KOR"}, -- Korea
|
||||
{"kz", "", "KAZ"}, -- Kazakhstan
|
||||
{"la", "", "LAO"}, -- Laos
|
||||
{"latam", "?", "?"}, -- Latin America
|
||||
{"latin", "?", "?"}, -- Latin
|
||||
{"lk", "", "LKA"}, -- Sri Lanka
|
||||
{"lt", "", "LTU"}, -- Lithuania
|
||||
{"lv", "", "LVA"}, -- Latvia
|
||||
{"ma", "", "MAR"}, -- Morocco
|
||||
{"mao", "?", "?"}, -- Maori
|
||||
{"me", "", "MNE"}, -- Montenegro
|
||||
{"mk", "", "MKD"}, -- Macedonia
|
||||
{"ml", "", "MLI"}, -- Mali
|
||||
{"mm", "", "MMR"}, -- Myanmar
|
||||
{"mn", "", "MNG"}, -- Mongolia
|
||||
{"mt", "", "MLT"}, -- Malta
|
||||
{"mv", "", "MDV"}, -- Maldives
|
||||
{"ng", "", "NGA"}, -- Nigeria
|
||||
{"nl", "", "NLD"}, -- Netherlands
|
||||
{"no", "", "NOR"}, -- Norway
|
||||
{"np", "", "NRL"}, -- Nepal
|
||||
{"ph", "", "PHL"}, -- Philippines
|
||||
{"pk", "", "PAK"}, -- Pakistan
|
||||
{"pl", "", "POL"}, -- Poland
|
||||
{"pt", "", "PRT"}, -- Portugal
|
||||
{"ro", "", "ROU"}, -- Romania
|
||||
{"rs", "", "SRB"}, -- Serbia
|
||||
{"ru", "Русски (Russia)", "RUS"}, -- Russia
|
||||
{"se", "", "SWE"}, -- Sweden
|
||||
{"si", "", "SVN"}, -- Slovenia
|
||||
{"sk", "", "SVK"}, -- Slovakia
|
||||
{"sn", "", "SEN"}, -- Senegal
|
||||
{"sy", "", "SYR"}, -- Syria
|
||||
{"th", "", "THA"}, -- Thailand
|
||||
{"tj", "", "TJK"}, -- Tajikistan
|
||||
{"tm", "", "TKM"}, -- Turkmenistan
|
||||
{"tr", "", "TUR"}, -- Turkey
|
||||
{"tw", "", "TWN"}, -- Taiwan
|
||||
{"tz", "", "TZA"}, -- Tanzania
|
||||
{"ua", "", "UKR"}, -- Ukraine
|
||||
{"us", "English (United States)", "USA"}, -- USA
|
||||
{"uz", "", "UZB"}, -- Uzbekistan
|
||||
{"vn", "", "VNM"}, -- Vietnam
|
||||
{"za", "", "ZAF"} -- South Africa
|
||||
}
|
||||
|
||||
for i, c in ipairs(xkeyboard_country_code) do
|
||||
if c[1] == keymap then
|
||||
longname = c[2]
|
||||
shortname = c[3]
|
||||
end
|
||||
end
|
||||
awful.spawn.easy_async_with_shell("setxkbmap -layout " .. kblayout)
|
||||
get_kblayout()
|
||||
|
||||
local kb_layout_item = wibox.widget{
|
||||
{
|
||||
{
|
||||
{
|
||||
-- Short name e.g. GER, ENG, RUS
|
||||
{
|
||||
{
|
||||
text = shortname,
|
||||
widget = wibox.widget.textbox,
|
||||
font = "JetBrains Mono ExtraBold, 12",
|
||||
id = "kbmapname"
|
||||
},
|
||||
widget = wibox.container.margin,
|
||||
id = "margin2"
|
||||
},
|
||||
nil,
|
||||
{
|
||||
{
|
||||
text = longname,
|
||||
widget = wibox.widget.textbox,
|
||||
font = "JetBrains Mono Bold, 12",
|
||||
|
||||
},
|
||||
widget = wibox.container.margin
|
||||
},
|
||||
spacing = dpi(15),
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
id = "container"
|
||||
},
|
||||
margins = dpi(10),
|
||||
widget = wibox.container.margin,
|
||||
id = "margin"
|
||||
},
|
||||
shape = function (cr, width, height)
|
||||
gears.shape.rounded_rect(cr, width, height, 10)
|
||||
end,
|
||||
bg = color.color["Grey800"],
|
||||
fg = color.color["White"],
|
||||
widget = wibox.container.background,
|
||||
id = "background"
|
||||
},
|
||||
margins = dpi(5),
|
||||
widget = wibox.container.margin
|
||||
}
|
||||
hover_signal(kb_layout_item.background, color.color["White"], color.color["Grey900"])
|
||||
kb_layout_item:connect_signal(
|
||||
"button::press",
|
||||
function ()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"setxkbmap " .. keymap,
|
||||
function (stdout)
|
||||
awesome.emit_signal("kblayout::hide:kbmenu")
|
||||
get_kblayout()
|
||||
end
|
||||
)
|
||||
end
|
||||
)
|
||||
return kb_layout_item
|
||||
end
|
||||
|
||||
local function get_kblist()
|
||||
local kb_layout_items = {
|
||||
layout = wibox.layout.fixed.vertical
|
||||
}
|
||||
for i, keymap in pairs(user_vars.vars.kblayout) do
|
||||
kb_layout_items[i] = create_kb_layout_item(keymap)
|
||||
end
|
||||
return kb_layout_items
|
||||
end
|
||||
|
||||
local kb_menu_widget = awful.popup{
|
||||
shape = function (cr, width, height)
|
||||
gears.shape.rounded_rect(cr, width, height, 5)
|
||||
end,
|
||||
widget = wibox.container.background,
|
||||
bg = color.color["Grey900"],
|
||||
fg = color.color["White"],
|
||||
width = dpi(100),
|
||||
max_height = dpi(600),
|
||||
visible = false,
|
||||
ontop = true,
|
||||
placement = function (c) awful.placement.align(c, {position = "top_right", margins = {right = dpi(255), top = dpi(60)}}) end
|
||||
}
|
||||
|
||||
kb_menu_widget:setup(
|
||||
get_kblist()
|
||||
)
|
||||
|
||||
local function toggle_kb_layout()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"setxkbmap -query | grep layout: | awk '{print $2}'",
|
||||
function (stdout)
|
||||
for j, n in ipairs(user_vars.vars.kblayout) do
|
||||
if stdout:match(n) then
|
||||
if j == #user_vars.vars.kblayout then
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"setxkbmap " .. user_vars.vars.kblayout[1],
|
||||
function ()
|
||||
get_kblayout()
|
||||
end
|
||||
)
|
||||
else
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"setxkbmap " .. user_vars.vars.kblayout[j + 1],
|
||||
function ()
|
||||
get_kblayout()
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
awesome.connect_signal(
|
||||
"kblayout::toggle",
|
||||
function ()
|
||||
toggle_kb_layout()
|
||||
end
|
||||
)
|
||||
|
||||
--kb_menu_widget:move_next_to(mouse.current_widget_geometry)
|
||||
-- Signals
|
||||
hover_signal(kblayout_widget, color.color["Green200"])
|
||||
|
||||
local kblayout_keygrabber = awful.keygrabber{
|
||||
autostart = false,
|
||||
stop_event = 'release',
|
||||
keypressed_callback = function (self, mod, key, command)
|
||||
if key == 'Escape' then
|
||||
awesome.emit_signal("kblayout::hide:kbmenu")
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
kblayout_widget:connect_signal(
|
||||
"button::press",
|
||||
function ()
|
||||
set_kblayout()
|
||||
if kb_menu_widget.visible then
|
||||
kb_menu_widget.visible = false
|
||||
kblayout_keygrabber:stop()
|
||||
else
|
||||
kb_menu_widget.visible = true
|
||||
kblayout_keygrabber:start()
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
awesome.connect_signal(
|
||||
"kblayout::hide:kbmenu",
|
||||
function ()
|
||||
kb_menu_widget.visible = false
|
||||
kblayout_keygrabber:stop()
|
||||
end
|
||||
)
|
||||
|
||||
get_kblayout()
|
||||
kb_menu_widget.visible = false
|
||||
return kblayout_widget
|
||||
end
|
||||
Reference in New Issue
Block a user