Sachverhalt: A. Das Bezirksgericht Schwyz verurteilte X._ am 21. Juni 2006 wegen versuchten Diebstahls, Angriffs, einfacher Körperverletzung, mehrfacher Sachbeschädigung, Gewalt und Drohung gegen Behörden und Beamte, Hinderung einer Amtshandlung, Tätlichkeit, Widerhandlungen gegen das BetmG und mehrfacher Widerhandlungen gegen das SVG zu einer Gefängnisstrafe von 12 Monaten, bedingt vollziehbar mit einer Probezeit von 4 Jahren, sowie zu 500 Franken Busse. B. Das Bezirksgericht Schwyz sprach X._ am 4. Juni 2008 des Diebstahls, der Sachbeschädigung, des Hausfriedensbruchs, der Hinderung einer Amtshandlung sowie der mehrfachen Widerhandlung gegen Art. 19a Ziff. 1 BetmG schuldig. Es widerrief die bedingt ausgesprochene Gefängnisstrafe vom 21. Juni 2006, sprach eine Gesamtstrafe von 13 Monaten und 20 Tagen Gefängnis aus und setzte eine Geldstrafe von 10 Tagessätzen zu Fr. 30.-- sowie 500 Franken Busse fest. Es gewährte den bedingten Vollzug nicht. Das Kantonsgericht Schwyz hob am 7. April 2009 das bezirksgerichtliche Urteil im Sanktionspunkt auf (Ziff. 2 bis 5 des Dispositivs) und bestrafte X._ mit gemeinnütziger Arbeit von 240 Stunden (unter Anrechnung von vier Tagen Untersuchungshaft) und 300 Franken Busse. Es schob den Vollzug der gemeinnützigen Arbeit nicht auf und widerrief die am 21. Juni 2006 bedingt ausgesprochene Freiheitsstrafe. C. X._ erhebt Beschwerde in Strafsachen und beantragt, den Vollzug der gemeinnützigen Arbeit aufzuschieben, die am 21. Juni 2006 bedingt ausgesprochene Freiheitsstrafe nicht zu widerrufen, ihm nur die Hälfte der vorinstanzlichen Kosten aufzuerlegen und die Kosten des bundesgerichtlichen Verfahrens "auf die Staatskasse zu nehmen, eventuell der Vorinstanz aufzuerlegen". In der Vernehmlassung führt die Vorinstanz aus, die beim Bundesgericht eingereichten Anstellungsverträge seien erst nach ihrem Urteil abgeschlossen worden und könnten gemäss Art. 99 Abs. 1 BGG nicht vorgebracht werden. Im Übrigen verweist sie auf ihr Urteil. Die Staatsanwaltschaft verzichtete auf Vernehmlassung.