awesome/src/global_keys.lua

140 lines
6.9 KiB
Lua

local gears = require('gears')
local awful = require('awful')
local lain = require('lain')
local hotkeys_popup = require('awful.hotkeys_popup')
local globals = require('src.globals')
local modkey = globals.modkey
local altkey = globals.altkey
local mpris = require('src.util.mpris')
local volume = require('src.util.volume')
local quake_terminal_name = 'QuakeTerminal'
local quake = lain.util.quake({
followtag = true,
overlap = true,
app = 'alacritty',
argname = '-t ' .. quake_terminal_name,
name = quake_terminal_name,
extra = '--class ' .. quake_terminal_name,
vert = 'center',
horiz = 'center',
height = 0.6,
width = 0.6
})
local function focus_bydirection(direction)
awful.client.focus.global_bydirection(direction)
if client.focus then
client.focus:raise()
end
end
local globalkeys = gears.table.join(
---- HOTKEYS ----
awful.key({ modkey, altkey }, 'p', function() awful.spawn('flameshot gui') end, { description = 'screenshot', group = 'hotkeys' }),
awful.key({ modkey, altkey, 'Control' }, 'l', function() awful.spawn('dm-tool lock') end, { description = 'lock', group = 'hotkeys' }),
awful.key({ modkey }, 's', hotkeys_popup.show_help),
---- TAG ----
-- NAVIGATION
awful.key({ modkey }, 'Left', awful.tag.viewprev, { description = 'view previous', group = 'tag' }),
awful.key({ modkey }, 'Right', awful.tag.viewnext, { description = 'view next', group = 'tag' }),
awful.key({ altkey }, 'Left', function() lain.util.tag_view_nonempty(-1) end, { description = 'view previous nonempty', group = 'tag' }),
awful.key({ altkey }, 'Right', function() lain.util.tag_view_nonempty(1) end, { description = 'view next nonempty', group = 'tag' }),
-- CREATE/MOVE/DELETE
awful.key({ modkey, 'Shift' }, 'n', function() lain.util.add_tag() end, { description = 'add new tag', group = 'tag' }),
awful.key({ modkey, 'Shift' }, 'r', function() lain.util.rename_tag() end, { description = 'rename tag', group = 'tag' }),
awful.key({ modkey, 'Shift' }, 'Left', function() lain.util.move_tag(-1) end, { description = 'move tag to the left', group = 'tag' }),
awful.key({ modkey, 'Shift' }, 'Right', function() lain.util.move_tag(1) end, { description = 'move tag to the right', group = 'tag' }),
awful.key({ modkey, 'Shift' }, 'd', function() lain.util.delete_tag() end, { description = 'delete tag', group = 'tag' }),
---- CLIENT ----
awful.key({ altkey }, 'j', function() awful.client.focus.byidx(1) end, { description = 'focus next by index', group = 'client' }),
awful.key({ altkey }, 'k', function() awful.client.focus.byidx(-1) end, { description = 'focus previous by index', group = 'client' }),
awful.key({ modkey }, 'h', function() focus_bydirection('left') end, { description = 'focus left', group = 'client' }),
awful.key({ modkey }, 'j', function() focus_bydirection('down') end, { description = 'focus down', group = 'client' }),
awful.key({ modkey }, 'k', function() focus_bydirection('up') end, { description = 'focus up', group = 'client' }),
awful.key({ modkey }, 'l', function() focus_bydirection('right') end, { description = 'focus right', group = 'client' }),
awful.key({ modkey }, 'u', awful.client.urgent.jumpto, { description = 'jump to urgent client', group = 'client' }),
awful.key({ modkey, 'Control' }, 'n', function()
local c = awful.client.restore()
if c then c:emit_signal('request::activate', 'key.unminimize', { raise = true }) end
end, { description = 'restore minimized', group = 'client' }),
---- AWESOME ----
awful.key({ modkey }, 'b', function() for s in screen do s.wibox.visible = not s.wibox.visible end end, { description = 'toggle wibox', group = 'awesome' }),
awful.key({ modkey, 'Control' }, 'r', awesome.restart, { description = 'reload awesome', group = 'awesome' }),
awful.key({ modkey, 'Shift', 'Control' }, 'q', awesome.quit, { description = 'quit awesome', group = 'awesome' }),
---- PROGRAMS ----
awful.key({ modkey }, 'Return', function() awful.spawn(globals.terminal) end, { description = 'open a terminal', group = 'programs' }),
awful.key({ modkey, altkey }, 'Return', function() quake:toggle() end, { description = 'Dropdown terminal', group = 'programs' }),
awful.key({ modkey }, 'y', function()
awful.spawn('rofi -show drun -theme "' .. os.getenv('HOME') .. '/.config/awesome/rofi/launcher.rasi"')
end, { description = 'show drun', group = 'launcher' }),
awful.key({ modkey, 'Control', 'Shift' }, 'y', function()
awful.spawn('rofi -show drun -drun-show-actions -theme "' .. os.getenv('HOME') .. '/.config/awesome/rofi/launcher.rasi"')
end, { description = 'show drun actions', group = 'launcher' }),
awful.key({ modkey, 'Shift' }, 'y', function()
awful.spawn(os.getenv('HOME') .. '/.config/awesome/rofi/launcher_launcher.sh')
end, { description = 'show rofi launcher', group = 'launcher' }),
---- LAYOUT ----
awful.key({ modkey, altkey }, 'l', function() awful.tag.incmwfact(0.05) end, { description = 'increase master width factor', group = 'layout' }),
awful.key({ modkey, altkey }, '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', group = 'layout' }),
awful.key({ modkey, 'Shift' }, 'space', function() awful.layout.inc(-1) end, { description = 'select previous', group = 'layout' }),
---- AUDIO KEYS ----
awful.key({}, "XF86AudioMute", volume.toggle_mute),
awful.key({}, "XF86AudioLowerVolume", volume.vol_down),
awful.key({}, "XF86AudioRaiseVolume", volume.vol_up),
awful.key({ 'Control' }, "XF86AudioMute", mpris.play_pause),
awful.key({ 'Control' }, "XF86AudioLowerVolume", mpris.previous),
awful.key({ 'Control' }, "XF86AudioRaiseVolume", mpris.skip)
)
-- Bind all key numbers to tags.
for i = 1, 9 do
globalkeys = gears.table.join(
globalkeys,
-- View tag only.
awful.key({ modkey }, '#' .. i + 9, function()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
tag:view_only()
end
end, { description = 'view tag #' .. i, group = 'tag' }),
-- 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, { description = 'move focused client to tag #' .. i, group = 'tag' })
)
end
return globalkeys