gomp

joined 1 year ago
[–] gomp@lemmy.ml 8 points 1 day ago (1 children)

Kensington? I don't think an air tag can actually prevent theft (if they see it they'll remove it - if they don't see it they'll still steal your stuff)

[–] gomp@lemmy.ml 5 points 1 day ago (1 children)

But it has no ads

[–] gomp@lemmy.ml 1 points 3 days ago* (last edited 3 days ago) (1 children)

Reading https://codeberg.org/river/river/src/branch/master/protocol/river-layout-v3.xml it seems to me that what I want to do is actually not possible in river, even writing a custom layout manager...

IIUC the protocol works like this: river asks "how should I layout N windows in HxW screen?" and the layout replies "window1: H1xW1 at offset X1,Y1; window2: H2xW2 ...", so there is no way for the layout manager to identify specific windows and, in my use case, put all the text editors on the left side of the screen etc.

Did you have some other approach in mind when you suggested river? (I may very well be over-complicating things and not seeing a more straightforward solution)

[–] gomp@lemmy.ml 2 points 3 days ago (3 children)

TBH I really liked the idea behind river, but does it have tabs? Also... I would need to write my own custom layout, wouldn't I?

BTW: are there other WMs that are modular like river?

[–] gomp@lemmy.ml 2 points 3 days ago

Sorry to be a bother, but... how do I tell hyprland I want a window to be added to a specific group?

I was thinking of something like:

windowrulev2 = tag texteditor, class:(myfirsteditor)
windowrulev2 = tag texteditor, class:(mysecondeditor)
windowrulev2 = group XXX, tag:texteditor

but I can't find what I should write instead of group XXX to tell hyprland/hy3 that I want the window to be added to a group on the left-side of workspace 1...

I would also be fine with some rule that could be added to exec or probably even some dispatcher, but I can't find anything that allows to target (or define) a specific group.

Am I pursuing this from the wrong direction?

 

I want to have my screen (the "dev" workspace) split in three "zones":

  • on the left side, a tabbed group with all the text editors I start (ie. if I start a new one, it goes there in a new tab)
  • on the top-right, a tabbed group of whatever many terminal I feel like launching
  • on the bottom-right, my browsers (and possibly other stuff), in a group without tabs
  • a key combination to cycle between: all three "zones" visible, text editors on the left - terminal on the right, text editors on the left - browser on the right, fullscreen browser

So far I've been looking at hyprland (for no particular reason except the hype) and I don't think I can do the above with it (I am by no means an expert, so... maybe it can actually be done?).

Do you know of any WM where it would be possible? (possibly, one with automatic splitting a-la bspwm, that I would use for the other workspaces)

[–] gomp@lemmy.ml 1 points 5 days ago (1 children)

Philosophy aside, the practical issue with your terminal emulator having to support your shell is... that one does not use just one shell: what happens whenever you start a repl or an whatever program that has interactive sessions (say, for example, psql or parted)?

tightly integrated shell and terminal emulator support. There are just things you cannot do with these being separate things.

I can't think of any, but I'm not the most creative person... what do you have in mind?

Having something that is like (say) tmux+fish could make sense, but only if it's something that outweighs the lost flexibility of being able to combine + .

[–] gomp@lemmy.ml 31 points 1 week ago* (last edited 1 week ago) (4 children)

Might I add the idea that your terminal emulator must support your shell is utterly ridiculous?

https://docs.waveterm.dev/reference/faq#what-shells-does-wave-terminal-support

https://docs.warp.dev/getting-started/using-warp-with-shells

Also Wave might be FOSS but if you look at the footer in their website it says it's backed by venture capital... how would you estimate the chances it gets closed, paywalled or otherwise enshittified?

[–] gomp@lemmy.ml 12 points 1 week ago

That's not something a terminal emulator should do - it's a feature that belongs in your shell :)

[–] gomp@lemmy.ml 6 points 1 week ago* (last edited 1 week ago) (1 children)

