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.
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.
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.
They were interesting, but only good for a very narrow purpose - not really a good thing when the trend back then was going away from special purpose machines toward general purpose.
intel didn’t plan it to be just a special purpose CPU - but it just ended up that way. That they gave their first customers free Alpha workstations for crosscompiling code as that was faster than native compilation should tell you everything you need to know about suitability of itanic as general purpose system.
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:
#!/usr/bin/env python3
from argparse import ArgumentParser
import subprocess
import json
import os
ssh_config_file = "~/.ssh/config"
ssh_known_hosts_file = "~/.ssh/known_hosts"
# Returns a list of all hosts
def get_hosts():
hosts = []
with open(os.path.expanduser(ssh_config_file)) as f:
content = f.readlines()
for line in content:
line = line.lstrip()
# Ignore wildcards
if line.startswith('Host ') and not '*' in line:
for host in line.split()[1:]:
hosts.append(host)
# Removes duplicate entries
hosts = sorted(set(hosts))
return hosts
def get_known_hosts():
hosts = []
with open(os.path.expanduser(ssh_known_hosts_file)) as f:
content = f.readlines()
for line in content:
line = line.lstrip()
host_entry = line.partition(" ")[0]
hosts.append(host_entry.partition(",")[0])
# Removes duplicate entries
hosts = sorted(set(hosts))
return hosts
# Returns a newline seperated UFT-8 encoded string of all ssh hosts
def parse_hosts(hosts):
return "\n".join(hosts).encode("UTF-8")
# Executes wofi with the given input string
def show_wofi(command, hosts):
process = subprocess.Popen(command,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
ret = process.communicate(input=hosts)
host, rest = ret
return host
# Switches the focus to the given id
def ssh_to_host(host, terminal, ssh_command):
if "]:" in host:
host, port = host[1:].split("]:")
command = "{terminal} \'{ssh_command} {host} -p {port}\'".format(terminal=terminal, ssh_command=ssh_command, host=host, port=port)
else:
command = "{terminal} \'{ssh_command} {host}\'".format(terminal=terminal, ssh_command=ssh_command, host=host)
process = subprocess.Popen(command,shell=True)
# Entry point
if __name__ == "__main__":
parser = ArgumentParser(description="Wofi based ssh launcher")
parser.add_argument("terminal", help='Terminal command to use')
parser.add_argument("--ssh-command", dest='ssh_command', default='ssh', help='ssh command to use (default=ssh)')
parser.add_argument("--mode", dest='mode', default='known_hosts', help='where to read from (default=known_hosts)')
parser.add_argument("--command", default='wofi -p \"SSH hosts: \" -d -i --hide-scroll', help='launcher command to use')
args = parser.parse_args()
if (args.mode == "config"):
hosts = get_hosts()
elif (args.mode == "known_hosts"):
hosts = get_known_hosts()
parsed_hosts = parse_hosts(hosts)
selected = show_wofi(args.command, parsed_hosts)
selected_host = selected.decode('utf-8').rstrip()
if selected_host != "":
ssh_to_host(selected_host, args.terminal, args.ssh_command)
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.
I have a custom TrueType font embedding the UCS bitmap fonts so I can use it with modern font renderers which dropped support for those old font formats.
And if you do, do you intentionally not use MFA (if it’s available) because you believe it should be those services making sure you are secure instead of you taking steps to make it harder to compromise your accounts?
Yep. We can discuss me using a second factor once they start designing their services better.
Payment on such sites is set to require approval via my bank (hardware token), I don’t care about the purchase history - so if somebody manages to breach the account and order something it’s entirely their problem, not mine. I’m aware they might close my account when confronted with that attitude, but I’m also fine with that.
so both sides have to take steps to secure a transaction
My passwords are stored locally encrypted, with the encryption key stored in a hardware token. The browser doesn’t have access to that. That’s already more than a lot of sites are doing for their security…
yet the minute you need to use a third party service, you let go and put everything on the service, KNOWING they are not doing a good job with it.
That’s exactly why I treat any 3rd party service as throwaway.
A lot of current “best industry practices” - including the ones described - are grossly negligent. It also moves the burden of proof of responsibility for a security incident more in my direction - while providing me less and less means to prevent it.
With the iframe example - I nowadays typically can’t see if I enter my credentials (including potential 2FA to unlock a session) into a form belonging to my bank, or some malicious 3rd party without going into developer settings. That’s not acceptable.
There’s no good reason for a modern browser even allow this - just as there’s no good reason for allowing to load script files from arbitrary domains. But we now have the situation where the business model of the main browser developer depends on not stopping that kind of behaviour.
So what I want is that putting design over sensible security choices gets expensive for companies - and I’m not interested in adding some band-aid reducing their risk while this is not the case.
The only online accounts I care about are my bank accounts - for those I’m using hardware dongles for TAN generation instead of the shitty Android app their pushing (which would allow transactions without external auth, due to some “trusted device” nonsense). Everything else can either be replaced, or is on my own infrastructure.
It’s pretty clear from all the responses here that the view is massively different depending on if you’re from the US, or not.
I’m not from the US - and Bush massively and irrevocably messed up a lot of things for me. And I’m just in the EU, not directly getting bombed by US military.
With Trump the consequences were pretty much all inside of the US, any fallout we felt over here were still from the Bush era, or to some extent Obama. Given all the damage that was done by those two maybe the structure of your government over there is shit and should be attacked - my hope from over here was that the whole Trump situation would lead to finally stuff getting fixed. It won’t be pretty for you guys - but from the outside I’d rather have someone incompetent like Trump mess up your stuff until the pain is big enough to actually do something than someone halfway competent break things on a global scale again.
Yeah, I assumed you meant the master password to the password manager.
Still, that falls under the duty of the page I’m visiting to keep their stuff secure - and while I’m very unhappy about some recent practices¹ I’d more for documenting and battling it out in court, if necessary.
¹ My browser configuration used to prevent 3rd party iframes or similar constructs for entering passwords - unfortunately in recent years some idiots decided that’s good design, so more and more often you nowadays have to allow embedding third party components without it being visible where it comes from.
Even worse, quite often credit card verification or other payment forms get embedded the same way. Until a few years ago my bank was throwing errors in their forms when they got embedded this way, but unfortunately they caved in to the general idiocy out there, and allow that nowadays.
You’re describing a shitty password manager.
In my case I have a local copy of the encrypted password database, and my master password unlocks the encryption key for that, which is stored in a hardware dongle. Browsers and other high risk software are running isolated and have no access to the encrypted password database or the hardware dongle.
I mainly see two factor authentication as a way for service providers to be lazy about account protection on their side, which they try to outsource to me.
Don’t want to go into too much details - from a high level perspective the Windows version integrates better into the overall system. In Rosetta, once you’re in the emulation layer it can be rather complicated to execute native components from there. In Windows - with some exceptions - that’s not a problem.
You do the usual network checks first, check if wireguard packages come in, check latest handshake. Depending on your network setup you might want to set a lower MTU than default, or enable PersistentKeepalive.
If none of that shows something useful you can enable debug logging via debugfs:
echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control
You’ll then have additional messages in dmesg. You can switch it off by doing -p instead.
For me personally the shitty UI of discord causes so much friction that I’ll never interact with discord ever again, unless I can reach it via some gateway from some of the messaging systems I use - which so far doesn’t happen as I’d need to log in to discord to configure the gateway. I tried that once, never again.
On X11 much of the window management was considered a hint, but the application could just ignore it and do whatever it wanted.
On Wayland applications can’t do stuff like self position - they can send some hints, but the compostior is in full control of what to do with them.
I use tiling window managers, and applications doing whatever has become more and more of an issue with ion3 over the last years - together with stuff changing the display resolution (they can’t do that on wayland). Now with Hyprland on wayland pretty much all issues are gone.
Not Op, but:
My 9yo daughter has a tablet with family link, so I can monitor what apps she wants to install. As the garbage games are mostly at the top free, she keeps asking for games that I reject, in most cases because it’s riddled with ads.
Did you ever consider using this as opportunity to educate your daughter about ads in general, how some games try to push adds to get you to do something, and also how some games have game mechanics trying to push you to do specific things, and then just let her figure out if those games are worth playing, or not?
She’s definitely old enough - I had that discussion with my daughter when she was 5, we have an agreement that we limit the number of games installed on her phone - and the kind of shitty game you’re talking about typically gets uninstalled again pretty quickly.
In a few years she’ll be able to install stuff by herself - if you never explained to her what and why games/apps are doing she’ll not be ready to deal with that, and it’ll be out of your control.
Pretty much the reason I’m not interested in buying their stuff.
I get it as workstation option for very specific purposes - but for 5 years or so you’re just better off with an AMD card.
Before that things sucked a bit if you needed 3d performance - I just stopped gaming after I moved off my last voodoo card as I don’t support companies with that kind of behaviour.
Telegram is not Russian. The founder is a Russian - who left Russia about a decade ago after being pushed out of his local Facebook clone (VK) due to not complying with government requests. They nowadays mostly seem to be in Dubai, but as a legal entity hard to locate due to a cat and mouse game they’re playing to avoid being reachable for authorities worldwide who want to enforce local laws.
I guess we can give GIMP a pass to be a bit slower in migrating to new versions of the _G_IMP _T_ool_K_it than others…