Comments

This profile is from a federated server and may be incomplete. Browse more on the original instance.

aard, to privacy in Google loses antitrust case vs Epic Games. Jury rules Google Play store constitutes an illegal monopoly
@aard@kyu.de avatar

Problem is that it not really is “just a store”. By using the google store you get access to the google play APIs, which are upgraded separately from the device OS - which is sensible from a security perspective, but they also were created by google specifically for regaining control over what goes on on Android devices.

A lot of applications are needlessly tied to play APIs - either because that way is a bit easier, or just because google is good at marketing them, and the developer didn’t think twice about it. Some relatively basic APIs are part of google play - for example maps, which needlessly is tied to google maps. Unlike Android itself the play APIs are not opensource.

Yandex tried about a decade ago to re-implement the play APIs to keep such applications working without the play store, by utilizing other services providing the same functionality, and tried to get other companies to join them. I’ve visited the Yandex office in Saint Petersburg a few times to discuss that back then (just checked, most of that seems to have been 2014 - that year Yandex was sponsoring my Russian visa). The effort failed for various reasons, unfortunately - the big one being that doing this required reverse engineering API changes on every play update google was pushing to stay compatible. There’s the microG project around now, but it seems to be less ambitious than what Yandex was trying to do back then.

My point is, as long as at least the API for play services isn’t maintained in a way that allows full open source reimplementations - or better, google releases parts as open source where we can plug different backends in - “use a different store” is not really a possible solution for many.

aard, (edited ) to linux in Wayland-Proxy Load Balancer Helping Firefox Cope With Wayland Issues
@aard@kyu.de avatar

You’re describing Wayland running into issues due to overall high system load, and not been given enough scheduler time to accept messages?

edit: This issue? gitlab.freedesktop.org/wayland/wayland/-/…/159 - didn’t find anything else matching the description, and personally have never seen that, both on my low specs notebook or my workstation, which probably counts as higher spec.

aard, to linux in Wayland-Proxy Load Balancer Helping Firefox Cope With Wayland Issues
@aard@kyu.de avatar

That sounds more like a compositor problem - typically a client should not have control over where windows are placed, and that X11 allowed that got heavily abused with negative impact on UI. Wayland fortunately fixed that, so it is now up to the compositor where to place windows. Those can send hints, but the compositor is free to ignore them.

In your situation your compositor should remember where to stick the windows.

aard, to linux in Firefox (finally) enables Wayland by default on their builds
@aard@kyu.de avatar

There’s a lot of other stuff where Wayland improves the experience. Pretty much everything hotplug works to some extend on X, but it’s all stuff that got bolted on later. Hotplugging an input device with a custom keymap? You probably can get it working somewhat reliably by having udev triggers call your xmodmap scripts - or just use a Wayland compositor handling that.

Similar with xrandr - works a lot of the time nowadays, but still a compositor just dealing with that provides a nicer experience.

Plus it stops clients from doing stupid things - changing resolutions, moving windows around or messing up what is focused is also a thing of the past.

aard, to linux in I created a shitty Python script to manage multiple SSH connections because I couldnt find a decent one
@aard@kyu.de avatar

You have a list of systems you’ve connected to in known_hosts, though. And the config file is easy enough to parse - throwing away the stuff you don’t care about - to expand on that list.

aard, (edited ) to linux in Spending a few days with Hyprland made me realize how awesome Gnome is
@aard@kyu.de avatar

Instead of rofi I’d recommend using anyrun.

I made a quick plugin to also run stuff from path, and am currently working on a proper ssh plugin for that - extending them is a bit more involved than the simple rofi/wofi scripts, but there’s a lot more things an anyrun plugin can do.

aard, to privacy in Google loses antitrust case vs Epic Games. Jury rules Google Play store constitutes an illegal monopoly
@aard@kyu.de avatar

Yeah, things are getting to the point where just having a mobile device running Linux and using Waydroid for some useful Android applications is less painful than trying to make Android work.

aard, to linux in The Linux Kernel Preparing To Drop Infrastructure For Old & Obsolete Graphics Drivers - Phoronix
@aard@kyu.de avatar