I have no idea what a DreamMachine is (and wikipedia does not help) so here's the long answer :)

If you want a VPN tunnel to your own home, for secure access to your LAN, I'd recommend you look into NetBird and/or TailScale, which at their core are wireguard plus NAT punch-through (you can also run wireguard or openvpn directly, but it may be a pain since you most probably have a dynamic IP and possibly a CGNAT).

If you want to hide your traffic while connecting through networks you don't trust (such as the work one or some cafe's wifi), you can either use NetBird/Tailscale as above and connect though your home (well, assuming you trust your ISP of course) or some third party VPN which connects to their servers (I'd say look into Proton first).

Keep in mind that VPNs actually do very little for your online privacy (ie. it's not like google or facebook can't track or fingerprint you). They do is prevent man-in-the-middle traffic analysis from your ISP (or the admin of whatever LAN you are using), but then the VPN provider can do the exact same things, so... make sure to double-check the privacy guarantees of your VPN provider and compare them with those of your ISP.

[–] gomp@lemmy.ml 6 points 1 week ago (6 children)

What do you (think you) need a VPN for?

[–] gomp@lemmy.ml 1 points 1 week ago (1 children)

Lineage OS is not designed to relock the bootloader.

I don't understand why so many people worry about that... doesn't it only ensure that data is wiped if some agent secretly installs a rootkit or sorts on your phone before giving back the device to you?

To me, bootloader locking is mostly a way for phone manufacturers to make it harder to run anything but the ROM they have chosen (and it's a PITA and the most laborious part of installing a ROM).

[–] gomp@lemmy.ml 4 points 1 week ago (4 children)

https://wiki.lineageos.org/devices/ and make sure to double-check that unlocking the bootloader isn't too much bother (ie. read the installation instructions)

 

I've been looking around for a scripting language that:

  • has a cli interpreter
  • is a "general purpose" language (yes, awk is touring complete but no way I'm using that except for manipulating text)
  • allows to write in a functional style (ie. it has functions like map, fold, etc and allows to pass functions around as arguments)
  • has a small disk footprint
  • has decent documentation (doesn't need to be great: I can figure out most things, but I don't want to have to look at the interpter source code to do so)
  • has a simple/straightforward setup (ideally, it should be a single executable that I can just copy to a remote system, use to run a script and then delete)

Do you know of something that would fit the bill?


Here's a use case (the one I run into today, but this is a recurring thing for me).

For my homelab I need (well, want) to generate a luhn mod n check digit (it's for my provisioning scripts to generate synchting device ids from their certificates).

I couldn't find ready-made utilities for this and I might actually need might a variation of the "official" algorithm (IIUC syncthing had a bug in their initial implementation and decided to run with it).

I don't have python (or even bash) available in all my systems, and so my goto language for script is usually sh (yes, posix sh), which in all honestly is quite frustrating for manipulating data.

 

After years of my desktop environment (kde) being configured the same way, I tried enabling auto-hiding in my panel and I quite like the extra screen estate.

Now, the only reasons why I have a panel in the first place are the clock and the system tray (I don't use the ~~start~~ applications menu and I don't care for the task manager) so I've started wondering if I could completely dispose of the panel.

Do you know of any launcher (I use krunner but switching to something else is fine) that satisfies (or can be configured to satisfy) the following?

  1. shows the current date/time
  2. integrates a system tray
  3. launches applications
  4. does math, unit conversion and currency conversion
 

While updating home-manager I got a notice that freeimage-unstable-2021-11-01 is marked as unsafe.

Since chances are it's used by something I never use, I'd like to know what I'm using that depends on it... any idea how to do it?

Also.. any idea why I have 4 copies of the freeimage stuff in my /nix/store? (I just run nix-collect-garbage -d and the 4 seem to be actually different):

❱ md5sum /nix/store/*freeimage*/lib/libfreeimage.a
67a0ce1cb5dd562473e27d7c88e8a9bd  /nix/store/6gi6hm57zngqnxb6p5dnxhjjcbr96lrk-freeimage-unstable-2021-11-01/lib/libfreeimage.a
5995e0affbfa28b63da7e997cb4dbe63  /nix/store/09nwykzzksc0zknflsyxyah5b67c2rsn-freeimage-unstable-2021-11-01/lib/libfreeimage.a
67a0ce1cb5dd562473e27d7c88e8a9bd  /nix/store/ikfiv4gpmcpyir7lsj45by653qcnvgyx-freeimage-unstable-2021-11-01/lib/libfreeimage.a
213a408e3c1fbb5dfa4491deebe05984  /nix/store/q2sc85f2hclgwl8m3qdw8rpbs44gzmah-freeimage-unstable-2021-11-01/lib/libfreeimage.a
 

I've been looking for something to replace the google chromecast that is attached to our TV.

I've tried Kodi out, but the main use case for the TV set is a 70+ yo person watching netflix and there is just no way they will be better off with Kodi than with the stock netflix app.

Besides supporting netflix, being easy to use, and providing significantly better privacy than the chromecast does, the device would ideally:

  • support other mainstream streaming (amazon, disney, ...) for when my people get tired of netflix
  • support a DVB-T2 usb stick (directly, or through IPTV: I can put the stick in a different machine)
  • support youtube without ads (through an adblocker and possibly sponsorblock, or maybe using invidious)
  • possibly, support local public TV streaming (eg. BBC)

I have a PC set aside that should be more than capable enough (intel N100), but I'm open to getting new hardware if needed. Also, it doesn't matter if the system is not very user friendly to setup (eg. if it needs to be nixos), but once it's setup it should be easy to use and relatively straightforward to update/maintain.

I guess a FOSS android TV would be ideal, but.. is there any? (I see Lineage supports the Google ADT-3, but that is basically unobtanium, at least where I live).

15
submitted 10 months ago* (last edited 10 months ago) by gomp@lemmy.ml to c/fdroid@lemmy.ml
 

The app at my gym sucks: there is no checklist of what exercises you have done and no tracking of how much weight you used. Plus, for whatever reason, it wants access to my location.

I've found a number of alternatives on F-Droid, but each of the six or so I tried was completely unusable (some seemed unfinished alphas, others are probably too old for my android version).

Is there one app that you use and would recommend?

What I'm looking for is:

  • At home: I setup my programs (different ones for different days)
  • At the gym: I can select a program, check off the exercises while I do them (the order I do them on depends on where there is fewer people at the gym), and log things like if I managed all the sets/reps, how much weight I used, and how long I exercised for (for things like the tapis roulant).
  • Bonus points if I can also track my weight in the same app, and if the app can export/sync the data or produce some kind of graphs/statistics based on it.

Thanks!

 

This may be OT since strictly speaking it's about hardware... I trust it is ok to post it given the spirit of the community, but have my apologies and feel free to remove it if it's not.

I'm looking to replace my old Bose QC25, since they have recently died (after a long a fulfilling life), but it seems everything nowadays is bluetooth (which I don't mind) and require some proprietary app to turn ANC on/off (which I do mind... are physical buttons/switches become too expensive to include in your overpriced earbuds?).

Anyway... do you know of any headphones/earbuds that meet the following?

  1. can be powered via wire or have batteries that last 12+hrs (long-haul flights)
  2. have decent noise cancelling
  3. don't require me to install a apps or can be used with some open source app (possibly with full functionality and straightforward to setup)
  4. are not overly expensive (I have to buy 2 pairs and I'll only use them a few times a year when I fly)
 

I want to call the escapeSystemdPath (defined in nixpgs at nixos/lib/utils.nix) to derive the name of a systemd mount unit from the target path (eg. srv-my-dir.mount from /srv/my/dir), but I can't figure out how I can reference it... any ideas?

1
submitted 11 months ago* (last edited 11 months ago) by gomp@lemmy.ml to c/nixos@lemmy.ml
 

I'm playing around with nixos in a few VMs and at some point I realized I must have lost the swap configuration in one of my refactorings.

To my surprise, however, the VMs do use the swap partitions I had set up.

There is no mention on "swap" in my nix configuration (or in fstab) and no .swap units in /etc/systemd/system; I do however have a swap partition labelled "swap".

Turns out there is a systemd unit (albeit not a corresponding file) that sets up swap:

[root@vm1:~]# free -hw
               total        used        free      shared     buffers       cache   available
Mem:           2.8Gi       664Mi       955Mi       4.0Mi       3.0Mi       1.3Gi       2.0Gi
Swap:          3.7Gi          0B       3.7Gi

[root@vm1:~]# systemctl list-dependencies swap.target 
swap.target
● └─dev-disk-by\x2ddiskseq-1\x2dpart3.swap

I'm wondering where the unit comes from? Can I rely on this and never configure swap ever again?

 

I have an option that must be left with the default value when a certain flag (another option) is false.

I didn't find any example (let alone documentation) on how to implement this, so I've come up with two ideas:

option-that-errors-out-if-set-when-flag-is-false =
let
  default = if config.some-flag
          then "some default value for when flag is true"
          else "value that should not be changed when flag is false";
in lib.mkOption {
  type = lib.types.str;
  inherit default;
  apply = v: assert assertMsg (config.some-flag || v == default) "Do not set this option unless 'flag' is true";
          v;
};
option-that-ignores-value-when-flag-is-false =
let
  default = if config.some-flag
          then "some default value for when flag is true"
          else "value that should not be changed when flag is false";
in lib.mkOption {
  type = lib.types.str;
  inherit default;
  apply = v: if config.some-flag then v else default;
};

Which one do you think is "best" (cleaner, more idiomatic, etc..)?

Is apply the "right" place to validate options? Should I make a custom type instead? Should I approach this in some different way?

1
submitted 1 year ago* (last edited 1 year ago) by gomp@lemmy.ml to c/nixos@lemmy.ml
 

I'd like to set a "global" option from within a submodule, but the config I return is grafted into the "global" under the submodule "path" rather than at the root... any idea if it's somehow possible?

Er... I guess I didn't make a great job at explaining what I want to do... Some code will hopefully help.

In mymodule.nix I have:

{ lib, config, ... }: {

  options.myoption = lib.mkOption {
      type = lib.types.attrsOf (lib.types.submodule (
        import ./mysubmodule.nix
      ));
  };

}

and mysubmodule.nix is:

{ name, lib, config, ... }: {

options.mysubmoduleoption = {
  type = lib.types.str;
};

config = {
  # here I want to set a "global" option, say "systemd.mounts"
  # based on the value of "mymodule.name.mysubmoduleoption"
  # but it seems I can only set values under "mymodule.name" 
};

}
1
submitted 1 year ago* (last edited 1 year ago) by gomp@lemmy.ml to c/nixos@lemmy.ml
 

I'm trying to debug a module I'm writing with builtins.trace, but it's being more complicated than I anticipated.

Let's say I have a module:

{ config, lib, pkgs, modulesPath, ... }:

{

  config =
  let
    some-list = lib.attrsets.mapAttrsToList (n: v: {
        some-attr = "${n} ${v}";
    }) { n1 = "v1"; n2 = "v2"; };
  in {
    users.mutableUsers = builtins.trace (some-list) false;
  };

}

This will print

trace: [ <code> <code> ]

because builtins.trace (for whatever reason?) evaluates its first argument only shallowly.

Changing the trace expression to:

builtins.trace (builtins.toJSON some-list) false;

helps a lot, but as soon as one tries to print a long list or a structure with some complexity the output is completely unreadable, and it's not like it can easily be piped into jq (I mean... &amp;| grep ^trace: | sed 's/trace: //' | jq works*, but there must be a "better" way?)

(*) in fish shell, IDK about bash

edit: It's not like I specifically want JSON output: any format will do (ideally, nix would be nice)

view more: next ›