hyprland-community / pyprland

Scratchpads & many goodies for Hyprland [maintainer=@fdev31]
MIT License
345 stars 15 forks source link

[BUG] [scratchpads] sometimes(randomely) get pypr integrity check failed #136

Closed alekgr closed 3 weeks ago

alekgr commented 4 weeks ago

Pyprland version 2.4.-0-47

Describe the bug Sometimes I get pypr integrity check failed

To Reproduce Steps to reproduce the behavior: Most of time it doesn't happen but sometimes I get the notification I am not seeing an rythm or reason for it Looks like it is being generated from command.py

Configuration (provide following files/samples when relevant):

[workspaces_follow_focus] max_workspaces = 10

[expose] include_special = false

[scratchpads.stb] animation = "fromBottom" command = "kitty --class kitty-stb sstb" class = "kitty-stb" lazy = true size = "50% 40%"

[scratchpads.stb-logs] animation = "fromTop" command = "kitty --class kitty-stb-logs stbLog" class = "kitty-stb-logs" lazy = true size = "50% 40%"

[scratchpads.term] animation = "fromTop" command = "kitty --class kitty-dropterm" class = "kitty-dropterm" size = "60% 50%" max_size = "100% 100%"

[scratchpads.ncmpcpp] animation = "fromTop" command = "kitty --class kitty-ncmpcpp ncmpcpp" class = "kitty-ncmpcpp" size = "90% 80%" max_size = "100% 100%"

[scratchpads.neomutt1] animation = "fromTop" command = "kitty --class='neomutt1' neomutt" class = "neomutt1" size = "60% 80%" max_size = "100% 100%"

[scratchpads.ranger] animation = "fromTop" command = "kitty --class ranger ranger" class = "ranger"


-------------------------------
hyprland