I’ve been using (or, in some cases, trying to use) that when it was brand new. Kernel side was relatively easy - but there was a lot of compiling custom versions of XFree86 trying to get acceleration working properly.

On the one hand a bit sad to see that kind of history I’ve experienced myself go - on the other hand, it’s probably been a decade since I’ve last used something without KMS, and the ease of use of modern KMS drivers is way ahead of all the older stuff.

aard, to lemmyshitpost in A good deal of IT work, too
@aard@kyu.de avatar

In IT contracting (at least the fields I’m around) it’s quite common that “being able to acquire new skills quickly” is one of the skills you get paid for, and the time needed for you to do that is accounted for in the project planning.

aard, to linux in The Linux Kernel Preparing To Drop Infrastructure For Old & Obsolete Graphics Drivers - Phoronix
@aard@kyu.de avatar

I’m still angry at nvidia for buying their remains, and not doing anything useful with it.

3dfx had multi GPU support back then, it took quite a while afterwards until somebody else tried that.

aard, to linux in Mandrake Linux 10.0, from 2004. They still work too. Had to buy them on disc, slow dialup internet in those days.
@aard@kyu.de avatar

A few years before Ubuntu quite a few companies tried doing their own distributions. Back then it still was common to sell them in a proper software box - CDs or DVDs, manuals and some swag, at minimum stickers, but quite often also pins or some other stuff.

On exhibitions they’d often give away full boxes to get people to try - sometimes the current version, sometimes the last release. I still have a bunch of those in the garage - I think Corel (yes, the painting program guys) should be one of them.

aard, to linuxmemes in Can you install thid 25 year old program?
@aard@kyu.de avatar

There’s a lot of enterprise stuff that only ships as binaries. I had some fun in the late 00s trying to find the most recent distribution still shipping packages for egcs as that was the only compiler supported by the Lotus Domino SDK.

(For the younger ones here: There was some disagreement about gcc development, which resulted in the egcs fork. It got merged back into mainline gcc by he late 90s already, though)

At the time when the Loki ports happened it was a great thing - before that you pretty much had doom and quake available. Nowadays things are better with steam, but it’s quite likely that we’ll see some stuff break there in a few years as well, at least for older games.

aard, to linux in I created a shitty Python script to manage multiple SSH connections because I couldnt find a decent one
@aard@kyu.de avatar

I assume you mean “lookup”, as import doesn’t really make much sense.

I’m currently using this with wofi, though I’ll eventually rewrite it as anyrun plugin, which provides a bit more control:


