{"id":49972,"date":"2025-11-10T13:19:56","date_gmt":"2025-11-10T13:19:56","guid":{"rendered":"https:\/\/ubuntuhandbook.org\/?p=49972"},"modified":"2025-11-10T13:19:56","modified_gmt":"2025-11-10T13:19:56","slug":"manage-gnome-shell-extensions-from-command-line","status":"publish","type":"post","link":"https:\/\/ubuntuhandbook.org\/index.php\/2025\/11\/manage-gnome-shell-extensions-from-command-line\/","title":{"rendered":"Manage Gnome Shell Extensions from Command Line"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-44710\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/gnome-logo-dark-250x250.webp\" alt=\"\" width=\"250\" height=\"250\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/gnome-logo-dark-250x250.webp 250w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/gnome-logo-dark-300x300.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/gnome-logo-dark-600x600.webp 600w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/gnome-logo-dark-768x768.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/11\/gnome-logo-dark.webp 1200w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/p>\n<p>This tutorial shows how to install, remove, enable or disable Gnome Shell extensions and configure extensions&#8217; preferences in Ubuntu, Fedora, etc Linux distributions with Gnome Desktop.<\/p>\n<p>We usually install\/uninstall Gnome Shell extension by either visiting <a href=\"https:\/\/extensions.gnome.org\/\" target=\"_blank\" rel=\"noopener\">extensions.gnome.org<\/a> in web browser or using <a href=\"https:\/\/github.com\/mjakeman\/extension-manager\" target=\"_blank\" rel=\"noopener\">Extension Manager app<\/a>, then manage them through either GNOME Extensions or Extension Manager.<\/p>\n<p><!--more--><\/p>\n<div id=\"attachment_49973\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-49973\" class=\"size-large wp-image-49973\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-manager-app-700x473.webp\" alt=\"\" width=\"610\" height=\"412\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-manager-app-700x473.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-manager-app-300x203.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-manager-app-768x519.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-manager-app.webp 1018w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><p id=\"caption-attachment-49973\" class=\"wp-caption-text\">Gnome Extension Manager App<\/p><\/div>\n<p>For choice, Gnome has a built-in command line tool that can help sometimes without using a graphical user interface.<\/p>\n<h3>Why using Command Line<\/h3>\n<p>The command line tool <code>gnome-extensions<\/code> is useful for advanced users and developers for scripting purpose.<\/p>\n<p>It&#8217;s also a good choice for installing extensions from local packages (e.g., ZIP archive) without internet connection. And, in some cases you may use <code>gsettings<\/code> command to configure extension preferences.<\/p>\n<h3>Install an Extension from Command Line<\/h3>\n<p>Besides using web browser or Extension Manager, user may manually install an extension by putting the source folder (usually <code>name@xxx.xxx.com<\/code>) to <code>.local<\/code>\/<code>share<\/code>\/<code>gnome-shell<\/code>\/<code>extensions<\/code> directory.<\/p>\n<p>Say you downloaded an extension package from <em>extensions.gnome.org<\/em>, by choosing Gnome Shell version and Extension version.<\/p>\n<div id=\"attachment_49975\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-49975\" class=\"size-large wp-image-49975\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/download-extension-700x245.webp\" alt=\"\" width=\"610\" height=\"214\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/download-extension-700x245.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/download-extension-300x105.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/download-extension-768x269.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/download-extension.webp 886w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><p id=\"caption-attachment-49975\" class=\"wp-caption-text\">Download an extension from extensions.gnome.org<\/p><\/div>\n<p>You may then install it by running command:<\/p>\n<pre>gnome-extensions install \/path\/to\/extension.zip<\/pre>\n<p>The command do the job decompressing the ZIP archive (<code>.tar.xz<\/code>, <code>.tar.gz<\/code> etc also supported) and moving the source to the user&#8217;s extension directory mentioned above.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49976\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extensions-installcmd-700x413.webp\" alt=\"\" width=\"610\" height=\"360\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extensions-installcmd-700x413.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extensions-installcmd-300x177.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extensions-installcmd-768x453.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extensions-installcmd.webp 1006w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<p>This method however <b>need a log out and back in<\/b>, before being able to enable the new installed extension.<\/p>\n<h3>List Installed Extensions from Command Line<\/h3>\n<p>To list all the installed extensions, simply use command:<\/p>\n<pre>gnome-extensions list<\/pre>\n<p>For choice, you may list user installed extensions via <code>--user<\/code> option, or system extensions via <code>--system<\/code>.<\/p>\n<pre>gnome-extensions list --user<\/pre>\n<p>And, use <code>--enabled<\/code> option for enabled extensions, <code>--disabled<\/code> for disabled extensions, and <code>--details<\/code> for more about extensions, including name, description, source URL, version, and state.<\/p>\n<pre>gnome-extensions list --user --enabled<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49974\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-extensions-700x513.webp\" alt=\"\" width=\"610\" height=\"447\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-extensions-700x513.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-extensions-300x220.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-extensions-768x563.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-extensions.webp 847w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<h3>Enable\/Disable Extensions<\/h3>\n<p>Once you got the extension IDs via the command above, you may get more about it by running command:<\/p>\n<pre>gnome-extensions info ubuntu-dock@ubuntu.com<\/pre>\n<p>Here replace the ID <code>ubuntu-dock@ubuntu.com<\/code> with yours.<\/p>\n<p>Then, enable or disable an extension by running command:<\/p>\n<pre>gnome-extensions enable ubuntu-dock@ubuntu.com<\/pre>\n<p>or:<\/p>\n<pre>gnome-extensions disable ubuntu-dock@ubuntu.com<\/pre>\n<p>Also replace the extension ID <code>ubuntu-dock@ubuntu.com<\/code>, and optionally add <code>--quiet<\/code> flag to ignore error messages (if any).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49977\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/enable-disable-extension-700x506.webp\" alt=\"\" width=\"610\" height=\"441\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/enable-disable-extension-700x506.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/enable-disable-extension-300x217.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/enable-disable-extension-768x555.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/enable-disable-extension.webp 846w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<h3>Configure Extension Preferences from Command Line<\/h3>\n<p><b>NOTE<\/b>: if you just want to launch the graphical configuration dialog from command line, then use command (replace extension ID):<\/p>\n<pre>gnome-extensions prefs ubuntu-dock@ubuntu.com<\/pre>\n<p>To configure extension preferences from command line, use <code>gsettings<\/code> command.<\/p>\n<p><b>For system extensions<\/b>, first run command below to list all the available keys and the values:<\/p>\n<pre>gsettings list-recursively org.gnome.shell.extensions.dash-to-dock<\/pre>\n<p>Here replace <code>dash-to-dock<\/code> (Ubuntu Dock) to the extension name you&#8217;re going to configure. Or, press Tab twice before typing its name to print available choices.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-list-key.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49979\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-list-key-700x501.webp\" alt=\"\" width=\"610\" height=\"437\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-list-key-700x501.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-list-key-300x215.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-list-key-768x550.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-list-key.webp 988w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>After that, run similar command below to configure an extension key value:<\/p>\n<pre>gsettings set org.gnome.shell.extensions.dash-to-dock always-center-icons false<\/pre>\n<p>Also replace extension name <code>dash-to-dock<\/code>, key-name <code>always-center-icons<\/code>, and key-value <code>false<\/code> according to the last command output.<\/p>\n<p>Or, run command to reset an extension&#8217;s key value to default.<\/p>\n<pre>gsettings reset org.gnome.shell.extensions.dash-to-dock always-center-icons<\/pre>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-set-reset.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49980\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-set-reset-700x337.webp\" alt=\"\" width=\"610\" height=\"294\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-set-reset-700x337.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-set-reset-300x145.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-set-reset-768x370.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/gsettings-set-reset.webp 982w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p><b>For user extensions,<\/b> run <code>gnome-extensions list --user<\/code> to find the ID, then do following steps instead:<\/p>\n<ul>\n<li>First, print the extension info, Just Perfection for example, and find out the PATH.\n<pre>gnome-extensions info just-perfection-desktop@just-perfection<\/pre>\n<\/li>\n<li>Then, print the extension metadata according to its PATH, and find out the settings schema:\n<pre>cat \/home\/ji\/.local\/share\/gnome-shell\/extensions\/just-perfection-desktop@just-perfection\/<b>metadata.json<\/b><\/pre>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-schema.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49981\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-schema-700x576.webp\" alt=\"\" width=\"610\" height=\"502\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-schema-700x576.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-schema-300x247.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-schema-768x632.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/extension-schema.webp 1019w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/li>\n<li>After found out the extension PATH and settings schema, set the following constants.\n<pre>SCHEMADIR=\/home\/ji\/.local\/share\/gnome-shell\/extensions\/just-perfection-desktop@just-perfection\/<b>schemas<\/b>\r\n\r\nSCHEMA=org.gnome.shell.extensions.just-perfection<\/pre>\n<p>So that I can use <code>$SCHEMADIR<\/code> and <code>$SCHEMA<\/code> in next commands without typing full PATH and settings schema.<\/li>\n<li>Next, run command to list all the available keys and their values:\n<pre>gsettings --schemadir $SCHEMADIR list-recursively $SCHEMA<\/pre>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-userextenion-keys.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49982\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-userextenion-keys-700x436.webp\" alt=\"\" width=\"610\" height=\"380\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-userextenion-keys-700x436.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-userextenion-keys-300x187.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-userextenion-keys-768x479.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/11\/list-userextenion-keys.webp 1125w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/li>\n<li>Finally, according to last command output, run commands below to set or reset something:\n<pre>gsettings --schemadir $SCHEMADIR set $SCHEMA top-panel-position 1<\/pre>\n<pre>gsettings --schemadir $SCHEMADIR reset $SCHEMA top-panel-position<\/pre>\n<p>Also replace the key and value accordingly.<\/li>\n<\/ul>\n<p>For more, see the Ubuntu <a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/en\/man1\/gsettings.1.html\" target=\"_blank\" rel=\"noopener\">gsettings<\/a> and <a href=\"https:\/\/manpages.ubuntu.com\/manpages\/noble\/man1\/gnome-extensions.1.html\" target=\"_blank\" rel=\"noopener\">gnome-extensions<\/a> man-pages<\/p>","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to install, remove, enable or disable Gnome Shell extensions and configure extensions&#8217; preferences in Ubuntu, Fedora, etc Linux distributions with Gnome Desktop. We usually install\/uninstall Gnome Shell extension by either visiting extensions.gnome.org in web browser or using Extension Manager app, then manage them through either GNOME Extensions or Extension Manager.<\/p>\n","protected":false},"author":1,"featured_media":44710,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[689],"class_list":["post-49972","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","tag-gnome"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/49972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/comments?post=49972"}],"version-history":[{"count":0,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/49972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media\/44710"}],"wp:attachment":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media?parent=49972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/categories?post=49972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/tags?post=49972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}