cross-posted from: https://lemy.lol/post/30887473
I sometimes play games and also open my music player, but the sound from the game drowns out the music, so I need to go into the sound mixer on KDE and manually lower the game's volume every time.
I was wondering, is there a way to do this process automatically? As in setting up conditions like "if music is playing (some MPRIS API?) then lower all other apps' volumes)", maybe even crazier "if some app is outputting voice then set its volume back up and lower music app's volume or pause its playback altogether for some specified timeout that keeps being refreshed for as long as voice is heard".
I imagine the latter is a bit of a dream, but maybe for the first, even some quick sound profile selector would go a long way, say switching from "normal profile" to "background music profile", etc. which specify preconfigured volumes for those apps.
Is that a thing?
I sometimes play games and also open my music player, but the sound from the game drowns out the music, so I need to go into the sound mixer on KDE and manually lower the game's volume every time.
I was wondering, is there a way to do this process automatically? As in setting up conditions like "if music is playing (some MPRIS API?) then lower all other apps' volumes)", maybe even crazier "if some app is outputting voice then set its volume back up and lower music app's volume or pause its playback altogether for some specified timeout that keeps being refreshed for as long as voice is heard".
I imagine the latter is a bit of a dream, but maybe for the first, even some quick sound profile selector would go a long way, say switching from "normal profile" to "background music profile", etc. which specify preconfigured volumes for those apps.
Is that a thing?
I was looking to implement a year column and while researching I stumbled on the YEAR data type which sounded just right by its name, I assumed that it would just be something like an integer that can maybe hold only 4 digits, maybe more if negative?
But then I noticed while actually trying it out that some years I was inputting randomly by hand never went through giving an out of range
error, so I went to look at the full details and, sure enough, it's limited to years between 1901 and 2155, just 2155!
In terms of life of an application 2155 is just around the corner, well not that any software has ever lived that long, but you get what I mean in the sense that we want our programs to be as little affected by time within what's reasonable given space constraints.
So what will they do when they get close enough to that year, because you don't even have to be in that year to need it accessible, there could be references that point to the future, maybe for planning of some thing or user selected dates and whatnot; will they change the underlying definition of it as time passes so it's always shifted forward? If that's the approach they'll take, will they just tell everyone who's using this type that their older dates will just not be supported anymore and they need to migrate to a different type? YEAR-OLD? Then YEAR-OLDER? Then YEAR-OLDER-BUT-LIKE-ACTUALLY? Or, that if they plan to stay in business, they should move to SMALLINT?
Or will they take the opposite approach and put out a new YEAR datatype every time the 256 range is expired like YEAR-NEW, YEAR-NEW-1, YEAR-FINAL, YEAR-JK-GUYS-THE-WORLD-HASNT-COLLAPSED, etc.?
So I wonder, what's the point of this data type? It's just so incredibly restricted that I don't see even a hypothetical use.
There exist other questions like this (example) but I think they all don't address this point: has anyone from MariaDB or MySQL or an SQL committee (I don't know if that's a thing) wrote up some document that describes the plan for how this datatype will evolve as time passes? An RFC or anything like that?
https://canvas.fediverse.events/
I saw that there's this nifty xdg-ninja that informs you on what you have installed that doesn't respect the XDG spec, if it has support for it or not and what you can do to make it comply.
But now I was wondering if there was any tool to do the actual work automatically, I believe I have once seen a program that spoofed your home directory to non-complying apps so that you could transparently override their whole app data location to a path you wanted so they can keep functioning, but I can't for the life of me find it again.
It would be double awesome if it did both, i.e. auto-applying any changes to apps that support XDG but need to be configured to enable it and, for those who don't, forcefully spoofing the home directory
My solution:
let
nixFilesInDirectory = directory:
(
map (file: "${directory}/${file}")
(
builtins.filter
(
nodeName:
(builtins.isList (builtins.match ".+\.nix$" nodeName)) &&
# checking that it is NOT a directory by seeing
# if the node name forcefully used as a directory is an invalid path
(!builtins.pathExists "${directory}/${nodeName}/.")
)
(builtins.attrNames (builtins.readDir directory))
)
);
nixFilesInDirectories = directoryList:
(
builtins.concatMap
(directory: nixFilesInDirectory directory)
(directoryList)
);
# ...
in {
imports = nixFilesInDirectories ([
"${./programs}"
"${./programs/terminal-niceties}"
]);
# ...
}
snippet from the full source code: quazar-omega/home-manager-config (L5-L26)
credits:
I'm trying out Nix Home Manager and learning its features little by little.
I've been trying to split my app configurations into their own files now and saw that many do the following:
programs/
└── helix.nix
default.nix
that selectively imports the files inside:programs/
├── default.nix
└── helix.nix
Content:
{
imports = [
./helix.nix
];
}
default.nix
) within the home-manager configuration:{
# some stuff...
imports = [
./programs
];
# some other stuff...
}
I'd like to avoid having to write each and every file I'll create into the imports of default.nix
, that kinda defeats the point of separating it if I'll have to specify everything anyway, so is there a way to do so? I haven't found different ways to do this in various Nix discussions.
Example I'm looking at: https://github.com/fufexan/dotfiles/blob/main/home/terminal/default.nix
My own repository: https://codeberg.org/quazar-omega/home-manager-config
I was trying to analyze my phone's storage through Filelight, but it just gets frozen after I select the phone's folder. I didn't find anything in Bugzilla regarding this problem.
Is the protocol supported at all in the app?
I've been looking around to find a good keyboard for myself after having used a sad wireless membrane, so, after reading around a bit, as my first foray I decided I wanted a 75% with mechanical brown switches, but I'm finding it really hard to find a good list of keyboards that matches my description because I'd like the layout to be Italian and most, if not all of the ones I found are US instead, I'm not a touch typer so I still care about that.
So is there any comprehensive website that allows you to filter by all the relevant characteristics?
Lately we've seen the EU do several amazing things to make platforms more open and user respecting by forcing:
I haven't delved really deeply, so maybe I misunderstood some details, but I have a question that I don't seem to find answers for anywhere: what makes certain platforms different from the others in so that, if they function in certain ways that make them depend on the vendor for certain functionality, they can be regulated into opening up more?
What I notice as the common denominator is that maybe external parties are involved or user decision is being restricted, but I wonder if, for example, iOS had its store only host Apple-made apps making it a completely closed platform, would they be safe from regulation that forces them to change operation? If not, what makes it different from, say, a router with a proprietary OS that can in no way be changed, or any other appliance that hosts its own software and nothing else?
@QuazarOmega
@lemy.lol