Have you tried kitty? It’s seriously nice if you can live with the occasional “oh no I sshed to a server that doesn’t have the correct terminfo files and now none of the normal terminal navigation features work”
Have you tried kitty? It’s seriously nice if you can live with the occasional “oh no I sshed to a server that doesn’t have the correct terminfo files and now none of the normal terminal navigation features work”
This doesn’t really install it, though, you can’t update or permanently edit and config, set up users, or anything like that. I would guess OP wants something more like booting the ISO in a VM, allocating a thumb drive to that VM, and then installing a full system to it with a boot loader.
If I may ask, why do we want to enable tearing now? There are pages and pages across the wikis on how to fix tearing…
Imo it’s only a tool to understand and explain situations, not so much a tool to solve problems. Definitely understanding the forces that make up the conflict might help you solve a problem, but the solution will depend on what kind of forces are involved.
This is slightly off topic but adding lanes does not alleviate traffic in the long term at all. The effect diminishes quickly and vanishes after just five years.
Come on, this one is funny but why pretend it was ever made by a right wing person in earnest? Everything about it screams classic mocking meme.
Again The issue on the repo. The developers recommend just using the app feature of the browsers to get similar functionality without the security concerns.
If you look at the repo, the very first line in the readme links to an issue that briefly explains why you should care.
Unmaintained software comes in two categories:
Nativefier falls in the second category and the second clause. Don’t use it.
You asked for my python script but now I can’t seem to load that comment to reply directly to it. Anyway, here’s the script, I haven’t bothered to upload the repo anywhere. I’m sure it isn’t perfect but it works fine for me. The action for opening evolution when you click the tray icon is specific to hyprland so will probably need to be modified to suit your needs.
import asyncio
import concurrent.futures
import logging
import signal
import sqlite3
import sys
from pathlib import Path
from subprocess import run
import pkg_resources
from inotify_simple import INotify, flags
from PySimpleGUIQt import SystemTray
menu_def = ["BLANK", ["Exit"]]
empty_icon = pkg_resources.resource_filename(
"evolution_tray", "resources/inbox-empty.svg"
)
full_icon = pkg_resources.resource_filename(
"evolution_tray", "resources/inbox-full.svg"
)
inotify = INotify()
tray = SystemTray(filename=empty_icon, menu=menu_def, tooltip="Inbox empty")
logging.getLogger("asyncio").setLevel(logging.WARNING)
handler = logging.StreamHandler(sys.stdout)
logger = logging.getLogger()
logger.setLevel("DEBUG")
logger.addHandler(handler)
def handle_menu_events():
while True:
menu_item = tray.read()
if menu_item == "Exit":
signal.raise_signal(signal.SIGTERM)
elif menu_item == "__ACTIVATED__":
run(["hyprctl", "dispatch", "exec", "evolution"])
# tray.update(filename=paused_icon)
logger.info("Opened evolution")
def get_all_databases():
cache_path = Path.home() / ".cache" / "evolution" / "mail"
return list(cache_path.glob("**/folders.db"))
def check_unread() -> int:
unread = 0
for db in get_all_databases():
conn = sqlite3.connect(db)
cursor = conn.cursor()
try:
cursor.execute("select count(*) read from INBOX where read == 0")
unread += cursor.fetchone()[0]
except:
pass
finally:
conn.close()
if unread > 0:
tray.update(filename=full_icon, tooltip=f"{unread} unread emails")
else:
tray.update(filename=empty_icon, tooltip="Inbox empty")
return unread
def watch_inbox():
while True:
for database in get_all_databases():
inotify.add_watch(database, mask=flags.MODIFY)
while inotify.read():
logger.info("New mail")
logger.info(f"{check_unread()} new emails")
async def main():
executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
loop = asyncio.get_running_loop()
check_unread()
watch_task = asyncio.wait(
fs={
loop.run_in_executor(executor, watch_inbox),
},
return_when=asyncio.FIRST_COMPLETED,
)
await asyncio.gather(watch_task, loop.create_task(handle_menu_events()))
def entrypoint():
signal.signal(signal.SIGINT, signal.SIG_DFL)
signal.signal(signal.SIGTERM, signal.SIG_DFL)
try:
asyncio.run(main())
except Exception as e:
logger.exception(e)
if __name__ == "__main__":
entrypoint()
Literally had to write my own Python applet monitoring the DB file for this. Absurd limitation.
Oooh look at Epicure over here, just casually getting in his 8 hours of sleep. Brag more king.
On a serious note, the capitalists have commercialized all of this. Getting enough to eat might be doable with a meager income technically, but eating well and healthy is expensive. Getting a good bed in a nice living space that facilitates rest well costs a fortune. So you need two middle class plus jobs to afford it for yourself and your partner, which comes with its own set of stressors.
The small things in life are also actively commercialized. A coffee with friends? Better save up for the chain cafe prices. A movie night in? Remember to pay your Netflix subscription. A hike? Gotta pay for gas to get there, depending on where you live. I’m not saying it’s impossible to have small things for free/cheap, it’s just not that easy. There’s also going to be constant social pressure, through advertisement or influencers, first or secondhand, to do all the things they tell you will make you more happy. You’ll have to actively resist that, which in turn can cause you to become distanced from your social circle.
God forbid you get sick, the health insurance and pharmaceutical industry will fleece you and in some countries leave you with crippling debt, making all of the above out of reach for you.
All of this to say: money isn’t just something you have to chase after for the sake of it in our current society, it’s an absolute necessity to try to have more than what you think you actually need in the moment to get by and enjoy the small things. It might sound cliche, but “society is like stacked against us, man” is actually a completely true statement.
I’m using 555 open with hyprland. No issues and I can finally suspend and resume, using the NVreg_PreserveVideoMemoryAllocations=1
module param after being unable to all year.
Imo stick to amd. I was like you, I thought the Nvidia card would be an upgrade and I thought the rumors of how bad Nvidia was had to be at least a little exaggerated, but honestly it’s a constant pita. Aside from the suspend issue I’ve had random minor system upgrades cause kernel panics and fry my boot more than once this year. That bug is still unresolved btw, their response time leaves much to be desired.
Having dockerized ollama just work is nice, but it’s not worth it, and they seem to be close to a working vulkan based runner for that anyway.
While this sounds right, it is probably a path to depression. At this point I’m pretty much qualified for any web dev job I want, and I know I’d be one of the best hires they ever made, but I also know the interview gods are fickle bastards. I can easily see myself getting a string of rejections and taking a hard hit to my mental health.
An interview is not a fair assessment of your skill and fit, it’s just the best tool we have for the job. Therefore, don’t let the outcome of interviews tell you how good you are or what you’re ready for. Imo you kinda just know these things.
As for OP, sounds like they’re maybe still learning rule 1 of software development; the job is 90% figuring out how to do shit, it’s not actually so much about what you already know, although that certainly helps with the figuring out part. Once you’ve figured out how to figure out most of the problems that come up in your job, you’re more than ready for a new challenge, if you want one.
I feel like this wasn’t even that long ago? I was quite surprised when my content suddenly started being sponsored by them again.
I’ve accidentally opened enormous single line json files more than once. Could be lsp config or treesitter or any number of things but trying to do any operations after opening such a file is not a good time.
Respectfully, no. Rust is great for some things and Python is great for other things. Switching to rust is not a solution to missing exception linting in another language.
That’s way harder to ask for. A docstring solution is fine so long as the linters know to pick it up.
Well at least php has it, which is a JITed scripting language just like Python. Although saying php has it is wrong, it’s just a special doc tag that the linters pick up. Which is exactly what I want for Python. The only other scripting language I’m very comfortable with is typescript, which can also support @throws
via jsdoc and eslint.
So to answer your question, I don’t know if it’s common, but from my minimal sample pool it’s at least not unheard of.
You may not know this (just guessing because you commented on the nature of scripting/interpreted languages) but static analysis of dynamic languages has come really far and is an indispensable part of any reasonably sized project written in them these days. That’s another reason why I’m so surprised and frustrated by the lack of this in Python.
I’m between The Black Parade (the album) by My Chemical Romance, an alt rock opera masterpiece imo, and Hamilton, the Broadway cast recording. I feel like the former might not work as well when removed from its time, but I bet it still would blow my mind.