Giter VIP home page Giter VIP logo

win3wm's Introduction

WinWM

WinWM is a tiling window manager inspired by i3wm, it was initially private and commerical, but I decided to opensource it.

Manual

for the config options and explanations, and a tutorial on the luajit scripting. please check the page here

Documentation

Documentation

Architecture

  • twm - is the actual Tiling Window Manager logic, that handles the trees, layouts, Config, input, etc...
  • ForceResize - is the DLL that is to be injected in all applications to allow resizing a window past its limits
  • WinHook - is the DLL that is to be injected in all applications to notify the main application of window creation/destruction.
  • x86ipc - Due to WinAPI constraints, there needs to be a child process for interacting with x86 processes
  • WinWMGUI - was the C# gui that was to be used for licensing purposes.

Installation/Running

You do not have to install Win3WM, just extract it from the zip and run (WinWM.exe). The latest version can be obtained here

Building

  • Open Developer Command Prompt for vs2019
  • Build.bat

Features

  • Multi monitor support
  • LuaJit Scripting
  • Uses virtual desktops instead of just moving around windows
  • Performance (happy enough with it, some optimizations could be done somehow for really heavy windows like file explorer)

TODO

  • focus switching on cursor movement and not hotkey
  • save tree layout and restore on restart.
  • CrashHandling (restart on crash)
  • Focus system similar to i3wm (current focus system is basic)
  • Handle disconnecting and reconnecting displays during runtime

Issues

feel free to ask questions or put suggestions by opening an issue. I'd be glad to discuss these things

Prerequisites

The task bar must be at the bottom of the screen and not on the sides, this is something that will hopefully be fixed soon

Showcase

Basic Showcase A basic image showing the status bar on the bottom left, the windows, the gapping functionality and the ability to remove titlebars from application (top right command prompt) and the yellow focus bar on the bottom of the current focused window.

Multimonitor Showcase A image showing the multimonitor version, a status bar for each monitor, with the active monitor having the color blue on the statusbar

win3wm's People

Contributors

mcyoloswagham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

win3wm's Issues

[Feature requirement] Manually tile size adjustment

Could you please add a feature that can adjust the tile size manually?

The Pop Shell has a similar feature. It allows users to manually adjust tile size through two ways:

  • use the mouse to drag tile edges to adjust the tile size.
  • enter the window management mode and use arrows to adjust tile size.

The detail of manual tile adjustment of Pop Shell is demonstrated in the video ( 00:24 - 00:41) below:
https://www.youtube.com/watch?v=8xLBG1DXEGQ&t=41s

Thank you for your time.

Documentation in archive is generated?

Can you publish documentation in a human-readable form without the use of tools, like a browser?
It feels like the current ./docs is a dump of generated files that are to be included in the release package.

Build Instructions

I'm hoping this saves some time for other people like me who are not super familiar with building software on windows.

Apologies if I missed a component

Compilation Instructions

  1. Download vs_community.exe for visualstudio 2019

https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=community&rel=16&utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=link+cta&utm_content=download+commandline+parameters+vs2019+rc

  1. Install components required to build
vs_community.exe --passive ^
  --add Microsoft.VisualStudio.Workload.VCTools --installRecommended ^
  --add Microsoft.VisualStudio.Component.VC.CLI.Support ^
  --add Microsoft.VisualStudio.Component.Windows10SDK.19041
  1. Open x64 Native Tools Command Prompt for VS 2019

  2. git clone and build

cd C:\Users\you\Downloads
git clone https://github.com/McYoloSwagHam/win3wm
cd win3wm
./build.bat
  1. Run
cd build\
./WinWM.exe

Thank you for writing this software!!

Documentation clarification

Hello,

Thanks for making this, I'm very appreciative. Don't be afraid to put up a GitHub sponsor link or similar :)

Could you please clarify what the difference between a 'move' and a 'carry' is? From my reading of the docs, I can't quite figure it out.

Thanks!

x86ipc.exe flagged as virus + general question about registry key edits

First off - I really like the look of this program you've written. It looks clean and useful, a solid implementation of many of the i3wm ideals.

However, I can't help but run these types of programs through a service as simple to use as VirusTotal.com, and the x86ipc.exe included in your .zip was flagged by 12/67 security vendors.

