Giter Club home page Giter Club logo

tleino / mxswm Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 169 KB

MaXed Stacks Window Manager for X11. Keeps windows in stacks of maximized height (with controllable width) and allows quick control using keyboard. Useful for users with wide screens.

Home Page: https://namhas.dev/#mxswm

License: ISC License

Makefile 2.23% C 94.75% Shell 0.58% Roff 2.44%
window-manager x11-wm x11 tiling-window-manager keyboard-control stacking-window-manager

mxswm's Introduction

mxswm

mxswm is a MaXed Stacks Window Manager for X11. This window manager keeps windows in a number of stacks of same size and allows quick changing between the windows using keyboard. It has basic support for multiple monitors.

This is useful for people who hate micromanaging the position and size of windows using mouse.

If it is necessary to stack some windows vertically, you can use xvbox.

If it is necessary to manually manage position and size of some windows, run a separate window manager better suited for the job in Xephyr.

This window manager was originally created to be a simpler alternative for cocowm by the same author. Reaping the full benefit of cocowm requires a specialized command shell system, such as cocovt. However, a simple maximizing window manager like mxswm is fine enough for most purposes when working with programs that were designed for the full screen view, such as vtsh which is an alternative to cocovt.

At the moment mxswm mostly works, but is not flawless. Also, requires manual customization from mxswm.h for e.g. setting the fonts and borders. There is some initial support for runtime configuration through a Unix domain socket using 'mxswmctl' command.

Default key bindings

Stacks

  • F1 Remove window stack
  • F2 Add window stack
  • F3 Toggle overriding maxwidth setting
  • Win+Left Select stack on the left
  • Win+Right Select stack on the right
  • Shift+Win+Left Move current stack to the left
  • Shift+Win+Right Move current stack to the right
  • Win+S Toggle sticky status for stack
  • Win+H Toggle hide other stacks (not counting sticky stacks)
  • Win+Enter Run command in this stack

Clients

  • Win+Tab Cycle to previous clients in any stack
  • Menu Quickly focus previous client in any stack
  • Win+f Focus client by name
  • Win+Down Select client / raise selected client
  • Win+Up Select client / raise selected client
  • Win+q Delete client
  • Win+k Destroy client forcibly (rarely needed / should not be used)
  • Ctrl+Win+Left Move selected client to stack on the left
  • Ctrl+Win+Right Move selected client to stack on the right
  • Win+Space Rename current client's title (or reset to original)

Prompt

  • BackSpace Delete character
  • Esc Exit prompt without submitting

Statusbar

  • Win+t Toggle display of root window title contents

Debugging

  • Win+a Dump stack and client information to trace log
  • Win+l Restart window manager (useful e.g. for testing .mxswmrc or after code modifications)
  • Win+Shift+q Exit

Build

$ ./configure ~
$ make
$ make install

Runtime configuration

Set first stack's width to 200px:

$ mxswmctl stack 1 width 200

Dependencies

  • Practically none on a standard Unix/Linux system that uses X11 Window System.

Debugging

Enable synchronized (slow) behavior that help in debugging X11 errors.

$ mxswm sync

By default mxswm does not have an error handler for X11 errors which makes mxswm crash when getting unexpected client behavior. This is so that the errors can be fixed from mxswm-side so that mxswm becomes robust and does not need error handler for these sort of things. Help is wanted in running mxswm with various client programs.

You can also add -DTRACE to CFLAGS in Makefile for getting debug messages. When reporting bugs, sending the -DTRACE output would be good.

Files

  • ~/.mxswm_socket For runtime configuration using mxswmctl

mxswm's People

Contributors

tleino avatar

Stargazers

 avatar  avatar

Watchers

 avatar

mxswm's Issues

window manager crash

Interesting window manager concept, I did experience some crashes when using two stacks and using the hide stack function as a way to fullscreen one stack. Also, will you be adding a way to delete a window in the future? instead of just removing a stack. Thanks, good work so far.

Implement mouse control

Mouse control for client menu, moving stacks, closing clients, etc. Purely bonus because I believe most people would use mxswm from keyboard, but sometimes is useful e.g. when using e.g. a browser and having a mouse at hand, and needing to do something small.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.