Update keyboard layout widget and small improvements

This commit is contained in:
Alice Gaudon 2019-08-13 23:58:50 +02:00
parent 3aa412a73f
commit 12668472f8
6 changed files with 101 additions and 91 deletions

View File

@ -23,6 +23,7 @@ By default, Simple Awesome uses
- Improve "leave menu"'s design
- Modify "start menu", make everything work
- Make "start menu" and "leave menu" not sticky (they currently stay open and focus even when clicking outside)
- Replace the os menu with a custom widget
## Arisu personal todo

View File

@ -73,10 +73,7 @@ config.keys = {
-- Hotkeys globally available (through the entire OS, regardless of what's focused)
config.keys.global_keys = {
-- Application launcher
launcher = {
{ config.keys.modkey },
"space",
},
launcher = { { config.keys.modkey }, "space", },
--
-- Media and volume controls
@ -84,23 +81,32 @@ config.keys.global_keys = {
--
media_control = {
-- Raise volume
raiseVolume = "XF86AudioRaiseVolume",
raiseVolume = { {}, "XF86AudioRaiseVolume" },
-- Lower volume
lowerVolume = "XF86AudioLowerVolume",
lowerVolume = { {}, "XF86AudioLowerVolume" },
-- Toggle mute
toggleMute = "XF86AudioMute",
toggleMute = { {}, "XF86AudioMute" },
-- Toggle Play / Pause
playPause = "XF86AudioPlay",
playPause = { {}, "XF86AudioPlay" },
-- Next track
nextTrack = "XF86AudioNext",
nextTrack = { {}, "XF86AudioNext" },
-- Previous track
previousTrack = "XF86AudioPrev",
previousTrack = { {}, "XF86AudioPrev" },
},
-- Keyboard layout
keyboard_layout = {
-- Switch between layouts
switch = { { "Mod1" }, "Shift_L" },
-- Switch between layouts (alternative)
switch_alt = { { "Shift" }, "Alt_L" },
}
}
@ -108,8 +114,17 @@ config.keys.global_keys = {
-- Widgets
--
config.widgets = {
-- Keyboard layout widget
keyboard_layout = {
enabled = true,
layouts = { "fr", "us" },
layout_switch_command = "setxkbmap",
},
-- Enable/disable the system resources monitoring widget
system_resources = true,
system_resources = {
enabled = true,
},
}
@ -135,10 +150,6 @@ config.theme = awful.util.getdir("config") .. "/theme.lua"
-- Screenshot utility
config.screenshot_utility_command = "flameshot gui"
-- Keyboard layout
config.kbSwitchCmd = "setxkbmap"
config.kbLayouts = { "fr", "us" }
-- Run menu
config.windowSwitcher = "rofi -show window -config " .. awful.util.getdir("config") .. "/assets/rofi/themes/paper-float.rasi"

View File

@ -4,6 +4,10 @@ local gears = require("gears")
local global_keys = {}
function make(hotkey, action, identity)
if hotkey == nil then
return nil
end
local modifiers = hotkey[1]
local key = hotkey[2]
return awful.key(modifiers, key, action, identity)

View File

@ -111,10 +111,18 @@ hotkey.registerKeys(media_control.getKeys(config.keys.global_keys.media_control)
-- System resources
local system_resources_widget
if config.widgets.system_resources then
if config.widgets.system_resources.enabled then
system_resources_widget = require("simple/widgets/system_resources")
end
-- Keyboard map indicator and switcher
local keyboard_layout = require("simple/widgets/keyboard_layout")
local keyboard_layout_widget
if config.widgets.keyboard_layout.enabled then
keyboard_layout_widget = keyboard_layout.widget
end
hotkey.registerKeys(keyboard_layout.getKeys(config.keys.global_keys.keyboard_layout))
--
-- Auto start
@ -133,68 +141,31 @@ end
--
-- Launcher (start menu)
--
local launcher = awful.widget.launcher({
local launcher = awful.widget.button({
image = beautiful.awesome_icon,
menu = awful.menu({
items = {
{ "Hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
{ "Manual", config.awesome.terminal .. " -e man awesome" },
{ "Edit config", config.awesome.editor_cmd .. " " .. awesome.conffile },
{ "Open terminal", config.awesome.terminal }
}
}),
})
-- Keyboard map indicator and switcher
mykeyboardlayout = awful.widget.keyboardlayout()
kbdlayout = {}
kbdlayout.cur = 1
kbdlayout.switch = function()
kbdlayout.cur = (kbdlayout.cur % #(config.kbLayouts)) + 1
local t = config.kbLayouts[kbdlayout.cur]
os.execute(config.kbSwitchCmd .. " " .. t)
end
launcher:buttons(gears.table.join(launcher:buttons(),
awful.button({}, 1, nil, showAppLauncher)))
shutdown_icon = awesome.load_image(awful.util.getdir("config") .. "/assets/icons/power.svg")
restart_icon = awesome.load_image(awful.util.getdir("config") .. "/assets/icons/refresh-cw.svg")
logout_icon = awesome.load_image(awful.util.getdir("config") .. "/assets/icons/log-out.svg")
lock_icon = awesome.load_image(awful.util.getdir("config") .. "/assets/icons/lock.svg")
shutdownMenu_items = {
{
"Shutdown",
function()
os.execute('shutdown now')
end,
shutdown_icon
},
{
"Restart",
function()
os.execute('shutdown -r now')
end,
restart_icon
},
{
"Logout",
function()
awesome.quit()
end,
logout_icon
},
{
"Lock",
function()
awful.spawn("xscreensaver-command -lock")
end,
lock_icon
}
}
shutdownMenu_launcher = awful.widget.launcher({
os_menu = awful.widget.launcher({
image = beautiful.awesome_icon,
menu = awful.menu({ items = shutdownMenu_items })
menu = awful.menu({
items = {
{ "Hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
{ "Manual", config.awesome.terminal .. " -e man awesome" },
{ "Edit config", config.awesome.editor_cmd .. " " .. awesome.conffile },
{ "Open terminal", config.awesome.terminal },
{ "Lock", function() awful.spawn("xscreensaver-command -lock") end, lock_icon },
{ "Logout", function() awesome.quit() end, logout_icon },
{ "Restart", function() os.execute('shutdown -r now') end, restart_icon },
{ "Shutdown", function() os.execute('shutdown now') end, shutdown_icon },
}
})
})
@ -332,20 +303,20 @@ awful.screen.connect_for_each_screen(function(s)
{
-- Left widgets
layout = wibox.layout.fixed.horizontal,
mylauncher,
launcher,
s.mytaglist,
s.mypromptbox,
},
s.mytasklist, -- Middle widget
{
-- Right widgets
matchesScreen(config.system_resources_widget_screens) and system_resources_widget.widget or nil,
layout = wibox.layout.fixed.horizontal,
mykeyboardlayout,
matchesScreen(config.system_resources_widget_screens) and system_resources_widget.widget or nil,
keyboard_layout_widget,
wibox.widget.systray(),
mytextclock,
s.mylayoutbox,
shutdownMenu_launcher,
os_menu,
},
}
end)
@ -453,11 +424,6 @@ hotkey.registerKeys(awful.key({ config.keys.modkey, }, "s", hotkeys_popup.show_h
-- Menubar
awful.key({ config.keys.modkey }, "space", function() os.execute(config.runMenu) end,
{ description = "show the run menu", group = "launcher" }),
-- Keyboard layout switch
awful.key({ "Mod1" }, "Shift_L", function() kbdlayout.switch() end,
{ description = "switch keyboard layout" }),
awful.key({ "Shift" }, "Alt_L", function() kbdlayout.switch() end,
{ description = "switch keyboard layout" }),
-- Flameshot
awful.key({}, "Print", function() os.execute(config.screenshot_utility_command) end,
{ description = "Take a screenshot using the screenshot utility", group = "utilities" }))

View File

@ -16,6 +16,8 @@ local gears = require("gears")
local naughty = require("naughty")
local wibox = require("wibox")
local hotkey = require("simple/core/hotkey")
local config = require("config")
local hasPlayerctl = os.execute("playerctl -v") == true
@ -183,20 +185,20 @@ end
function getKeys(config)
return
-- Volume control
config.raiseVolume ~= nil and awful.key({}, config.raiseVolume, raiseVolume,
{ description = "Raise volume", group = "media control" }) or nil,
config.lowerVolume ~= nil and awful.key({}, config.lowerVolume, lowerVolume,
{ description = "Lower volume", group = "media control" }) or nil,
config.toggleMute ~= nil and awful.key({}, config.toggleMute, toggleMute,
{ description = "Toggle mute audio", group = "media control" }) or nil,
hotkey.make(config.raiseVolume, raiseVolume,
{ description = "Raise volume", group = "media control" }),
hotkey.make(config.lowerVolume, lowerVolume,
{ description = "Lower volume", group = "media control" }),
hotkey.make(config.toggleMute, toggleMute,
{ description = "Toggle mute audio", group = "media control" }),
-- Media control
config.playPause ~= nil and awful.key({}, config.playPause, playPause,
{ description = "Toggle Play / Pause", group = "media control" }) or nil,
config.nextTrack ~= nil and awful.key({}, config.nextTrack, nextTrack,
{ description = "Next track", group = "media control" }) or nil,
config.previousTrack ~= nil and awful.key({}, config.previousTrack, previousTrack,
{ description = "Previous track", group = "media control" }) or nil
-- Media control
hotkey.make(config.playPause, playPause,
{ description = "Toggle Play / Pause", group = "media control" }),
hotkey.make(config.nextTrack, nextTrack,
{ description = "Next track", group = "media control" }),
hotkey.make(config.previousTrack, previousTrack,
{ description = "Previous track", group = "media control" })
end
return {

View File

@ -0,0 +1,26 @@
local awful = require("awful")
local hotkey = require("simple/core/hotkey")
local config = require("config")
local widget = awful.widget.keyboardlayout()
local layouts = config.widgets.keyboard_layout.layouts
local current_layout_index = 1
function switchLayout()
current_layout_index = (current_layout_index % #(layouts)) + 1
os.execute(config.widgets.keyboard_layout.layout_switch_command .. " " .. layouts[current_layout_index])
end
return {
widget = widget,
switch = switchLayout,
getKeys = function(config)
return hotkey.make(config.switch, switchLayout,
{ description = "switch keyboard layout" }),
hotkey.make(config.switch_alt, switchLayout,
{ description = "switch keyboard layout (alternative)" })
end
}