My number one concern is the vast number of registry edits this script is making. You can see the full report here. Now I'm not actually throwing any accusations around, I honestly believe you have the best intentions, but that doesn't change the fact that I still want some answers.

I've taken a quick look through the "x86ipc" folder at the code in hopes of spotting a smoking gun, unfortunately for me my experience with C is rather limited and nothing in here jumps out at me as being concerning.

Can you shed some light as to what bit of code is running that is making these registry edits/getting flagged by anti-malware suites? Any incites would be much appreciated, as I would love to put my mind as ease and use this sweet tool outside of an almost empty virtual machine.

Thanks!

Win3WMServer did not signal event

description

I failed to start the Win3wm. It was working fine when I first time run it but cannot be started again after I exit and reopen it and show the error as the screenshot below.
image

Hardware Environment

  • Three monitors
    • Laptop built-in monitor with 1920 * 1080 and 100% scale.
    • 3440 * 1440 monitor with 100% scale
    • 1920 * 1080 monitor with 100% scale

Software Environment

  • OS: Windows 10 Pro
  • OS version: 20H2
  • OS build: 19042.928

Log

Display (10003) RSW : 1920 RSH : 1040
Display (10001) RSW : 3440 RSH : 1400
Display (10005) RSW : 1920 RSH : 1040
Gathering Initial Windows
Gathered Window :
[WindowClass] : CabinetWClass
[WindowText] : WinWM
Gathered Window :
[WindowClass] : Chrome_WidgetWin_1
[WindowText] : config.json - Visual Studio Code
Gathered Window :
[WindowClass] : Chrome_WidgetWin_1
[WindowText] : outer_gaps_vertical cannot be bigger than screen height Issue #3 McYoloSwagHam/win3wm and 10 more pages - Personal - MicrosoftGathered Window :
[WindowClass] : CabinetWClass
[WindowText] : File Explorer
Gathered Window :
[WindowClass] : HwndWrapper[TickTick.exe;;bfa9b6ce-e1d8-4004-bfe9-cbfb840675d0]
[WindowText] : OnNewWindow : 37C0
Ignoring Window : 37C0
OnNewWindow : 0
Ignoring Window : 0

lua51.dll not found

I've built win3wm myself using build.bat from a Visual Studio 2019 developer console. Launching the WinWM executable produces this error message for me:

The code execution cannot proceed because lua51.dll was not found. Reinstalling the program may fix this problem.

I see that the prebuilt archive on GitHub contains lua51.dll. Maybe add some notice that one needs to obtain that file themselves when building? Or just put the DLL in the repository? Thanks!

Cannot maintain focus on dialog boxes, which makes win3wm unusable

To replicate:

  1. Start WinWM.exe
  2. Start almost any program that runs on Windows e.g. Notepad
  3. In notepad, invoke the Open File command.

win3wm forces focus to return immediately to the main notepad window, which means that I cannot use the dialog and notepad is unusable. The same issue happens with any program with a modal dialog box (which is almost all Windows programs).

Right Shift Key

It seems that only the left shift key currently works for hotkeys. Is it possible to get the right shift key to also work? I am an i3 user and desperately wish I could move a window to workspace num using alt+rshift+num.

Lossless compression of PNG assets

Hi,

Using the windows program PNGGauntlet, PNG images can be losslessly further compressed.
The worst recompression yields 81% of original image size, and in the best case the new image is only 35% the size of the original one.

showcase_1
showcase_2
favicon
diag
dsp
ex1
ex2
mtnew
mtregroup
mtstart
mtswitch

Workspace bar relative position

The workspace bar seems to be fixed to the windows task bar. If the windows task bar is moved to another side of the display (I only tested with the top), this causes the workspace bar to not be visible. It might be good to have it relative depending on where the taskbar is located.

Program start error: "Couldn't allocate memory for error print"

Hello, Launching WinWM results in the following error popup:
image

I've whitelisted the WinWM folder from Defender, and installed the latest C++ 2015-2019 Redistritibutable.
image

Hovering over the WinWM taskbar icon results in the following error, which doesn't seem like the main issue, but I'm including it just in case it's helpful:
image

For reference I'm running Windows 10 20H2 x64.

Any assistance would be greatly appreciated!

installation instructions

