Spyke

How do I theme it? [Vertical Tabs] [Firefox]

Hello everyone,

I decided it would be fun to try firefox's new Vertical Tabs feature.

To my horror, none of my themes work with it. This is further complicated by my monitor being 21:9. (2560x1080)

So I tried to find some new anime themes. ...and they just don't really seem to exist and the few I found were really boring to look at.

So I tried to hunt down a new way to theme firefox and I discovered https://addons.mozilla.org/en-US/firefox/addon/firefox-color/ Unfortunately, its terrible to work with. I must say this is the most hostile UX for a tool I've used in quite awhile.

So my fellow lemmy users, is there a better way to do this?

Thanks xoxo.

This is about the best I got it so far.

View original on ani.social

I am coding in C on an Android tablet with Termux. Can I compile for MacOS?

I'd like to share my program with some friends to show off, but naturally a lot of them are on Apple products... I use clang to compile.

::: spoiler 263 lines of code

#include <stdio.h>  
#include <string.h>  

//Function declarations  
void promptchoice_main(void);  
void promptchoice_main_again(void);  
void promptinput(void);  
void promptchoice_trim(void);  
void executechoice(char choice_trim);  
void trimnumbers(void);  
void trimwhitespace(void);  
void trimletters(void);  
void trimspecial(void);  
void specifyspecial(void);  
void printresult(char input[]);  

//Global variables  
char choice_main = 0x00;  
char choice_trim = 0x00;  
char choice_detail = 0x00;  
char input[1000] = "";  
char previous_input[1000] = "";  

//Remove specific numbers, letters, punctuation or whitespace characters from input.  
int main() {  
	printf("\nWelcome! This program trims text by removing unwanted characters.\n");  
	while (1) {  
		if (strlen(previous_input) == 0) { // Check for previously trimmed text in memory.  
			promptchoice_main();  
			if (choice_main == 'E') { break; }  
			if (choice_main == 'T') {  
				promptinput();  
				promptchoice_trim();  
				executechoice(choice_trim);  
				printresult(input);  
			}  
		}  
		else {  
			promptchoice_main_again();  
			if (choice_main == 'E') { break; }  
			if (choice_main == 'T') {  
				promptinput();  
				promptchoice_trim();  
				executechoice(choice_trim);  
				printresult(input);  
			}  
			else if (choice_main == 'P') {  
				sprintf(input, "%s", previous_input);  
				printf("\nYou are trimming previously trimmed text: %s\n", input);  
				promptchoice_trim();  
				executechoice(choice_trim);  
				printresult(input);  
			}  
		}  
	}  
	printf("\nGoodbye!\n");  
	return 0;  
}  

