Created
April 9, 2017 21:13
-
-
Save hoyang/c4eb7c210c5de056e7b1d5fb837c5bc3 to your computer and use it in GitHub Desktop.
Python script to create GNOME 3 App Folder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
import sys, os, json | |
class AppFolderMgr: | |
dconf_prefix = 'gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/' | |
def __init__(self): | |
self.folder_tree = { | |
"Utilities": ['catfish.desktop', | |
'baobab.desktop', | |
'brasero.desktop', | |
'org.gnome.clocks.desktop', | |
'gtkhash.desktop', | |
'agave.desktop', | |
'file-roller.desktop', | |
'diodon.desktop', | |
'basexgui.desktop', | |
'activity-log-manager.desktop', | |
'gcolor2.desktop', | |
'gnome-nettool.desktop', | |
'shutter.desktop', | |
'Windows7.desktop', | |
'easystroke.desktop', | |
'screenruler.desktop', | |
'gnome-calculator.desktop', | |
'gnome-split.desktop', | |
'gpick.desktop', | |
'synapse.desktop', | |
'gitg.desktop', | |
'remote-viewer.desktop', | |
'gnome-translate.desktop', | |
'indicator-multiload.desktop', | |
'poedit.desktop', | |
'tracker-needle.desktop'], | |
"Accessories": ['onboard.desktop', | |
'onboard-settings.desktop', | |
'gnome-system-log.desktop', | |
'org.gnome.SoundRecorder.desktop', | |
'wine-notepad.desktop', | |
'gnome-system-monitor.desktop', | |
'mugshot.desktop', | |
'gedit.desktop', | |
'nautilus.desktop', | |
'vim.desktop', | |
'bijiben.desktop', | |
'nact.desktop', | |
'org.gnome.Logs.desktop', | |
'nautilus-pastebin-configurator.desktop', | |
'gnome-dictionary.desktop', | |
'gnome-user-share-properties.desktop', | |
'org.gnome.Weather.Application.desktop', | |
'org.gnome.Maps.desktop', | |
'gnome-pomodoro.desktop', | |
'ebook-viewer.desktop', | |
'org.gnome.font-viewer.desktop', | |
'org.gnome.Documents.desktop', | |
'org.gnome.Dictionary.desktop', | |
'org.gnome.Contacts.desktop', | |
'org.gnome.baobab.desktop', | |
'org.gnome.gedit.desktop', | |
'org.gnome.Books.desktop', | |
'org.gnome.GPaste.Settings.desktop', | |
'gnome-schedule.desktop', | |
'org.gnome.Screenshot.desktop', | |
'gpk-application.desktop', | |
'gnome-power-statistics.desktop', | |
'gnome-terminal.desktop', | |
'gnome-search-tool.desktop', | |
'gnome-contacts.desktop', | |
'yelp.desktop', | |
'gucharmap.desktop', | |
'orca.desktop'], | |
"System-Tools": ['alacarte.desktop', | |
'zeitgeist-explorer.desktop', | |
'software-properties-drivers.desktop', | |
'org.gnome.Boxes.desktop', | |
'software-properties-gnome.desktop', | |
'gnome-power-panel.desktop', | |
'gnome-session-properties.desktop', | |
'software-properties-gtk.desktop', | |
'gpk-update-viewer.desktop', | |
'network.desktop', | |
'landscape-client-settings.desktop', | |
'gdebi.desktop', | |
'nm-connection-editor.desktop', | |
'deja-dup-preferences.desktop', | |
'users.desktop', | |
'virt-manager.desktop', | |
'update-manager.desktop', | |
'flash-player-properties.desktop', | |
'usb-creator-gtk.desktop', | |
'qtconfig-qt4.desktop', | |
'arandr.desktop', | |
'virtualbox.desktop', | |
'vmware-netcfg.desktop', | |
'vmware-player.desktop', | |
'vmware-workstation.desktop', | |
'synaptic.desktop', | |
'gconf-editor.desktop', | |
'time.desktop', | |
'deja-dup.desktop', | |
'gnome-deja-dup-panel.desktop', | |
'gigolo.desktop', | |
'htop.desktop', | |
'ca.desrt.dconf-editor.desktop', | |
'nvidia-settings.desktop', | |
'gnome-tweak-tool.desktop', | |
'gnome-control-center.desktop', | |
'gufw.desktop', | |
'menulibre.desktop', | |
'wine-browsedrive.desktop', | |
'wine.desktop', | |
'winetricks.desktop', | |
'pavucontrol.desktop', | |
'wine-uninstaller.desktop', | |
'wine-winecfg.desktop', | |
'tracker-preferences.desktop', | |
'gparted.desktop', | |
'gnome-activity-journal.desktop', | |
'seahorse.desktop', | |
'gnome-disks.desktop'], | |
"Network": ['transmission-gtk.desktop', | |
'uget-gtk.desktop', | |
'wireshark.desktop', | |
'opera.desktop', | |
'org.baedert.corebird.desktop', | |
'teamviewer.desktop', | |
'Google-googleearth.desktop', | |
'xchat.desktop', | |
'dropbox.desktop', | |
'iptux.desktop', | |
'filezilla.desktop', | |
'viber.desktop', | |
'firefox.desktop', | |
'qthid-2.2.desktop', | |
'qthid.desktop', | |
'birdie.desktop', | |
'pidgin.desktop', | |
'opera-browser.desktop', | |
'gnome-blog.desktop', | |
'skype.desktop', | |
'smart_qq.desktop', | |
'nutstore-menu.desktop', | |
'gnuradio-grc.desktop', | |
'remmina.desktop', | |
'empathy.desktop', | |
'google-chrome.desktop'], | |
"Office": ['calibre-gui.desktop', | |
'goldendict.desktop', | |
'cherrytree.desktop', | |
'dia.desktop', | |
'youdao-dict.desktop', | |
'gnome-genius.desktop', | |
'gtg.desktop', | |
'www.octave.org-octave.desktop', | |
'evince.desktop', | |
'evolution.desktop', | |
'gnucash.desktop', | |
'gnote.desktop', | |
'libreoffice-base.desktop', | |
'libreoffice-calc.desktop', | |
'libreoffice-draw.desktop', | |
'libreoffice-impress.desktop', | |
'libreoffice-math.desktop', | |
'libreoffice-writer.desktop', | |
'libreoffice-startcenter.desktop', | |
'pencil.desktop', | |
'anki.desktop', | |
'wiznote.desktop', | |
'zim.desktop', | |
'lrfviewer.desktop', | |
'keepassx.desktop', | |
'zotero.desktop', | |
'thunderbird.desktop', | |
'xmind.desktop', | |
'wiznote.desktop', | |
'simple-scan.desktop', | |
'gelemental.desktop'], | |
"AudioVideo": ['smplayer.desktop', | |
'rhythmbox.desktop', | |
'bitwig-studio.desktop', | |
'lightworks.desktop', | |
'pitivi.desktop', | |
'puddletag.desktop', | |
'osdlyrics.desktop', | |
'mkvmergeGUI.desktop', | |
'mkvinfo.desktop', | |
'gnome-sound-recorder.desktop', | |
'gnome-music.desktop', | |
'cheese.desktop', | |
'audacity.desktop', | |
'gnome-dvb-control.desktop', | |
'gnome-dvb-setup.desktop', | |
'easytag.desktop', | |
'oggconvert.desktop', | |
'winff.desktop', | |
'vlc.desktop'], | |
"Game": ['teeworlds.desktop', | |
'steam.desktop', | |
'Counter-Strike Global Offensive.desktop', | |
'Dota 2.desktop', | |
'Team Fortress 2.desktop', | |
'No More Room in Hell.desktop', | |
'War Thunder.desktop', | |
'supertuxkart.desktop', | |
'sol.desktop', | |
'gmchess.desktop', | |
'gnome-klotski.desktop', | |
'gnome-mahjongg.desktop', | |
'gnome-hearts.desktop', | |
'lightsoff.desktop', | |
'gnome-sudoku.desktop', | |
'openttd.desktop', | |
'gnome-mines.desktop', | |
'iagno.desktop', | |
'gnome-nibbles.desktop', | |
'gnome-mastermind.desktop', | |
'sweethome3d.desktop', | |
'stellarium.desktop', | |
'four-in-a-row.desktop', | |
'flare.desktop', | |
'gnome-chess.desktop', | |
'five-or-more.desktop', | |
'swell-foop.desktop', | |
'tali.desktop', | |
'gnome-tetravex.desktop', | |
'gnome-robots.desktop', | |
'quadrapassel.desktop'], | |
"Graphics": ['gimp.desktop', | |
'gthumb.desktop', | |
'inkscape.desktop', | |
'org.gnome.Photos.desktop', | |
'rawtherapee.desktop', | |
'eog.desktop', | |
'display.im6.desktop'], | |
"GoogleChromeApps": ['chrome-gbchcmhmhahfdphkhkmpfmihenigjmpp-Default.desktop', | |
'chrome-app-list.desktop', | |
'chrome-hfgjlgjnpkpmnpojkkpfkogapiclopop-Default.desktop', | |
'chrome-hfhhnacclhffhdffklopdkcgdhifgngh-Default.desktop', | |
'chrome-hmjkmjkepdijhoojdojkdfohbdgmmhki-Default.desktop', | |
'chrome-joodangkbfjnajiiifokapkpmhfnpleo-Default.desktop', | |
'chrome-pnoffddplpippgcfjdhbmhkofpnaalpg-Default.desktop', | |
'chrome-knipolnnllmklapflnccelgolnpehhpl-Default.desktop', | |
'chrome-ohmmkhmmmpcnpikjeljgnaoabkaalbgc-Default.desktop'], | |
"Development": ['android-developer-tools.desktop', | |
'bluefish.desktop', | |
'kiki.desktop', | |
'anjuta.desktop', | |
'zeal.desktop', | |
'aurora.desktop', | |
'smartgit.desktop', | |
'QtProject-qtcreator.desktop', | |
'atom.desktop', | |
'DigiaQtOpenSource-qtcreator.desktop', | |
'chrome-fhbjgbiflinjbdggehcddcbncdddomop-Default.desktop', | |
'ghex.desktop', | |
'nemiver.desktop', | |
'bpython.desktop', | |
'codeblocks.desktop', | |
'jdev.desktop', | |
'devhelp.desktop', | |
'netbeans-8.0.desktop', | |
'drracket.desktop', | |
'SenchaArchitect.desktop', | |
'wxformbuilder.desktop', | |
'eclipse.desktop', | |
'jedit.desktop', | |
'komodo-ide-8.desktop', | |
'meld.desktop', | |
'mysql-workbench.desktop', | |
'pgadmin3.desktop', | |
'rapidsvn.desktop', | |
'R.desktop', | |
'sqldeveloper.desktop', | |
'glade.desktop', | |
'retext.desktop', | |
'sqliteman.desktop', | |
'google-webdesigner.desktop', | |
'sublime_text.desktop', | |
'brackets.desktop', | |
'emacs.desktop', | |
'jetbrains-phpstorm.desktop', | |
'jetbrains-clion.desktop', | |
'HeidiSQL.desktop', | |
'Notepad++.desktop', | |
'jetbrains-pycharm.desktop', | |
'jetbrains-rubymine.desktop', | |
'tiled.desktop', | |
'webstorm.desktop', | |
'vscode.desktop', | |
'blender.desktop', | |
'idea.desktop'] | |
} | |
def _gsettings(self, category, key, value): | |
shell_command = self.dconf_prefix + category + "/" + " " + key + " " + value | |
print(shell_command) | |
os.system( shell_command ) | |
def enableCategory(self, categories): | |
shell_command = 'gsettings set org.gnome.desktop.app-folders folder-children ' + categories | |
print(shell_command) | |
os.system(shell_command) | |
def setCategory(self, category): | |
self._gsettings(category, 'name', category + ".directory") | |
self._gsettings(category, 'translate', 'true') | |
def setCategoryApplications(self, category, apps): | |
self.setCategory(category) | |
self._gsettings(category, 'apps', '"' + str(apps) + '"') | |
if __name__ == "__main__": | |
appFolderMgr = AppFolderMgr() | |
categories = [] | |
for folder, apps in appFolderMgr.folder_tree.items(): | |
appFolderMgr.setCategoryApplications(folder, apps) | |
categories.append(folder) | |
enableCategories = '"' + str(categories) + '"' | |
appFolderMgr.enableCategory(enableCategories) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment