OK, I took a look and there are several problems:
The metadata file must be named exactly "library.properties", but your metadata file is named "libraries.properties". See: Redirecting
Recursive layout libraries should have all source and header files under the src subfolder, but you have a header file in the root of the library folder. See: Redirecting
Next, it's necessary for you to understand how Arduino's library discovery system works. You can learn all about that here:
https://arduino.github.io/arduino-cli/latest/sketch-build-process/#dependency-resolution
That's a pretty dense read, so I'll give some important points:
- If the double quotes syntax is used, the relative or absolute path is checked.
- If found at that path only the specified header file is included. The accompanying source files in that folder are not given any special treatment.
- If not found at that path or in the current include search paths list, the root of the source folder of all libraries installed in the standard Arduino library folder installation locations (e.g., /libraries, /libraries, /libraries, core library, core variant library) is searched for the file.
- If the file is found, that library folder is added to the include search paths list and the source files of that library are compiled.
So let's start with the correct structure of the library:
libraries
|_ Test_Library
|_ library.properties
|_ examples
| |_ etc.
|_ src
|_ Test_Library.h
|_ core
|_ Func.h
|_ Func.cpp
You'll notice I renamed your "main.h" to "Test_Library.h". This is not absolutely necessary, but a super generic file name like this is highly likely to result in collisions. As I said, all the libraries root source folders are searched for this file. If multiple libraries contain a file of that name, the build system will try to pick the best one, but there's no guarantee it will get it right. One of the factors used in that determination is whether the filename matches the library root folder name. So best practices is for the primary header file name to match the library folder name. Since Library Manager uses the library.properties name field value as the library installation folder name, it is also best practices for that name to match.
In your main.h you have this:
#include <Func.h>
This will cause the root source folder of all libraries to be searched for a file named "Func.h". But your "Func.h" is in a subfolder, so, as @hzrnbgy explained already, you must provide the subfolder name in the #include directive.
Now, if you wanted to use this library in a sketch, you would add this #include directive:
#include <Test_Library.h>