//Function definitions  
void promptchoice_main(void) {  
	while (1) {  
		printf("\nPress T and ENTER to trim text or E and ENTER to exit: ");  
		scanf("%c", &choice_main);  
		while (getchar() != '\n') {}  
		if (choice_main == 'T' || choice_main == 'E') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	return;  
}  

void promptchoice_main_again(void) {  
	while (1) {  
	printf("\nPress T and ENTER to trim new text, P and ENTER to trim previously trimmed text or E and ENTER to exit: ");  
	scanf("%c", &choice_main);  
	while (getchar() != '\n') {}  
		if (choice_main == 'T' || choice_main == 'P' || choice_main == 'E') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	return;  
}  

void promptinput(void) {  
	printf("\nEnter the text that you would like to trim and press ENTER: ");  
	fgets(input, sizeof input, stdin);  
	input[strlen(input) - 1] = '\0';  
	return;  
}  

void promptchoice_trim(void) {  
	while (1) {  
		int x = 0;  
		int n = 0;  
		printf("\nWhat would you like to trim?\n1) Numbers (1, 2, 3...)\n2) Whitespace (space, tab or newline) \n3) Letters (A,B,C... a,b,c...)\n4) Special characters (!,?, . , ...)\nType one of the above numbers and press ENTER: ");  
		scanf("%c", &choice_trim);  
		while (getchar() != '\n') {}  
		if (choice_trim < 0x31 || choice_trim > 0x34) { printf("\nInvalid choice!\n"); } 
		else if (choice_trim == 0x31) {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x30 && input[n] <= 0x39) { x++; }  
			}  
			if (x == 0) { printf("\nNo numbers found!\n"); }  
			else { break; }  
		}  
		else if (choice_trim == 0x32) { 
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] == 0x20 || input[n] == 0x09 || input[n] == 0x0A) { x++; }  
			}  
			if (x == 0) { printf("\nNo whitespace found!\n"); }  
			else { break; }  
		}  
		else if (choice_trim == 0x33) {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x41 && input[n] < 0x5A || input[n] >= 0x61 && input[n] <= 0x7A ) { x++; }  
			}  
			if (x == 0) { printf("\nNo letters found!\n");	}  
			else { break; }  
		}  
		else if (choice_trim == 0x34) {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x21 && input[n] < 0x2F || input[n] >= 0x3A && input[n] < 0x40 || input[n] >= 0x5B && input[n] < 0x60 || input[n] >= 0x7B && input[n] <= 0x7E) { x++; }  
			}  
			if (x == 0) { printf("\nNo special characters found!\n"); }  
			else { break; }  
		}  
	}  
	return;  
}  

void executechoice(char choice_trim) {  
	switch (choice_trim) {  
		case 0x31:  
			trimnumbers(); // 123 etc  
			break;  

		case 0x32:  
			trimwhitespace(); // space, tab, newline  
			break;  
		
		case 0x33:  
			trimletters(); // ABC..., abc...  
			break;  

		case 0x34:  
			trimspecial(); // ! ? , . etc.  
			break;  
	}  
	return;  
}  

void trimnumbers(void) {  
	int n = 0;  
	for (n = strlen(input) - 1; n >= 0; n--) {  
		if (input[n] >= 0x30 && input[n] <= 0x39) { input[n] = 0x18; }  
	}  
	return;  
}  

void trimwhitespace(void) {  
	while (1) {  
		printf("\nType S to trim SPACE, T to trim TAB, N to trim NEWLINE or A to trim all whitespace: ");  
		scanf("%c", &choice_detail);  
		while (getchar() != '\n') {}  
		if (choice_detail == 'S' || choice_detail == 'T' || choice_detail == 'A') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	int n = 0;  
	for (n = strlen(input) - 1; n >= 0; n--) {  
		if (choice_detail == 'S') { if (input[n] == 0x20) { input[n] = 0x18; } } // space  
		else if (choice_detail == 'T') { if (input[n] == 0x09) { input[n] = 0x18; } } // tab  
		else if (choice_detail == 'N') { if (input[n] == 0x0A) { input[n] = 0x18; } } // newline  
		else if (choice_detail == 'A') { if (input[n] == 0x20 || input[n] == 0x09 || input[n] == 0x0A) { input[n] = 0x18; } }  
	}  
	return;  
}  

void trimletters(void) {  
	int x = 0;  
	int n = 0;  
	while (1) {  
		printf("\nType U to trim uppercase letters, L to trim lowercase letters or A to trim all letters: ");  
		scanf("%c", &choice_detail);  
		while (getchar() != '\n') {}  
		if (choice_detail != 'U' && choice_detail != 'L' && choice_detail != 'A') { printf("\nInvalid input!\n"); }  
		else if (choice_detail == 'U') {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x41 && input[n] <= 0x5A) { x++; }  
			}  
			if (x == 0) { printf("\nUppercase letters not found!\n"); }  
			else {  
				for (n = strlen(input) - 1; n >= 0; n--) {  
					if (input[n] >= 0x41 && input[n] <= 0x5A) { input[n] = 0x18; }  
				}  
				break;  
			}  
		}  
		else if (choice_detail == 'L') {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x61 && input[n] <= 0x7A ) { x++; }  
			}  
			if (x == 0) { printf("\nLowercase letters not found!\n"); }  
			else {  
				for (n = strlen(input) - 1; n >= 0; n--) {  
					if (input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; }  
				}  
				break;  
			}  
		}  
		else if (choice_detail == 'A') {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x41 && input[n] <= 0x5A || input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; }  
			}  
			break;  
		}  
	}  
	return;  
}  

