dreammaomao / hycov Goto Github PK
View Code? Open in Web Editor NEWhyprland overview mode plugin,a new tile window workflow
License: MIT License
hyprland overview mode plugin,a new tile window workflow
License: MIT License
hyrppm enable hycov
should be hyprpm enable hycov
When in overview mode, closing the focused window, makes hyprland switch to another workspace. The workspace, I toggled the overview mode on, had 2 windows and I have 2 monitors attached.
first of all, awesome plugin. but i seem to get an issue on my desktop, since i have a vertical offset on some of my monitors.
as a result, the windows appear outside of that workspace when i activate my monitor(above). if i set the vertical offset to 0, it works
i assume that its just a matter of taking a workspace's vertical offset into account, but since i dont know cpp i dont know how i'd do that.
I have certain workspaces where i have a specific setup of tiled clients.
But when i use hycov, it places the windows back into that workspace, at random, and not in the same way they were tiled before.
I'd like to request a feature enhancement where hycov ensures that the placement of the clients are rememberd.
Good day to you!
I've suggestion for features:
Dispatcher for overviewing clients only of active workspaces:
hycov:toggleactiveoverview
Dispatcher overview workspaces:
hycov:toggleworkspaceoverview
Option for overiew without clients in hidden special workspaces
Thank you!
In function hkOnKeyboardKey() at line 206 of globaleventhook.cpp, the keycode 56 is hardcoded:
if(g_enable_alt_release_exit && g_isOverView && e->keycode == 56 && e->state == WL_KEYBOARD_KEY_STATE_RELEASED) {
This prevents the shortcuts to be mapped with other keys like:
$mainMod = SUPER
bind = $mainMod,tab,hycov:toggleoverview
I suggest reading the equivalent of keycode 56 from the toggleoverview bind, so that it can be different from the Alt key
hycov:movefocus
doesn't change windows when the focal window is maximized or fullscreened.
I use the option only_active_workspace
but sometimes I would like to overview windows from all workspaces, even all monitors. So, I'm asking for another dispatcher that toggles the overview mode in a state that shows windows from all workspaces, regardless of the value of the option.
I had to rebuild my arch linux and what worked fine until now (bind=SUPER,TAB,hycov:toggleoverview) so far when I pressed the button the apps appeared like on gnome. But now on the new redndser it just sets the z index for some reason to make an app appear in front or behind another window. I can't make sense of this because I was doing specifically the same thing as on my old system. Any idea?
I wanted to try out the new Hyprland Plugin Manager (hyprpm), but it looks like the config parameters get ignored.
How do I configure hycov if installed via hyprpm?
For some reason overview mode just randomly opens whilst I'm playing different games, I monitored it for a while and confirmed I'm not accidentally doing any key combinations it is completely random.
Couldn't get gestures working and make use of enable_alt_release_exit. i have this in my config:
plugin {
hycov {
overview_gappo = 60 # gaps width from screen edge
overview_gappi = 24 # gaps width from clients
hotarea_size = 10 # hotarea size in bottom left,10x10
enable_hotarea = 1 # enable mouse cursor hotarea
swipe_fingers = 4 # finger number of gesture, move any directory
move_focus_distance = 100 # distance for movefocus, only can use 3 finger to move
enable_gesture = 1 # enable gesture
disable_workspace_change = 0 # disable workspace change when in overview mode
disable_spawn = 0 # disable bind exec when in overview mode
auto_exit = 1 # enable auto exit when no client in overview
auto_fullscreen = 0 # auto make active window maximize after exit overview
only_active_workspace = 0 # only overview the active workspace
only_active_monitor = 0 # only overview the active monitor
enable_alt_release_exit = 1 # alt swith mode, see readme for detail
alt_toggle_auto_next = 1 # auto focus next window when toggle overview in alt swith mode
}
}
bind = ALT, TAB, hycov:toggleoverview
bind = ALT, left, hycov:movefocus, l
bind = ALT, right, hycov:movefocus, r
bind = ALT, up, hycov:movefocus, u
bind = ALT, down, hycov:movefocus, d
but alt + tab doesnt work as it should according to config (maybe add more examples with all possible usecases). and gestures also dont work at all (maybe because i have workspace switch on swipe, but i dont think they should conflict anyway)
also that wouldnt be bad if any native english speaker recheck the orthography and punctuation
as wrote in the title, having this string:
bind = ALT, TAB, hycov:enteroverview
and pressing alt+tab multiple times causes overview open more and more times (you should try yourself). after choosing a window, all clients are on one workspace and have random sizes (information about workspace and size is lost). possible way to fix: not allow entering overview while in overview
when pressed alt + left/right keys normally , it switches the window. They should just work when hycov is toggled by alt+tab. It is conflicting with browser since usually browser also assign alt + left as previous page key.
all log:
> bash install.sh
-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1")
-- Checking for modules 'hyprland;pixman-1;libdrm;pango;pangocairo'
-- Found hyprland, version 0.30.0
-- Found pixman-1, version 0.42.2
-- Found libdrm, version 2.4.117
-- Found pango, version 1.51.0
-- Found pangocairo, version 1.51.0
-- Configuring done (0.4s)
-- Generating done (0.0s)
-- Build files have been written to: /home/maple/czywork/packer/hycov/hycov/build
[ 20%] Building CXX object CMakeFiles/hycov.dir/src/main.cpp.o
[ 40%] Building CXX object CMakeFiles/hycov.dir/src/dispatchers.cpp.o
[ 60%] Building CXX object CMakeFiles/hycov.dir/src/GridLayout.cpp.o
[ 80%] Building CXX object CMakeFiles/hycov.dir/src/globaleventhook.cpp.o
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp: In function ‘void hkOnSwipeBegin(void*, wlr_pointer_swipe_begin_event*)’:
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:48:17: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
48 | if(e->fingers == swipe_fingers){
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp: At global scope:
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:100:35: error: ‘SCallbackInfo’ has not been declared
100 | static void mouseMoveHook(void *, SCallbackInfo &info, std::any data)
| ^~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:107:37: error: ‘SCallbackInfo’ has not been declared
107 | static void mouseButtonHook(void *, SCallbackInfo &info, std::any data)
| ^~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp: In function ‘void mouseButtonHook(void*, int&, std::any)’:
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:110:8: error: request for member ‘cancelled’ in ‘info’, which is of non-class type ‘int’
110 | info.cancelled = false;
| ^~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:117:12: error: request for member ‘cancelled’ in ‘info’, which is of non-class type ‘int’
117 | info.cancelled = true;
| ^~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:125:12: error: request for member ‘cancelled’ in ‘info’, which is of non-class type ‘int’
125 | info.cancelled = true;
| ^~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp: In function ‘void registerGlobalEventHook()’:
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:152:73: warning: converting from ‘void (CInputManager::*)(wlr_pointer_swipe_begin_event*)’ to ‘void*’ [-Wpmf-conversions]
152 | g_pOnSwipeBeginHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&CInputManager::onSwipeBegin, (void*)&hkOnSwipeBegin);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:153:71: warning: converting from ‘void (CInputManager::*)(wlr_pointer_swipe_end_event*)’ to ‘void*’ [-Wpmf-conversions]
153 | g_pOnSwipeEndHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&CInputManager::onSwipeEnd, (void*)&hkOnSwipeEnd);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:154:74: warning: converting from ‘void (CInputManager::*)(wlr_pointer_swipe_update_event*)’ to ‘void*’ [-Wpmf-conversions]
154 | g_pOnSwipeUpdateHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&CInputManager::onSwipeUpdate, (void*)&hkOnSwipeUpdate);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:156:82: warning: converting from ‘void (GridLayout::*)(CWindow*)’ to ‘void*’ [-Wpmf-conversions]
156 | _pOnWindowRemovedTilingHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&GridLayout::onWindowRemovedTiling, (void*)&hkOnWindowRemovedTiling);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:160:79: error: ‘SCallbackInfo’ has not been declared
160 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseMove",[&](void* self, SCallbackInfo& info, std::any data) { mouseMoveHook(self, info, data); });
| ^~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:160:63: error: could not convert ‘<lambda closure object>registerGlobalEventHook()::<lambda(void*, int&, std::any)>()’ from ‘registerGlobalEventHook()::<lambda(void*, int&, std::any)>’ to ‘HOOK_CALLBACK_FN’ {aka ‘std::function<void(void*, std::any)>’}
160 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseMove",[&](void* self, SCallbackInfo& info, std::any data) { mouseMoveHook(self, info, data); });
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| registerGlobalEventHook()::<lambda(void*, int&, std::any)>
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:161:82: error: ‘SCallbackInfo’ has not been declared
161 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseButton", [&](void* self, SCallbackInfo& info, std::any data) { mouseButtonHook(self, info, data); });
| ^~~~~~~~~~~~~
/home/maple/czywork/packer/hycov/hycov/src/globaleventhook.cpp:161:66: error: could not convert ‘<lambda closure object>registerGlobalEventHook()::<lambda(void*, int&, std::any)>()’ from ‘registerGlobalEventHook()::<lambda(void*, int&, std::any)>’ to ‘HOOK_CALLBACK_FN’ {aka ‘std::function<void(void*, std::any)>’}
161 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseButton", [&](void* self, SCallbackInfo& info, std::any data) { mouseButtonHook(self, info, data); });
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| registerGlobalEventHook()::<lambda(void*, int&, std::any)>
make[2]: *** [CMakeFiles/hycov.dir/build.make:118: CMakeFiles/hycov.dir/src/globaleventhook.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/hycov.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
cp: cannot stat 'build/libhycov.so': No such file or directory
Good day to you!
Expected behaviour:
Jumping by click to windows in overview mode when enable_hotarea=0
Actual Behavior:
Jumping by click only works if enable_hotarea=1
Version: 171800d
Thank you!
It doesn't autoexit even after reboot, everything else works fine. (on Arch, installed with meson/ninja)
Is there any chance this gets added to the AUR?
Currently the overview is activated by swiping fingers in any direction. Could it be possible to configure the direction of swipe for activating the overview?
For example, I would like to be able to swipe up with 3 fingers to enter the overview, but currently setting swipe_fingers=3
activates overview on all swipes, thus disabling the workspace swipe
https://github.com/jbuchermn/newm
https://www.youtube.com/watch?v=mDw-hMW0b70
Thanks.
If it can be achieved, what configurations should I make?
Hyprland got a new plugin system with its latest release, 0.34.0. I would like to be able to install Hycov through the new plugin system, hyprland-plugins.
切换 overview,点击主窗口,位置和切换之前发生了改变
You implemented the traditional alt tab functionality, and I thank you for that. Now, I would love if we had the option to auto-select the next window when the alt release mechanism is enabled.
Here are my dotfiles. I'm not sure what I'm doing wrong. I have the inputs and outputs declared in the flake. I'm importing the HM modules there as well. Under /home-manager/modules/hyprland/default.nix, you'll see what I was trying to do. It's commented out for now. Any recommendations?
Hycov right now toggles overview for all screens.
i installed hycov with hyprpm
its installed on the latest main version :
Hyprland, built from branch HEAD at commit 03ebbe18ed8517ee22591eac82cd54322f42cb7d (props: bump ver to 0.34.0).
Date: Mon Jan 1 12:03:15 2024
Tag: v0.34.0
flags: (if any)
extra/hyprland 0.34.0-1 [installed]
so i dont know why its happening
how i m using it:
plugin {
hycov {
overview_gappo = 50 # gaps width from screen edge
overview_gappi = 14 # gaps width from clients
hotarea_size = 10 # hotarea size in bottom left,10x10
enable_hotarea = 1 # enable mouse cursor hotarea
swipe_fingers = 4 # finger number of gesture,move any directory
move_focus_distance = 100 # distance for movefocus,only can use 3 finger to move
enable_gesture = 0 # enable gesture
disable_workspace_change = 0 # disable workspace change when in overview mode
disable_spawn = 0 # disable bind exec when in overview mode
auto_exit = 1 # enable auto exit when no client in overview
auto_fullscreen = 0 # auto make active window maximize after exit overview
only_active_workspace = 0 # only overview the active workspace
only_active_monitor = 0 # only overview the active monitor
enable_alt_release_exit = 0 # alt swith mode,see readme for detail
alt_toggle_auto_next = 0 # auto focus next window when toggle overview in alt swith mode
click_in_cursor = 1 # target windwo is find by cursor, not the current foucus window.
hight_of_titlebar = 0 # height deviation of title bar hight
enable_alt_release_exit = 1
}
}
# bind key to toggle overview(force mode,no affected by `only_active_workspace` and `only_active_monitor`)
bind = ALT,tab,hycov:toggleoverview,forceall
bind=ALT,left,hycov:movefocus,l
bind=ALT,right,hycov:movefocus,r
bind=ALT,up,hycov:movefocus,u
bind=ALT,down,hycov:movefocus,d
Hycov works great with most windows except with Edge.
When I have a Edge browser open, hycov toggle shows:
If I use hycov a few times, Edge freezes and is not responsive until I do killall msedge
Edge has been very stable before I used hycov.
The cause is unknown. I can try to log more information if you tell me what would help
OS: OpenSUSE Tumbleweed
Installed latest Hyprland from git
Full log: pastebin.com/LLdKVXtF
Can this be installed with hyprpm?
If so, can we have instructions in the README?
When I use hycov on open windows while on desktop1, when I click on one of the windows on desktop1, it goes to that window, but when I go to hycov while on desktop1 and want to go to one of the windows on desktop2, it goes to a blank screen. What could be the reason for this error?
It would be nice having an option of infinite scrolling. That way you could bind ALT + TAB
for example to hycov:toggleoverview
and hycov:movefocus,l
and have an alt tab experience closer to common alt tab implementations for quickly switching between two or more windows.
any way to get only windows from current workspace, actually, it's getting all windows from all workspaces, if I click in a window which is not into the current workspace, it moves for an empty workspace and all windows disappear.
Even so, I would like the behavior of only showing windows from current workspace, can you implement that?
See the
Lower right window is the only window open on 1st workspace, which matches conditions for no_gaps_when_only
to trigger. Notice how its corners are rectangular and there is no border even in overview mode when there are other windows.
(The rest is on 3rd workspace, so they already have borders and gaps.)
All windows have the same borders / rounded corners.
I've tried to work around this by just turning no_gaps_when_only
off before the overview.
bind = SUPER,grave,exec, hyprctl --batch "keyword dwindle:no_gaps_when_only 0; dispatch hycov:toggleoverview; keyword dwindle:no_gaps_when_only 1"
But there is a race condition and keyword dwindle:no_gaps_when_only 1
doesn't wait till I select the window in overview, so it only sometimes fixes the issue.
Which could theoretically be worked around by listening to events and watching for workspace being renamed from OVERVIEW to something different... But at this point I think it makes more sense to just do it in the plugin.
E.g. save no_gaps_when_only
value and turn it off when entering the overview mode, restore the value when leaving it.
hycov be28246
hyprland 0.33.1-2 (from arch repo)
When modifying(floating, moving, closing etc) a previously fullscreen window on a secondary monitor after hycov was used on the other monitor, hyprland segfaults.
hycov configuration:
plugin {
hycov {
only_active_monitor = 1
enable_hotarea = 0
auto_exit = 1
enable_gesture = 1
swipe_fingers = 4
overview_gappo = 64
overview_gappi = 24
click_in_cursor = 0
}
}
--------------------------------------------
Hyprland Crash Report
--------------------------------------------
Maybe you should try dusting your PC in the meantime?
Hyprland received signal 11 (Segmentation fault)
Version: e5eb11ad0423bfdfd4056964ef868e26b2d3c846
Tag: v0.33.1-101-ge5eb11ad
Hyprland seems to be running with plugins. This crash might not be Hyprland's fault.
Plugins:
hyprbars (Vaxry) 1.0
hycov (DreamMaoMao) 0.1
System info:
System name: Linux
Node name: arch
Release: 6.6.8-zen1-1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Thu, 21 Dec 2023 19:00:41 +0000
GPU:
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:164c] (rev c2) (prog-if 00 [VGA controller])
os-release:
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo
Backtrace:
#0 | /usr/bin/Hyprland(_Z12getBacktracev+0x62) [0x55fcf9a6bd32]
??
??:0
#1 | /usr/bin/Hyprland(_ZN13CrashReporter18createAndSaveCrashEi+0x64d) [0x55fcf9a3864d]
??
??:0
#2 | /usr/bin/Hyprland(_Z25handleUnrecoverableSignali+0x48) [0x55fcf99cc6d8]
??
??:0
#3 | /usr/lib/libc.so.6(+0x3e710) [0x7fdb2b76f710]
??
??:0
#4 | /home/luna/.local/share/hyprpm/hycov/hycov.so(_Z22dispatch_leaveoverviewNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x908) [0x7fdadca239c6]
??
??:0
#5 | /home/luna/.local/share/hyprpm/hycov/hycov.so(_Z23dispatch_toggleoverviewNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xac) [0x7fdadca22741]
??
??:0
#6 | /usr/bin/Hyprland(_ZNSt17_Function_handlerIFvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_E9_M_invokeERKSt9_Any_dataOS5_+0x63) [0x55fcf9ab3773]
??
??:0
#7 | /usr/bin/Hyprland(_ZN15CKeybindManager14handleKeybindsERKjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_RKibj+0x6cf) [0x55fcf9aaf46f]
??
??:0
#8 | /usr/bin/Hyprland(_ZN15CKeybindManager10onKeyEventEP22wlr_keyboard_key_eventP9SKeyboard+0x50b) [0x55fcf9ab022b]
??
??:0
#9 | /usr/bin/Hyprland(_ZN13CInputManager13onKeyboardKeyEP22wlr_keyboard_key_eventP9SKeyboard+0x23b) [0x55fcf9a95c7b]
??
??:0
#10 | /usr/bin/Hyprland(_Z13handleWrappedP11wl_listenerPv+0x56) [0x55fcf9a71df6]
??
??:0
#11 | /usr/lib/libwayland-server.so.0(wl_signal_emit_mutable+0x7e) [0x7fdb2c13701e]
??
??:0
#12 | /usr/lib/libwlroots.so.13032(wlr_keyboard_notify_key+0x25) [0x7fdb2c1c10b5]
??
??:0
#13 | /usr/lib/libwlroots.so.13032(+0x4ffc1) [0x7fdb2c192fc1]
??
??:0
#14 | /usr/lib/libwayland-server.so.0(wl_event_loop_dispatch+0xa2) [0x7fdb2c138ae2]
??
??:0
#15 | /usr/lib/libwayland-server.so.0(wl_display_run+0x27) [0x7fdb2c1392d7]
??
??:0
#16 | /usr/bin/Hyprland(main+0x7fa) [0x55fcf99b46ba]
??
??:0
#17 | /usr/lib/libc.so.6(+0x27cd0) [0x7fdb2b758cd0]
??
??:0
#18 | /usr/lib/libc.so.6(__libc_start_main+0x8a) [0x7fdb2b758d8a]
??
??:0
#19 | /usr/bin/Hyprland(_start+0x25) [0x55fcf99c9c95]
??
??:0
Log tail:
or firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] Scanout mode OFF set for [Window 55fcfa7219d0: title: "DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox"]
[LOG] renameWorkspace: Renaming workspace 1 to 'OVERVIEW'
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] [hycov] enter overview:toggleMethod:
[LOG] Destroying workspace ID 3
[LOG] Destroying workspace ID 5
[LOG] Keybind triggered, calling dispatcher (8, , 65289)
[LOG] [hycov] leave overview
[LOG] renameWorkspace: Renaming workspace 1 to '1'
[LOG] [hycov] moveWindowToSourceWorkspace
[LOG] [hycov] source workspace no exist
[LOG] [hycov] create workspace: id:3 monitor:0 name:3
[LOG] [hycov] source workspace no exist
[LOG] [hycov] create workspace: id:5 monitor:0 name:5
[LOG] [hycov] changeToActivceSourceWorkspace
[LOG] [hycov] changeToWorkspace:1
[LOG] OPENINGON: [Node nullptr], Monitor: 0
[LOG] OPENINGON: [Node nullptr], Monitor: 0
[LOG] OPENINGON: [Node nullptr], Monitor: 0
[ERR] Orphaned Node [Node 55fcfa90fab0: workspace: -98, pos: [0.00, 35.00], size: [1920.00, 1045.00], window: 55fcfa6d4900]!!
[LOG] OPENINGON: [Node 55fcfa8d6970: workspace: 1, pos: [0.00, 0.00], size: [0.00, 0.00], window: 55fcfa7219d0], Monitor: 0
[LOG] Set keyboard focus to surface 55fcfaea5930, with [Window 55fcfa7219d0: title: "DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox"]
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] Scanout mode ON set for [Window 55fcfa7219d0: title: "DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox"]
[LOG] [hycov] leave overview:toggleMethod:,enable_alt_release_exit:0
[LOG] Keybind triggered, calling dispatcher (8, , 65289)
[LOG] [hycov] enter overview
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] Scanout mode OFF set for [Window 55fcfa7219d0: title: "DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox"]
[LOG] renameWorkspace: Renaming workspace 1 to 'OVERVIEW'
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] Searching for matching rules for firefoxdeveloperedition (title: DreamMaoMao/hycov: hyprland overview mode plugin,a new tile window workflow — Mozilla Firefox)
[LOG] [hycov] enter overview:toggleMethod:
[LOG] Destroying workspace ID 3
[LOG] Destroying workspace ID 5
[LOG] Starting a swipe from OVERVIEW
[LOG] Ended swipe to the right
[LOG] Keybind triggered, calling dispatcher (8, , 65289)
[LOG] [hycov] leave overview
[LOG] renameWorkspace: Renaming workspace 1 to '1'
[LOG] [hycov] moveWindowToSourceWorkspace
[LOG] [hycov] source workspace no exist
[LOG] [hycov] create workspace: id:3 monitor:0 name:3
[LOG] [hycov] source workspace no exist
[LOG] [hycov] create workspace: id:5 monitor:0 name:5
[LOG] [hycov] changeToActivceSourceWorkspace
[LOG] [hycov] changeToWorkspace:2
[LOG] OPENINGON: [Node nullptr], Monitor: 0
[LOG] OPENINGON: [Node nullptr], Monitor: 0
[LOG] OPENINGON: [Node nullptr], Monitor: 0
[ERR] Orphaned Node [Node 55fcfade5870: workspace: -98, pos: [0.00, 35.00], size: [1920.00, 1045.00], window: 55fcfa6d4900]!!
[LOG] OPENINGON: [Node nullptr], Monitor: 0
Hello,
I've just tried importing hycov via my home.nix.
It all compiled, but I get a message "Unable to load plugin /nix/store/za95dh8kb8b4wl65140jsfzxxypfx205-hycov-0.1/lib/libhycov.so".
I've found hyprland logs and they say this:
[LOG] Loading plugin /nix/store/za95dh8kb8b4wl65140jsfzxxypfx205-hycov-0.1/lib/libhycov.so which is now present in config
[ERR] [PluginSystem] Plugin /nix/store/za95dh8kb8b4wl65140jsfzxxypfx205-hycov-0.1/lib/libhycov.so could not be loaded: /nix/store/za95dh8kb8b4wl65140jsfzxxypfx205-hycov-0.1/lib/libhycov.so: undefined symbol: _ZN13CRenderbufferD1Ev
Do you have an idea what is this undefined symbol _ZN13CRenderbufferD1Ev?
My entire configuration is here.
Relevant parts:
I'm trying to make it so windows have borders in the overview workspace so I can see what window is active.
I have tried using the below configuration but neither has worked, any ideas how to do it correctly?
workspace = name:OVERVIEW, border:true, bordersize:2
workspace = special:OVERVIEW, border:true, bordersize:2
Hello Dream;
With the 7348f4c update, hycov was working fine.
With the c134aed update, I encounter an error like the one in the video in hycov.
"dekstop" I have 1,2,3,4 windows
There are 3 terminals open on Dekstop 1. I listed the screens with hycov and when I selected one of the 3 terminals, the other two terminal screens disappeared. It continues to run in the background. It appears again when I change the window mode. why did this happen? can you fix this for me?
I am also attaching the log file.
Good day to you!
My system config for current date:
noticed some bugs:
clients from hidden special workspaces not focusing from overview, from visible special workspace - focusing
'flying away' when only one client on monitor:
Thank you!
When using the overview effect, only 2 windows can be used on secondary screens.
If there are more, no matter if they are in a different workspace, the windows will vanish when in overview mode and come back after.
The main monitor is not affected and can use as many windows as one wants.
Despite the small bug, awesome work!
bash install.sh
-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "2.0.3")
-- Checking for modules 'hyprland;pixman-1;libdrm;pango;pangocairo'
-- Found hyprland, version 0.30.0
-- Found pixman-1, version 0.42.2
-- Found libdrm, version 2.4.118
-- Found pango, version 1.51.0
-- Found pangocairo, version 1.51.0
-- Configuring done (0.6s)
-- Generating done (0.0s)
-- Build files have been written to: /home/User/hycov/build
[ 20%] Building CXX object CMakeFiles/hycov.dir/src/main.cpp.o
[ 40%] Building CXX object CMakeFiles/hycov.dir/src/dispatchers.cpp.o
[ 60%] Building CXX object CMakeFiles/hycov.dir/src/GridLayout.cpp.o
[ 80%] Building CXX object CMakeFiles/hycov.dir/src/globaleventhook.cpp.o
/home/User/hycov/src/globaleventhook.cpp: In function 'void hkOnSwipeBegin(void*, wlr_pointer_swipe_begin_event*)':
/home/User/hycov/src/globaleventhook.cpp:47:17: UYARI: comparison of integer expressions of different signedness: 'uint32_t' {aka 'unsigned int'} and 'int' [-Wsign-compare]
47 | if(e->fingers == g_swipe_fingers){
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp: At global scope:
/home/User/hycov/src/globaleventhook.cpp:99:35: hata: 'SCallbackInfo' has not been declared
99 | static void mouseMoveHook(void , SCallbackInfo &info, std::any data)
| ^~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:106:37: hata: 'SCallbackInfo' has not been declared
106 | static void mouseButtonHook(void , SCallbackInfo &info, std::any data)
| ^~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp: In function 'void mouseButtonHook(void, int&, std::any)':
/home/User/hycov/src/globaleventhook.cpp:109:8: hata: request for member 'cancelled' in 'info', which is of non-class type 'int'
109 | info.cancelled = false;
| ^~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:116:12: hata: request for member 'cancelled' in 'info', which is of non-class type 'int'
116 | info.cancelled = true;
| ^~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:124:12: hata: request for member 'cancelled' in 'info', which is of non-class type 'int'
124 | info.cancelled = true;
| ^~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp: In function 'void registerGlobalEventHook()':
/home/User/hycov/src/globaleventhook.cpp:164:73: UYARI: converting from 'void (CInputManager::)(wlr_pointer_swipe_begin_event*)' to 'void*' [-Wpmf-conversions]
164 | g_pOnSwipeBeginHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&CInputManager::onSwipeBegin, (void*)&hkOnSwipeBegin);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:165:71: UYARI: converting from 'void (CInputManager::)(wlr_pointer_swipe_end_event)' to 'void*' [-Wpmf-conversions]
165 | g_pOnSwipeEndHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&CInputManager::onSwipeEnd, (void*)&hkOnSwipeEnd);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:166:74: UYARI: converting from 'void (CInputManager::)(wlr_pointer_swipe_update_event)' to 'void*' [-Wpmf-conversions]
166 | g_pOnSwipeUpdateHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&CInputManager::onSwipeUpdate, (void*)&hkOnSwipeUpdate);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:168:82: UYARI: converting from 'void (GridLayout::)(CWindow)' to 'void*' [-Wpmf-conversions]
168 | g_pOnWindowRemovedTilingHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&GridLayout::onWindowRemovedTiling, (void*)&hkOnWindowRemovedTiling);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:182:79: hata: 'SCallbackInfo' has not been declared
182 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseMove",[&](void* self, SCallbackInfo& info, std::any data) { mouseMoveHook(self, info, data); });
| ^~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:182:63: hata: could not convert 'registerGlobalEventHook()::<lambda(void*, int&, std::any)>()' from 'registerGlobalEventHook()::<lambda(void*, int&, std::any)>' to 'HOOK_CALLBACK_FN' {aka 'std::function<void(void*, std::any)>'}
182 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseMove",[&](void* self, SCallbackInfo& info, std::any data) { mouseMoveHook(self, info, data); });
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| registerGlobalEventHook()::<lambda(void*, int&, std::any)>
/home/User/hycov/src/globaleventhook.cpp:183:82: hata: 'SCallbackInfo' has not been declared
183 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseButton", [&](void* self, SCallbackInfo& info, std::any data) { mouseButtonHook(self, info, data); });
| ^~~~~~~~~~~~~
/home/User/hycov/src/globaleventhook.cpp:183:66: hata: could not convert 'registerGlobalEventHook()::<lambda(void*, int&, std::any)>()' from 'registerGlobalEventHook()::<lambda(void*, int&, std::any)>' to 'HOOK_CALLBACK_FN' {aka 'std::function<void(void*, std::any)>'}
183 | HyprlandAPI::registerCallbackDynamic(PHANDLE, "mouseButton", [&](void* self, SCallbackInfo& info, std::any data) { mouseButtonHook(self, info, data); });
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| registerGlobalEventHook()::<lambda(void*, int&, std::any)>
make[2]: *** [CMakeFiles/hycov.dir/build.make:118: CMakeFiles/hycov.dir/src/globaleventhook.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/hycov.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
cp: 'build/libhycov.so' failed to locate: No such file or directory
One thing that I would love to have in my multi-monitor setup is the ability to switch easily to any window in any workspace or
monitor. Currently with hycov I can cycle only between windows of workspaces on the same monitor.
I think that there can be two ways of doing so:
# bind key to toggle overview (normal)
bind = ALT,o,submap,Overview
submap = Overview
bind = ,o,hycov:toggleoverview
# bind key to toggle overview (force mode, not affected by `only_active_workspace` or `only_active_monitor`)
bind = ,grave,hycov:toggleoverview,forceall #grave key is the '~' key
# bind key to toggle overview (shows all windows in one monitor, not affected by `only_active_workspace` or `only_active_monitor`)
bind = ,g,hycov:toggleoverview,forceallinone
# The key binding for directional switch mode.
# Calculate the window closest to the direction to switch focus.
# This keybind is applicable not only to the overview, but also to the general layout.
bind=,h,hycov:movefocus,l
bind=,l,hycov:movefocus,r
bind=,k,hycov:movefocus,u
bind=,j,hycov:movefocus,d
bind = ALT,o,submap,reset
bind = ,escape,submap,reset
bind = SUPER,SPACE,submap,reset
bind = ,e,exec,hyprctl --batch "dispatch submap reset;notify-send 'Exited Group' "
bind = ,q,exec,hyprctl --batch "dispatch submap reset;notify-send 'Exited Group' "
submap = reset
I am using this set of submap key mapping
is there any dispatcher that doesn't toggle
but closes the overview?
then i can add it with my submap resetting key.
Everytime I try to start hycov, hyprland crush
~ » hyprctl version wilf@Arch
Hyprland, built from branch main at commit babb9c07b045e21b5549cdcc3096d677e9db35b3 (swipe: Prevent hiding current workspace when swiping (4417)).
Date: Fri Jan 12 02:22:40 2024
Tag: v0.34.0-41-gbabb9c07
flags: (if any)
Has fixed
waiting waybar merge:
Fixed variable synchronization exception caused by the "hyprland/workspace" module
This plugin looks and feels great! I'd love to be able to use it with my trackpad directly (like swiping on Hyprland to switch workspace). There could be a configuration option for a swipe direction and number of fingers, then animate the effect alongside the movement on the trackpad.
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.