#๐Ÿ–ฅ-vesktop-development

1 messages ยท Page 26 of 1

floral ledge
#

I ALREADY see another issue

#

They dont follow the spec again

humble mortar
#

what is it

floral ledge
#

Ok so the spec is like

humble mortar
#

kde or hyprland?

floral ledge
#

KDE

#

You can only register shortcuts once in a session

#

According to the spec

#

In KDE you can just do it however often you want

humble mortar
#

uhh no?

floral ledge
#

I do not see the prevention in here nor in setactions

#

I also found your duplicate issue

#

setactions has no safeguard against duplicate either

humble mortar
#

that was an intentional choice theres a comment in the impl pr

#

where in the spec does it say once a session

floral ledge
#

Okay well its a bad choice because hyprland only allows once per session

#

This isnt a spec if no one follows it

#

Or only some people follow it

humble mortar
#

that'd be a hyprland issue I think

#

no where does it say once

floral ledge
#

yes it does

#

I vividly remember this from the spec

#

@humble mortar

floral ledge
humble mortar
floral ledge
#

This is a case where an application would or it would have to take the more strict behavior of destroying the session

#

to reregister

#

on every de/wm

floral ledge
#

They actually removed the shortcut clearing

humble mortar
floral ledge
#

accepted the shortcuts in CreateSession

#

which obviously.. is once per session

#

Essentially the implementor just Moved It and didnt read the spec

#

Saw changed to listshortcuts and just moved it in 5 seconds

floral ledge
humble mortar
#

this is so cooked

#

so hyprland correctly does it yes?

floral ledge
#

yes

#

lmfao

#

ohh my god

#

this pisses me off even more

floral ledge
#
global-shortcuts: Improve documentation
Various small cleanups in wording, formatting, and whatnot.
#

that is NOT a small cleanup and improvement that is a SPEC CHANGE

humble mortar
#

wait so is the spec wrong

floral ledge
#

no

#

the spec is correct

#

its just a stupid commit msg

humble mortar
#

I guess

#

hm

#

guhhh

floral ledge
#

Throw like 2kb of @'s in a shortcut description please i wanna see that

humble mortar
#

I'd assume itd just error out at the dbus level

floral ledge
#

and i dont have a plasma rig to test

#

nuh uh

#

max dbus message length is 128mb

humble mortar
#

my laptop is off I was about to go to bed ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ

floral ledge
#

aww

#

Input validation is not in the global shortcuts spec yet and no one validates anything

#

What could possibly go wrong

humble mortar
#

well atp the app would be intentionally breaking things and that'd count as malware

#

so like who caress

floral ledge
#

No but heres the idea

#

It saves in system settings

#

Can you just crash loop kde lol

#

Super annoying to fix!

humble mortar
#

last time an entry got corrupt (the no Id thing) restarting kde cleared it

floral ledge
#

real

#

still no input validation is bad too

humble mortar
#

we will see

#

!remindme 11h attempt to cook kde

small lionBOT
#

Alright @humble mortar, in 11 hours: attempt to cook kde

humble mortar
#

I'll make an issue for the bind return thing then too

#

maybe you should make an issue for the non spec conformity

sour muralBOT
humble mortar
#

their test impl uses a static session handle token

floral ledge
#

Like

#

The spec isnt great

#

But they could at least try to read it??

#

The spec has been reasonable for literally a year

#

thats when all the fixes were made to it

humble mortar
#

this is their test impl for the entire portal

#

are WE interpreting it wrong

floral ledge
#

no

#

Every single client library uses it correctly

#

LOL

humble mortar
#

I'm beginning to go insane

floral ledge
#

ashpd libportal both do it correctly

humble mortar
#

if libportal does it with a random then that has to be right

#

so kde is insane

floral ledge
#

Unless the spec is saying something in clear english where it does not in fact mean the clear english of "use a library prefix combined with a random number"

humble mortar
#

๐Ÿ˜ญ

floral ledge
#

Then it is definitely kde's fault

humble mortar
#

where's the spec on how it grabs the appid

#

if their test app is made to conform it'll be the random token issue all over again because it doesnt have a desktop entry & its not launched from it

#

why are app icons and stuff implemented different from the session appid grabbing

#

this is all insane

floral ledge
#

Implementation detail

#

All you're guaranteed is the app id is:

#

It grabs the appid just based on the systemd desktop environments spec for a systemd unit

#

For flatpak and snap its some insane garbage code I haven't read

#

As an aside the gnome 48 feature freeze is on February 1st

#

They have 21 days to get the global shortcuts pr merged into xdp-gnome

#

for support on day 1 of gnome 48

simple groveBOT
#

maybe use flatpak run and edit the .desktop to use that?

I'm just not sure if the parameter is processed by Vesktop, i've used the approach suggested by @Vendicated and the runtime shows that's invoked with the parameter:

image

This does however not affect the scrollbars inside Vesktop, so it appears that the parameter doesn't propagate as expected.

I'm not sure how else i could approach this.

humble mortar
simple groveBOT
simple groveBOT
small lionBOT
#

@humble mortar, <t:1736578156:R>: attempt to cook kde

simple groveBOT
brazen kite
simple groveBOT
floral ledge
#

its just not done yet\

brazen kite
#

there needs to be at least 3 years of bikeshedding for a big feature in gnome to be merged

floral ledge
# brazen kite there needs to be at least 3 years of bikeshedding for a big feature in gnome to...
#

the gnome-shell one is literally a edited js file

#

and a new xml file

#

and it has still not been merged after 7 months

floral ledge
grizzled hemlock
#

@humble mortar sorry for the ping but is vesktop screenshare being very choppy on windows a known issue

#

quite a few people have mentioned it in support and i can reproduce it on my laptop

humble mortar
#

is it choppy on the streamers client or just the viewer

grizzled hemlock
#

just the viewer

humble mortar
#

disable hardware accel

#

ive noticed and reproduced hardware encoded streams are COOKED on the viewers end

#

except on web clients

#

and mobile

#

something is going wrong between webrtc and whatever custom solution discord desktop uses

grizzled hemlock
#

@humble mortar just did that, quit vesktop from the system tray and its still really fucking choppy

humble mortar
#

idk then

#

stream from chromium to a web client to confirm if its just vesktop

#

ive seen people say it happens on other custom web based apps so I dont think it is just us

#

also try to view vesktop from chromium

grizzled hemlock
#

I'm already watching from a web client, so I'll try streaming from one as well

humble mortar
grizzled hemlock
#

i will now try streaming from web on windows to and watching from web on linux

#

@humble mortar its choppy when streaming from web

#

on chrome

humble mortar
#

is the stream being hardware encoded

grizzled hemlock
#

how do i find that out

humble mortar
#

idk I dont use windows ๐Ÿ˜ญ

#

either way its something wrong with chromium

#

maybe try to stream from firefox

grizzled hemlock
#

alr

humble mortar
#

if its laggy viewing that too discord cooked their native module

grizzled hemlock
#

isnt there no native module on web

heady merlin
#

yeah there isn't

#

and that why it sucks ass

humble mortar
#

it could also be a bandwidth issue

#

discords native module uses quite a lot less

grizzled hemlock
#

im on the same wifi as my desktop

#

i should be fine

humble mortar
#

ยฏ_(ใƒ„)_/ยฏ

grizzled hemlock
#

@humble mortar its perfectly smooth on firefox

#

chromium cooked

humble mortar
#

try older versions

#

go find the regression ๐Ÿ”ซ

grizzled hemlock
#

too lazy

humble mortar
#

booo

#

actually pause

#

was Firefox hardware encoding

grizzled hemlock
#

idfk

humble mortar
#

๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ

grizzled hemlock
#

i dont stream on windows so i cant be bothered to find out

#

if you know how to check ill do it

humble mortar
#

idk check process viewer gpu usage?m

#

task manager

#

also this is def a larger issue because vesktop/chromium hardware accelerated stream -> macos desktop client = didnt load but -> macos web client (chromium based) it loaded and was fine

#

does chromium -> firefox work fine

grizzled hemlock
#

firefox wasnt

humble mortar
#

stream from chrome to firefox

#

maybe the upstream libwebrtc made a change to their impl and discord hasn't pulled them in to their fork

grizzled hemlock
#

wouldnt there be no native module in browser -> browser

humble mortar
#

discords native module is patches ontop webrtc

humble mortar
brazen kite
humble mortar
#

@floral ledge do you think I should make a single issue on kdes bug tracker for these or one for each

simple groveBOT
simple groveBOT
floral ledge
#

I think you make the one to save yourself 15 minutes

floral ledge
#

the spec does not specify how you should save shortcuts

simple groveBOT
#

Here is a script that doesn't require setting PULSE_PROP="discord.id=vesktop" vesktop. It is also modified to not mute screenshare, and allows adding different Vencord clients like Equibop.

#!/bin/bash

DISCORD_ID="io.github.equicord.equibop"
WANT_MUTE=$1
DISCORD_IDS=("dev.vencord.Vesktop" "io.github.equicord.equibop")

APP_ID_SELECTORS="("
for i in "${!DISCORD_IDS[@]}"; do
  APP_ID_SELECTORS+=".info.props.\"pipewire.access.portal.app_id\" == \"${DISCORD_IDS[$i]}\""
  i...
humble mortar
floral ledge
#

LOL

#

The spec doesnt actually define anything about the app id

sour muralBOT
floral ledge
#

The portal source code defines it

floral ledge
#

THANK FUCK

#

they need to do this

simple groveBOT
brazen kite
#

especially if it isn't sandboxed

humble mortar
#

no movement past that tho ๐Ÿ˜ญ

floral ledge
#

I made this discussion

#

maintainer agreed it would be good to point out in the spec

simple groveBOT
floral ledge
#

New discussion

humble mortar
#

kde has unset shortcuts

#

hyprland wouldn't since its all config driven

#

trigger_description is however the implementation conveys how to trigger a shortcut

#

so it obviously won't have unset info

#

thats for the settings panel

#

shortcuts are already 'saved' for relaunches based on the implementation

humble mortar
#

kde does appid then prefixed session token

#

hyprland does appid then nothing

#

soo

#

actually I bet theres a spec for saving persistent session stuff

#

which covers everything

simple groveBOT
humble mortar
floral ledge
#

kde just registers the shortcuts

floral ledge
floral ledge
humble mortar
#

it doesnt break it just misreports

#

its registered and unbound

#

but still says ctrl+1 in the trigger_description which is wrong

humble mortar
floral ledge
#

it doesnt specify how shortcuts should be saved

#

remember kde was doing with appid + token

humble mortar
#

that was a mistake i believe

floral ledge
#

yeah but still spec doesnt specify

humble mortar
#

its implied like that other thing

floral ledge
#

this is notr implied

#

this will break compatibility depending on program behavior

#

between backends

humble mortar
#

trigger_description is just a string

#

the app should treat it as such

#

and display it to the user

#

its not something to be parsed or anything

floral ledge
#

okayu

#

that doesnt answer the question

#

what do you do when theres a conflicting keybind

#

do you not register it?

#

mind you theres multiple possible answers

humble mortar
#

its preferred_trigger for a reason

floral ledge
#

thats not an answer

#

one app expects it to do one thing

#

other app expects another

humble mortar
#

you dont rely on what you send

floral ledge
#

does the app just not know what the trigger key is

humble mortar
#

you rely on what it returns

floral ledge
#

you cant figure out what the trigger key is

humble mortar
#

trigger_description is what you rely on

#

and you display it to the user

floral ledge
#

gg

humble mortar
#

i dont get why thats an issue for you

floral ledge
#

so you register and return "unset" from the implementation

#

or some arbitrary value

#

implementation defined

humble mortar
#

you ask to register to ctrl+1

#

the impl returns what to show the user in trigger_description

#

simple

floral ledge
#

that does not answer my question

#

you keep saying that but that doesnt answer my question

#

what should an implementation do with conflicting keybinds

#

you cant just say "up to the implementation" because im asking what the implementation should make up

humble mortar
#

disregard or store it like kde

#

hyprland doesnt care about preferred_trigger at all

#

kde stores it as 'default shortcut' but unchecked if its conflicting

floral ledge
#

we should just be registering all the possible discord global shortcuts with no preferred trigger

#

on vesktop start

humble mortar
#

yeppp

floral ledge
#

and then the user can configure it

humble mortar
#

its a different paradigm

floral ledge
#

Yeha

humble mortar
#

the keybind ui will simply be a display

floral ledge
#

I forgot that I should have had that paradigm in mind

#

The keybind UI shouldnt even show shit

#

Just turn it off on wayland except for the like help thing that shows default ones

humble mortar
#

well it should still be there to display the trigger_description

floral ledge
#

Also that PR is ready

#

So is the windows one

#

Basically they're both like. Not actual full implementations

#

I am going to have to clean up both afterwards

#

theres literally no keyup support in either

#

I need to clean up the key trigger logic in both

#

Including the registration logic

#

the tomorrow in question

humble mortar
#

lol

#

i'd help if i was confident in my rust abilities lol

floral ledge
#

I would help but I'm waiting for stuff to get reviewed and merged

#

before I start overhauling things

humble mortar
#

just overhaul and tell tuxinal to cope tro

floral ledge
#

I need the windows pr and xdg pr in to start overhauling

humble mortar
#

merge locally

floral ledge
#

I could do that in my own branch but thats really annoying

humble mortar
#

the git rebase in question

floral ledge
#

if the xdg pr changes at all before being merged

#

the rebase will be a disaster

humble mortar
#

his last comment on it implies he was gonna merge as is

#

sooo

#

also remember an internal debounce thing

#

i dont think any keybinds discord has are press and hold incremental ones

floral ledge
#

will be fixed also

humble mortar
#

yep yep

brazen kite
#

you're doing god's work

humble mortar
#

gods work is going insane with freedesktop standards

scenic hollow
#

i guess i could just undraft it myself

#

oh i just saw your responses

floral ledge
#

@scenic hollow conflicts resolved

#

i regenerated the lockfile

#

i plan on porting to napi-rs so CI will be fixed soon with new pr

#

also i think refrain from making a new version until this is somewhat usable software

scenic hollow
floral ledge
#

okay other thing i was curious about

#

is there something that stops us from using wayland seats

#

instead of xdg

#

per-compositor security?

scenic hollow
#

does that not require focus on the window?

floral ledge
#

I mean not according to the Wayland protocol

#

I think that'd be implementation specific

#

"A seat typically has a pointer and maintains a keyboard focus and a pointer focus."

#

hmm

scenic hollow
#

Using the wl_seat.get_pointer request, clients may obtain a wl_pointer object. The server will send events to it whenever the user moves their pointer, presses mouse buttons, uses the scroll wheel, etc โ€” whenever the pointer is over one of your surfaces

scenic hollow
#

next page

floral ledge
#

its in the protocol appendix?

#

isee

floral ledge
#

oh

#

thats the book

#

im talking about the spec mainlty

#

anyways yeah, that's true

#

I can see in hyprland they check focus before sending any events

#

total security model victory

#

But it technically is up to the compositor

#

You could make a shitty compositor with no seat security

#

LMAO

scenic hollow
#

yeah and ask every vesktop user to use it if they want shortcuts and then support nothing else

floral ledge
#

I lied

#

defined for wl_pointer in the spec

#

"The wl_pointer interface generates motion, enter and leave events for the surfaces that the pointer is located over"

#

nevermind i didnt lie

#

god this is confusing

#

I cannot tell where the security is actually defined lmfao

scenic hollow
#

either ways i'd assume it's not intended to be used as a way to define shortcuts

floral ledge
#

they have grabs

#

This is the actual security

#

1 active seat grab at a time

floral ledge
#

Well the security model is much better than windows

#

good luck secretly keylogging ig

floral ledge
#

gg

floral ledge
#

does discord support one keybind for multiple keys

#

like one action

#

ok yeah it does

#

You don't

#

You would have to end and recreate the session really

#

the idea is this supports 1 shortcut -> 1 keybind trigger

#

and you remove the ability to change them from the settings panel. you just display the trigger_description and you change them from the compositor's method of changing them

#

on kde being system settings, hyprland being the configuration files

scenic hollow
# floral ledge what do you mean

i meant we currently call BindShortcuts once for each shortcut defined. according to the spec we can't do that

An application can only attempt bind shortcuts of a session once.
so we'd have to first gather all our shortcuts and then add them in one BindShortcut call. idk how we'd do that

floral ledge
#

"of a session"

#

free the session

#

make a new session

scenic hollow
#

ok but that's kinda crappy in it's own way

floral ledge
#

That is ONLY if we want to support the user adding more keybinds though

floral ledge
#

since there's only like 15 of them

#

that discord allows you to bind

#

And we bind them

#

No preferred triggers

#

Edit the keybinds through your compositor

#

Basically the paradigm is going to be completely different to any other platform for how it will work

floral ledge
#

Seems very niche to go through the effort of session reregistration to support unfortunately

#

And if they really want that it should be a compositor supported thing

#

AKA Hyprland supports that

#

Just add another config entry

#

With the same shortcut

#

Boom the hyprland event dispatcher will handle it for you

#

idk about kde

scenic hollow
#

kde disables shortcuts on conflict blobcatcozy

floral ledge
#

That's not what I'm saying

#

I'm talking about binding several keys to one action

#

I imagine KDE just supports 1

scenic hollow
#

OH yeah i read that backwards

floral ledge
#

yeah

scenic hollow
#

no i think kde supports multiple actually???

floral ledge
#

how

#

can u like add more in the settings panel

#

lol

floral ledge
#

Dead on arrival because no compositor is gonna handle that properly

#

Except hyprland lawl

scenic hollow
floral ledge
#

KDE just breaks whenever theres a conflict its stupid

floral ledge
#

dont have to worry about it

floral ledge
#

and they dont have to spend time making 4 prs to implement it in UI

#

they're on to something here!!

#

Effortless multiple keys to one action and multiple actions to one key !

scenic hollow
floral ledge
#

Because you're seeing this from a Vesktop perspective

#

Where all of this requires some insane JS modding and app modification

#

When you're like making a normal desktop app and you want shortcuts you have a list of actions you want to be able to be bound to a key

#

So its actually really easy for that use case

#

All i do is i pass the portal my actions and boom

#

The user can configure shortcuts in the compositors' method for that whether that be a UI or a file and I dont have to do any input logic

#

I just get my activated and deactivated events

#

And the compositor can support multiple keys to one action and multiple actions for one key on its own in UI/configuration

#

It's pretty easy/elegant for the vast majority of an application's purposes

scenic hollow
#

guhh yeah i guess

floral ledge
#

It's a different paradigm to discord and like conventional applications though where they have hteir inbuilt settings UI and you can go and do whatever keybinds you want in there

#

But that's part of the security model

#

All of that is handed off to the compositor

#

So you really don't actually want an application to be abusing preferred_trigger and freeing/creating sessions

#

The correct ergonomic way is a session at app start and sending over all the possible shortcut actions

#

And the compositor handles the rest

#

Frankly it's easier than windows input where you have to go use some library that makes a hook or some insane garbage and receives every input event on the entire system and has to filter it

#

If not for d-bus requiring a wohle lotta boilerplate to interface with at least

#

but its just IPC instead of insane global input hooking

humble mortar
#

tbh just steal/remake the the shortcut ui

#

patching it for our uses will be insane

floral ledge
#

Yeah the idea I think is literally rip out like the entire shortcut ui

humble mortar
#

literally yoinking it would be liscence violation I think

floral ledge
#

Like just rip out the top part not the keybind help at the bottom for the default keybinds

#

yeah

#

don't yoink it just remake it

humble mortar
#

yop

floral ledge
#

It would not look good anyway with the changes

#

You'd have to remove the record button

#

Then display the trigger description (which on hyprland is literally always an empty string mind you)

humble mortar
#

2 billion patches vs writing a bit of ui

floral ledge
#

yes

#

I think you can just remove the react element at the top and then replace it

#

tbh

humble mortar
floral ledge
#

combines all the trigger names

floral ledge
#

Too lazy ig

humble mortar
floral ledge
#

Not a bug implementation decision

humble mortar
#

thats not spec conformant

floral ledge
#

That'd be a feature request

humble mortar
#

the spec says it should return a string on how to trigger

floral ledge
#

"User-readable text describing how to trigger the shortcut for the client to render."

humble mortar
#

exactly

humble mortar
floral ledge
scenic hollow
floral ledge
#

Their wayland protocol doesnt support that

humble mortar
humble mortar
floral ledge
#

The portal interfaces only through their wayland extension

humble mortar
floral ledge
#

They would have to modify their protcol to support returning the triggers

#

And signals for when those change

#

It would be such a mess

humble mortar
#

they implemented GlobalShortcuts ontop of their own portal?

#

insane

scenic hollow
floral ledge
#

They made a wayland protocol extension for global shortcuts specific to hyprland

#

the portal talks to the compositor through their extension

#

everyone is happy

humble mortar
#

insane layers

floral ledge
#

No other way to do it unfortunately

humble mortar
#

๐Ÿ˜ช

floral ledge
#

KDE does it through QActions or some stupid shit

#

I don't know how kde works lol

#

I dont know why it uses qt

#

Nor how the compositor registers them

humble mortar
#

kde IS heavily reliant on qt things

#

very INSANE

floral ledge
#

I can tell

#

How the hell does that even work

#

Do they have a custom fucking layer on top of qt that makes shit actually work

#

like

humble mortar
#

qt isnt solely ui

floral ledge
#

How do those qactions work in the compositor lmfao

#

I know it's not solely ui

#

Qt has an insane amount of stuff in it

#

Qt sucks every app that uses it takes 200mb of memory now I might as well be using an electron app

humble mortar
#

anyway yeah open a report on hyprland

#

let them figure out how to mangle their shit

humble mortar
humble mortar
#

so it shouldnt always be empty

floral ledge
#

chat does it suck

#

...

humble mortar
#

chat clients are always gonna be 'heavy'

#

so many things if you want it to be stylized and not simple text boxes

floral ledge
#

This is true considering halloy uses 220mb of memory on start and that's made with iced

humble mortar
#

also exe so its all bundled and can't share the libs

floral ledge
#

so fair point

humble mortar
#

also why doesnt the spec have any method to trigger opening the shortcuts settings beyond BindShortcuts

#

seems like an oversight

floral ledge
#

node_bindgen was the single biggest architectural mistake venbind made i gotta fix this

#

holyy

#

i have nodejs in path stop downloading it my guy

humble mortar
floral ledge
#

what is even happening here

#

is this lifetimes coming to haunt me

scenic hollow
#

huh no i remember having a lot of issues with u64 in general

#

i am removing the display_id and window_id btw for now disable the node feature

#

or

#

wait for me to commit my stuff

floral ledge
#

okay I will just revert my conversion to a move closure

#

and push the other windows compilation fix

floral ledge
#

I will have to remove them from windows start_keybinds_internal

#

that or I wait for you to commit and rebase

#

(again)

#

if its entirely I can just remove it really easiyl from the windows impl

scenic hollow
floral ledge
#

alr

#

windows pr is good to merge then

humble mortar
floral ledge
#

No lol

#

Fairly sure not at least

humble mortar
#

thats so silly

floral ledge
#

It might

humble mortar
#

๐Ÿง‘โ€๐Ÿฆฏ

#

blind leading the blind

floral ledge
#

Hyprctl globalshortcuts basically just gives you the info you need to add that to the config file

#

If you use hyprctl binds or whatever it will show up

#

just read the source

humble mortar
#

in not reading source on my phone ๐Ÿ˜ญ

floral ledge
#

I meant I just read it

#

sorry

humble mortar
#

I LOVE ENGLISH

#

READ AND READ

#

so good

floral ledge
#

hyprctl binds - lists active keybinds
hyprctl globalshortcuts - lists active global shortcuts solely for the purposes of easy reference/addition to the config file

#

it just lists the appid/shortcut description practically

#

hyprctl binds will list global shortcuts you actually bound

#

dont ask me why

humble mortar
#

so slap whatever binds is doing into the portal

#

unless its parsing the config

floral ledge
#

you cant

#

binds is reading from the internal keybind manager m_vKeybinds array

#

hyprctl is built into hyprland

#

the portal is a separate source tree that only communicates through the wayland protocol extensions

humble mortar
#

ughh

floral ledge
#

:3

#

I love... MODULARITY!!!

#

Ironically hyprland is the most reasonable and easy to interpret implementation which is hilarious

#

Instead of insane Qt bullshit its just a wayland protocol extension

humble mortar
#

are kde and hyprland really the only 'full' implementations

floral ledge
#

Ohh

#

I remember how kde's one works

#

Oh my god lmfao

#

They just create a qaction and then stick it into KGlobalAccel

#

Great work guys

humble mortar
#

not really that much different than hyprland tbh

#

tacking it onto the existing shortcuts impl

#

archwiki has dde as an implementation of GlobalShortcuts

floral ledge
#

hyprland's wayland protocol extension thing is great

#

super easy to find the documentation and its all specified

#

want to use it? u can use that protocol in any app without dbus

humble mortar
#

its a stub

floral ledge
#

just using the protcool with wayland-scanner or hyprland-wayland-scanner

floral ledge
#

kde's implementation?

#

yeah. we use kglobalaccel

#

which is like ok whatever

#

works ig

#

except theres even more layers

#

it goes portal -> kglobalaccel -> kde daemon

#

so kglobalaccel is just a middleman

#

oh my god

#

wait its even worse

#

ohh nooooo

#

@humble mortar
Client dbus -> xdg-desktop-portal -> impl dbus to backend -> KGlobalAccel -> kde daemon THROUGH ANOTHER DBUS

#

hyprland uses a wayland protocol. they use another fucking dbus

#

:-(

humble mortar
#

youre hurting yourself

#

implementation on implementation

floral ledge
#

Yet thats a super simple portal backend -> compositor direct protocol that I can find just by going on the wayland protocol browser

#

on the pretty docs page

#

KDE? Extra middleman and an extra dbus protocol

#

enjoy

#

Its not even to the compositor

humble mortar
#

counterpoint: plasma has wobbly windows

floral ledge
#

its to kde daemon

#

What the hell does kde daemon do

#

Do they just have a service that runs and grabs input directly

#

do they even bother with wayland input

#

KGlobalAccel is so ancient I would imagine not

#

Oh god

#

The kglobalaccel source says the relevant handler is in kde daemon

#

(The relevant handler is not in kde daemon)

#

Where is it going

#

No way to tell since its a random dbus request with no docs so it doesnt tell you

#

Where is John KDE to consult on this matter

#

You cant search an org for code on gitlab

humble mortar
#

clone everything locally

#

only solution

#

wait pause

floral ledge
#

I found it

#

They moved it from kde daemon to plasma

humble mortar
#

github mirrors exist

floral ledge
#

yeah

#

i found it on the github mirror

#

LOL

#

by org searching

humble mortar
#

love

#

I'm gonna go to bed now

#

you have fun..

floral ledge
#

my reaction

#

KDE devs are allergic to spacing

simple groveBOT
#

Discord Account

psychloor

Motivation

Whenever Vesktop starts up, it doesn't remember last position it was on my desktop unlike discord.
have to drag it to the secondary monitor every time

Solution

remember last position on drag and monitor and startup there

Alternatives

aren't any?

Additional context

I did see another but that was because of wayland and was solved. this is on windows

Request Agreement

  • [X] I have searched the existing issues and found no s...
floral ledge
#

@scenic hollow PR good to go

#

added a new readme change to mark off wayland support

simple groveBOT
#

Basic Windows and Wayland (via xdg-desktop-portal) support have been merged into Venbind! ๐Ÿฅณ

There won't be another tagged version of Venbind until it is at least somewhat usable (confirmed with maintainer) - key release events aren't implemented and there's issues with the existing implementation that need to be fixed. Once that's done, and Darwin support is done (shouldn't be too hard - libuiohook has it inbuilt) then Venbind should be pretty ready, and then everything's on the JavaScrip...

scenic hollow
#

god does anyone here even have a macos machine to test it

floral ledge
#

that was my

#

FIRST thought

#

LMFAO

scenic hollow
#

honestly i think we can delay darwin support until someone comes around and contributes it i don't think it should block our release

floral ledge
#

like. we can see if it builds using a macos target because rust is Awesome but like..

#

A fair amount of people seem to use vesktop on macos

#

just from a basic search of this discord

floral ledge
#

@scenic hollow swapping over to napi-rs gives a lot more architectural freedom

#

how do you want this designed lol

#

separate thread for the platform-specific handler and the JS callback loop?

#

so 2 threads?

#

n-api has this delusional insane support under the threadsafefunction api that makes that possible

scenic hollow
# floral ledge so 2 threads?

yeah. we could theoretically try fixing up async for the libuiohook dispatch function so it's one thread but that might prove difficult. two threads it is

scenic hollow
floral ledge
#

Yeah node bindgen does it all for you

#

The napi-rs implementation is, indeed, a pain in the ass

#

It's much more flexible but its a huge pain

scenic hollow
#

btw i'm making progress for making windows work with the current ci cd

#

turns out libuiohook is very insistent on targeting linux despite having set the target to windows

floral ledge
#

lmao

floral ledge
#

on windows

#

mouse4 is not a key I guess

#

separate event

#

EVENT_MOUSE_PRESSED

#

tragic

scenic hollow
floral ledge
#

It's what I'm seeing looking at the libuiohook codebase

scenic hollow
#

huh

floral ledge
#

We'll end up needing to support that too

#

annoying as fuck

#

I imagine same issue on x11

scenic hollow
#

don't have mouse buttons to test blobcatcozy

#

i mean i guess i could look at the source

floral ledge
#

hilariously I made some random internal napi function assertion fail immediately upon testing this new napi-rs code

#

its going well

simple groveBOT
simple groveBOT
simple groveBOT
brazen kite
#

I can test it

#

does the PR to vesktop need to be updated with the newer version? ๐Ÿค”

#

actually I'll figure it out

humble mortar
#

mac isnt implemented at all

#

and yes the pr would need to be updated

simple groveBOT
#

I have a similar issue.

  • If I share the whole screen, the stream will never load for other people.
  • If I share a windowed application, the stream works. However it freezes the moment I fullscreen the application, and turns back normal if I window it again.
  • If I share a fullscreened application, the stream does not load. If I window the application, stream will load instantly.
  • If I share region of screen, the stream never loads, and for some reason the preview on host pc is showin...
vernal lintel
#

vesktop is cancelled

#

too many yappers saying the same thing 100 people have already said before them

floral ledge
#

finally

hot juniper
#

can't wait for vesktop 2

vernal lintel
#

people think if they repeat the same thing a 100th time it will get fixed quicker or smth

floral ledge
#

PICTURED: Vesktop developers working on global shortcuts

simple groveBOT
humble mortar
# simple grove

i literally cannot repro this locally (streaming to myself with an alt) no matter the env but when i stream to a friend they get the cooked loading

I can consistently repro this with them in chromium by disabling and enabling hardware encoding

#

im confused why my local macos/windows vm or my phone doesnt have the issue but guh

#

webrtc routing shenanigans?

#

this is entirely a discord issue though

#

someonej should open a discord ticket

floral ledge
#

Holy hell 1280 lines of code in xdph for screencopy

#

"disabling and enabling hardware encoding" is crazy

floral ledge
#

Okay nevermind it uses electron's api which uses webrtc::DesktopCapturer

#

Okay the portal does matter webrtc uses xdp

#

wasnt too sure if they did before

simple groveBOT
floral ledge
#

@scenic hollow

#

How is the thing behind so far

#

Stable rustc is at 1.83.0

#

Thanks nix

#

Also why is mold disabled

floral ledge
#

idk how to do allat im on windows

#

with WSL of course

#

there

#

relatively easy with wsl

scenic hollow
floral ledge
#

i already updated the devenv lock

floral ledge
#

i hate github actions

#

i THINK it's gonna work this time

scenic hollow
#

i think github actions is hung on uiohook rn

floral ledge
#

which i missed

#

I hate nix

#

Bad software

#

@scenic hollow Ironically I got the CI working fully except uiohook-sys is now failing because cmake cant find ninja

#

Despite the fact that I have added it tot he devenv

#

I lied

#

it found it

#

This sucks

scenic hollow
#

yeah i've also had to manually specify where advapi32 is

#

and the windows.h include directory

humble mortar
#

well its not the issue for the non loading issue

#

idk about the artifacts

#

the hardware encoded enabled vs disabled, loading vs not thing can be replicated in pure chromium with vaapi so its 2000% not us

#

what's driving me insane though is i can't repro it purely locally

#

it always loads for me from my alt

#

I think I'll report it to discord and see what they say

floral ledge
floral ledge
#

you use a like

#

2 year old uiohook for some reason

#

way earlier than the latest commit at the time u started this repo so

#

newest one has a fixed cmake lists

scenic hollow
#

oh huh yeah i think there was issues with the latest commit at the time i don't remember what

floral ledge
#

I don't know how theres no issue for it

simple groveBOT
#

Discord Account

octogonee

Operating System

EndeavorOS

Linux Only ~ Desktop Environment

Hyprland

Package Type

AUR

What happens when the bug or crash occurs?

Screensharing is just weird.
Sometimes it doesnt load, and other times it does what is displayed in the images below.
image
I've been looking everywhere for a solution and found nothing.
Thanks!

What is the expected be...

simple groveBOT
floral ledge
#

.header("stdint.h")

#

World leading fix for mr worldwide

#

It is because uiohook is bad and uses C coder mind rot

#

Where the only reason it compiles is because they only include the specific header after stdint is included

#

However... EVIL binden with clang would not know about this since its trying to bindgen a single header file...

#

VICTORY IS MINE

#

@scenic hollow

#

turns out the build scripts were bugged before. you can't use cfg(target_os = abc) in a build script

#

have to use the cargo env variables

#

otherwise cross compilation explodes

scenic hollow
#

so i was working on my own ci cd fixes and i was stuck at a part where you need some libpthread thing for compiling to windows and i'm wondering if all that could've been avoided by using x86_64-pc-windows-msvc instead

floral ledge
#

napi-rs requires it for its cross builds and it solves 99% of issues so

#

i dont mind it

#

x86_64-pc-windows-gnu is a bad stupid target

#

dont use it

floral ledge
#

Pulls in windows-msvc-sysroot to use the windows header set

scenic hollow
#

yeah it's so cool dunno why i haven't heard of it

floral ledge
#

only 376 github stars is crazy

floral ledge
#

Free of charge multi platform building and testing i guess

#

Nevermind it sucks it just spins up a bunch of docker containers

#

:(

#

So boring!!

#

That doesn't count as cross compilation thats just docker abuse

simple groveBOT
humble mortar
#

what if chromium wasnt bad and everything just worked

simple groveBOT
simple groveBOT
#

Discord Account

No response

Operating System

Debian 12 bookworm

Linux Only ~ Desktop Environment

Gnome on Wayland

Package Type

stable 358711 (f042b2b) Build Override: N/A Vencord 3243120 (Vesktop v1.5.4) Electron 33.2.1 Chromium 130.0.6723.137

What happens when the bug or crash occurs?

When I want to upload a file

What is the expected behaviour?

I can't access to files in Documents and Music, It appear one day (I had access before)
An update ? I have ac...

simple groveBOT
humble mortar
#

probably the electron changing to a new portal version before it was stable thing

#

based on the screenshots those pickers are different

#

so likely their de doesnt sync the pinned stuff between portal impls

#

speaking of-

#

34.0.0 hit stable

#

which has the fix for that

#

soo

simple groveBOT
hot juniper
floral ledge
#

Peak alt universe...

simple groveBOT
hot juniper
#

don't these crash clients

#

just add source option

heady merlin
#

great job bruh, we have just added another pull request which further allows the user to choose 8k and/or 120 FPS screenshare #1051

#

what is this comment lol

hot juniper
#

i doubt anyone is seriously using discord to stream in 8k resolution

gentle hatch
#

isn't there a bitrate cap anyways, so it would look horrible

vernal lintel
#

yes

#

that's insane

rotund pantherBOT
vernal lintel
#

hows electron 34

#

good bad buggy?

humble mortar
#

seems fine

#

I havent had a chance to check streaming with it yet tho

#

it just had its first stable release like yesterday tho so maybe more niche bugs will popup

rotund pantherBOT
vernal lintel
#

there really isnt any benefit to using system electron in the first place

#

the only benefit is more up to date electron

humble mortar
#

EXACTLY ๐Ÿ˜ญ

rotund pantherBOT
simple groveBOT
#

Discord Account

No response

Motivation

Screensharing windowed applications also shares their window decorations (e.g. titlebar).

Solution

Screensharing should not include window decorations similar to the behavior of screensharing windowed applications on Windows.

Alternatives

Running applications at full screen or without window decorations is possible, but not ideal for all applications.

Additional context

No response

Request Agreement

  • [X] I have s...
humble mortar
#

@vernal lintel where did you see discord had the detectable.json deltas?

simple groveBOT
rotund pantherBOT
#

If you're worried about something breaking, don't use system electron and use what is bundled & supported

System electron is just as stable as bundled electron if you're using the right version

The system electron packages I'm aware of use electron as that is their purpose โ€” to use the latest electron

Not a single electron app in arch repositories uses the electron package. They all use specific versions. Go and look. The same also applies for the majority of electron apps in t...

vernal lintel
#

open network tab while launching

simple groveBOT
vernal lintel
#

why did they add some dependency ๐Ÿ˜ญ

humble mortar
#

why are they hardcoding the types like that

#

crazy

#

i was crazy once

humble mortar
#

every time

vernal lintel
#

oh yeah deltas is the banned domain hashes

humble mortar
#

EXPLODE

#

holy moly

#

wonder if they'll do it in a native language

vernal lintel
#

they dmed me about this earlier

humble mortar
#

will it still be js?

vernal lintel
#

idk

#

ask ducko

#

maybe ts since they seem to like it now

vernal lintel
#

(we're discussing rn, they are open to native or js)

simple groveBOT
vernal lintel
#

epic arrpc rewrite thread

#

i dont remember who else was interested in arrpc stuffs but ^ @humble mortar

simple groveBOT
simple groveBOT
simple groveBOT
simple groveBOT
simple groveBOT
woeful current
#

@humble mortar i force push all prs you ever view

humble mortar
#

ill eat you alive

simple groveBOT
#

Discord Account

madpie._

Operating System

Windows 11

Linux Only ~ Desktop Environment

No response

Package Type

Setup EXE

What happens when the bug or crash occurs?

The same symptoms as #969. It only happens when the system starts from a cold boot (i.e. from shut down or restart) when there's no internet connection available yet.

I have created a new issue to mention that this also happens on Windows (the other issue is locked down to collaborators).

What i...

hot juniper
#

hu but also understandable but also not

simple groveBOT
#

You're over complicating it by quite a bit

Agree to disagree, I suppose. It's much more readable to me with the MessageChannel, and adds like... 1 line of code, which is why I didn't use postMessage. Iโ€™m surprised your code works using a .ts file for the worker, even when it isnโ€™t explicitly loaded using an import/require (you reference the js output, which Iโ€™m surprised is included by ESBuild in the bundle when itโ€™s not ever imported). Let me try removing the new entrypoint I added ...

simple groveBOT
hot juniper
# simple grove

i found this in my emails before clicking into this channel

grand swift
#

@vernal lintel you

#

apparently gamescope exposes a pipewire stream named gamescope

#

for video

#

u don't need the special protocol

#

is there a way we can force electron to use pipewire capture on x11

hot juniper
#

you probably know a lot more than I do about this but why does vesktop need to run in x11 with a wayland compositor

grand swift
#

all clients use x11

hot juniper
#

wtf is valve cooking

grand swift
#

if you set a flag it will expose Wayland instead but it's WIP and I tried vesktop with it and it segfaults

grand swift
hot juniper
#

i mean they probably think chromium on wayland is horror (it still is)

grand swift
#

But we need pipewire capture to capture properly on deck game mode

#

Not x11 capture

#

X11 works but only for some games

hot juniper
#

Sounds like you might need to patch chromium hu

grand swift
#

pipewire will work for everything because it's gamescope's internal video streams

sour muralBOT
grand swift
#

I HATE GOOGLE

#

they enable pipewire if ur using a Wayland session explicitly

grand swift
#

ok in theory

#

setting xdg session type Wayland and Wayland display + ozone platform x11 should satisfy the conditions for pipewire desktop capture in chromium and webrtc

hot juniper
#

try it?

grand swift
#

just saying it so I don't forget

#

I imagine this might have issues because it doesn't support the capture picker portal

#

And pipewire in webrtc probably expects that

simple groveBOT
grand swift
#

@hot juniper i tested

#

hard crash when i hit screenshare

#

xddddd

hot juniper
grand swift
#

we need to make fake xdg desktop portal wrapper or some shit

#

or figure ou ta way to make it not prompt

humble mortar
#

gamescope doesnt have a screenshare portal

#

youre fighting a useless battle

brazen kite
#

it might have a wayland protocol for keybinds shrug

brazen kite
#

update: I don't think it does

floral ledge
#

@scenic hollow good changes in latest commit

#

thanks for the cargo-xwin cahnge to nixpkg

#

i am intrigued if the windows bindings still build with that change

#

if they do thats wonderful

#

also we may not need the napi cli - the cli cross compilation just wraps cargo-xwin for Windows

#

and cargo-zigbuild for other platforms

#

since we ignore most of the cli output anyways

#

also the type bindings right now are technically wrong - they still work but the file just exports functions instead of a class

#

napi can also generate a full .js file wrapper that does all the platform-specific module name loading/finding for you but that wouldn't be consistent with vesktop's manual thing used for venmic/is heavier

simple groveBOT
humble mortar
# simple grove

when im in a repeating known information challenge and my opponent is danialfrrrr

simple groveBOT
simple groveBOT
scenic hollow
simple groveBOT
scenic hollow
floral ledge
#

the new napi-rs bindings is just require() and directly accessible functions not wrapped in a class, but the .d.ts still seems to work correctly

#

not sure if a class is proper though

#

since the napi-rs bindings dont export a class

#

they just export functions

#

if you build with the napi-rs cli you'll see what I mean

#

look at the .d.ts file it generates

scenic hollow
floral ledge
#

node bindgen exports a class i think

scenic hollow
floral ledge
#

napi-rs just exports functions

#

classes require extra work

simple groveBOT
simple groveBOT
vernal lintel
#

i think if you enable VaapiIgnoreDriverChecks you probably should be expecting potential crashes LuluXd

simple groveBOT
#

I'm currently having an issue with Vesktop sometimes completely freezing after clicking the button to start a screenshare, then selecting my main monitor in the KDE dialog.

It does open the menu to select the audio channel and other settings, but the application completely freezes after that, including the system tray menu. It's still possible to talk in the VC and hear things however.

I'm having this issue on Fedora 41 KDE, using Wayland and the official .rpm package

#

after bumping electron 34 it seems to work correctly without segfault with this set of flags:

diff --git a/src/main/index.ts b/src/main/index.ts
index 4eb863d..2c04a98 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -35,7 +35,7 @@ function init() {
     if (hardwareAcceleration === false) {
         app.disableHardwareAcceleration();
     } else {
-        enabledFeatures.push("VaapiVideoDecodeLinuxGL", "VaapiVideoEncoder", "VaapiVideoDecoder");
+        enabledFeat...
#

This flag is nothing else than a whitelist of vendors being just "Intel". This combination of flags is known to be fully stable in recent Chromium versions with AMD.
You can't get around Google's stubbornness in heavy feature gating of this stuff and they don't plan on changing policy any time soon no matter how stable VA-API is and no matter how much testing it gets.

https://source.chromium.org/chromium/chromium/src/+/main:media/mojo/services/gpu_mojo_media_client_linux.cc;l=144?q=Vaap...

simple groveBOT
simple groveBOT
scenic hollow
#

does eslint-disable-next-line no-useless-escape not do anything anymore blobcatcozy

#

nvm i thought it would give an error when running