void trimspecial(void) {  
	while (1) {  
		printf("\nType A to trim all special characters or S to specify which character to remove: ");  
		scanf("%c", &choice_detail);  
		while (getchar() != '\n') {}  
		if (choice_detail == 'A' || choice_detail == 'S') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	int n = 0;  
	for (n = strlen(input) - 1; n >= 0; n--) {  
		if (choice_detail == 'A') { if (input[n] >= 0x21 && input[n] <= 0x2F || input[n] >= 0x3A && input[n] <= 0x40 || input[n] >= 0x5B && input[n] <= 0x60 || input[n] >= 0x7B && input[n] <= 0x7E) { input[n] = 0x18; } } // All whitespace  
	}  
	if (choice_detail == 'S') { specifyspecial(); } // Let user specify character.  
	return;  
}  

void specifyspecial(void) {  
	char choice_special = 0x00;  
	int x = 0;  
	int n = 0;  
	while (1) {  
		printf("\nEnter special character to trim and press ENTER: ");  
		scanf("%c", &choice_special);  
		while (getchar() != '\n') {}  
		if (choice_special < 0x21 || choice_special > 0x2F && choice_special < 0x3A || choice_special > 0x40 && choice_special < 0x5B || choice_special > 0x60 && choice_special < 0x7B || choice_special > 0x7E) { printf("\nNot a special character!\n"); }  
		else {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] == choice_special) { x++; }  
			}  
			if (x == 0) { printf("\nCharacter not found!\n"); }  
			else { break; }  
		}  
	}  
	for (n = strlen(input) - 1; n >= 0; n--) { if (input[n] == choice_special) { input[n] = 0x18; } }  
	return;  
}  

void printresult(char input[]) {  
	printf("\nTrimmed text:\n\n%s\n", input);  
	sprintf(previous_input, "%s", input); // Save trimmed text for reuse.  
	return;  
}  

//TODO  
//Replace characters (uppercase/lowercase, user selected, etc).  

:::

View original on piefed.blahaj.zone

Good way to backup some personal data?

Hello, I have a bunch of personal data - videos, pictures, documents, PDFs etc. that I want to backup.

I am wondering what is the best way to do this?

Requirements -

  • I want to backup multiple different folders from my Linux computer - it is not a full disk backup.
  • Encryption would be great to have.
  • This needs to be a long term backup - like few years or more.
  • Data - small videos, pictures, PDFs, text files, documents, etc. Total size - less than 50-60 GB (for now - but it can increase over time).
  • I want to be able to incrementally add more data to backup of respective folders (e.g. new photos, documents etc.), or even add new folders.
  • After backup, I want to be able to cleanup my hard disk, reinstall OS or restore data from backup onto a completely new system in a new directory.
  • I do not care about stuff like file metadata like owner user, permissions etc.

Questions -

  1. Is one or more flash drives good for such kind of backup? Or would it get corrupt within few years?
  2. I found Borg backup, but it suggests that backup should be restored on the same machine - which does not seem to fit my use case.
  • It also suggests to keep Borg config directory - which again conflicts with restoring or adding new items from a different system.
  • Not sure how well this would work if restoring on a new system?
  • Are there any better alternatives?
  1. If I do use Borg, should using one repository per folder be the way to go about it? Or is there a better way?
  2. In Borg itself, I am thinking of using the repokey method (key stored with the repository) - and store the passphrase in a KeePass database on a different flash drive. Any different suggestions?

