hyprwm / Hypr

Hypr is a tiling window manager written in modern C++.
BSD 3-Clause "New" or "Revised" License
1.1k stars 33 forks source link

Terminal WINNAME #12

Closed di-effe closed 2 years ago

di-effe commented 2 years ago

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

vaxerski commented 2 years ago

How are you launching the fish terminal? Is it your default as set or a ~/.bashrc launch?

Generally, the window name should be what the window reports to Xorg as its' name.

image (kitty)

image

XCBProps.cpp@L65

std::string getWindowName(uint64_t window) {
    PROP(name_cookie, HYPRATOMS["_NET_WM_NAME"], 128);

    if (!name_cookiereply)
        return "Error";

    const int len = xcb_get_property_value_length(name_cookiereply);
    char* name = strndup((const char*)xcb_get_property_value(name_cookiereply), len);
    std::string stringname(name);
    free(name);

    free(name_cookiereply);

    return stringname;
}
di-effe commented 2 years ago

not using bash, but fish as main shell.

❯ echo $SHELL
/usr/bin/fish

Terminals are executed with bindings

# keybinds
bind=SUPER,K,exec,kitty
bind=SUPER,RETURN,exec,alacritty

But at this point I guess this is the expected behavior, because the WINNAME changes in

<process> <path>

when I execute for example htop or anything else keeping the terminal busy.

I was expecing to see the name of the terminal, but instead it looks like it is meant for the name of the process running inside the terminal. If nothing is running, that´s the shell. In my case fish.

di-effe commented 2 years ago

Interesting, switching to bash I get this bash

I guess I will do some more tests with fish.

vaxerski commented 2 years ago

I was expecing to see the name of the terminal, but instead it looks like it is meant for the name of the process running inside the terminal. If nothing is running, that´s the shell. In my case fish.

It all relies on the terminal code. What it reports to Xorg, I can use. What it doesn't, I can't really. I use zsh and cannot reproduce this with zsh.

Interesting, switching to bash I get this

Probably zsh and bash update the title regularly and fish doesn't. You can blame that on fish, I guess.

Report back if you find anything to fix this on fish so that others who come across this can fix this, maybe there is a config option or something.

di-effe commented 2 years ago

According to your code and checking with xprop this seems to be the default _NET_VM_NAME value running fish

_NET_WM_NAME(UTF8_STRING) = "fish /home/david"
WM_NAME(STRING) = "fish /home/david"

I guess I was expecting to see the VM_CLASS value in the bar

WM_CLASS(STRING) = "Alacritty", "Alacritty"

vaxerski commented 2 years ago

I could make it use WM_CLASS, but then the titles wouldn't update with the content.

e.g.: Firefox right now shows the tab title. With the WM_CLASS, it would show image "Firefox"

di-effe commented 2 years ago

Yeah I understand your point :) An additional VM_CLASS might come handy anyway

vaxerski commented 2 years ago

I can add a percent token for the winclass, I already have a method to get that, sure.

di-effe commented 2 years ago

I don´t remember which other VM (qtile or awesome) uses that class to define applications that are always in floating mode. Anyway I will end this here, it is clearly not a bug :)