Coder Social home page Coder Social logo

hycov's Introduction

hycov's People

Contributors

benmac31 avatar dreammaomao avatar edenqwq avatar lyro-synth avatar rehanzo avatar ruixi-rebirth avatar wehagy 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

hycov's Issues

Typo

hyrppm enable hycov should be hyprpm enable hycov

Incorrect spacing with hyprbars

When using the plugin hyprbars, the spacing is incorrect, I assume because the title bar is not taken into account in the client's geometry. It would be nice to have an option for a top gap for clients or if hycov auto detected hyprbars and added this automatically.

image

windows appear above monitor

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
2024_01 07_17:08:39_sc
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.

Remembering tiled windows placement.

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.

Before:
image

After:
image

I'd like to request a feature enhancement where hycov ensures that the placement of the clients are rememberd.

Hardcoded Alt keycode 56 prevents using another key

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

New dispatcher for all windows

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.

something is not right

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?

Config ignored if installed with hyprpm

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?

Need better documentation in Readme

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

Multiple hycov:enteroverview causes different glitches and bugs

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

Alt + arrow keys works even when hycov is not toggled

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.

Build Error

$ bash install.sh

I'm trying to build and I'm getting the following errors.

image

hyprctl version
Hyprland, built from branch main at commit a6ccd36147109d5cb2981122595f06ae93999b55 dirty (screencopy: move monitor verif check to the proper place).
Date: Thu Feb 8 02:47:14 2024
Tag: v0.35.0-8-ga6ccd361

Build failed

image

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

Overview doesn't autoexit

It doesn't autoexit even after reboot, everything else works fine. (on Arch, installed with meson/ninja)

AUR package

Is there any chance this gets added to the AUR?

[Feature] Allow Gesture Swipe Direction Customization

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

Unsure how to declare the plugin in my Nix config

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?

yo i got a problem, `Invalid dispatcher, requsted "hycov:movefocus" does not exist`

image

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

image

Microsoft Edge shows a black preview screen then crashes

Hycov works great with most windows except with Edge.

When I have a Edge browser open, hycov toggle shows:

  • very briefly the Edge window content
  • then it's replaced by black
  • a few seconds later, Edge window content appears again

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

Window switching from desktop 1 to desktop 2

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?

recording.mp4

Add option for infinite scrolling

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.

Workspace issue

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?

No borders / rounded corners in OVERVIEW mode when `dwindle:no_gaps_when_only = 1`

Demo

See the

screenshot

23-12-2023-02_44_35

The problem

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

Expected behavior

All windows have the same borders / rounded corners.

What I've done

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.

Version

hycov be28246
hyprland 0.33.1-2 (from arch repo)

Toggling overview while on another workspace crashes Hyprland

Steps to reproduce:

  1. Toggle the overview on
  2. Switch to another workspace
  3. Try to toggle the overview off

Crash log

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

Failed to load libhycov.so

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:

Change workspaces settings for overview workspace?

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

active window disappeared

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?

recording.mp4

log.txt

log2.txt

I am also attaching the log file.

BUG: hidden special workspaces not focusing; bugged positiononing

Good day to you!

My system config for current date:

  • latest hyprland commit
  • latest hycov commit
  • configure by NixOS home-manager module
  • multi-monitor setup

noticed some bugs:

  • clients from hidden special workspaces not focusing from overview, from visible special workspace - focusing

  • Bugged positioning or clients 'flying away' in overview:
    image

'flying away' when only one client on monitor:

video_2023-12-01_14-30-11.mp4

Thank you!

Only 2 windows visible for secondary monitors

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.

untitled.mp4

Despite the small bug, awesome work!

I'm getting an error while building

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

Feature request: cross-monitors overview

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:

  • one: keep this layout but add an option to cycle/move also to other monitors. This wold be (I think) not so difficult for cycling
    but harder for moving (since is required to know the spatial position of the monitors), but default dispatchers already let you
    move the focus around.
  • two: having an overview in one monitor with all the windows, and when one is selected the focus moves to the right monitor
    and workspace. This one would require some more work I think.

[Help]: Available dispathchers?

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

hycov cause cruse after an update

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)

hyprlandCrashReport2807.txt

Trackpad 1:1 gestures

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.

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.