Add notion config
This commit is contained in:
parent
7d94202351
commit
aad709c4b4
3 changed files with 516 additions and 0 deletions
6
notion/Makefile
Normal file
6
notion/Makefile
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
SUBDIR=.notion
|
||||||
|
|
||||||
|
include ../dotfiles2.mk
|
||||||
|
|
||||||
|
install: RFLAGS:=$(RFLAGS) --exclude=default-session--0
|
||||||
|
install: RFLAGS:=$(RFLAGS) --exclude=.welcome_msg_displayed
|
99
notion/cfg_notion.lua
Normal file
99
notion/cfg_notion.lua
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
--
|
||||||
|
-- Notion main configuration file
|
||||||
|
--
|
||||||
|
-- This file only includes some settings that are rather frequently altered.
|
||||||
|
-- The rest of the settings are in cfg_notioncore.lua and individual modules'
|
||||||
|
-- configuration files (cfg_modulename.lua).
|
||||||
|
--
|
||||||
|
-- When any binding and other customisations that you want are minor, it is
|
||||||
|
-- recommended that you include them in a copy of this file in ~/.notion/.
|
||||||
|
-- Simply create or copy the relevant settings at the end of this file (from
|
||||||
|
-- the other files), recalling that a key can be unbound by passing 'nil'
|
||||||
|
-- (without the quotes) as the callback. For more information, please see
|
||||||
|
-- the Notion configuration manual available from the Notion Web page.
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Set default modifiers. Alt should usually be mapped to Mod1 on
|
||||||
|
-- XFree86-based systems. The flying window keys are probably Mod3
|
||||||
|
-- or Mod4; see the output of 'xmodmap'.
|
||||||
|
META="Mod4+"
|
||||||
|
--ALTMETA=""
|
||||||
|
|
||||||
|
-- Terminal emulator
|
||||||
|
XTERM="urxvt"
|
||||||
|
|
||||||
|
WScreen.set_managed_offset(ioncore.find_screen_id(0), {x=0, y=0, w=0, h=-1})
|
||||||
|
|
||||||
|
-- Some basic settings
|
||||||
|
ioncore.set{
|
||||||
|
-- Maximum delay between clicks in milliseconds to be considered a
|
||||||
|
-- double click.
|
||||||
|
--dblclick_delay=250,
|
||||||
|
|
||||||
|
-- For keyboard resize, time (in milliseconds) to wait after latest
|
||||||
|
-- key press before automatically leaving resize mode (and doing
|
||||||
|
-- the resize in case of non-opaque move).
|
||||||
|
--kbresize_delay=1500,
|
||||||
|
|
||||||
|
-- Opaque resize?
|
||||||
|
--opaque_resize=false,
|
||||||
|
|
||||||
|
-- Movement commands warp the pointer to frames instead of just
|
||||||
|
-- changing focus. Enabled by default.
|
||||||
|
--warp=true,
|
||||||
|
|
||||||
|
-- Switch frames to display newly mapped windows
|
||||||
|
--switchto=true,
|
||||||
|
|
||||||
|
-- Default index for windows in frames: one of 'last', 'next' (for
|
||||||
|
-- after current), or 'next-act' (for after current and anything with
|
||||||
|
-- activity right after it).
|
||||||
|
--frame_default_index='next',
|
||||||
|
|
||||||
|
-- Auto-unsqueeze transients/menus/queries.
|
||||||
|
--unsqueeze=true,
|
||||||
|
|
||||||
|
-- Display notification tooltips for activity on hidden workspace.
|
||||||
|
screen_notify=true,
|
||||||
|
|
||||||
|
-- Automatically save layout on restart and exit.
|
||||||
|
--autosave_layout=true,
|
||||||
|
|
||||||
|
-- Mouse focus mode; set to "sloppy" if you want the focus to follow the
|
||||||
|
-- mouse, and to "disabled" otherwise.
|
||||||
|
mousefocus="disabled",
|
||||||
|
|
||||||
|
-- Controls Notion's reaction to stacking requests sent by clients. Set to
|
||||||
|
-- "ignore" to ignore these requests, and to "activate" to set the activity
|
||||||
|
-- flag on a window that requests to be stacked "Above".
|
||||||
|
window_stacking_request="ignore",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-- Load default settings. The file cfg_defaults loads all the files
|
||||||
|
-- commented out below, except mod_dock. If you do not want to load
|
||||||
|
-- something, comment out this line, and uncomment the lines corresponding
|
||||||
|
-- the the modules or configuration files that you want, below.
|
||||||
|
-- The modules' configuration files correspond to the names of the
|
||||||
|
-- modules with 'mod' replaced by 'cfg'.
|
||||||
|
--dopath("cfg_defaults")
|
||||||
|
|
||||||
|
-- Load configuration of the Notion 'core'. Most bindings are here.
|
||||||
|
dopath("cfg_notioncore")
|
||||||
|
|
||||||
|
-- Load some kludges to make apps behave better.
|
||||||
|
dopath("cfg_kludges")
|
||||||
|
|
||||||
|
-- Define some layouts.
|
||||||
|
dopath("cfg_layouts")
|
||||||
|
|
||||||
|
-- Load some modules. Bindings and other configuration specific to modules
|
||||||
|
-- are in the files cfg_modulename.lua.
|
||||||
|
dopath("mod_query")
|
||||||
|
dopath("mod_menu")
|
||||||
|
dopath("mod_tiling")
|
||||||
|
--dopath("mod_statusbar")
|
||||||
|
--dopath("mod_dock")
|
||||||
|
dopath("mod_sp")
|
||||||
|
dopath("mod_notionflux")
|
||||||
|
dopath("mod_xrandr")
|
411
notion/cfg_notioncore.lua
Normal file
411
notion/cfg_notioncore.lua
Normal file
|
@ -0,0 +1,411 @@
|
||||||
|
--
|
||||||
|
-- Notion core configuration file
|
||||||
|
--
|
||||||
|
|
||||||
|
function oni_match_class(class)
|
||||||
|
local result = {}
|
||||||
|
ioncore.clientwin_i(
|
||||||
|
function (win)
|
||||||
|
if class == win:get_ident().class then
|
||||||
|
table.insert(result, win)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
)
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
function xsteve_run_byclass(prog, class)
|
||||||
|
local win = oni_match_class(class)[1]
|
||||||
|
if win then
|
||||||
|
win:goto_()
|
||||||
|
else
|
||||||
|
ioncore.exec(prog)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Bindings. This includes global bindings and bindings common to
|
||||||
|
-- screens and all types of frames only. See modules' configuration
|
||||||
|
-- files for other bindings.
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
-- WScreen context bindings
|
||||||
|
--
|
||||||
|
-- The bindings in this context are available all the time.
|
||||||
|
--
|
||||||
|
-- The variable META should contain a string of the form 'Mod1+'
|
||||||
|
-- where Mod1 maybe replaced with the modifier you want to use for most
|
||||||
|
-- of the bindings. Similarly ALTMETA may be redefined to add a
|
||||||
|
-- modifier to some of the F-key bindings.
|
||||||
|
|
||||||
|
defbindings("WScreen", {
|
||||||
|
bdoc("Switch to n:th object (workspace, full screen client window) "..
|
||||||
|
"within current screen."),
|
||||||
|
kpress(META.."1", "WScreen.switch_nth(_, 0)"),
|
||||||
|
kpress(META.."2", "WScreen.switch_nth(_, 1)"),
|
||||||
|
kpress(META.."3", "WScreen.switch_nth(_, 2)"),
|
||||||
|
kpress(META.."4", "WScreen.switch_nth(_, 3)"),
|
||||||
|
kpress(META.."5", "WScreen.switch_nth(_, 4)"),
|
||||||
|
kpress(META.."6", "WScreen.switch_nth(_, 5)"),
|
||||||
|
kpress(META.."7", "WScreen.switch_nth(_, 6)"),
|
||||||
|
kpress(META.."8", "WScreen.switch_nth(_, 7)"),
|
||||||
|
kpress(META.."9", "WScreen.switch_nth(_, 8)"),
|
||||||
|
kpress(META.."0", "WScreen.switch_nth(_, 9)"),
|
||||||
|
|
||||||
|
bdoc("Switch to next/previous object within current screen."),
|
||||||
|
kpress(META.."comma", "WScreen.switch_prev(_)"),
|
||||||
|
kpress(META.."period", "WScreen.switch_next(_)"),
|
||||||
|
|
||||||
|
submap(META.."K", {
|
||||||
|
--bdoc("Go to previous active object."),
|
||||||
|
--kpress("K", "ioncore.goto_previous()"),
|
||||||
|
|
||||||
|
--bdoc("Go to first object on activity/urgency list."),
|
||||||
|
--kpress("I", "ioncore.goto_activity()"),
|
||||||
|
|
||||||
|
bdoc("Clear all tags."),
|
||||||
|
kpress("T", "ioncore.tagged_clear()"),
|
||||||
|
}),
|
||||||
|
|
||||||
|
bdoc("Go to n:th screen on multihead setup."),
|
||||||
|
kpress(META.."Shift+1", "ioncore.goto_nth_screen(0)"),
|
||||||
|
kpress(META.."Shift+2", "ioncore.goto_nth_screen(1)"),
|
||||||
|
kpress(META.."Shift+3", "ioncore.goto_nth_screen(2)"),
|
||||||
|
kpress(META.."E", "ioncore.goto_nth_screen(2)"),
|
||||||
|
|
||||||
|
bdoc("Go to next/previous screen on multihead setup."),
|
||||||
|
kpress(META.."Shift+comma", "ioncore.goto_prev_screen()"),
|
||||||
|
kpress(META.."I", "ioncore.goto_prev_screen()"),
|
||||||
|
|
||||||
|
bdoc("Create a new workspace of chosen default type."),
|
||||||
|
kpress(META.."F9", "ioncore.create_ws(_)"),
|
||||||
|
|
||||||
|
bdoc("Display the main menu."),
|
||||||
|
kpress(ALTMETA.."F12", "mod_menu.menu(_, _sub, 'mainmenu', {big=true})"),
|
||||||
|
mpress("Button3", "mod_menu.pmenu(_, _sub, 'mainmenu')"),
|
||||||
|
|
||||||
|
bdoc("Display the window list menu."),
|
||||||
|
mpress("Button2", "mod_menu.pmenu(_, _sub, 'windowlist')"),
|
||||||
|
|
||||||
|
submap(META.."K", {
|
||||||
|
bdoc("Backward-circulate focus."),
|
||||||
|
kpress("AnyModifier+Tab", "ioncore.goto_next(_chld, 'left')",
|
||||||
|
"_chld:non-nil"),
|
||||||
|
|
||||||
|
bdoc("Raise focused object, if possible."),
|
||||||
|
kpress("AnyModifier+R", "WRegion.rqorder(_chld, 'front')",
|
||||||
|
"_chld:non-nil"),
|
||||||
|
}),
|
||||||
|
|
||||||
|
bdoc("Start i3lock"),
|
||||||
|
kpress("Mod1+Control+l", "ioncore.exec('i3lock -c 000000')"),
|
||||||
|
|
||||||
|
submap("Control+Z", {
|
||||||
|
kpress("B", "mod_menu.grabmenu(_, _sub, 'focuslist')"),
|
||||||
|
|
||||||
|
bdoc("Forward-circulate focus."),
|
||||||
|
-- '_chld' used here stands to for an actual child window that may not
|
||||||
|
-- be managed by the screen itself, unlike '_sub', that is likely to be
|
||||||
|
-- the managing group of that window. The right/left directions are
|
||||||
|
-- used instead of next/prev, because they work better in conjunction
|
||||||
|
-- with tilings.
|
||||||
|
kpress("space", "ioncore.goto_next(_chld, 'right')", "_chld:non-nil"),
|
||||||
|
|
||||||
|
kpress("O", "ioncore.goto_next_screen()"),
|
||||||
|
|
||||||
|
kpress("E", "xsteve_run_byclass('emacsclient -ca emacs', 'Emacs')"),
|
||||||
|
kpress("W", "xsteve_run_byclass('conkeror', 'Conkeror')"),
|
||||||
|
kpress("C", "xsteve_run_byclass('urxvt', 'URxvt')"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Client window bindings
|
||||||
|
--
|
||||||
|
-- These bindings affect client windows directly.
|
||||||
|
|
||||||
|
defbindings("WClientWin", {
|
||||||
|
submap(META.."K", {
|
||||||
|
bdoc("Nudge the client window. This might help with some "..
|
||||||
|
"programs' resizing problems."),
|
||||||
|
kpress_wait(META.."L", "WClientWin.nudge(_)"),
|
||||||
|
|
||||||
|
bdoc("Kill client owning the client window."),
|
||||||
|
kpress("C", "WClientWin.kill(_)"),
|
||||||
|
}),
|
||||||
|
submap("Control+Z", {
|
||||||
|
bdoc("Send next key press to the client window. "..
|
||||||
|
"Some programs may not allow this by default."),
|
||||||
|
kpress("Q", "WClientWin.quote_next(_)"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Client window group bindings
|
||||||
|
|
||||||
|
defbindings("WGroupCW", {
|
||||||
|
bdoc("Toggle client window group full-screen mode"),
|
||||||
|
kpress_wait(META.."Return", "WGroup.set_fullscreen(_, 'toggle')"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- WMPlex context bindings
|
||||||
|
--
|
||||||
|
-- These bindings work in frames and on screens. The innermost of such
|
||||||
|
-- contexts/objects always gets to handle the key press.
|
||||||
|
|
||||||
|
defbindings("WMPlex", {
|
||||||
|
bdoc("Close current object."),
|
||||||
|
kpress_wait(META.."C", "nil"),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Frames for transient windows ignore this bindmap
|
||||||
|
defbindings("WMPlex.toplevel", {
|
||||||
|
bdoc("Toggle tag of current object."),
|
||||||
|
kpress(META.."T", "WRegion.set_tagged(_sub, 'toggle')", "_sub:non-nil"),
|
||||||
|
|
||||||
|
bdoc("Lock screen"),
|
||||||
|
kpress(META.."L", "notioncore.exec_on(_, notioncore.lookup_script('notion-lock'))"),
|
||||||
|
|
||||||
|
bdoc("Query for manual page to be displayed."),
|
||||||
|
kpress(ALTMETA.."F1", "mod_query.query_man(_, ':man')"),
|
||||||
|
|
||||||
|
bdoc("Show the Notion manual page."),
|
||||||
|
kpress(META.."F1", "ioncore.exec_on(_, ':man notion')"),
|
||||||
|
|
||||||
|
bdoc("Run a terminal emulator."),
|
||||||
|
kpress(ALTMETA.."F2", "mod_query.exec_on_merr(_, XTERM or 'xterm')"),
|
||||||
|
|
||||||
|
bdoc("Query for command line to execute."),
|
||||||
|
kpress(ALTMETA.."F3", "mod_query.query_exec(_)"),
|
||||||
|
|
||||||
|
bdoc("Query for Lua code to execute."),
|
||||||
|
kpress(META.."F3", "mod_query.query_lua(_)"),
|
||||||
|
|
||||||
|
bdoc("Query for host to connect to with SSH."),
|
||||||
|
kpress(ALTMETA.."F4", "mod_query.query_ssh(_, ':ssh')"),
|
||||||
|
|
||||||
|
bdoc("Query for workspace to go to or create a new one."),
|
||||||
|
kpress(ALTMETA.."F9", "mod_query.query_workspace(_)"),
|
||||||
|
|
||||||
|
bdoc("Query for a client window to go to."),
|
||||||
|
kpress(META.."G", "mod_query.query_gotoclient(_)"),
|
||||||
|
|
||||||
|
bdoc("Display context menu."),
|
||||||
|
kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"),
|
||||||
|
|
||||||
|
submap(META.."K", {
|
||||||
|
bdoc("Detach (float) or reattach an object to its previous location."),
|
||||||
|
-- By using _chld instead of _sub, we can detach/reattach queries
|
||||||
|
-- attached to a group. The detach code checks if the parameter
|
||||||
|
-- (_chld) is a group 'bottom' and detaches the whole group in that
|
||||||
|
-- case.
|
||||||
|
kpress("D", "ioncore.detach(_chld, 'toggle')", "_chld:non-nil"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- WFrame context bindings
|
||||||
|
--
|
||||||
|
-- These bindings are common to all types of frames. Some additional
|
||||||
|
-- frame bindings are found in some modules' configuration files.
|
||||||
|
|
||||||
|
defbindings("WFrame", {
|
||||||
|
submap(META.."K", {
|
||||||
|
bdoc("Maximize the frame horizontally/vertically."),
|
||||||
|
kpress("H", "WFrame.maximize_horiz(_)"),
|
||||||
|
kpress("V", "WFrame.maximize_vert(_)"),
|
||||||
|
}),
|
||||||
|
|
||||||
|
bdoc("Display context menu."),
|
||||||
|
mpress("Button3", "mod_menu.pmenu(_, _sub, 'ctxmenu')"),
|
||||||
|
|
||||||
|
bdoc("Begin move/resize mode."),
|
||||||
|
kpress(META.."R", "WFrame.begin_kbresize(_)"),
|
||||||
|
|
||||||
|
bdoc("Switch the frame to display the object indicated by the tab."),
|
||||||
|
mclick("Button1@tab", "WFrame.p_switch_tab(_)"),
|
||||||
|
mclick("Button2@tab", "WFrame.p_switch_tab(_)"),
|
||||||
|
|
||||||
|
bdoc("Resize the frame."),
|
||||||
|
mdrag("Button1@border", "WFrame.p_resize(_)"),
|
||||||
|
mdrag(META.."Button3", "WFrame.p_resize(_)"),
|
||||||
|
|
||||||
|
bdoc("Move the frame."),
|
||||||
|
mdrag(META.."Button1", "WFrame.p_move(_)"),
|
||||||
|
|
||||||
|
bdoc("Move objects between frames by dragging and dropping the tab."),
|
||||||
|
mdrag("Button1@tab", "WFrame.p_tabdrag(_)"),
|
||||||
|
mdrag("Button2@tab", "WFrame.p_tabdrag(_)"),
|
||||||
|
|
||||||
|
bdoc("Switch to next/previous object within the frame."),
|
||||||
|
mclick(META.."Button4", "WFrame.switch_next(_)"),
|
||||||
|
mclick(META.."Button5", "WFrame.switch_prev(_)"),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Frames for transient windows ignore this bindmap
|
||||||
|
|
||||||
|
defbindings("WFrame.toplevel", {
|
||||||
|
bdoc("Query for a client window to attach."),
|
||||||
|
kpress(META.."A", "mod_query.query_attachclient(_)"),
|
||||||
|
|
||||||
|
submap(META.."K", {
|
||||||
|
-- Display tab numbers when modifiers are released
|
||||||
|
submap_wait("ioncore.tabnum.show(_)"),
|
||||||
|
|
||||||
|
bdoc("Switch to n:th object within the frame."),
|
||||||
|
kpress("1", "WFrame.switch_nth(_, 0)"),
|
||||||
|
kpress("2", "WFrame.switch_nth(_, 1)"),
|
||||||
|
kpress("3", "WFrame.switch_nth(_, 2)"),
|
||||||
|
kpress("4", "WFrame.switch_nth(_, 3)"),
|
||||||
|
kpress("5", "WFrame.switch_nth(_, 4)"),
|
||||||
|
kpress("6", "WFrame.switch_nth(_, 5)"),
|
||||||
|
kpress("7", "WFrame.switch_nth(_, 6)"),
|
||||||
|
kpress("8", "WFrame.switch_nth(_, 7)"),
|
||||||
|
kpress("9", "WFrame.switch_nth(_, 8)"),
|
||||||
|
kpress("0", "WFrame.switch_nth(_, 9)"),
|
||||||
|
|
||||||
|
bdoc("Move current object within the frame left/right."),
|
||||||
|
kpress("comma", "WFrame.dec_index(_, _sub)", "_sub:non-nil"),
|
||||||
|
kpress("period", "WFrame.inc_index(_, _sub)", "_sub:non-nil"),
|
||||||
|
|
||||||
|
bdoc("Maximize the frame horizontally/vertically."),
|
||||||
|
kpress("H", "WFrame.maximize_horiz(_)"),
|
||||||
|
kpress("V", "WFrame.maximize_vert(_)"),
|
||||||
|
|
||||||
|
bdoc("Attach tagged objects to this frame."),
|
||||||
|
kpress("A", "ioncore.tagged_attach(_)"),
|
||||||
|
}),
|
||||||
|
|
||||||
|
submap("Control+Z", {
|
||||||
|
bdoc("Switch to next object within the frame."),
|
||||||
|
kpress("Z", "WFrame.switch_next(_)"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Bindings for floating frames.
|
||||||
|
|
||||||
|
defbindings("WFrame.floating", {
|
||||||
|
bdoc("Toggle shade mode"),
|
||||||
|
mdblclick("Button1@tab", "WFrame.set_shaded(_, 'toggle')"),
|
||||||
|
|
||||||
|
bdoc("Raise the frame."),
|
||||||
|
mpress("Button1@tab", "WRegion.rqorder(_, 'front')"),
|
||||||
|
mpress("Button1@border", "WRegion.rqorder(_, 'front')"),
|
||||||
|
mclick(META.."Button1", "WRegion.rqorder(_, 'front')"),
|
||||||
|
|
||||||
|
bdoc("Lower the frame."),
|
||||||
|
mclick(META.."Button3", "WRegion.rqorder(_, 'back')"),
|
||||||
|
|
||||||
|
bdoc("Move the frame."),
|
||||||
|
mdrag("Button1@tab", "WFrame.p_move(_)"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- WMoveresMode context bindings
|
||||||
|
--
|
||||||
|
-- These bindings are available keyboard move/resize mode. The mode
|
||||||
|
-- is activated on frames with the command begin_kbresize (bound to
|
||||||
|
-- META.."R" above by default).
|
||||||
|
|
||||||
|
defbindings("WMoveresMode", {
|
||||||
|
bdoc("Cancel the resize mode."),
|
||||||
|
kpress("AnyModifier+Escape","WMoveresMode.cancel(_)"),
|
||||||
|
|
||||||
|
bdoc("End the resize mode."),
|
||||||
|
kpress("AnyModifier+Return","WMoveresMode.finish(_)"),
|
||||||
|
|
||||||
|
bdoc("Grow in specified direction."),
|
||||||
|
kpress("Left", "WMoveresMode.resize(_, 1, 0, 0, 0)"),
|
||||||
|
kpress("Right", "WMoveresMode.resize(_, 0, 1, 0, 0)"),
|
||||||
|
kpress("Up", "WMoveresMode.resize(_, 0, 0, 1, 0)"),
|
||||||
|
kpress("Down", "WMoveresMode.resize(_, 0, 0, 0, 1)"),
|
||||||
|
kpress("F", "WMoveresMode.resize(_, 1, 0, 0, 0)"),
|
||||||
|
kpress("B", "WMoveresMode.resize(_, 0, 1, 0, 0)"),
|
||||||
|
kpress("P", "WMoveresMode.resize(_, 0, 0, 1, 0)"),
|
||||||
|
kpress("N", "WMoveresMode.resize(_, 0, 0, 0, 1)"),
|
||||||
|
|
||||||
|
bdoc("Shrink in specified direction."),
|
||||||
|
kpress("Shift+Left", "WMoveresMode.resize(_,-1, 0, 0, 0)"),
|
||||||
|
kpress("Shift+Right", "WMoveresMode.resize(_, 0,-1, 0, 0)"),
|
||||||
|
kpress("Shift+Up", "WMoveresMode.resize(_, 0, 0,-1, 0)"),
|
||||||
|
kpress("Shift+Down", "WMoveresMode.resize(_, 0, 0, 0,-1)"),
|
||||||
|
kpress("Shift+F", "WMoveresMode.resize(_,-1, 0, 0, 0)"),
|
||||||
|
kpress("Shift+B", "WMoveresMode.resize(_, 0,-1, 0, 0)"),
|
||||||
|
kpress("Shift+P", "WMoveresMode.resize(_, 0, 0,-1, 0)"),
|
||||||
|
kpress("Shift+N", "WMoveresMode.resize(_, 0, 0, 0,-1)"),
|
||||||
|
|
||||||
|
bdoc("Move in specified direction."),
|
||||||
|
kpress(META.."Left", "WMoveresMode.move(_,-1, 0)"),
|
||||||
|
kpress(META.."Right", "WMoveresMode.move(_, 1, 0)"),
|
||||||
|
kpress(META.."Up", "WMoveresMode.move(_, 0,-1)"),
|
||||||
|
kpress(META.."Down", "WMoveresMode.move(_, 0, 1)"),
|
||||||
|
kpress(META.."F", "WMoveresMode.move(_,-1, 0)"),
|
||||||
|
kpress(META.."B", "WMoveresMode.move(_, 1, 0)"),
|
||||||
|
kpress(META.."P", "WMoveresMode.move(_, 0,-1)"),
|
||||||
|
kpress(META.."N", "WMoveresMode.move(_, 0, 1)"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Menu definitions
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
-- Main menu
|
||||||
|
defmenu("mainmenu", {
|
||||||
|
menuentry("Run...", "mod_query.query_exec(_)"),
|
||||||
|
menuentry("Terminal", "mod_query.exec_on_merr(_, XTERM or 'xterm')"),
|
||||||
|
menuentry("Lock screen",
|
||||||
|
"notioncore.exec_on(_, notioncore.lookup_script('notion-lock'))"),
|
||||||
|
menuentry("Help", "mod_query.query_man(_)"),
|
||||||
|
menuentry("About Notion", "mod_query.show_about_ion(_)"),
|
||||||
|
submenu("Styles", "stylemenu"),
|
||||||
|
submenu("Session", "sessionmenu"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Session control menu
|
||||||
|
defmenu("sessionmenu", {
|
||||||
|
menuentry("Save", "ioncore.snapshot()"),
|
||||||
|
menuentry("Restart", "ioncore.restart()"),
|
||||||
|
menuentry("Restart TWM", "ioncore.restart_other('twm')"),
|
||||||
|
menuentry("Exit", "ioncore.shutdown()"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Context menu (frame actions etc.)
|
||||||
|
defctxmenu("WFrame", "Frame", {
|
||||||
|
-- Note: this propagates the close to any subwindows; it does not
|
||||||
|
-- destroy the frame itself, unless empty. An entry to destroy tiled
|
||||||
|
-- frames is configured in cfg_tiling.lua.
|
||||||
|
menuentry("Close", "WRegion.rqclose_propagate(_, _sub)"),
|
||||||
|
-- Low-priority entries
|
||||||
|
menuentry("Attach tagged", "ioncore.tagged_attach(_)", { priority = 0 }),
|
||||||
|
menuentry("Clear tags", "ioncore.tagged_clear()", { priority = 0 }),
|
||||||
|
menuentry("Window info", "mod_query.show_tree(_, _sub)", { priority = 0 }),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Context menu for groups (workspaces, client windows)
|
||||||
|
defctxmenu("WGroup", "Group", {
|
||||||
|
menuentry("Toggle tag", "WRegion.set_tagged(_, 'toggle')"),
|
||||||
|
menuentry("De/reattach", "ioncore.detach(_, 'toggle')"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Context menu for workspaces
|
||||||
|
defctxmenu("WGroupWS", "Workspace", {
|
||||||
|
menuentry("Close", "WRegion.rqclose(_)"),
|
||||||
|
menuentry("Rename", "mod_query.query_renameworkspace(nil, _)"),
|
||||||
|
menuentry("Attach tagged", "ioncore.tagged_attach(_)"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Context menu for client windows
|
||||||
|
defctxmenu("WClientWin", "Client window", {
|
||||||
|
menuentry("Kill", "WClientWin.kill(_)"),
|
||||||
|
})
|
Loading…
Reference in a new issue