Coder Social home page Coder Social logo

hypr's People

Contributors

barracuda156 avatar bluelhf avatar codic13 avatar end-4 avatar imaphatduc avatar jovvik avatar rasmus-rap avatar vaxerski avatar wegank 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

hypr's Issues

Allow pinning a floating window so it appears on all workspaces.

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.

AUR Package

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.

A few features I'd like to see in Hypr

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.

  1. Define workspaces in window rules i.e. open x on workspace y
  2. Define window rule to launch app in fullscreen mode. Games for example launch in tiled mode at the moment but do not function well i.e. resolution is off and in-app mouse movement is broken.
  3. Mouse support for movewindow. In particular on a desktop it is very useful to be able to drag a window to a new position.
  4. Scratchpad i.e. send a window to a hidden state and be able to retrieve it with a binding. Dwm has this and bspc can achieve it with a small script:
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
  1. Automatically focus a window when it requires your attention. Doesn't exist out of the box in the other WMs but can be achieved with a simple script for bspc:
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.

Bar appears even though disabled in config

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

Keybinds are not applied

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.

Log:
https://pastebin.com/pdPywPde

Workspace wipes away when switching to current workspace

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

Can't re-attach tabs to brave browser windows

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.

Keybinds for switching windows

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

Floating windows tend to break the tree.

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.

Documentation issue.

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.

Some apps leave ghost windows.

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.

Missing documentation?

I could not find documentation on keybindings, especially, quitting and reloading Hypr. Is there any? The example config doesn't have those bindings.

Aur package crashes on startup, cloned repo doesnt

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.

Resize windows with mouse or keyboard combination

The problem and the solution

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:

Screenshot from 2022-03-10 00-18-18

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

Nitrogen leaves a ghost window.

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.

When the bar is disabled, fullscreen keybind lags

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:

  • Set Bar { enabled = 0 } in the config
  • Try to fullscreen windows multiple times

Expected behavior
That the action will be performed at the same time the key is pressed.

Screenshots

Anything else?
Log is cluttered with "Cairo is null but attempted to draw!", maybe that has something to do?

Arch: Missing dependencies

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

New windows should gain focus

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

Systray for WM

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.

Polybar problem

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:
bug1

on the 2nd one:
bug2
Expected behavior
i expected to see all the tags (the problem is probably due to that-

Log:
https://paste.ee/p/WWDnT

Can't move focus to some windows

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).

Titlebars?

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! :)

Problems with polybar

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:

  1. ewmh.ini xworkspaces module
  2. config the general polybar config
  3. center.ini my center config bar
  4. hypr.conf

Expected behavior
obviously i expected to see the module/s working normally

Screenshots
here's some videos

git-2022-03-08_17.56.47.mov
git2-2022-03-08_18.50.34.mov

Log:

hypr.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

Minecraft launcher fails to log you in.

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.

Pseudo Tile Mode

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! :)

Cannot connect to the X server.

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

Floating windows snap to 0,0

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)

Dolphin's disk properties crash the WM

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

Config is not pre-installed, WM opens broken

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

Contributing & Debugging wrong package name

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.

VLC crashes the WM.

Please describe the bug
VLC crashes the entire window manager.

Steps to reproduce:
Open VLC. Sometimes it crashes.

Expected behavior
No crashing.

Electron borders aren't properly rounded

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

git4-2022-03-09_22.27.26.mov

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.

[Documentation]

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!

Config file runs multiple times

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

Wine windows render as invisible or still frames with borders

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

  1. Install League of Legends, for example via Lutris or this repository.
  2. Open the client. During this process you should see 1-2 wine-related windows render as a still frame showing what's behind it with a border around it (make sure to have borders enabled in Hypr).

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.
2022-04-04-183102_2558x1419_scrot

This is what it should look like:
2022-04-04-192443_1098x646_scrot

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.

Fullscreen window goes behind non-fullscreen window

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

random rare crashes

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;

Support for the Hyper modifier key

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;

Terminal WINNAME

Please describe the bug
Not sure if it's a bug or it is like this by design, but using Xephyr terminals WINNAME is reporting the shell name, instead of application name.

Tested with Kitty and Alacritty, but it always shows ¨fish /path/"

Screenshots
Screenshot_Xephyr

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.