<span style="color:#323232;">#!/usr/bin/env python3
</span><span style="color:#323232;">from argparse import ArgumentParser
</span><span style="color:#323232;">import subprocess
</span><span style="color:#323232;">import json
</span><span style="color:#323232;">import os
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">ssh_config_file = "~/.ssh/config"
</span><span style="color:#323232;">ssh_known_hosts_file = "~/.ssh/known_hosts"
</span><span style="color:#323232;"> 
</span><span style="color:#323232;"># Returns a list of all hosts
</span><span style="color:#323232;">def get_hosts():
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    hosts = []
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    with open(os.path.expanduser(ssh_config_file)) as f:
</span><span style="color:#323232;">        content = f.readlines()
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    for line in content:
</span><span style="color:#323232;">        line = line.lstrip()
</span><span style="color:#323232;">        # Ignore wildcards
</span><span style="color:#323232;">        if line.startswith('Host ') and not '*' in line:
</span><span style="color:#323232;">            for host in line.split()[1:]:
</span><span style="color:#323232;">                hosts.append(host)
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    # Removes duplicate entries
</span><span style="color:#323232;">    hosts = sorted(set(hosts))
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    return hosts
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">def get_known_hosts():
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    hosts = []
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    with open(os.path.expanduser(ssh_known_hosts_file)) as f:
</span><span style="color:#323232;">        content = f.readlines()
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    for line in content:
</span><span style="color:#323232;">        line = line.lstrip()
</span><span style="color:#323232;">        host_entry = line.partition(" ")[0]
</span><span style="color:#323232;">        hosts.append(host_entry.partition(",")[0])
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    # Removes duplicate entries
</span><span style="color:#323232;">    hosts = sorted(set(hosts))
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    return hosts
</span><span style="color:#323232;"> 
</span><span style="color:#323232;"># Returns a newline seperated UFT-8 encoded string of all ssh hosts
</span><span style="color:#323232;">def parse_hosts(hosts):
</span><span style="color:#323232;">    return "n".join(hosts).encode("UTF-8")
</span><span style="color:#323232;"> 
</span><span style="color:#323232;"># Executes wofi with the given input string
</span><span style="color:#323232;">def show_wofi(command, hosts):
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    process = subprocess.Popen(command,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
</span><span style="color:#323232;">    ret = process.communicate(input=hosts)
</span><span style="color:#323232;">    host, rest = ret
</span><span style="color:#323232;">    return host
</span><span style="color:#323232;"> 
</span><span style="color:#323232;"># Switches the focus to the given id
</span><span style="color:#323232;">def ssh_to_host(host, terminal, ssh_command):
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    if "]:" in host:
</span><span style="color:#323232;">        host, port = host[1:].split("]:")
</span><span style="color:#323232;">        command = "{terminal} '{ssh_command} {host} -p {port}'".format(terminal=terminal, ssh_command=ssh_command, host=host, port=port)
</span><span style="color:#323232;">    else:
</span><span style="color:#323232;">        command = "{terminal} '{ssh_command} {host}'".format(terminal=terminal, ssh_command=ssh_command, host=host)
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    process = subprocess.Popen(command,shell=True)
</span><span style="color:#323232;"> 
</span><span style="color:#323232;"># Entry point
</span><span style="color:#323232;">if __name__ == "__main__":
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    parser = ArgumentParser(description="Wofi based ssh launcher")
</span><span style="color:#323232;">    parser.add_argument("terminal", help='Terminal command to use')
</span><span style="color:#323232;">    parser.add_argument("--ssh-command", dest='ssh_command', default='ssh', help='ssh command to use (default=ssh)')
</span><span style="color:#323232;">    parser.add_argument("--mode", dest='mode', default='known_hosts', help='where to read from (default=known_hosts)')
</span><span style="color:#323232;">    parser.add_argument("--command", default='wofi -p "SSH hosts: " -d -i --hide-scroll', help='launcher command to use')
</span><span style="color:#323232;">    args = parser.parse_args()
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    if (args.mode == "config"):
</span><span style="color:#323232;">        hosts = get_hosts()
</span><span style="color:#323232;">    elif (args.mode == "known_hosts"):
</span><span style="color:#323232;">        hosts = get_known_hosts()
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    parsed_hosts = parse_hosts(hosts)
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    selected = show_wofi(args.command, parsed_hosts)
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    selected_host = selected.decode('utf-8').rstrip()
</span><span style="color:#323232;"> 
</span><span style="color:#323232;">    if selected_host != "":
</span><span style="color:#323232;">        ssh_to_host(selected_host, args.terminal, args.ssh_command)
</span>
aard, to asklemmy in Have you ever seen a rudolph moment happen in real life?
@aard@kyu.de avatar

It’s a similar thing with four leaf clovers - I never in my life found one, even during periods where I’ve been scanning every bit of green while hiking. But then we had a friend who isn’t really paying attention to her surroundings, and just randomly goes ‘oh, moment’, and picks up a four leave clover from a few metres away.

Seems my daughter is also developing that talent - last summer she picked up a few while playing outside.

aard, to linux in What distros have you tried and thought, "Nope, this one's not for me"?
@aard@kyu.de avatar

Gentoo is useless for learning how things work. Back in the 00s when I still had time to hang out at events it was always quite ridiculous at what kind of basic stuff the gentoo crowd got stuck at - and with the tooling 15+ years more polished now I’d expect what is actually going on is way more hidden than back then.

If you do want to understand how things work just build a minimal system - either on spare hardware, or qemu/kvm. Don’t go with systemd, or other fat userland options - that just makes you compile a lot of dependencies not adding value for learning.

Use some lean init (or just write one yourself), and some lean shell.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • localhost
  • All magazines
  • Loading…
    Loading the web debug toolbar…
    Attempt #