We want to be able to automatically FO to DR if the main site is completely down (like communication to the main site is down).
Disaster recovery locations are generally for disaster recovery and not high availability. It might just be a naming thing, but I'd change to calling it by datacenter or location name as disaster recovery doesn't fit here. Just fyi.
When you say "communication to the main site is down" as shown by whom? This will change how the setup would need to be configured. For example, If communication goes down between the primary site and the secondary site, what should happen? If communication goes down between the primary site, secondary site, and filesahre location, what should happen?
Can I set 2 witnesses? (Guess not)
You're correct, though you can change the witness at any time. If you would move to another location, it is possible to set a new witness.
If I set the primary node (in the main site) as a nonvoter, I will remain with a 3 voting cluster. Any downsides here?
There are various situations where this would cause the whole cluster to be down. I would focus on the primary goal, if it's truly to only have automatic HA between the sites then this would work for most scenarios. If it's to have automatic HA in the priamry site and then if that fails, automatic HA to the secondary site then you're not going to really be able to achieve what you're looking to do out of the box. There are various situations that need to be checked, such as where the issues occurs, how it manifests, what it affects, etc., and this will change what ends up occuring to the cluster.