From 7802b00e851e78f5900c6dd1b956e0dafbdf9975 Mon Sep 17 00:00:00 2001 From: Un conejo Date: Sat, 24 May 2025 10:39:02 -0400 Subject: [PATCH] Initial commit --- .gitignore | 4 ++++ CMakeLists.txt | 10 ++++++++++ README.md | 13 +++++++++++++ TC-mingw.cmake | 18 +++++++++++++++++ config.ini | 0 res/128px.ico | Bin 0 -> 10366 bytes res/16px.ico | Bin 0 -> 318 bytes res/256px.ico | Bin 0 -> 41086 bytes res/32px.ico | Bin 0 -> 766 bytes res/64px.ico | Bin 0 -> 2686 bytes src/main.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ wt95.rc | 30 +++++++++++++++++++++++++++++ 12 files changed, 126 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 README.md create mode 100644 TC-mingw.cmake create mode 100644 config.ini create mode 100644 res/128px.ico create mode 100644 res/16px.ico create mode 100644 res/256px.ico create mode 100644 res/32px.ico create mode 100644 res/64px.ico create mode 100644 src/main.cpp create mode 100644 wt95.rc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d706a68 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.o +*.exe +*.res +build/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1d1f768 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.10) +project(Walltaker95 VERSION 0.1) +add_executable(wt95 src/main.cpp wt95.rc) +find_package( CURL REQUIRED ) +ENABLE_LANGUAGE(RC) +SET(CMAKE_RC_COMPILE_OBJECT + " -O coff -i -o ") +set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") +add_compile_options(-g) +target_link_libraries(wt95 CURL::libcurl) diff --git a/README.md b/README.md new file mode 100644 index 0000000..8c0f597 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Walltaker95 +A Walltaker client for legacy Windows versions (<= Windows Vista) + +## Build instructions (CachyOS) +``` +$ paru -Sy cmake mingw-w64-toolchain mingw-w64-curl +$ mkdir build +$ cd build +$ cmake -DCMAKE_TOOLCHAIN_FILE=../TC-mingw.cmake ../ +$ cmake --build . +``` + +Note: You'll need to supply DLLs manually as I haven't set that up to build yet diff --git a/TC-mingw.cmake b/TC-mingw.cmake new file mode 100644 index 0000000..2378695 --- /dev/null +++ b/TC-mingw.cmake @@ -0,0 +1,18 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) +set(CMAKE_RC_COMPILER i686-w64-mingw32-windres) + +# where is the target environment located +set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) + +# adjust the default behavior of the FIND_XXX() commands: +# search programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + +# search headers and libraries in the target environment +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/config.ini b/config.ini new file mode 100644 index 0000000..e69de29 diff --git a/res/128px.ico b/res/128px.ico new file mode 100644 index 0000000000000000000000000000000000000000..d647ac5e9a5f54e73e67d26b4aac9996050f2eaf GIT binary patch literal 10366 zcmZQzU}RuqXlM{%U}Run$k1S55My9q&|qL-XkcIfNrJ^eOl&yOrj_CHn*Z3Oh!Rs8 z1*0J_8UmvsFpNR~R`4-F{Gb51V{-ZR5^$eU|>Mw;&lMXdXP5Un1O)-WDgFkz`%f8 zD_BMVZwR2e7OVlC!0P~l)(Z*>;PC)q=L>>j0f*lg+QnVz1WIcol z*Mr0WX$MzuOz24f68YeC2~vcl2Z;%C9VoFtY8Vs`K->gr9^fIWGB(Sbt3qYSDa<{eOr4HTuIFoC3MNNAvF z2IqQ+tRPfB$N`{|4CG%(oWtxF#1;i`>*2B>2Y@xhl*9EyQUj_3ko7}l;08d03$7n- z1ymu3f`uN)yC6OYLk)mx2jwbgguq+`QUt*W>rosBaz8`?h=dnQC~815NM^%=4=jvI zU~?l>1-jo*Eml$h`vF}MR4<5v8x3(9NIN(mg5*Gs1N#`+lVAhEvS0$$YiI!nHx0=a zT>3#4LAApi0OKN+s}NU$ZH5pq`@s^BoCL4#Al5?-hQ}a8AB=?Q2WJ(iGeJ5aJz7R^ z9%Mjr0L*P@`oUQP7EEBb!1aK6@L~y5KPdM=s#vJ?u#^bnf}8^@6~KnU>;}w=-IAK9t08RktsxkRP zUq2`-g1yYZfRvg+sUFj}m?D(MKO)0`a||Ll!PyDZK6DZ4=?6zR8TP|E!C(g?f&-dA z(cO!|huesuA44ft0l0p!g^1ulFLSYKMsCS~HNZ0fI5cqSK^BMUfNFp_2kaYUb-36t z{b1*V3IIrYgmQ7|LK276GT^!hQh$LGGt@Om%5XBlwG5~-0jmJ>KxGk8r3Y9Gq>P5N z8bKalU;vqhS!RP3V<8}w0n9!q55~o!9zzK10Jwc%9?UfuYOxBSRuLcr;HF_!Pe4$C z6vq=VYgBqP1V%%ES|RX%6p$VQ3=H-E7#QIC9xyO4A7EhMhY5h!Z7?t}Liztd#U}{Y zLj-<+*dS~V;ePlqlJ@^C)XK{Vq-?IYwq zxIEN9=>9|J!@~y}9_V~{ctXPu&WDEYA5d6R_n% z{{M$M5bFH@|Dg_oI`98~sD)7L{{M$s2#x;#|DhJbtb$^?{eK32kVC+H_67#~f8Z=?59aeTFv$O5V0-}f;2#DC5dQ}Q z!v`2&j)8&y0}|f`!mj|!|6^dNVPIf?0H*4}?)wAb+c7YJVt|492ZV1A^4S0X4eUQ4 z<%9eIuty%q!}uSd5%K{l{|6djFg`4S;NU}5gVP^#12i^3dO+$a`(hZIRQ22pU7f1vY1(3)9@xVa}3V%>wf(1Y+50vV_91y|401878 z3xXRM?0-N48^S-pQ2z&-y1@buKq(Fy*dT!qjQ{^b5-W)J|34_;4}cRlgbyNrfQaFb E0erS<*8l(j literal 0 HcmV?d00001 diff --git a/res/16px.ico b/res/16px.ico new file mode 100644 index 0000000000000000000000000000000000000000..079350ed5ef1edcb79ad09404748d91814e53c24 GIT binary patch literal 318 zcmZQzU}Ruq5D*YxU}Run&|qX>5My9q&|qL-5MW?nP+$PbvoPQSi8ieam)HEqB~4IV z2?H=NDKIE0DJcjFFbXn(XhA__T8U9mPyi&)ASlSdq@=_sz`(#LprjxO(kIBI#K0)P zC;&15M1u^6(F#loOdvig{{NqW0fayHGcY`0N8k_q5cUCP28PB)1_lrf5(D9%^C5ab F`T*|rBoP1r literal 0 HcmV?d00001 diff --git a/res/256px.ico b/res/256px.ico new file mode 100644 index 0000000000000000000000000000000000000000..72944335e51fa94eb4442346e6bc69f2875c40cb GIT binary patch literal 41086 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 NMnhmU1O`_K007-li0uFX literal 0 HcmV?d00001 diff --git a/res/32px.ico b/res/32px.ico new file mode 100644 index 0000000000000000000000000000000000000000..d40815a4af9e3070483d9b320b5fe388afba79a4 GIT binary patch literal 766 zcmZQzU}RuqP*4zHU}Runc)`TLAjZJJpuxbvpuoVu;J^TqXJNnv5^Y);F0c8IOPZj# z5)A+Y1A~$hm;f8DASfuv1SY^-B}PF(K>;v<;0uC)0EEu~VuLUPgb&gR;tDcB`5?U@ zGoXAWs0OHVB_*&8f>6^ydcY>YR4XwsC@=~N3NV3OsidT&z$gGRfkBB;0IY;TP(Vq6 zfq_YhQ4nk*Bg`ZygHe!40pvd>1&9Qr024?^Pyl3*l9Cbw$gd#(ft5k62lGK}5LSTr zA8Z>jd?kqaAf*rtu^+;wko=DgFdz8;kFlZt4+Dce4F6+bs0ZQy3=IGOA7K9f{{j2| wKME}NKMZ)}KUm1{f3W|<{~`Gp{|Cn={*Mie{r?*n|D)i8&Hw*DK8|4<0PTm3IsgCw literal 0 HcmV?d00001 diff --git a/res/64px.ico b/res/64px.ico new file mode 100644 index 0000000000000000000000000000000000000000..d7419e5fc6f935cb6ba04ddff1fd40501c2894b4 GIT binary patch literal 2686 zcmZQzU}RuqaBvV{U}Run$lzjN5My9q&|qL-aA06yXkY-zvoPQSi8ieam)HEqB~4IV zX%r9}0tyTel?+S}8iiCq4QX^GXwnSmW-u@af`I@dm=a`w+6A>k0V)lV1d*r)C_uG= zWFS}o#RY?29@BqNpF=5hc>&b$Q9}11s`r(Y&;t-P_>`2C7*IkG-FT1zND2fnv@0pW zVh|MkSfr6{z%(7?ON1A&YFAQ%hXI=3L7G7c3g!g?1|lqWHJL2)Bq5JQ4l$Wg0u^QYy^b?DCL5^f^a2ByC8@Q&IL@Mz!Ve| zL_`tTV<34Y1*p3~A|Q8wod-4^!~-h<3&BkU@gTN=Jq6-2Ffc%p1IR@n0f@X30|VGk zAU7~UjD%(pkh}l`D0sn^FbaY=j0guRfI|bU1sX^UU;|+0gF+K-C0LmN*fDVDDuBWS z>|_BZkYymR!+Z*IAQ*$ZEC`hc2NqZqK@28&P&gr624O)x2Bjck$Rt<-lrmAG9-#sp zaPaU&h{IV7f}n^2XH00RR% zi2s3sfgeQwU|^63(SH~i?EnA&|3`*_!J_{E{||f&3 z|Nl3zA7BR24Ezt+A29y^&%pmf{sY7Re+>Ng|G~5j{|5_(`hN@t><=WsH1h!-5S_q$ zfQ_O4Kf?pY26l%3|C7{{if;|Mfq>;SSP6ItBnf-X8A& literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..94c8fe0 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,51 @@ +#include +#include +#include + +//#define _WIN32_WINNT 0x0500 +#include +#include "../wt95.rc" +#include +#include +#include + + +int main (int argc, char *argv[]) { + + CURL *curl; + CURLcode res; + curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); + HWND hwnd = GetConsoleWindow(); + NOTIFYICONDATAA nid; + nid.hWnd = hwnd; // handle to the window that will display the tray icon + nid.uID = 100; // unique identifier for the tray icon + nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // flags to indicate which fields are valid + nid.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1)); + strcpy(nid.szTip,"Walltaker95\0"); + //nid.szTip[]="Walltaker95"; + + printf("test\n"); + + if(!curl) { + printf("Curl isn't working for some reason\n"); + getchar(); + return 0; + } + if (Shell_NotifyIcon(NIM_ADD, &nid)) { + // Tray icon created successfully + MSG msg; + while (GetMessage(&msg, NULL, 0, 0)) { + if (msg.message == nid.uCallbackMessage) { + // Handle the tray icon click here + } + } + } else { + // Error creating tray icon + printf("The tray icon fucked up somehow, oops...\n"); + getchar(); + } + //curl_easy_cleanup(curl); + return 0; + +} diff --git a/wt95.rc b/wt95.rc new file mode 100644 index 0000000..77d3368 --- /dev/null +++ b/wt95.rc @@ -0,0 +1,30 @@ +#define IDI_ICON1 201 + +#ifdef RC_INVOKED + +1 VERSIONINFO +FILEVERSION 0,0,0,1 +PRODUCTVERSION 0,0,0,1 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Meow Boutique" + VALUE "FileDescription", "Walltaker95 - Walltaker client for legacy Windows" + VALUE "FileVersion", "0.1" + VALUE "InternalName", "wt95" + VALUE "LegalCopyright", "conejo" + VALUE "OriginalFilename", "wt95.exe" + VALUE "ProductName", "Walltaker95" + VALUE "ProductVersion", "0.1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END +2 ICON "res/256px.ico" +IDI_ICON1 ICON "res/16px.ico" +#endif