Mouse-driven Tiling Window Manager

Overview

I like tiling window management, but all tiling window managers known to me force to use keyboard for dozen of things. So this is my attempt to write some mouse-driven tiling wm in Go.

I have never written any wm before, so this code isn't probably a good example how to write wm at all but maybe some example how to write wm in Go.

This program isn't mature window manager yet, but I started using it for everyday work (it replaced xmodad).

mdtwm uses only right mouse button as follows:

  • single-click-move: move a window (you can move between desktops),
  • single-slow-click: send right click to window,
  • double-click-move: tile/untile window,
  • triple-click: close window.

Default layout (see config.go)

  • three desks
  • first desk contains two panels
  • second desk contains one horizontal panel
  • third desk contains one vertical panel

Default keybindings (see config.go)

  • Mod+Enter: new terminal (gnome-terminal)
  • Mod+ESC: exit
  • Mod+1: first desk
  • Mod+2: second desk
  • Mod+3: thrid desk

mdtwm doesn't contain its own status bar yet, but there is support for dzen2. If cfg.StatusLogger is set to Dzen2Logger (as in default config.go) you can use mdtwm together with dzen2 as follows:

mdtwm 2>~/mdtwm.log |dzen2 -e '' -ta l -fg '#ddddcc' -bg '#555588'

Known issues:

  • You can't change current desktops without use of keyboard.
  • See issues directory.

Build instruction:

go get github.com/ziutek/mdtwm

Screenshot:

Screenshot image

Issues
  • MySql closes IDLE connections.

    MySql closes IDLE connections.

    When client opens connection and doesn't send queries during some timeout, mysql closes connection ( http://dev.mysql.com/doc/refman/5.0/en/gone-away.html ). As result, on client side we get error when trying to send any query on closed connection. Consider the sample:

    var db *autorc.Conn var userSel *autorc.Stmt ...

    //during program startup db = autorc.New(...) userSel, err = db.Prepare("select * from User where Id=?") CheckError(err)

    //some time T passed without queries rows, res, err := userSel.Exec(id) if(err!=nil){ log.Panicf("read user, Exec failed %+v", err) }

    When "silent time" T exceeds mysql wait_timeout, which is 8 hours by default, we get panic with message (on Windows) : read user, Exec failed, WSASend an established connection was aborted by the software in your host machine

    Expected behavior With normal connections (not autoreconnectable) the error is what's expected. With autorc connection I don't expect this error, as autoreconnection can handle it.

    Additional details Due to 8 hours default wait timeout the problem is hard to reproduce. Typically:

    • MySQL drops a connection after 8 hours
    • The software is used during the day, but isn’t used during the night, therefore the connection times out in the night
    • Therefore in the morning, the program installed the day before no longer works

    We can change wait_timeout like this: mysql> SET @@GLOBAL.wait_timeout=300

    edit: moved to mymysql, my error

    opened by dmitrykm 1
  • Updates for Go language changes.

    Updates for Go language changes.

    Most importantly, make it follow the 'go tool' conventions.

    • Move code into a library so it can be used by the 'mdtwm' and 'test' commands.
    • Moves commands (mdtwm, test) into a 'cmd/' directory. They are now in a different package from the rest of the code. This doesn't go very well with the current structure of using package variables (globals) so I had to hack most of their code back into the library (lib/run.go and lib/test.go). In the future it might be better to refactor the globals into an exported type that carries all configuration.
    • Change the import path for the patched xgb to make it usable by the go tool.
    • Remove Makefiles
    opened by nictuku 0
  • make client close configurable

    make client close configurable

    Is it possible to add an option in config.go for a selectable shortcut key to close client windows? I find that the triple click of the right mouse button is sometimes inconsistent. Since you are now using the Mod key with the mouse for operations this allows use of the Left and Middle mouse buttons also. Maybe make mod+left drag=move, mod+middle=close, and mod+right drag=floating?

    opened by netfun81 2
Owner
Michał Derkacz
Michał Derkacz
A fully-featured window manager written in Go.

NOTE: This repository is in maintenance mode. Wingo is still used every day, but because there are no tests, it is impossible to add new functionality

Andrew Gallant 931 Jun 26, 2022
edotool: simulate keyboard input and mouse activity

edotool Simulate keystrokes. Like xdotool (well, kind of), with support for both X11 and Wayland. edotool Screengrab Using edotool keystrokes can be s

null 12 May 15, 2022
A Rolling Window Demo