Please feel free to suggest any alternatives or improvements to my plan.

View original on programming.dev

Aldi drum pad compatibility

I got an electronic drum kit from Aldi. It works great, excellent beginner kit!

But it only has two toms, and if I keep up the hobby for years, I know I'm eventually going to want to upgrade. So when I decide to get some better gear, will I be able to keep using some of the old stuff? Will I be able to pick up a new module and an extra pad, and just plug it into the old pads and pedals?

I read online that some drum brands are compatible, but I didn't see anything about Aldi's Huxley drums and what brands they're compatible with.

Thanks in advance, I know musical instruments are a niche technology, but this is the best community I could find.

View original on multiverse.soulism.net

Can't get controller to work for Dead Rising 2

I'm using Heroic launcher to play games lately, otherwise have used Lutris or Steam or Faugus etc. I got Dead Rising 2 and have run into this issue of it won't register (in game) that I'm using a controller, or would like to. In all the other games that I have played on any of these platforms, controller support is wonderful. I'm running CachyOS on my machine, so no issues here either. This particular problem had persisted despite using CachyOS, Nobara, PikaOS, or standard Ubuntu. I'm about to start pulling my hair out as I don't know what's causing this. Everything is up to date, and runs smoothly otherwise. I just can't get this game to let me use the controller I have. It even has settings in game specifically for controllers. What do I do? Thank you.

View original on reddthat.com

[SOLVED] [Android] My physical keyboard layouts are gone

Edit: SOLVED. It turns out, I had uninstalled the system package com.android.inputdevices , which is used to locate available keyboard layouts.

This is on a Samsung Galaxy S23 using Heliboard and Simeji as software keyboards. Samsung’s keyboard is uninstalled. On my Galaxy Tab A9+ with the exact same configuration, I am able to set the default keyboard layout…

Any ideas?

View original on piefed.blahaj.zone

Why is my Tor bridge slow?

My Tor bridge has been up and running for 40 days and it reports on average speeds at around 8 MiB/s while I'm on a 1 Gbps connection and while some bridges report up to 50 MiB/s: https://metrics.torproject.org/rs.html#search/type:bridge%20running:true%20.

Why is this?

Meanwhile, a few theories:

  1. My ISP limit the connection? Although Tor bridges are supposed to be obfuscated - that being the whole point of having them...

  2. My bridge is geographically far away from the nearest nodes/relays?

  3. My bridge hasn't been active for a sufficient amount of time for it to report higher speeds?

View original on piefed.blahaj.zone

Download link for the IronFox apk, version 151.0.2.1

In case somebody else is struggling to download IronFox for Android, I have extracted the universal apk, version 151.0.2.1, from my current install and uploaded it to buzzheavier. For me, neither Obtainium, F-Droid or direct download worked from their repos, meaning, the download jumps to and hangs 30%, fails then aborts.

I'll leave it up for a week or so. Do verify integrity and authenticity as per: https://ironfoxoss.org/download/ , since I have no idea how secure buzzheavier is. I just use it as a simple anonymous file sharing platform.

https://buzzheavier.com/0zs0zc73ffekOpen linkView original on piefed.blahaj.zone

OMNI1500LCDT ups LCD and battery surge no power

Got this UPS on eBay as a "working unit" long story short it was a scam.

Now the UPS passes power to the normal AC power strip it has. However the battery + AC power outlets don't pass voltage.

I also tested the LCD desplay and its getting a VERY low voltage

Now I am thinking this has something to do with it having no batteries, but that shouldn't be the case, how would it charge if they were to run out of power? Has anybody here had this issue with there UPS?

View original on sh.itjust.works

Mass Export/Backup of my VPS

cross-posted from: https://lemmy.blahaj.zone/post/43393034

Hi folks

I messed up my VPS by upgrading to newer Ubuntu version and something went wrong along the way and I basically lost access to CPanel. I tried a few things but i think its far gone.

