hyprwm / hypr Goto Github PK
View Code? Open in Web Editor NEWHypr is a tiling window manager written in modern C++.
License: BSD 3-Clause "New" or "Revised" License
Hypr is a tiling window manager written in modern C++.
License: BSD 3-Clause "New" or "Revised" License
Is your feature request related to a problem? Please describe.
When using a tiling window manager, I expect to be able to do everything through the keyboard, with the mouse being optional. Right now, according to the docs, you can only move windows with the keyboard, but must rely on the mouse to switch windows.
Describe the solution you'd like
Dispatchers for changing to the window above, below, left, and right of the currently active window.
Anything else?
I also find the active window being switched by hovering over a window to be annoying, and I would appreciate an option to disable it :D
Please describe the bug
New windows don't get focus when the cursor is over the old window
Steps to reproduce:
Set focus_when_hover=1, open a window, place the cursor on the left side of the window, open a second window on the right and the old window keeps focus because the cursor is still over it.
Expected behavior
New windows should have focus regardless of cursor position
Please describe the bug
Even though the bar is disabled in the config it gets drawn with the configured modules until I resave the config file and it gets reloaded. Happens in both Xephyr and normal usage
Steps to reproduce:
Clone the repo, make release, disable Bar in config and launch Hypr. Bar appears
Open the config file in VScode or nano and save it without changing anything and it will disappear as it should
Hi there! I watched your video on Reddit and gave it a try!
Please describe the bug
I followed all steps for building and adding to Xsessions, however when I start from SDDM, Arch Linux, nothing happens but there comes a black-ish bar on top of my SDDM. I guess that Hypr is trying to start some applications as picom, but fails.
Steps to reproduce:
Have a clean build of Arch + KDE, build Hypr, watch it failing to start
Expected behavior
Hypr starts successfully as expected
Screenshots
I will add in the reply
Anything else?
Also, is there any tutorial/wiki on hotkeys? I am a bit lost. I can contribute to wiki if that would be helpful
Please describe the bug
windows dont move properly between monitors
Steps to reproduce:
move a tiled window to a different monitor
Please describe the bug
windows borders aren't smooth, i tried with and without a compositor and the result is always the same.
Steps to reproduce:
Install picom compositor
Expected behavior
smooth borders
Screenshots
ps: all my driver are installed, i also tried with picom-git but nothing change. So i was wondering if the problem is a driver issue, picom issue or a Hypr issue.
Please describe the bug
Nitrogen's options leave a ghost window.
Steps to reproduce:
Open nitrogen -> preferences, close preferences.
Expected behavior
Nitrogen's main window goes back.
Please describe the bug
Closing one firefox window closes them all.
Steps to reproduce:
Open 2 or more firefox windows and close one of them with the closeactive keybind.
Expected behavior
One firefox window closing
Please describe the bug
Sometimes after floating/unfloating the tree breaks (nullptr nodes)
Steps to reproduce:
Unfloat/float windows repeatedly (preferably of the same type)
Expected behavior
Tree remains intact.
Please describe the bug
Opening the disk properties window in Dolphin crashes the WM
Steps to reproduce:
Open dolphin select a drive and click properties
Expected behavior
WM not crashing
Please describe the bug
Window goes to back after entering fullscreen mode
Steps to reproduce:
Press Super+Enter, Super+Enter, Super+F
Expected behavior
The full screen window should be in front of the non-fullscreen one
Please describe the bug
Certain Wine windows do not render their content, and instead show a still frame of other content visible on the workspace. Window borders are still rendered. Can also disappear entirely at times; whilst still being visible as running processes.
Steps to reproduce:
I don't expect you to install League of Legends, but as I do not run other Wine applications I don't know how widespread this is, but these issues do not exist in dwm, Gnome or Openbox for me, on the same system, and should therefore be Hypr-related rather than a problem with the Wine installation. Regardless, to reproduce:
For Windows rendering a still frame with a border
For Windows disappearing entirely
After following the previous steps queue up for a match and swap to a different workspace (leaving the client where it was).
When the queue pops the client will disappear if you're not on the same workspace. If you are on the same workspace as the client it will work as expected.
The client will also disappear after a match is complete, rather than showing the post-game lobby. The process is still running, but it is either not rendered at all or hidden somewhere, requiring killing the wine process for it to reappear (will of course happen next match and so on).
Expected behavior
Windows rendering their content.
Screenshots
This is a screenshot showing the desktop wallpaper behind a Wine window rather than its content. Notice the window borders are still rendered.
This is what it should look like:
Anything else?
Different states like floating or tiled or specified size/position rules do not make a difference.
Possibly useful xprop of the window pictured above:
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 2
_NET_FRAME_EXTENTS(CARDINAL) = 6, 6, 6, 6
_NET_WM_BYPASS_COMPOSITOR(CARDINAL) = 0
_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_SKIP_TASKBAR
_NET_WM_NAME(UTF8_STRING) =
WM_ICON_NAME(STRING) =
WM_NAME(STRING) = "hypr"
_NET_WM_ICON(CARDINAL) = Icon (32 x 32):
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x3200017
bitmap id # of mask for icon: 0x3200019
window id # of group leader: 0x3400004
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x24, 0x0, 0x0, 0x0
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified location: 1024, 612
program specified minimum size: 512 by 216
program specified maximum size: 512 by 216
window gravity: Static
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x320000c
XdndAware(ATOM) = BITMAP
_NET_WM_PID(CARDINAL) = 17989
WM_LOCALE_NAME(STRING) = "en_GB.UTF-8"
WM_CLIENT_MACHINE(STRING) = "void"
WM_CLASS(STRING) = "leagueclient.exe", "leagueclient.exe"
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, _NET_WM_PING
Log:
log.txt It was too long to post on pastebin.
Hi,
on a clean Arch install I had to install the following packages in addition to the ones you listed in the CLI build instructions:
xcb-util-cursor xcb-util-keysyms xcb-util-wm
Maybe you can add them there as well.
Thanks a lot & Keep up the great work.
BR Jens
Bspwm allows pinning a floating window so it appears on all workspaces/travels with you when you switch. This is very useful when you're, for example, watching something in mpv whilst doing something else. I like to keep mpv open in a floating, smaller window, whilst working on something. Being able to pin it so it follows me when I switch workspaces and have it appear always on top/above other windows is wonderful. Similar to picture-in-picture on televisions.
Is Hypr a compositing window manager? Does it make compositors such as picom obsolete? It would me nice if those things would be documented somewhere. Thanks a lot for the project - it looks great!
Please describe the bug
The indexing of tags is strange with polybar
Steps to reproduce:
Just use polybar and you'll see the problem when you'll open an app on the 2nd tag and not in the first one.
i'm on the 4th tag:
on the 2nd one:
Expected behavior
i expected to see all the tags (the problem is probably due to that-
Hi, I think you are missing the ninja package in the build cli instructions :)
Please describe the bug
When starting Hypr the config file is loaded fine, my execs work just fine, but the keybinds are not working. I made an exec to start a terminal at launch and be able to interact with Hypr. Checking the debug log it says that the keybinds are not applied because the status bar is not null (see the log).
Steps to reproduce:
Just launching Hypr normally through SDDM. I am installing Hypr through the AUR package in Arch Linux.
Expected behavior
Keybinds loaded so it is usable.
Code OSS doesn´t have access to the full extension marketplace, so to be able to use cppdbg
Please describe the bug
Can't move focus to some windows
Steps to reproduce:
Open four windows in a 2x2 grid and try to move the focus to each one using the keybindings
Expected behavior
The window gaining focus should be the nearest one to the old window. For example, if the bottom-left window has focus and I press ALT+L, the bottom-right window should gain focus. It seems to currently prioritise whichever window was opened first (which in this case is the top-right window).
Please describe the bug
1)Polybar ewmh module disappear when i try to use a second monitor, and when it appear it isn't even clickable.
2) When i start my polybar sometimes the modules are placed randomly (if
Steps to reproduce:
These are my config file:
Expected behavior
obviously i expected to see the module/s working normally
Screenshots
here's some videos
Log:
can't upload a normal pastebin so i posted all the log file cuz when i try to edit the file my pc literally blows out, there are more than 10000 lines, and my lil i5 5300u can't manage to open it :(
IF MORE INFORMATION ARE NEEDED PLEASE CONTACT ME
Loving the WM so far but coming from bspwm and dwm there are a few features I'm missing. If these are implemented and I've missed them in the documentation do let me know.
hidden=$(bspc query -N -n .hidden -d focused)
if [ -z "$hidden" ]; then
bspc node focused -g hidden=on
else
bspc node "$hidden" -g hidden=off
fi
pull=$1
while read -r _ _ d n f s; do
[[ "$f" = urgent && "$s" = on ]] &&
bspc node "$n" ${pull:+-d focused} -f
done < <(bspc subscribe node_flag)
This is borderline essential for certain applications when you're on a different workspace. An example being League of Legends which require interaction within 5~ seconds when your queue pops.
Love the WM - thank you for sharing it.
Describe the solution you'd like
I really liked this feature in i3. Could use the fullscreen function but atleast in firefox the URL bar wil move up which is kind of annoying
Fullscreening a video on firefox makes it kinda die and not work
Please describe the bug
If you enable workspace transitions and switch to the workspace that is currently showing, it wipes away and comes back.
Steps to reproduce:
Open a window in workspace 1, then press SUPER+1
Expected behavior
It should only animate when changing to a different workspace
Is your feature request related to a problem? Please describe.
This is feature request related for an additional modifier key to be available for Hypr.
Describe the solution you'd like
I have keycodes 66 amd 135 mapped to Hyper_L (a modifier key) for ease on my thumbs (vs. the standard Super key location). This is done via adding this to my .Xmodmap:
keycode 66 = Hyper_L NoSymbol Hyper_L
keycode 135 = Hyper_L NoSymbol Hyper_L
add mod3 = Hyper_L
I have found that trying to substitute it in the config didn't actually work. I did find that editing src/KeybindManager.cpp and adding this line after the nearly identical one for SUPER then changing all instances of SUPER in my config to HYPER did work after manually building:
if (CONTAINS(mod, "HYPER") || CONTAINS(mod, "MOD3")) sum |= XCB_MOD_MASK_3;
Pseudo Tile Mode allows windows that are in tiled mode to resize to it's floating mode dimensions. When you bring an app into floating mode, it allows you to resize the window to an optimal size (most apps remember this size). Pseudo Tile mode takes the window dimensions from it's floating mode size and keeps it that size when it is in tiled mode.
A great example of it's usefulness is with applications that are size sensitive. For instance, I use Epy to read e-books in my terminal window. It is easier to read when the window does not span across my entire screen, and is instead resized to a thinner width so lines are neatly confined into a vertical reading space.
Another great use case is videos that have a specific aspect ratio. I watch a lot of old TV shows that were only filmed in 4:3 aspect ratio, and it would be nice to have a clean background wallpaper with a clean 4:3 video playing in the middle of the screen.
As much as this feels like an aesthetic feature request, I would also argue that it provides actual functionality options as well. I really like Hypr so far (simple config, built in animations and rounded corners). With Pseudo Tile, I am pretty sure I will never need another WM again! I hear that you are working on a Wayland version, which would be even better! I tried out SWAY, and I really like how smooth it was, but they are merely doing a 1:1 feature match of i3wm (which means no possibility of Pseudo Tile Mode). Thanks for considering, and thanks for Hypr! :)
If i run yay -S hypr-git
it will print the package name as hypr-git-0.0.r328.fac4928-1
and fac4928
is 5 commits behind
I could not find documentation on keybindings, especially, quitting and reloading Hypr. Is there any? The example config doesn't have those bindings.
Describe the solution you'd like
Animate the transition between workspaces. Either a fade transition or a wiping would be great.
For the building of Hypr with the Ubuntu instructions (i run mint 20.2 which is basically ubuntu), the installation dependencies also require build-essential, otherwise a CMAKE_CXX_COMPILER error will occur. I recommend updating the dependency list to also include build-essential.
sudo apt install xcb cmake gcc libgtk-3-dev ninja-build libgtkmm-3.0-dev libxcb-randr0 libxcb-randr0-dev libxcb-util-dev libxcb-util0-dev libxcb-util1 libxcb-ewmh-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-cursor-dev libxcb-shape0-dev build-essential
CMake Error at CMakeLists.txt:2 (project):
No CMAKE_CXX_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
I cry for help :(
Title self-explanatory.
I'm the maintainer of hypr-git in the AUR and saw the note in the README about being out of date (as well as receiving a few emails). With -git packages in the AUR, it is expected that the latest revision be pulled when the package is built, which is how it is currently setup. The revision on the aur page does not change, but the latest code is always pulled. See here for more details.
Please describe the bug
Floating windows jump to 0,0 when first moved.
Steps to reproduce:
Make a floating window and move it.
Expected behavior
Window staying in place.
Additional notes
DefaultPosition isn't updated. (cause)
Please describe the bug
VLC crashes the entire window manager.
Steps to reproduce:
Open VLC. Sometimes it crashes.
Expected behavior
No crashing.
Please describe the bug
When using the AUR version it crashes after startx
Steps to reproduce:
First remove the Hypr binary from /usr/bin and remove the desktop file from /usr/share/xsessions/ to avoid confusion and yay errors.
Use the example config.
My .xinitrc only contains the line "exec Hypr".
yay -S hypr-git
startx
It crashes after the bar is loaded or, if disabled, after a window tries to start
yay -Rns hypr-git
git clone [email protected]:vaxerski/Hypr
cd Hypr
make release
sudo cp build/Hypr /usr/bin/
startx
This version works completely normal
When it crashes xorg prints something along the lines of "Couldn't find gtk-theme" but because my resolution is fucked up part is printed off screen.
I couldn't find anything in both the Xorg log or the hypr log.
Please describe the bug
Minecraft launcher fails to log you in with Hypr.
Steps to reproduce:
Try to log in using the official minecraft launcher.
Expected behavior
Logging in.
It would be nice to be able to move from one tag to another using the arrows
Please describe the bug
Can't re-attach tabs to brave browser windows, and when trying to reorder tabs, they pop out and make a new window.
Steps to reproduce:
Open two tabs in brave and try to rearrange them or connect them so they're in the same window.
In the Contributing & Debugging page in the wiki it directs arch users to install the package Xephyr
, but on arch it is packaged as xorg-server-xephyr
. This probably be changed to reflect the actual package name.
Random rare crashes occurring as a segfault at updateBar with GetHasFullscreenWindow
Coredump:
Stack trace of thread 2991:
#0 0x00000000004642a6 _ZN10CWorkspace22getHasFullscreenWindowEv (Hypr + 0x642a6)
#1 0x00000000004900a2 _ZN14CWindowManager13updateBarInfoEv (Hypr + 0x900a2)
#2 0x000000000045b3bb _Z6handlePv (Hypr + 0x5b3bb)
#3 0x00007f8992534905 n/a (libglib-2.0.so.0 + 0x84905)
#4 0x00007f8993b55259 start_thread (libpthread.so.0 + 0x9259)
#5 0x00007f899206d5e3 __clone (libc.so.6 + 0xfe5e3)
Offending code:
const auto WORKSPACE = getWorkspaceByID(activeWorkspaces[ConfigManager::getInt("bar:monitor") > monitors.size() ? 0 : ConfigManager::getInt("bar:monitor")]);
if (WORKSPACE)
message.fullscreenOnBar = WORKSPACE->getHasFullscreenWindow();
else
message.fullscreenOnBar = false;
Please describe the bug
Cannot connect to the X server.
Steps to reproduce:
run Hypr
Expected behavior
Connect to the X server.
Log file:
[LOG] Hypr debug log. Built on Dec 26 2021 at 19:02:29
[LOG] Pipes done! Forking!
[LOG] Parent continuing!
[CRITICAL] Connection Failed! Return: 5
[LOG] Child says Hello World!
[CRITICAL] Connection Failed! Return: 5
[ERR] Bar exited with code 5!
https://ghostbin.com/blVwM
Please describe the bug
Some apps, for example Nitrogen or ATLauncher, do not report when parts of them are closed and therefore leave ghost windows. Those windows still reply to XCB calls (somehow) and therefore I am unable to check their "alive status"
Steps to reproduce:
Easiest: open nitrogen, click preferences, click OK or Close. Make sure the preferences window is tiled to see the bug in action.
Expected behavior
Windows being removed from the tree upon disappearing.
I think the main feature that this wm doesn't have is the possibility to resize windows without any kind of window rule in hypr.conf.
Without this feature i can't use in the way i want my monitor, for exaple: in the same workspace i've got vs code and another application like telegram but don't want telegram taking half of the screen, just a little portion.
like this:
Describe the solution you'd like
I would like to see implemented in this wm an intuitive way to resize windows.
Hope everything is clear
Describe the solution you'd like
Instead of making a window fullscreen after the change workspace transition ends, make the fullscreen window be in fullscreen mode during the transition
Is your feature request related to a problem? Please describe.
Nope, i just think it would be really cool to have title bars
Describe the solution you'd like
Well title bars obviously, maybe something like this? here:
Titlebars {
enabled=1
size=40
side=left
color=0x00000000
button=left,✕,0xffffffff,killactive,
button=left,⏹,0xffffffff,fullscreen,
button=left,☁,0xffffffff,togglefloating,
button=right,%WINNAME%,0xffffffff,exec,/home/user/somescript.sh
}
button
would be similar to bind in this way:
button=SIDE, ICON, COLOR, DISPATCHER, COMMAND
and would have additional tokens something along the lines of this:
SIDE (left, right, or center.)
ICON (some Unicode text, maybe even an image path perhaps?)
I'm new to filing issues, if i have done something incorrectly please inform me! :)
Please describe the bug
The config file runs several times after starting Hypr
Steps to reproduce:
add to config file:
exec=echo foo >> /home/$(whoami)/foo
Expected behavior
It should only run once
The title says it all, I don't know if there is already a way to have a systray, but if it isn't, please implement it.
Please describe the bug
Whenever the bar is disabled, there's a big delay (which varies from seconds to minutes) between pressing the key bind for fullscreen and the actual 'fullscreening' of the window. Sometimes the action doesn't even seem to apply (or the delay is too big).
Steps to reproduce:
Expected behavior
That the action will be performed at the same time the key is pressed.
Anything else?
Log is cluttered with "Cairo is null but attempted to draw!", maybe that has something to do?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.