模仿Hystrix实现一个滑动窗口计数器 需求 参考 Hystrix 实现一个滑动窗口计数器 实现思路 实习滑动窗口的核心代码位置是 /pkg/hystrix 定义一个放置请求结果的对象Bucket(/pkg/hystrix/bucket.go) 定义一个滑动窗口对象RollingWindown(/

Yuki Chen 1 Jun 8, 2022
Calculate slope and r2 in your dataset for a defined rolling window

Hit The Slopes Calculate slope and r2 in your dataset for a defined rolling window. This is useful if you want to see the evolution of trends in your

Tom Larsen 0 Feb 9, 2022
Wuzzel turns fuzzel into a window picker

wuzzel wuzzel turns fuzzel into a window picker. Description fuzzel is an applic

Justin Speers 5 May 23, 2022
Proof-of-concept Windows-like clipboard manager for Linux in Go

Goclip Simple Windows-like clipboard manager for linux. This application is just a proof-of-concept and might be highly unstable. Features Clipboard t

null 2 Jan 28, 2022
Darktile is a GPU rendered terminal emulator designed for tiling window managers.

Darktile is a GPU rendered terminal emulator designed for tiling window managers.

Liam Galvin 2.8k Jun 25, 2022
A simple Go utility to display track information from, and send commands to, spotifyd from Tiling Window Managers like Sway and i3

Untitled Spotifyd Controller A simple Go utility to display track information from, and send commands to, spotifyd from Tiling Window Managers like Sw

Matt 2 Mar 8, 2022
A fully-featured window manager written in Go.

NOTE: This repository is in maintenance mode. Wingo is still used every day, but because there are no tests, it is impossible to add new functionality

Andrew Gallant 929 Jun 20, 2022
A fully-featured window manager written in Go.

NOTE: This repository is in maintenance mode. Wingo is still used every day, but because there are no tests, it is impossible to add new functionality

Andrew Gallant 931 Jun 26, 2022
Using Eww Widgets to create a replacement for my bumblebee-status bars in i3 Window Manager.

Eww Config What is it Using Eww Widgets to create a replacement for my bumblebee-status bars in i3 Window Manager. Eww allows you to create widgets an

Owen Rumney 0 Nov 18, 2021
gosignal is expected to be used in minimal window manager configurations

gosignal is expected to be used in minimal window manager configurations. It provides a simple battery monitor , which notifies of battery events. It has a config file where you can configure the notification messages given

pspiagicw 0 Mar 21, 2022
KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes

Kubernetes-based Event Driven Autoscaling KEDA allows for fine-grained autoscaling (including to/from zero) for event driven Kubernetes workloads. KED

KEDA 5.1k Jul 1, 2022
Hexagonal architecture paradigms, such as dividing adapters into primary (driver) and secondary (driven)Hexagonal architecture paradigms, such as dividing adapters into primary (driver) and secondary (driven)

authorizer Architecture In this project, I tried to apply hexagonal architecture paradigms, such as dividing adapters into primary (driver) and second

Renato Benatti 0 Dec 7, 2021
Busy is a mouse movement simulator

Busy is a mouse movement simulator. It stops your system from going to sleep / idling and makes sure that you keep getting those notifications while you take that well deserved break.

Tejus 15 Mar 31, 2021
edotool: simulate keyboard input and mouse activity

edotool Simulate keystrokes. Like xdotool (well, kind of), with support for both X11 and Wayland. edotool Screengrab Using edotool keystrokes can be s

null 12 May 15, 2022
A bin which will keep screen open by moving a mouse

Stay Awake This is a small program which will move mouse up and down to keep screen on. This stimulates like user is doing something. Motivation I had

Nirav Patel 0 Oct 21, 2021
Joy2Mouse is a program that allows you to control your computer mouse with a joystick.

Joy2Mouse Joy2Mouse is a program that allows you to control your computer mouse with a joystick. Features Control your mouse with a joystick Mouse dow

Abby 4 Dec 26, 2021
'mouseable' is keyboard-based mouse emulator for Windows.

Motivation Mouseable is intended to replace a mouse or trackpad. This program was inspired by Ultimate Hacking Keyboard Demo, Windows built-in functio

null 408 Jun 19, 2022
Battleblips - Work in progress multiplayer terminal base battleship game written in Go (with mouse support!) using tcell library

battleblips Work in progress multiplayer terminal base battleship game written in Go (with mouse support!) using tcell library (see https://github.com

null 1 Apr 26, 2022
Periodically moves your mouse!

Mouse Jiggler Is your hand getting tired from waking your PC? Do you want to appear online while you take a nap? If so, keep reading. Running the bina

Rick Console 0 Jan 12, 2022
Remote mouse keyboard with golang

remote_mouse_keyboard_golang Connect laptop/pc and phone on the same newtwork ge

Ayush Sharma 1 Feb 3, 2022
Allows you to use the magic remote on your webOS LG TV as a keyboard/mouse for your Linux machine

magic4linux Allows you to use the magic remote on your webOS LG TV as a keyboard/mouse for your PC Linux machine. This is a Linux implementation of th

Mathias Fredriksson 0 Feb 7, 2022
Efficient moving window for high-speed data processing.

Moving Window Data Structure Copyright (c) 2012. Jake Brukhman. ([email protected]). All rights reserved. See the LICENSE file for BSD-style license. I

Jake Brukhman 31 Jun 30, 2021
Friends don't let friends leak secrets on their terminal window

senv - safer env Friends don't let friends leak secrets in terminal windows. ?? Print your environment to the terminal without worry.

null 99 Jun 16, 2022
Golang implementation of Sliding Window Algorithm for distributed rate limiting.

slidingwindow Golang implementation of Sliding Window Algorithm for distributed rate limiting. Installation $ go get -u github.com/RussellLuo/slidingw

Luo Peng 312 Jun 17, 2022
A simple business indicator tool that uses a sliding window to detect whether the indicator exceeds the threshold

melon A simple business indicator tool that uses a sliding window to detect whether the indicator exceeds the threshold Usage //create the metric //th

believe 4 Jul 11, 2021
A concurrent rate limiter library for Golang based on Sliding-Window rate limiter algorithm.

ratelimiter A generic concurrent rate limiter library for Golang based on Sliding-window rate limitng algorithm. The implementation of rate-limiter al

Narasimha Prasanna HN 214 Jun 15, 2022
Scalable golang ratelimiter using the sliding window algorithm. Currently supports only Redis.

go-ratelimiter Scalable golang ratelimiter using the sliding window algorithm. Currently supports only Redis. Example usage client := redis.NewClient

null 0 Oct 19, 2021