```sh
# For a full list, see the wiki
#

#autogenerated = 1 # remove this line to remove the warning

# See https://wiki.hyprland.org/Configuring/Monitors/
#monitor=,preferred,auto,1
monitor=HDMI-A-1, 3840x2160@60, 0x0, 1
monitor=eDP-1, 1920x1080@60, 3840x0, 1

#workspace workspace=HDMI-A-1,1
workspace=1, monitor:HDMI-A-1
workspace=2, monitor:HDMI-A-1
workspace=3, monitor:HDMI-A-1
workspace=4, monitor:HDMI-A-1
workspace=5, monitor:HDMI-A-1
workspace=6, monitor:HDMI-A-1
workspace=7, monitor:HDMI-A-1
workspace=8, monitor:eDP-1
workspace=9, monitor:eDP-1
# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox

#exec-once = waypaper --restore
exec-once = swaybg -i /usr/share/hypr/wall2.png
exec-once = waybar
#exec-once = [workspace 6 silent] pypr
exec-once = pypr --debug /tmp/pypr.log
#exec-once = dunst
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data

#portal
exec-once = portal.sh

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# Set programs that you use
$terminal = kitty
$fileManager = ranger
$menu = tofi-drun --drun-launch=true 
$firefox = firefox
$librewolf = librewolf
$brave     = brave
$chromium = chromium 
$chat     = weechat
$nvim     = nvim
$graphics     = gimp
$graphics2    = blender
$screenshot   = grim
$nwg-menu     = nwg-bar
$paste        = wl-paste
#$disable_mouse = /usr/local/bin/mouse_toggle.sh; sleep 10
# Some default env vars.
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
env = HYPRCURSOR_THEME,rose-pine-hyprcursor

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = us
    kb_variant =
    kb_model =
    kb_options = caps:escape
    kb_rules =

    follow_mouse = 0
    #scroll_method = no_scroll
    touchpad {
        natural_scroll = no
    disable_while_typing = true
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
    float_switch_override_focus = 0

    scroll_method = no_scroll 
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 5
    gaps_out = 30
    border_size = 4
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle

    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
    allow_tearing = false
    #no_cursor_warps = true
}
decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 15

    blur {
        enabled = true
        size = 20 
        passes = 1
    xray = true
    }

    drop_shadow = yes
    shadow_range = 4 
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
    layerrule = blur, notifications
    layerrule = ignorezero, notifications
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_status = master
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = off
}

misc {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
    disable_hyprland_logo = true
    enable_swallow = false
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
 device {
    name = epic-mouse-v1
    sensitivity = -0.5
}

# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = float, class:^(Alacritty)$
windowrulev2 = center[1], class:^(Alacritty)$
windowrulev2 = pin, class:^(Alacritty)$
windowrulev2 = stayfocused, class:^(Alacritty)$

windowrulev2 = float,class:^(pavucontrol)$
windowrulev2 = center[1], class:^(Alacritty)$
windowrulev2 = pin,class:^(pavucontrol)$
windowrulev2 = stayfocused,class:^(pavucontrol)$
windowrulev2 = size 30% 40%,class:^(pavucontrol)$
#windowrulev2 = float, class:^(neomutt)$
#windowrulev2 = workspace 7, class:neomutt1

#browsers
#windowrulev2 = float,class:^(Chromium)$
windowrulev2 = float,class:^(org.qutebrowser.qutebrowser)$

#graphics
windowrulev2 = workspace 8, class:^(Gimp-2.10)$
windowrulev2 = workspace 8, class:^(blender)$

#librewolf
windowrulev2 = workspace 7, class:^(LibreWolf)$

#zathura 
windowrulev2 = float,class:^(org.pwmt.zathura)$
windowrulev2 = size 60% 60%, class:^(org.pwmt.zathura)$

#default
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod  = SUPER
$mainMod4 = CTRL
$mainMod2 = ALT
$mainMod24 = ALT+CTRL

#common commands
bind = $mainMod, C, killactive, 
bind = $mainMod SHIFT, E, exit, 
bind = $mainMod, Space, togglefloating, 
bind = $mainMod, D, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod SHIFT, P, exec, $nwg-menu
bind = $mainMod, S, togglesplit, # dwindle
bind = $mainMod, F, exec, hyprctl dispatch fullscreen 

# my apps
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, A, exec, $brave --ozone-platform-hint=auto
bind = $mainMod, W, exec, $terminal $chat

#untilities
bind = $mainMod, F1, exec, $screenshot -g "$(slurp)" - | wl-copy #copy the screenshot
bind = $mainMod, F2, exec,  cliphist list | tofi | cliphist decode | wl-copy #start tofi with cliphist to choose from 
bind = $mainMod2, h,  exec,  ~/commands/hyperland/reload.sh 
bind = $mainMod2, w,  exec,  killall -SIGUSR2 waybar
bind = $mainMod,  l,  exec,  hyprlock
bind = $mainMod SHIFT, e,  exec,  hyprctl dispatch exit
bind = $mainMod SHIFT, r,  exec,  systemctl reboot
bind = $mainMod SHIFT, s,  exec,  systemctl -i poweroff 

#cycle through the list of windows in the workflow
bind =  $mainMod, Tab, cyclenext

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10

# Example special workspace (scratchpad)
#bind = $mainMod, S, togglespecialworkspace, magic
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic

#pypr scratchpad
bind = $mainMod , N, exec, pypr toggle term
bind = $mainMod,  M, exec, pypr toggle neomutt1
bind = $mainMod,  B, exec, pypr toggle ncmpcpp
bind = $mainMod,  v, exec, pypr toggle volume
bind = $mainMod,  z, exec, pypr zoom
bind = $mainMod,  E, exec, pypr toggle ranger

# Scroll through existing workspaces with mainMod + scroll
#bind = $mainMod, mouse_down, workspace, e+1
#bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow`

Additional context Here is a sample of pypr.log with defugging pypr_sample.log

fdev31 commented 3 weeks ago

Do you get the problem with the stable version (2.4.0) instead of git version?

fdev31 commented 3 weeks ago

I also get this sometimes, it seems to work as expected but throws such errors isn't it? EDIT: please use --debug /path/to/log/file.log and send the generated log file...

fdev31 commented 3 weeks ago

Would be interesting to see if we also have a line such as: 2024-08-15 14:53:36,502 [DEBUG] pyprland :: event_activewindowv2('',) :: command.py:202 When the bug happens again... also the full log file will allow seeing eventual previous problems.

fdev31 commented 3 weeks ago

Can you try the latest git version, I think the code was too optimistic, it should work better now.

alekgr commented 3 weeks ago

@fdev31 I am using git version, actually all my hyprland using git update verseion. I see you remove the assert ha. I'll see if I get the error again or not. On top of the ticket there is pypr_sample.log with defugging enabled

alekgr commented 3 weeks ago

I am not seeing any error messages since the patch. Closing ticket ticket