Communist

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

I've been hoping someone would start a gambian pouched rat breeding project because of exactly this

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

I intend to switch to thunder when they add hold for peek https://github.com/thunder-app/thunder/issues/1160

then i'll be done with sync myself, I highly recommend thunder if you like sync

[–] Communist@lemmy.ml 7 points 4 months 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.

13
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

Test setting it in /etc/environment

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

Why not just switch to MPV?

[–] Communist@lemmy.ml 6 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 2 points 5 months ago

I've found the alternative to PULSE_SINK in a pipewire context, which is PIPEWIRE_NODE=

that might help.

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

Adding the second sink lets you easily route the audio through one, if I run that command I have it setup like this

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

and then I have a sink named "game" that I can record from OBS that isolates my audio from the one called game, but also passes that to my speakers, just seems like an easier way to do what you're trying to accomplish with the wireplumber thing. I don't know about if it's the "proper" way but it works for me!

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

pactl load-module module-combine-sink sink_name='(namehere)' slaves='(put the sink you want to duplicate here)'

Then there will be another sink that's the exact same as the one you set as a slave that you can play audio to and that OBS can record separately, as for getting something to automatically go to that stream, generally you can use this environment variable:

PULSE_SINK='(sinknamehere)'

and make a .desktop file or keyboard shortcut that launches the program with that

you can also make the sink names consistent with something like this but adapted to your audio devices in your wireplumber conf:

monitor.alsa.rules = [
	{
		matches = [
		{
			device.name = "~alsa_card.pci-0000_06_00.*"
		}
		]
		actions = {
			update-props = {
				device.name = "alsa_card.pci-0000_06_00"
				node.nick = "Speakers"
			}
		}
	}
		{
		matches = [
		{
			device.name = "~alsa_card.usb-Creative_Technology_Ltd_Sound_Blaster_X4*"
		}
		]
		actions = {
			update-props = {
				device.name = "alsa_card.usb-Creative_Technology_Ltd_Sound_Blaster_X4"
				node.nick = "Headphones"
			}
		}
	}
]

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

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

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

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

 
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.

 

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?

 

cross-posted from: https://lemmy.ml/post/13397153

I'm just trying to control my smartlights with a script, it seems to be having a lot of problems, I really don't know what I'm doing, i'd appreciate any help I can get

Once I have a script that can individually turn lights on/off i can edit the rest myself, I just can't get the base functionality working.

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

I'm just trying to control my smartlights with a script, it seems to be having a lot of problems, I really don't know what I'm doing, i'd appreciate any help I can get

Once I have a script that can individually turn lights on/off i can edit the rest myself, I just can't get the base functionality working.

 

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

17
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

 

What's stopping us from using the api to post all of reddit here in a massive one-time merger?

Obviously the Lemmy devs would have to do it, but would there be legal issues? I think it would solve most of the problems with Lemmy, really.

view more: next ›