565 lines
16 KiB
Lua
565 lines
16 KiB
Lua
local awful = require('awful')
|
|
local beautiful = require('beautiful')
|
|
|
|
require('awful.autofocus')
|
|
|
|
local hotkeys_popup = require('awful.hotkeys_popup').widget
|
|
|
|
local modkey = require('configuration.keys.mod').modKey
|
|
local altkey = require('configuration.keys.mod').altKey
|
|
local apps = require('configuration.apps')
|
|
|
|
-- Key bindings
|
|
local globalKeys = awful.util.table.join(
|
|
|
|
-- Hotkeys
|
|
awful.key(
|
|
{modkey},
|
|
'F1',
|
|
hotkeys_popup.show_help,
|
|
{description = 'show help', group = 'awesome'}
|
|
),
|
|
awful.key({modkey, 'Control'},
|
|
'r',
|
|
awesome.restart,
|
|
{description = 'reload awesome', group = 'awesome'}
|
|
),
|
|
|
|
awful.key({modkey, 'Control'},
|
|
'q',
|
|
awesome.quit,
|
|
{description = 'quit awesome', group = 'awesome'}
|
|
),
|
|
awful.key(
|
|
{altkey, 'Shift'},
|
|
'l',
|
|
function()
|
|
awful.tag.incmwfact(0.05)
|
|
end,
|
|
{description = 'increase master width factor', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{altkey, 'Shift'},
|
|
'h',
|
|
function()
|
|
awful.tag.incmwfact(-0.05)
|
|
end,
|
|
{description = 'decrease master width factor', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
'h',
|
|
function()
|
|
awful.tag.incnmaster(1, nil, true)
|
|
end,
|
|
{description = 'increase the number of master clients', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
'l',
|
|
function()
|
|
awful.tag.incnmaster(-1, nil, true)
|
|
end,
|
|
{description = 'decrease the number of master clients', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Control'},
|
|
'h',
|
|
function()
|
|
awful.tag.incncol(1, nil, true)
|
|
end,
|
|
{description = 'increase the number of columns', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Control'},
|
|
'l',
|
|
function()
|
|
awful.tag.incncol(-1, nil, true)
|
|
end,
|
|
{description = 'decrease the number of columns', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'space',
|
|
function()
|
|
awful.layout.inc(1)
|
|
end,
|
|
{description = 'select next layout', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
'space',
|
|
function()
|
|
awful.layout.inc(-1)
|
|
end,
|
|
{description = 'select previous layout', group = 'layout'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'w',
|
|
awful.tag.viewprev,
|
|
{description = 'view previous tag', group = 'tag'}
|
|
),
|
|
|
|
awful.key(
|
|
{modkey},
|
|
's',
|
|
awful.tag.viewnext,
|
|
{description = 'view next tag', group = 'tag'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'Escape',
|
|
awful.tag.history.restore,
|
|
{description = 'alternate between current and previous tag', group = 'tag'}
|
|
),
|
|
awful.key({ modkey, "Control" },
|
|
"w",
|
|
function ()
|
|
-- tag_view_nonempty(-1)
|
|
local focused = awful.screen.focused()
|
|
for i = 1, #focused.tags do
|
|
awful.tag.viewidx(-1, focused)
|
|
if #focused.clients > 0 then
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
{description = "view previous non-empty tag", group = "tag"}
|
|
),
|
|
awful.key({ modkey, "Control" },
|
|
"s",
|
|
function ()
|
|
-- tag_view_nonempty(1)
|
|
local focused = awful.screen.focused()
|
|
for i = 1, #focused.tags do
|
|
awful.tag.viewidx(1, focused)
|
|
if #focused.clients > 0 then
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
{description = "view next non-empty tag", group = "tag"}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
"F1",
|
|
function()
|
|
awful.screen.focus_relative(-1)
|
|
end,
|
|
{ description = "focus the previous screen", group = "screen"}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
"F2",
|
|
function()
|
|
awful.screen.focus_relative(1)
|
|
end,
|
|
{ description = "focus the next screen", group = "screen"}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Control'},
|
|
'n',
|
|
function()
|
|
local c = awful.client.restore()
|
|
-- Focus restored client
|
|
if c then
|
|
client.focus = c
|
|
c:raise()
|
|
end
|
|
end,
|
|
{description = 'restore minimized', group = 'screen'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86MonBrightnessUp',
|
|
function()
|
|
awful.spawn('light -A 10', false)
|
|
awesome.emit_signal('widget::brightness')
|
|
awesome.emit_signal('module::brightness_osd:show', true)
|
|
end,
|
|
{description = 'increase brightness by 10%', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86MonBrightnessDown',
|
|
function()
|
|
awful.spawn('light -U 10', false)
|
|
awesome.emit_signal('widget::brightness')
|
|
awesome.emit_signal('module::brightness_osd:show', true)
|
|
end,
|
|
{description = 'decrease brightness by 10%', group = 'hotkeys'}
|
|
),
|
|
-- ALSA volume control
|
|
awful.key(
|
|
{},
|
|
'XF86AudioRaiseVolume',
|
|
function()
|
|
awful.spawn('amixer -D pulse sset Master 5%+', false)
|
|
awesome.emit_signal('widget::volume')
|
|
awesome.emit_signal('module::volume_osd:show', true)
|
|
end,
|
|
{description = 'increase volume up by 5%', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86AudioLowerVolume',
|
|
function()
|
|
awful.spawn('amixer -D pulse sset Master 5%-', false)
|
|
awesome.emit_signal('widget::volume')
|
|
awesome.emit_signal('module::volume_osd:show', true)
|
|
end,
|
|
{description = 'decrease volume up by 5%', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86AudioMute',
|
|
function()
|
|
awful.spawn('amixer -D pulse set Master 1+ toggle', false)
|
|
end,
|
|
{description = 'toggle mute', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86AudioNext',
|
|
function()
|
|
awful.spawn('mpc next', false)
|
|
end,
|
|
{description = 'next music', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86AudioPrev',
|
|
function()
|
|
awful.spawn('mpc prev', false)
|
|
end,
|
|
{description = 'previous music', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86AudioPlay',
|
|
function()
|
|
awful.spawn('mpc toggle', false)
|
|
end,
|
|
{description = 'play/pause music', group = 'hotkeys'}
|
|
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86AudioMicMute',
|
|
function()
|
|
awful.spawn('amixer set Capture toggle', false)
|
|
end,
|
|
{description = 'mute microphone', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86PowerDown',
|
|
function()
|
|
--
|
|
end,
|
|
{description = 'shutdown skynet', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86PowerOff',
|
|
function()
|
|
awesome.emit_signal("module::exit_screen_show")
|
|
end,
|
|
{description = 'toggle exit screen', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{},
|
|
'XF86Display',
|
|
function()
|
|
awful.spawn.single_instance('arandr', false)
|
|
end,
|
|
{description = 'arandr', group = 'hotkeys'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'`',
|
|
function()
|
|
_G.toggle_quake()
|
|
end,
|
|
{description = 'dropdown application', group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'm',
|
|
function()
|
|
if awful.screen.focused().musicpop then
|
|
awesome.emit_signal('widget::music', 'keyboard')
|
|
end
|
|
end,
|
|
{description = "toggle music widget", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{ },
|
|
"Print",
|
|
function ()
|
|
awful.spawn.easy_async_with_shell(apps.bins.full_screenshot,function() end)
|
|
end,
|
|
{description = "fullscreen screenshot", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey, "Shift"},
|
|
's',
|
|
function ()
|
|
awful.spawn.easy_async_with_shell(apps.bins.area_screenshot,function() end)
|
|
end,
|
|
{description = "area/selected screenshot", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'x',
|
|
function()
|
|
awesome.emit_signal("widget::blur:toggle")
|
|
end,
|
|
{description = "toggle blur effects", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
']',
|
|
function()
|
|
awesome.emit_signal("widget::blur:increase")
|
|
end,
|
|
{description = "increase blur effect by 10%", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'[',
|
|
function()
|
|
awesome.emit_signal("widget::blur:decrease")
|
|
end,
|
|
{description = "decrease blur effect by 10%", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
't',
|
|
function()
|
|
awesome.emit_signal("widget::blue_light:toggle")
|
|
end,
|
|
{description = "toggle redshift filter", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{ 'Control' },
|
|
'Escape',
|
|
function ()
|
|
if screen.primary.systray then
|
|
if not screen.primary.tray_toggler then
|
|
local systray = screen.primary.systray
|
|
systray.visible = not systray.visible
|
|
else
|
|
awesome.emit_signal("widget::systray:toggle")
|
|
end
|
|
end
|
|
end,
|
|
{description = "toggle systray visibility", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'l',
|
|
function()
|
|
awful.spawn(apps.default.lock, false)
|
|
end,
|
|
{description = "lock the screen", group = 'Utility'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'Return',
|
|
function()
|
|
awful.spawn(apps.default.terminal)
|
|
end,
|
|
{description = "open default terminal", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey, "Shift"},
|
|
'e',
|
|
function()
|
|
awful.spawn(apps.default.file_manager)
|
|
end,
|
|
{description = "open default file manager", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey, "Shift"},
|
|
'f',
|
|
function()
|
|
awful.spawn(apps.default.web_browser)
|
|
end,
|
|
{description = "open default web browser", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{"Control", "Shift"},
|
|
'Escape',
|
|
function()
|
|
awful.spawn(apps.default.terminal .. ' ' .. 'htop')
|
|
end,
|
|
{description = "open system monitor", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'e',
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
|
|
if focused.left_panel then
|
|
focused.left_panel:HideDashboard()
|
|
focused.left_panel.opened = false
|
|
end
|
|
if focused.right_panel then
|
|
focused.right_panel:HideDashboard()
|
|
focused.right_panel.opened = false
|
|
end
|
|
awful.spawn(apps.default.rofiappmenu, false)
|
|
end,
|
|
{description = "open application drawer", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'r',
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
|
|
if focused.right_panel and focused.right_panel.visible then
|
|
focused.right_panel.visible = false
|
|
end
|
|
screen.primary.left_panel:toggle()
|
|
end,
|
|
{description = 'open sidebar', group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
'r',
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
|
|
if focused.right_panel and focused.right_panel.visible then
|
|
focused.right_panel.visible = false
|
|
end
|
|
screen.primary.left_panel:toggle(true)
|
|
end,
|
|
{description = 'open sidebar and global search', group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'F2',
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
|
|
if focused.left_panel and focused.left_panel.opened then
|
|
focused.left_panel:toggle()
|
|
end
|
|
|
|
if focused.right_panel then
|
|
if _G.right_panel_mode == 'today_mode' or not focused.right_panel.visible then
|
|
focused.right_panel:toggle()
|
|
switch_rdb_pane('today_mode')
|
|
else
|
|
switch_rdb_pane('today_mode')
|
|
end
|
|
|
|
_G.right_panel_mode = 'today_mode'
|
|
end
|
|
end,
|
|
{description = "open notification center", group = 'launcher'}
|
|
),
|
|
awful.key(
|
|
{modkey},
|
|
'F3',
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
|
|
if focused.left_panel and focused.left_panel.opened then
|
|
focused.left_panel:toggle()
|
|
end
|
|
|
|
if focused.right_panel then
|
|
if _G.right_panel_mode == 'notif_mode' or not focused.right_panel.visible then
|
|
focused.right_panel:toggle()
|
|
switch_rdb_pane('notif_mode')
|
|
else
|
|
switch_rdb_pane('notif_mode')
|
|
end
|
|
|
|
_G.right_panel_mode = 'notif_mode'
|
|
end
|
|
end,
|
|
{description = "open today pane", group = 'launcher'}
|
|
)
|
|
)
|
|
|
|
-- Bind all key numbers to tags.
|
|
-- Be careful: we use keycodes to make it work on any keyboard layout.
|
|
-- This should map on the top row of your keyboard, usually 1 to 9.
|
|
for i = 1, 9 do
|
|
-- Hack to only show tags 1 and 9 in the shortcut window (mod+s)
|
|
local descr_view, descr_toggle, descr_move, descr_toggle_focus
|
|
if i == 1 or i == 9 then
|
|
descr_view = {description = 'view tag #', group = 'tag'}
|
|
descr_toggle = {description = 'toggle tag #', group = 'tag'}
|
|
descr_move = {description = 'move focused client to tag #', group = 'tag'}
|
|
descr_toggle_focus = {description = 'toggle focused client on tag #', group = 'tag'}
|
|
end
|
|
globalKeys =
|
|
awful.util.table.join(
|
|
globalKeys,
|
|
-- View tag only.
|
|
awful.key(
|
|
{modkey},
|
|
'#' .. i + 9,
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
local tag = focused.tags[i]
|
|
if tag then
|
|
tag:view_only()
|
|
end
|
|
end,
|
|
descr_view
|
|
),
|
|
-- Toggle tag display.
|
|
awful.key(
|
|
{modkey, 'Control'},
|
|
'#' .. i + 9,
|
|
function()
|
|
local focused = awful.screen.focused()
|
|
local tag = focused.tags[i]
|
|
if tag then
|
|
awful.tag.viewtoggle(tag)
|
|
end
|
|
end,
|
|
descr_toggle
|
|
),
|
|
-- Move client to tag.
|
|
awful.key(
|
|
{modkey, 'Shift'},
|
|
'#' .. i + 9,
|
|
function()
|
|
if client.focus then
|
|
local tag = client.focus.screen.tags[i]
|
|
if tag then
|
|
client.focus:move_to_tag(tag)
|
|
end
|
|
end
|
|
end,
|
|
descr_move
|
|
),
|
|
-- Toggle tag on focused client.
|
|
awful.key(
|
|
{modkey, 'Control', 'Shift'},
|
|
'#' .. i + 9,
|
|
function()
|
|
if client.focus then
|
|
local tag = client.focus.screen.tags[i]
|
|
if tag then
|
|
client.focus:toggle_tag(tag)
|
|
end
|
|
end
|
|
end,
|
|
descr_toggle_focus
|
|
)
|
|
)
|
|
end
|
|
|
|
return globalKeys
|