Commit Graph

246 Commits

Author SHA1 Message Date
zjeffer bcee548f5e Fix workspacerules not taking into account defaultName 2025-02-20 00:06:05 +01:00
Alexis Rouillard c32d5e3883
Merge pull request #3898 from Duckulus/master
[hyprland/window] enable tooltip for hyprland window module
2025-02-05 11:44:28 +01:00
Alex 481b01d9af fix: lint 2025-01-25 09:31:32 +01:00
Duckulus ba12ca71c0 enable tooltip for hyprland window module 2025-01-22 18:39:50 +01:00
DreamMaoMao 01ae117cfe fix: hyprland/window get empty ipc json data 2024-12-14 21:02:10 +08:00
Aqa-Ib 77b50b4c7a
fix hyprland's grouped window flags
Both flags are wrong, because:
- the active group member can be fullscreened.
- technically, a grouped window can be solo as well, because only the active group member is shown, the other members are hidden. Also you can have a group consisting of only one window.
2024-11-06 13:07:09 +00:00
Christian Fillion 92242f0b9d
hyprland: fix a data race at startup between sockets 1 and 2
`Workspaces::*` and `IPC::startIPC` may both call `getSocketFolder` at the same time.

This randomly causes crashes and/or corruption of the socket path.

Typical crash A:

    [2024-10-16 07:42:09.987] [info] Hyprland IPC starting
    malloc(): unaligned tcache chunk detected
    [2024-10-16 07:42:09.987] [error] Hyprland IPC: Unable to connect?
    Thread 1 "waybar" received signal SIGABRT, Aborted.
    (gdb) bt
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
    (omitted for brievety)
    #9  0x00007ffff64ae745 in operator new (sz=sz@entry=296) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/new_op.cc:50
    #10 0x00007ffff65ab1f1 in std::filesystem::__cxx11::path::_List::_Impl::copy (this=0x555555a23350) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++17/fs_path.cc:249
    #11 0x00007ffff65ab3bd in std::filesystem::__cxx11::path::_List::_List (this=0x7fffffff9d30, other=<optimized out>) at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/unique_ptr.h:454
    #12 0x00005555556f4ab1 in waybar::modules::hyprland::IPC::getSocket1Reply(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
    #13 0x00005555556f5e3d in waybar::modules::hyprland::IPC::getSocket1JsonReply(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
    #14 0x000055555571289c in waybar::modules::hyprland::Workspaces::setCurrentMonitorId() ()

Typical crash B:

    [2024-10-16 10:01:15.859] [info] Hyprland IPC starting
    [2024-10-16 10:01:15.859] [info] Loading persistent workspaces from Hyprland workspace rules
    Thread 8 "waybar" received signal SIGSEGV, Segmentation fault.
    (gdb) bt
    #0  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy
        (__d=0x5555558fbca8 "/", __s=0x2973961a26d35726 <error: Cannot access memory at address 0x2973961a26d35726>, __n=1)
        at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:433
    (omitted for brievety)
    #15 waybar::modules::hyprland::IPC::getSocketFolder[abi:cxx11](char const*)
        (instanceSig=0x7fffffffe604 "4520b30d498daca8079365bdb909a8dea38e8d55_1729051218_1982280648") at ../src/modules/hyprland/backend.cpp:41
    #16 0x000055555564230f in waybar::modules::hyprland::IPC::startIPC()::{lambda()#1}::operator()() const ()
        at ../src/modules/hyprland/backend.cpp:70
    #17 0x00007ffff64e1c34 in std::execute_native_thread_routine (__p=0x5555558119c0) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
    #18 0x00007ffff62a339d in start_thread (arg=<optimized out>) at pthread_create.c:447
2024-10-17 06:46:07 -04:00
Alex 6417782af6 chore: lint 2024-09-13 08:55:14 +02:00
Aleksei Bavshin 1f23b30b56
hyprland/backend: drop unnecessary getaddrinfo call
Hyprland hasn't been using TCP sockets for IPC since the first release,
so this getaddrinfo call and its result was never needed.

