Skip to content

Repository files navigation

Collision window navigation module for AwesomeWM

Warning: The master branch is for Awesome 4.0+, use the awesome3.5 branch for older versions of Awesome.

This module add some visual indicators for common window management operations. It is now easier to know the impact of a given command as a visual queue will be printed on the screen. Collision has 3 modes:

  • Focus: Move the focus from client to client
  • Move: Move a client
  • Resize: Change a client dimensions
  • Tag: Move to the previous/next tag

Installation

First, clone the repository

mkdir-p ~/.config/awesomecd ~/.config/awesomegitclonehttps://github.com/Elv13/collision

Now, open ~/.config/awesome/rc.lua (or copy /etc/xdg/awesome/rc.lua to ~/.config/awesome/rc.lua fist if you never modified your Awesome config before) and add this line somewhere in your rc.lua:

require("collision")()

It is a very good idea to also change the default Mod4+arrow shortcut to something else:

--Remove those lines:awful.key({ modkey, }, "Left", awful.tag.viewprev,
{description="view previous", group="tag"}),
awful.key({ modkey, }, "Right", awful.tag.viewnext,
{description="view next", group="tag"}),

Your done!

Usage

Using Collision is easy. You just have to hit the arrow keys () with some modifiers keys. The Shift key is usually used for grabbing something while the Control key is used to max out the effect.

Modifier 1Modifier 2Modifier 3Effect
Mod4Move the focus on the tiled layer
Mod4ControlMove the focus on the floating layer
Mod4ShiftMove a client in the tiled or floating layer
Mod4ShiftControlMove a floating client to the far side of that screen
Mod4Mod1 (Alt)Increase a floating client size
Mod4Mod1 (Alt)ShiftReduce a floating client size
ControlMod1 (Alt)Move to the next/previous tag
ControlMod4Mod1 (Alt)Move to the next/previous screen
ControlMod4Mod1 (Alt)+ Shift Move tag to the next/previous screen

Using different keys

Due to the large ammount of keyboard shortcut Collision create, they are auto-generated automatically. While this make installation simpler, it also make Collision somewhat hard-coded magic. Some alternative keymaps can also be ackward to use because of the reliance on mod keys such as Alt and Control.

That being said, Collision allow some basic remapping. Instead of:

require("collision")()

This can be used:

require("collision") {
-- Normal Xephyr Vim G510up= { "Up" , "&" , "k" , "F15" },
down= { "Down" , "KP_Enter" , "j" , "F14" },
left= { "Left" , "#" , "h" , "F13" },
right= { "Right" , "\"" , "l" , "F17" },
}

Of course, if the Vim keys are used, any other shortcut binded to them have to be removed from rc.lua.

Appearance

Collision appearance can be changed in yout theme using the collision namespace

Focus

VariableDescription
collision_resize_widthThe size of the resize handles
collision_resize_shapeThe gears.shape used for the resize handle
collision_resize_border_widthThe resize handles border width
collision_resize_border_colorThe resize handles border colors
collision_resize_paddingThe resize handles padding between the boder and arrow
collision_resize_bgThe resize handles background color
collision_resize_fgThe resize handles arrow color
collision_resize_arrow_border_colorThe arrow border color
collision_resize_arrow_border_widthThe arrow border width
collision_resize_sizeEnable the size widget when resizng
collision_resize_shape
collision_resize_size_border_width
collision_resize_size_border_color
collision_resize_size_font
collision_resize_size_shape
collision_resize_size_bg
collision_resize_size_fg
collision_focus_shapeThe outer shape of the "arrow" widgets
collision_focus_border_width
collision_focus_border_color
collision_focus_padding
collision_focus_bgThe background of the focus change arrow
collision_focus_fgThe foregroung filling color of the arrow
collision_focus_bg_centerThe focussed client circle background
collision_focus_shape_centerThe focused client widget shape (default: circle)
collision_focus_arrow_border_colorThe color of the arrow border
collision_focus_arrow_border_widthThe width of the arrow border
collision_screen_shape
collision_screen_border_width
collision_screen_border_color
collision_screen_padding
collision_screen_bg
collision_screen_fg
collision_screen_bg_focus
collision_screen_fg_focus

Settings

-- Swap clients across screen instead of adding them to the other tagcollision.settings.swap_across_screen=true

Other

The collision.select_screen(idx) function allow to select a screen and can be assigned to shortcuts.

The collision.highlight_cursor(timeout) method will highlight the current mouse cursor position.

Use collision.mouse.highlight() and collision.mouse.hide()

Notes

Using the focus arrows to select empty screens only work in Awesome 3.5.7+

About

A window management module for AwesomeWM

Topics

Resources

Stars

162 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages