Communist

joined 5 years ago
[–] Communist@lemmy.ml 2 points 5 months ago* (last edited 5 months ago)

I made a better solution in my post that works perfectly... and is better for me because it isn't a script (I don't like adding additional dotfiles) sorry for the unnecessary effort.

18
submitted 5 months ago* (last edited 5 months ago) by Communist@lemmy.ml to c/linux@lemmy.ml
 

I use the following oneliner to switch sinks:

wpctl set-default $(pw-cli i $(pactl list short sinks | awk '{print $2}' | sd 'easyeffects_sink\n' '' | sd "$(pactl get-default-sink)\n" '' | rg '.' || echo "$(pactl get-default-sink)" | tofi --prompt-text " " --height 40% --width 40% --auto-accept-single true ) | rg -oP 'id: \K\w+') && notify-send --urgency=low --icon=/usr/share/icons/Flat-Remix-Red-Dark/panel/audio-volume-high-symbolic.svg "$(pactl list sinks | rg -A 1 "Name: $(pactl get-default-sink)" | rg Description: | sd ' Description: ' '')" -h string:x-canonical-private-synchronous:sink-state && pw-play --volume=0.2 /usr/share/sounds/freedesktop/stereo/audio-volume-change.oga &!

This is great, however, i'd like it if the sink menu showed the descriptions for selection instead of the actual sink names

I've started a script like the following:

RET=$(pactl list sinks | rg Description: | sd '	Description: ' '') | tofi
case $RET in
	pactl list sinks | rg Description: | sd '	Description: ' '') pactl list short sinks | awk '{print $2}'
esac

but that doesn't seem to work at all, any ideas for how to get this working?

edit: I found a better solution

$sinkswitch = wpctl set-default $(pw-cli i $(pactl list sinks | rg --fixed-strings -B 1 "$(pactl list sinks | rg Description: | sd ' Description: ' '' | sd 'Easy Effects Sink' '' | sd --fixed-strings "$(pactl list sinks | rg -A 1 "Name: $(pactl get-default-sink)" | rg Description: | sd ' Description: ' '')" '' | rg '.' || echo "$(pactl list sinks | rg -A 1 "Name: $(pactl get-default-sink)" | rg Description: | sd ' Description: ' '')" | tofi --prompt-text " " --height 40% --width 40% --auto-accept-single true )" | rg Name: | awk '{print $2}' ) | rg -oP 'id: \K\w+') && notify-send --urgency=low --icon=/usr/share/icons/Flat-Remix-Red-Dark/panel/audio-volume-high-symbolic.svg "$(pactl list sinks | rg -A 1 "Name: $(pactl get-default-sink)" | rg Description: | sd ' Description: ' '')" -h string:x-canonical-private-synchronous:sink-state && pw-play --volume=0.2 /usr/share/sounds/freedesktop/stereo/audio-volume-change.oga &!

[–] Communist@lemmy.ml 1 points 5 months ago (1 children)

Do foss models really matter? I'm pro foss and think proprietary software should be banned but these weights are essentially a compiled program, we have no idea what they do

[–] Communist@lemmy.ml 2 points 5 months ago

Test setting it in /etc/environment

[–] Communist@lemmy.ml 2 points 5 months ago (2 children)

Why not just switch to MPV?

[–] Communist@lemmy.ml 7 points 5 months ago

yeah i'm doing this because i'm anal not because there's a good reason to.

 

I currently use the following one-liner to switch between sinks

pactl set-default-sink $(pactl list short sinks | awk '{print $2}' | sd 'easyeffects_sink\n' '' | sd "$(pactl get-default-sink)\n" '' | tofi --prompt-text " " --height 40% --width 40% --auto-accept-single true ) && pw-play --volume=0.2 /usr/share/sounds/freedesktop/stereo/audio-volume-change.oga

It seems wpctl doesn't currently support node.names which makes this significantly more complex, has anyone done something similar with wpctl? I've found a massive script but I want something more simple that's a one-liner.

wpctl set-default $(pw-cli i $(pactl list short sinks | awk '{print $2}' | sd 'easyeffects_sink\n' '' | sd "$(pactl get-default-sink)\n" '' | tofi --prompt-text " " --height 40% --width 40% --auto-accept-single true ) | rg -oP 'id: \K\w+')

closest I've managed so far is this, which at least makes it so that wpctl sets the sink, which is an upgrade, I guess, but there's still two pactl's to eliminate...

[–] Communist@lemmy.ml -4 points 6 months ago

Every single way that flatpak doesn't integrate well into the OS is easily fixed with minimal effort.

[–] Communist@lemmy.ml 8 points 6 months ago (9 children)

I highly recommend fedora kiniote if stability is your goal always go immutable

[–] Communist@lemmy.ml 5 points 6 months ago

Do you have any better suggestions?

[–] Communist@lemmy.ml 3 points 6 months ago

The real reason for alacritty is that it's my terminal emulator of choice and it needed to run "xclip -o | wl-copy" while in focus, or the clipboard won't update properly.

 
bindntr=CTRL,C,exec,hyprctl dispatch closewindow alacrittyclipboard & hyprctl activewindow | rg -q "class: Wfica" && alacritty -qq --config-file ~/.config/alacritty/alacrittyclipboard.toml --class 'alacrittyclipboard' --title 'Office365 Desktop - Nexus (SSL/TLS Secured, 256 bit)' -e sh -c 'sleep .03 && xclip -o | wl-copy'
windowrulev2 = float,class:(alacrittyclipboard)
windowrulev2 = stayfocused,class:(alacrittyclipboard)
windowrulev2 = noborder,class:(alacrittyclipboard)
windowrulev2 = noanim,class:(alacrittyclipboard)
windowrulev2 = noblur,class:(alacrittyclipboard)
windowrulev2 = opacity 0,class:(alacrittyclipboard)
windowrulev2 = maxsize 1 1,class:(alacrittyclipboard)

i've done it, I've finally figured out a workaround for this stupid bug that has existed on my system for the last 10 years. the citrix clipboard now works properly, this is the glueyest dumbest thing i've ever had to do and i've spent literally years trying to figure it out, turns out the wayland protocol forbids windows that don't have focus from accessing the clipboard, so, i had to make a window, it had to be focused for enough time for it to be recognized and it was a whole thing. Here you go for anybody that needs it, should be relatively easy to adapt from hyprland over to whatever. Fuck.

[–] Communist@lemmy.ml 6 points 6 months ago (1 children)

I think they should use matrix

[–] Communist@lemmy.ml 6 points 7 months ago* (last edited 7 months ago)

First, wait for that pull request to actually show "merged" instead of open, then, wait for a release of xwayland, you can find those here: https://gitlab.freedesktop.org/xorg/xserver/-/tags

Once that's been released, note the version number of the version of xwayland that has explicit sync

https://packages.fedoraproject.org/pkgs/xorg-x11-server-Xwayland/xorg-x11-server-Xwayland/

then look here and see if the version number matches or is greater than it.

edit: woo it's merged.

 

I have a dumb work related chrome thing, i'd like to make it so that when a certain notification sound plays in chromium, my computer does a few things automatically for me

Does anyone know a good way to make this happen?

I imagine it'd have to be setup like:

when chrome starts playing audio && check if that audio matches soundfile.ogg && myscript.sh, but I don't know any good cli utilities that could get something like that done, and if there are any better ideas!

edit: to avoid X/Y issues i've summarized the problem in full here:

  1. I have a work program, this notifies me if I get a call or email, the work program then presents an accept/decline page, and does not proceed until I either accept, decline, or it times out.
  2. I want it to do two different things depending on if it's a call or email
  3. It provides no notification other than the sound and an "accept" button on the page
  4. I have a chrome window open that does nothing but this, and I never use chrome for anything else
  5. I want to automatically do various things when I receive either this call or email
  6. I want it to be broadly applicable rather than a script designed for the specific website giving me the notification (so not a chrome extension). This prevents me from having to update any code in the event that the backend changes dramatically, and even if the notification sound changes, i'd just record a new sound as the activation noise.
  7. The noise is always the same, and hasn't changed for many years, and there is a distinct noise between calls and emails
  8. They never overlap, they never play multiple times at the same time, and they never make any noises other than those two. The noises are distinct.

These factors cause me to want to run a script once the noise is recognized, only if the noise is playing in a particular app. I'm using pipewire/hyprland on arch.

My current plan for isolating the noise is to do the following:

pactl load-module module-combine-sink sink_name='Work' slaves='easyeffects_sink'

and then set chrome exclusively to play audio on work.

Then set a script to check the sink work for audio that matches what I want. That should be simpler than the other methods i've seen to isolate the noise.

 

in my config file exists...

exec-once = zsh -c 'sleep 1' && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar && waybar

Why? Because waybar crashes sometimes when I turn my monitor off/on, I documented this here: https://github.com/Alexays/Waybar/issues/3047

...this opens waybar if it crashes... and if that crashes, it opens another waybar, and you'll notice, if that one crashes, it opens another one... now you may have seen the pattern here but in case you didn't, that one will then lead to another waybar...

Is there a less ridiculous way of making waybar open every time when waybar crashes, giving me better fault tolerance?

 

I'm trying to improve the clipboard sync situation, i've realized that if I can make it so that a bindsym only applies when an xwayland window is in focus, I can basically do

bindsym --release Control+c exec "xclip -o | wl-copy"

And it'll automatically sync the clipboard... however, I can't find a way to make the bindsym only run on xwayland windows, as, if this runs on a wayland window, it'll just overwrite the wayland clipboard with the last xwayland clipboard.

I've discovered you can match all xwayland windows with "swaymsg [shell='xwayland']" but I can't figure out how to make a bindsym only work if that is in focus

edit: I figured out the following:

bindsym --release Control+c exec swaymsg -t get_tree | jq '.. | select(.type?) | select(.focused==true) | .shell' | grep -Eq 'xwayland' && xclip -o | wl-copy

^^ that SHOULD WORK in theory, but it doesn't, because xclip outputs what it remembers as soon as the command starts, and as a result, the string gets messed up... I cannot figure out for the life of me why running "xclip -o | wl-copy" fixes it but not that. please help.

bindsym --release Control+c exec swaymsg -t get_tree | jq '.. | select(.type?) | select(.focused==true) | .shell' | grep -Eq 'xwayland' && [xclip -o | wl-copy]

^^does not fix it, unfortunately

here's an issue tracker: https://github.com/swaywm/sway/issues/7958

22
submitted 10 months ago* (last edited 10 months ago) by Communist@lemmy.ml to c/linux@lemmy.ml
 

I noticed on startup my computer is saying "Failed to start D-bus system message bus"

my sway session would not start

I switched to dbus-deamon-units and now sway will start with seatd, but i can't, for example, use notify-send as it says

Error spawning command line “dbus-launch --autolaunch=82fe279a661a4ecdb58cb22596899103 --binary-syntax --close-stderr”: Child process exited with code 1

I suspect I may have setup dbus to run as root with systemctl or something? but I have no idea what's going on and have been at this for hours, any advice would be helpful

Also, it takes two attempts to run commands, zsh is saying

zsh: corrupt history file

edit: I discovered pacman was lying to me about dbus-daemon-units being installed, and dbus-broker is now running fine at a user level and dbus at the system level, but if I setup dbus broker as root everything breaks, I dunno

view more: next ›