Additionally, it leaks the `aiRes`, causing test failure under ASan.
2024-08-17 22:32:17 -07:00
Austin Horstman 4295faa7c4
hyprland/backend: throw runtime_error instead of log
Allows us to disable modules entirely when socket connection isn't
working. This is similar to how sway handles their socket connections
disabling modules. This supports a single waybar config for multiple
IPCs.
2024-07-16 18:40:47 -05:00
Austin Horstman b41fcdedff
hyprland/window: fix crash when no return from socket
Gracefully handle lack of response from the IPC. If socket isn't
available, we already log the IPC isn't running. We dont need to crash
program just because we couldn't get responses. We can just return an
empty object.
2024-07-15 09:02:27 -05:00
Austin Horstman 702e10649e
modules/hyprland/workspace: ignore empty window-rewrite
I'd like to ignore some windows from having icons or empty space taken
on the bar. By filtering out empty repr we can supply rewrite rules that
will ignore them from being processed and showing an empty space or
default icon.
2024-07-03 00:21:49 -05:00
Alexis Rouillard ff0f408ab8
Merge pull request #3380 from alerque/debug-keyboard-layout
Add keyboard debug info to hyprland language module
2024-07-01 09:22:08 +02:00
Austin Horstman c08660d837
modules/hyprland/backend: handle empty json responses
Fixes https://github.com/Alexays/Waybar/issues/3388
2024-06-28 13:18:44 -05:00
Austin Horstman f6482c36dc
hyprland: clangd cleanup 2024-06-28 13:06:14 -05:00
Caleb Maclennan 4126502fe8
Add debug information for keyboard layout selection 2024-06-23 00:02:48 +03:00
Austin Horstman f9e693b2a2
modules/hyprland/backend: remove testing log warn 2024-06-15 18:37:25 -05:00
Austin Horstman bac4d03813
modules/hyprland/workspaces: remove deprecated property 2024-06-15 18:34:45 -05:00
Alex 0bc43c1aa7 fix: lint 2024-06-12 23:08:27 +02:00
Austin Horstman 959422f143
modules/hyprland/backend: protect against crash when XDG_RUNTIME_DIR not set 2024-06-09 10:18:20 -05:00
Austin Horstman fa2e21dfd5
modules/hyprland/backend: move getSocketFolder to class 2024-06-09 10:18:20 -05:00
Austin Horstman 0055ee6910
modules/hyprland/workspaces: remove unneccesary visibleWorkspaces variable 2024-06-07 13:56:49 -05:00
Alexis Rouillard 9332697ec1
Merge pull request #3064 from alttabber/master
Hyprland/Workspaces: Added option to hide non-visible special workspaces
2024-05-29 10:23:26 +02:00
Austin Horstman 24e8766aaa
hyprland/backend: use /tmp
Was hardcoded to /tmp in previous versions
2024-05-28 11:00:20 -05:00
alttabber 29e3d8c371
Hide non-visible special workspaces 2024-05-28 17:45:01 +02:00
Austin Horstman f5bb086460
hyprland/workspaces: sort methods 2024-05-24 14:41:59 -05:00
Austin Horstman 9ba9d57c8c
hyprland/windowcreationpayload: sort methods 2024-05-24 14:30:31 -05:00
Austin Horstman 82ae474002
hyprland/workspace: sort methods 2024-05-24 14:29:03 -05:00
Austin Horstman 56319a4705
hyprland/workspaces: break up implementations 2024-05-24 14:21:31 -05:00
Austin Horstman d73051e980
hyprland/workspaces: break up doUpdate 2024-05-24 14:21:31 -05:00
Austin Horstman 9fe51af6b0
hyprland/workspaces: break up parseConfig 2024-05-24 14:21:31 -05:00
yangyingchao b8e68b0e63 (hyprland) fix crash when failed to parse IPC message
IPC messages are parsed in a dedicated thread, and the thread terminates when
an exception is not caught, which causes the waybar process to crash with
SIGABORT.

While this issue might be related to Hyprland, it is really annoying to see
waybar crash. It would be better to catch those exceptions and report errors
instead of crashing.
2024-05-22 12:52:01 +08:00
Tuur Vanhoutte 29917fb073
Fix hyprland/language events not working with keyboard names with commas in them (#3224) 2024-05-07 08:26:05 +02:00
Tuur Vanhoutte f41458ea24
Fix Hyprland socketpath changed to XDG_RUNTIME_DIR (#3183) 2024-04-29 19:46:28 +02:00
Tom Benham 084b561d5b [hyprland/workspaces] Update window count and sort workspaces AFTER their creation 2024-04-12 11:40:05 +02:00
Tom Benham cd3d588abd [hyprland/workspaces] Fix active workspace not getting updated on multi monitor setups 2024-04-12 11:33:29 +02:00
Alexis Rouillard 32e241dc47
Merge pull request #2917 from alttabber/master
Add always on option for hyprland/submap
2024-03-22 23:21:17 +01:00
Alexis Rouillard e30ddda23a
Merge pull request #2987 from tomben13/master
[hyprland/workspaces] New options to change on click behaviour and active workspace status
2024-03-22 23:16:57 +01:00
Tom Benham 736309ef1f Fixed segfault 2024-03-17 23:00:48 +01:00
Alexis Rouillard ca17bdb214
Merge pull request #2968 from jramrath/hyprland_workspaces_monitor_class
Hyprland workspaces `hosting-monitor` css class
2024-03-17 13:06:50 +01:00
Jannik f014a7d2e5
man docs & different css class name 2024-03-16 21:22:01 +01:00
Tom Benham 68889494d0 Removed option `active-per-monitor` 2024-03-05 11:12:46 +01:00
Tom Benham df7f1fffcf feat(hyprland/workspaces): added options `move-to-monitor` and `active-per-monitor` 2024-03-04 13:17:52 +01:00
alttabber d9abc080e1 Fix merge conflict with #2930 2024-02-28 22:52:08 +01:00
Alexis Rouillard 04f73e7303
Merge pull request #2973 from Azazel-Woodwind/feature/hyprland-window-improvements
Improved hyprland/window by fixing icon search and implementing configurable spacing
2024-02-28 09:29:54 +01:00
Alexis Rouillard e79ea93d7d
Merge pull request #2967 from aruhier/pr_hyprland_workspaces
hyprland/workspaces: Improve the workspaces persistency logic
2024-02-27 16:41:32 +01:00
Azazel c59bb509bd fix: hide icon if window is unfocused 2024-02-26 21:00:16 +00:00
Anthony Ruhier b3ee94d87a
Improve hyprland/workspaces persistency logic
Fixes #2945

Split the config and rule persistency in 2 attributes, one storing the
persistency as set in Waybar's config, the other one storing the
persistency as set in Hyprland.

It fixes some conflicts between the persistency state of a workspace as
set in Waybar's config and its dynamic state in Hyprland.

It allows to remove a persistent workspace in Waybar if this workspace
is removed from Hyprland and if the workspace is not set as persistent
in Waybar's config.
2024-02-26 00:14:25 +01:00
Jannik 9bc8de8876
fix clang complaints 2024-02-25 13:46:49 +01:00
zjeffer 42f4386e2e fix clang-tidy errors in hyprland module 2024-02-25 12:11:22 +01:00