The cabinet says the smoking ban approved by parliament last year will be implemented nationwide from May 1, 2010.
The law is aimed at protecting non-smokers in public spaces, including schools, hospitals, shopping malls, restaurants and cinemas.
It sets minimum standards and allows cantonal authorities to introduce stricter rules but also includes exemptions. Restaurants have the right to set up specially designated and well ventilated areas for smokers.
Restaurant and bar owners have claimed the ban infringes on personal freedom and restricts business interests.
"Certain opponents simply are not willing to accept the rule, because they fear that a preventive measure is sufficient and they could lose a business advantage," said Interior Minister Pascal Couchepin at a news conference on Wednesday.
Eighteen of Switzerland's 26 cantons have already introduced smoking bans.
An alliance of health groups is trying to force a nationwide vote in order to introduce tighter measures across the country.
Urs Geiser, swissinfo.ch