I thought the best idea now would be to back up all the WordPress websites I have on the server (including database), export them, rebuild the VPS and import back the website.

Could you point me towards how to do it best and safest way?

Many thanks

View original on lemmy.blahaj.zone

Can't fix a rubbing fan on laptop

I've tried replacing the fans but the problem is still there, it sounds like a fan rubbing and it gets worse if the laptop gets flexed in some way.

I took it apart to look for the issue, but I can't see anything, when it is open and upside down it runs quiet, unless you press certain places to make it flex around the fan, which is not unexpected. But I can't see anything out of place or see what can be fixed.

The laptop is a Dell XPS 15

View original on lemmy.zip

Is there a way to overclock a Galaxy Tab A9+ with Termux?

EDIT3: this is NOT an overclock! Manually setting a scaling governor does not forcibly increase the intended frequency range of the CPU clock! Setting the scaling governor has more to do with performance management. In my case, setting it to “performance”, it simply forces the cpu to always run at the maximum frequency as designed by the manufacturer. Further reading here and here. Thank you @[email protected] for the reminder!

EDIT2: the tablet is rooted with Magisk ( https://topjohnwu.github.io/Magisk/install.html ) and Termux is running with superuser privileges granted through Magisk. The below command was issued after su - ing into a root shell. "performance" was echo ed into all available /sys/devices/system/cpu/cpufreq/.../scaling_governors, meaning, there are several subdirectories called policy[0...] in which the scaling_governor files reside.

EDIT: echo ing “performance” to /sys/devices/system/cpu/cpufreq/policy0/scaling_governor seems to have maxed out the cpu clockspeed! Now the tablet is snappy as hell! It’ll be interesting to see how battery drain and heat are affected by this. Thank you @[email protected] !

Say, by sending some value to something inside /sys/.../cpu or the likes. I have already aggressively debloated the tablet, but I like to experiment and I am not afraid to destroy the tablet since I bought it for 150 bucks at sale. Or pehaps there is some Magisk module that can do this?

View original on piefed.blahaj.zone

Recently repaired PC. Still having issues (HDD's not being detected & USB controller resources)

**EDIT: turns out i had a USB splitter plugged into my power splitter. so no power from PSU. **

I recently repaired my PC. I had to replace:

PSU with new

Motherboard with used

1 RAM stick RMA'd

CPU with new

I'm still having 2 lingering issues. The **USB controller not enough resources **message keeps coming on as well as intermittent operation with my front USB ports. My motherboard ports seem to be working just fine, it's everything on the front and in my expansion docks that are having issues. I also cannot see my HDD's - they're not being detected. I have 3 SDD's all working just fine but my 3 HDD's are not there. I have checked the living hell out of the cables.

I'm considering replacing the used motherboard with my old one and seeing if that fixes these 2 lingering issues.

Any thoughts?

5900XT

3080 Ti

64GB RAM

Asus ROG Crosshair VIII Hero (WI-FI) X570

View original on lemmy.world

Hissing sound from fanless single board computer [SOLVED]

EDIT/SOLVED: The culprit turned out to be a faulty offbrand 5V 3A DC power adapter. I tried another adapter - incidentally, one that I use to charge my smartphone - and the hissing sound was gone. My other router - also a Raspberry Pi 4B - uses the same power adapter as the one that started malfunctioning/hissing was using, but it is quiet and operates normally. At the very least I draw the following three conclusions:

  1. 5V 3A is enough to run a Raspberry Pi 4B as a router with constant heavy TX/RX of at least a couple of terabytes per day.

  2. I should be prepared for the other offbrand power adapter - namely the one that came with the OkDo bundle - to fail within a year or so.

  3. There are really nice people here that give quick and elaborate responses! Thank you all! 🩵

The linked file is a recording of a hissing sound that my Raspberry Pi 4 started to make sometime during the last 24 hours. Another symptom is that the power on and CPU activity LEDs are out. It is not running hot. It doesn't have an internal fan. It is running OpenWRT. It has been pumping Linux ISOs in and out non stop for about four months.

I have tried cleaning it by dedusting it. I have also tried rebooting it. While rebooting, it squeals like a mouse, like it was suffering but the LEDs function properly. As soon as it loads user space though and resume routing, they turn off and the hissing sound continues.

Here are some system logs with severities warning and error . As you can see, the logs are from the 15th and I don't think any of them pertain to the hissing sound and/or the LEDs.

WARNING  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    0.196065] pci_bus 0000:01: supply vpcie3v3 not found, using dummy regulator  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    0.196201] pci_bus 0000:01: supply vpcie3v3aux not found, using dummy regulator  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    0.196257] pci_bus 0000:01: supply vpcie12v not found, using dummy regulator  
[May 15, 2026, 23:29:12 GMT+2] user.warn: [    7.225917] urandom-seed: Seeding with /etc/urandom.seed  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    8.327998] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    8.365104] brcmutil: loading out-of-tree module taints kernel.  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    8.780919] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin failed with error -2  
[May 15, 2026, 23:29:12 GMT+2] kern.warn: [    8.792642] brcmfmac mmc1:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin  
[May 15, 2026, 23:29:12 GMT+2] daemon.warn: dnsmasq[1]: no servers found in /tmp/resolv.conf.d/resolv.conf.auto, will retry  
[May 15, 2026, 23:29:18 GMT+2] daemon.warn: dnsmasq[1]: no servers found in /tmp/resolv.conf.d/resolv.conf.auto, will retry  
[May 15, 2026, 23:29:21 GMT+2] daemon.warn: odhcpd[990]: No default route present, setting ra_lifetime to 0!  
[May 15, 2026, 23:29:21 GMT+2] daemon.warn: odhcpd[990]: rfc9096: br-lan: piofile updated  
[May 15, 2026, 23:29:37 GMT+2] daemon.warn: odhcpd[990]: No default route present, setting ra_lifetime to 0!  
[May 15, 2026, 23:29:53 GMT+2] daemon.warn: odhcpd[990]: No default route present, setting ra_lifetime to 0!  
[May 15, 2026, 23:30:18 GMT+2] daemon.warn: odhcpd[990]: No default route present, setting ra_lifetime to 0!  
ERROR  
[May 15, 2026, 23:29:12 GMT+2] kern.err: [    0.307942] bcm2708_fb soc:fb: Unable to determine number of FBs. Disabling driver.  
[May 15, 2026, 23:29:12 GMT+2] kern.err: [    0.307968] bcm2708_fb soc:fb: probe with driver bcm2708_fb failed with error -2  
[May 15, 2026, 23:29:12 GMT+2] user.err: [    7.197094] insmod: module is already loaded - fat  
[May 15, 2026, 23:29:12 GMT+2] user.err: [    7.204851] insmod: module is already loaded - vfat  
[May 15, 2026, 23:29:22 GMT+2] daemon.err: procd: Got unexpected signal 1  

Judging by the squealing during reboot, I believe it to be either the CPU or memory, although I have never hears memory make sound, while CPUs, I have.

https://buzzheavier.com/yibitnrhsb9oOpen linkView original on piefed.blahaj.zone

How to unlink Microsoft account without being logged-in?

Hello,

Last week-end, someone came to me with a peculiar issue: their Windows account was linked to a Microsoft account that somehow no longer exists, preventing them from logging in. From then, the solution appeared simple: transform the account into a local one.

Unfortunately, all the resources I found online presumes that you are logged into the account you want to unlink, which wasn't possible. And unfortunately, you can't unlink said account from an Administrator account either.

Since the computer was brand new and barely touched, I ended up enabling the Administrator account, creating a new local account and deleting the problematic account.

My question is: if the situation was to happen again, but I cannot delete spare to lose data on the locked account, what should I do?

View original on lemmy.blackeco.com