Hey thanks for making this, I moved from Linux to Windows, unfortunately I don't really understand the logic of the installtion and set-up of this WM

would it be possible to have installation instructions? I did find the documentation, but I couldn't find much on how to correctly install.

At the moment Chrome blocks my download (due to it not being secure) I worked around it, but now I also get a message from windows saying it's not safe.

I can work around those, but after that installing the .exe doesn't seem to do much.

From there I'm trying to unistall things to try again, but I also don't really know how to correctly uninstall (other than just sending the extracted folder to the trash)

Thanks, looking forward to get this WM working

Appreciate your hard work!

[Feature request] Sync focus with keyboard focus

I find that the current focus system is kind of odd because I need to click on the window AND focus win3wm because they are not the same, could you add some kind of synchronization to the actual window focus?

Installation error: MSbuild is not recognized as internal or external command

Context: I am not familiar with the windows command prompt. I only use WSL (Windows Subsystem for Linux).

Step to reproduce:

  1. hit the window key
  2. type command prompt
  3. git clone https://github.com/McYoloSwagHam/win3wm
  4. cd win3wm
  5. start build.bat

Results:
new terminal was opened with a few errors like this: MSbuild is not recognized as internal or external command.

Note: I noticed that the readme mentioned VSStudio. Do I have to install it? If so, can you provide steps for windows newb like me?

Thanks!

Error: QueryService VDM: 14007

I successfully built the executable, but when running it, I got a dialog window saying: Error: QueryService VDM: 14007.
image

Any idea on what's wrong with my setup?

HiDPI support

Right now the support for HiDPI and DPI changing event seems missing.

[Features] Floating window feature, ignore hotkey capturing, etc

Glad to see there is such a powerful open-source project that provides similar functinalities with i3wm in Windows. It's very useful for me to achieve keyboard-only navigations in Windows. Using it happily for some time, I get some questions and requests.

  1. Compared with i3wm, I can see that we don't have floating window mode and scratchpad which I think may be useful. Sometimes I want to minimize a window temporarily, which cannot be achieved directly now though I can move it to other workspaces.
  2. When playing games (like Genshin Impact in window mode), I add the game to 'windows_to_ignore' list. But the hotkeys containing mod key (alt) are all captured and cannot be sent to the game. Therefore, I wonder if we can ignore hotkey capturing for 'windows_to_ignore'.
  3. Wish to allow to define more custom commands like 'start_command' which acts like exec in i3wm. For the json config file, now we are assigning hotkeys to the keys that map to the functionalities. Can we exchange the mapping order and allow to assign multiple hotkeys to one functionality which I think may be a better way to add more custom commands for users.

Thanks for your time.

Error: Couldn't Create ServerPip : 231

Hello,

I'm trying to set this up on my workstation with 3 displays, however upon launching the application, I am presented with the following error message:
image

If I disconnect two of the displays, leaving just one, the application seems to works fine, but still presents the error. Reconnecting even one display causes the application to not work again.

Attached is the generated log file from when all 3 displays were connected.

log.txt

Error: desktop object array 0

I tried to build in on visual studio 2019
but i get that error,

i just clone it,
run build.bat inside visual studio

i go to build directory
and run the exe WinWM.exe

and i got an error desktop object array 0

i also tried moving my taskbar to align left

but no avail

Some UWP windows are not tiled

As per a comment on the HN discussion I think this may have to do with UWP window naming

Steps to reproduce:

  1. Start WinWM.exe with several existing windows such as Explorer and Firefox, note that they become tiled
  2. Click the start menu, search for Calculator and run it

Expected:

Calculator window becomes tiled

Actual:

Calculator window floats above tiled windows

issue: cannot work with utools

  • I noticed that the Win3wm cannot work with spotlight-like software such as utools and Powertoys Run. The input bar could appear but disappear immediately. I have not tested other similar software, but I do no think they could work.

  • Also, the right-click menu of the taskbar icons of many software does not work when running the Win3wm. The menus do appear but disappear immediately.

Could you please consider fixing this issue? It is really important for the usability of the Win3wm. Thank you very much.

Support for Unicode configurations

It would be nice to have Unicode support to allow for keyboards layouts like the Swiss German to support all characters like ö ä ü etc.

At the moment the character ö is replaced with a ? in the configuration file after loading WinWM and the shortcut will not work.

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.