Why is it so annoying to properly configure kde / gnome / gtk / qt apps running on hyprland?

I have caelestia (which has a useful colour theme switcher) with hyprland. It somehow manages to switch colors for very specific apps (i.e thunar when i open and close it again, nautilus only sometimes).

An example of this is when I want to change cursors. I want to be able to browse through 1. icon themes 2. cursors 3. colour schemes online and download them and apply them. I try to change it using `nwg-look` and the cursor only changes in certain apps, and in some apps the size is bigger than usual

I desperately want to use dolphin but at its current state i am having a lot of difficulties doing so (i.e when i use caelestia to change the colour scheme then dolphin's text is the same colour as the background)

Also, dolphin's "open with" feature is completely broken and does not follow the rules of xdg-mime AND there is no easy way to change what file manager opens up in firefox when i press the downloads folder (currently it is stuck in vscodium, have no idea how to change it)

the only reason i am staying with hyprland is solely because of

  1. the blur

  2. the keybindings

  3. caelestia's beautiful animations / ecosystem

but this app config hell is very painful and time-consuming

Please someone help me. I dont want to have to dig through random configs. The only time i ever want to manually touch a config file is when changing keybindings / blur / animations on hyprland.

is there a central app that unifies / simplifies all this and lets me

- change cursor size and theme for all apps

- change light theme / dark theme on all apps

- change icon theme on all apps

like nwg-look but it isn't limited to certain apps and it updates without a restart?

reddit.com
u/poobumfartwee — 2 days ago

How to set up proxy for things like modrinth / curseforge / minecraft piston data api?

I have a raspberry pi with port 444 forwarded and i have my own domain name.

At school those domain names are blocked and i am forced to either

* use a vpn

* use hotspot

* deal with it and wait until i get home

Is there any way i can set up prism launcher in a way that instead of trying to contact the above apis (which are blocked) it forwards it to `http://my\_domain\_name.com:444/modrinth/...\` or `http://my\_domain\_name.com:444/minecraft-piston-api/...\` (which isnt blocked)?

I want to avoid forking + recompiling since i have friends who use macos / windows (and i use linux).

Is there some hidden json file where i can change some config values?

reddit.com
u/poobumfartwee — 4 days ago

I am trying to get any form of a c project going with glfw and webgpu, but it for some reason keeps panicking when i run a function from wgpu.

I think i am using the one made in rust, and i used the wrapper (https://github.com/eliemichel/glfw3webgpu)

I have spammed logs everywhere, looked at all the variables, etc.

I am on wayland if that helps

it's just the wgpuSurfaceConfigure(surface, &config); that crashes

The logs

me@arch,btw /tmp/testt/glfw3webgpu/examples $ cmake --build build
[ 91%] Built target glfw
[ 95%] Built target glfw3webgpu
[ 97%] Building C object CMakeFiles/hello-glfw3webgpu.dir/hello-glfw3webgpu.c.o
[100%] Linking C executable hello-glfw3webgpu
Copying '/tmp/testt/glfw3webgpu/examples/build/_deps/wgpu-linux-x86_64-release-src/lib/libwgpu_native.so' to '/tmp/testt/glfw3webgpu/examples/build'...
[100%] Built target hello-glfw3webgpu
me@arch,btw /tmp/testt/glfw3webgpu/examples $ ./build/hello-glfw3webgpu 
Setting error callback
Init...
Setting window hint...
Creating window...
Done
Initing webgpu...Readying adapter
Setting callback info
Setting adapter options
InstanceRequestAdapter
done
Setting up device
done.
done
done
Getting queue...
Done
Setting up surface capabilities
.
.
.
.
.

thread '<unnamed>' panicked at src/lib.rs:3846:10:
invalid device for surface configuration
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

thread '<unnamed>' panicked at library/core/src/panicking.rs:218:5:
panic in a function that cannot unwind
stack backtrace:
   0:     0x7f3202ed8f7a - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt
::he089f96442833f67
   1:     0x7f3202efbda3 - core::fmt::write::h2f210ed4c94745cb
   2:     0x7f3202ed6963 - std::io::Write::write_fmt::h7de08171ab770fb2
   3:     0x7f3202ed8dc2 - std::sys::backtrace::BacktraceLock::print::h810fbd31421329e6
   4:     0x7f3202ed9e30 - std::panicking::default_hook::{{closure}}::hbaad47ed9dc6356d
   5:     0x7f3202ed9c10 - std::panicking::default_hook::h24e207139139d40a
   6:     0x7f3202eda592 - std::panicking::rust_panic_with_hook::ha9131beeb2ddc506
   7:     0x7f3202eda306 - std::panicking::begin_panic_handler::{{closure}}::h1bba0eaeb6da506f
   8:     0x7f3202ed9479 - std::sys::backtrace::__rust_end_short_backtrace::h1d1ca3eade483f4c
   9:     0x7f3202ed9fcd - rust_begin_unwind
  10:     0x7f3202a8be1d - core::panicking::panic_nounwind_fmt::h0d5ff668f956fac4
  11:     0x7f3202a8beb2 - core::panicking::panic_nounwind::h385b7d9bda51382d
  12:     0x7f3202a8bf75 - core::panicking::panic_cannot_unwind::h757b6ea37bf9b60a
  13:     0x7f3202adad18 - wgpuSurfaceConfigure
  14:     0x5571094a7d6c - main
                               at /tmp/testt/glfw3webgpu/examples/hello-glfw3webgpu.c:172:5
  15:     0x7f3202627741 - <unknown>
  16:     0x7f3202627879 - __libc_start_main
  17:     0x5571094a7635 - _start
  18:                0x0 - <unknown>
thread caused non-unwinding panic. aborting.
Aborted                    (core dumped) ./build/hello-glfw3webgpu
me@arch,btw /tmp/testt/glfw3webgpu/examples $ # im on wayland btw





int main(void) {
    printf("Setting error callback\n");
    glfwSetErrorCallback(glfw_error_callback);

    printf("Init...\n");
    if (!glfwInit()) {
        fprintf(stderr, "GLFW init failed\n");
        return 1;
    }

    printf("Setting window hint...\n");
    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);

    printf("Creating window...\n");
    GLFWwindow* window =
        glfwCreateWindow(640, 480, "WebGPU GLFW", NULL, NULL);

    if (!window) {
        fprintf(stderr, "Window creation failed\n");
        return 1;
    }
    printf("Done\n");

    // WebGPU init
    printf("Initing webgpu...");
    WGPUInstance instance = wgpuCreateInstance(NULL);
    WGPUSurface surface =
        glfwCreateWindowWGPUSurface(instance, window);

    // Adapter
    printf("Readying adapter\n");
    WGPUAdapter adapter = NULL;

    printf("Setting callback info\n");
    WGPURequestAdapterCallbackInfo adapterInfo = {
        .callback = on_adapter,
        .userdata1 = &adapter
    };

    printf("Setting adapter options\n");
    WGPURequestAdapterOptions adapterOpts = {
        .compatibleSurface = surface,
        .powerPreference = WGPUPowerPreference_HighPerformance,
    };

    printf("InstanceRequestAdapter\n");
    wgpuInstanceRequestAdapter(instance, &adapterOpts, adapterInfo);
    if (!adapter)
        printf("Adapter is null. Polling...\n");
    while (!adapter) {
        glfwPollEvents();
    }
    printf("done\n");

    // Device
    printf("Setting up device\n");
    WGPUDevice device = NULL;

    WGPURequestDeviceCallbackInfo deviceInfo = {
        .callback = on_device,
        .userdata1 = &device
    };

    //wgpuAdapterRequestDevice(adapter, NULL, deviceInfo);
    WGPUDeviceDescriptor deviceDesc = {
        .requiredLimits = NULL,
        .requiredFeatureCount = 0,
    };

wgpuAdapterRequestDevice(adapter, &deviceDesc, deviceInfo);

    printf("done.\n");
    if (!device) printf("Device is null. Polling...\n");
    while (!device) glfwPollEvents();
    printf("done\n");

    printf("Getting queue...\n");
    WGPUQueue queue = wgpuDeviceGetQueue(device);
    printf("Done\n");

    // Surface capabilities
    printf("Setting up surface capabilities\n");
    WGPUSurfaceCapabilities caps = {0};
    printf(".\n");
    wgpuSurfaceGetCapabilities(surface, adapter, &caps);
    printf(".\n");

    WGPUTextureFormat format = caps.formats[0];
    printf(".\n");

    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    printf(".\n");

    WGPUSurfaceConfiguration config = {
        .usage = WGPUTextureUsage_RenderAttachment,
        .format = format,
        .width = (uint32_t)width,
        .height = (uint32_t)height,
        .presentMode = WGPUPresentMode_Fifo
    };
    printf(".\n");

    if (!surface)
        printf("surface invalid btw");
    wgpuSurfaceConfigure(surface, &config); // <======= CRASHES HERE (please help me) 
    printf("done\n");

    // Main loop
    printf("Starting main loop...\n");
    while (!glfwWindowShouldClose(window)) {
        ...
    }

    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

The full code is in the comments

Any form of help is appreciated, i tried chatgpt but it didn't work (it said some made-up syntax errors was the problem, when its "fix" was either the same piece of code or some compiler error)

u/poobumfartwee — 2 months ago