* [gentoo-commits] proj/gnome:gnome-next commit in: app-admin/eselect-gnome-shell-extensions/files/, ...
@ 2011-08-12 8:29 Alexandre Restovtsev
0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Restovtsev @ 2011-08-12 8:29 UTC (permalink / raw
To: gentoo-commits
commit: 9ed953209d1ff8f12ac0629e368ec3760960edc5
Author: Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Thu Aug 11 03:20:41 2011 +0000
Commit: Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Fri Aug 12 08:26:41 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=9ed95320
app-admin/eselect-gnome-shell-extensions: new package (#377107)
Add a new eselect module to manage system defaults for gnome shell
extensions. This is done by maintaining a gsettings override file for
org.gnome.shell disabled-extensions key. By default, newly-installed
extensions are disabled (i.e. for users who haven't customized their
disabled-extension key), but then can be un-disabled using eselect.
It is also possible to override system settings on a per-user basis using
gsettings (from the command line) or gnome-tweak-tool.
See bug #377107 for a discussion of why an eselect solution is
preferable to one based on USE_EXPAND flags.
---
.../eselect-gnome-shell-extensions-20110811.ebuild | 47 ++++
.../files/20110811.eselect | 275 ++++++++++++++++++++
2 files changed, 322 insertions(+), 0 deletions(-)
diff --git a/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild b/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild
new file mode 100644
index 0000000..a2f1804
--- /dev/null
+++ b/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+
+DESCRIPTION="Manages system defaults for GNOME Shell extensions"
+HOMEPAGE="http://www.gentoo.org"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+# gnome-shell schemas are used in pkg_postinst
+COMMON_DEPEND="app-admin/eselect
+ >=dev-libs/glib-2.26:2
+ gnome-base/gsettings-desktop-schemas
+ gnome-base/gnome-shell"
+RDEPEND="${COMMON_DEPEND}
+ dev-lang/perl
+ dev-perl/JSON"
+DEPEND="${COMMON_DEPEND}"
+S="${WORKDIR}" # for now, since installing from ${FILESDIR}
+
+src_install() {
+ insinto "/usr/share/eselect/modules"
+ newins "${FILESDIR}/${PV}.eselect" "gnome-shell-extensions.eselect"
+ keepdir "/etc/eselect/gnome-shell-extensions"
+ # The actual gschema override file will be greated in pkg_postinst.
+ dosym "/etc/eselect/gnome-shell-extensions/${PN}.gschema.override" \
+ "/usr/share/glib-2.0/schemas/"
+}
+
+pkg_postinst() {
+ einfo "Updating list of installed extensions"
+ eselect gnome-shell-extensions update || die
+ elog
+ elog "eselect gnome-shell-extensions manages the system default value of"
+ elog "the org.gnome.shell disabled-extensions key. To override the default"
+ elog "for an individual user, use the gsettings command, e.g."
+ elog "\$ gsettings set org.gnome.shell disabled-extensions \"['foo', 'bar']\""
+ elog "To undo per-user changes and use the system default, do"
+ elog "\$ gsettings reset org.gnome.shell disabled-extensions"
+ elog
+}
diff --git a/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect b/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect
new file mode 100644
index 0000000..13f53bc
--- /dev/null
+++ b/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect
@@ -0,0 +1,275 @@
+# -*-eselect-*- vim: ft=eselect
+# Copyright 2009-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2 or later
+# $Id: $
+
+DESCRIPTION="Manage default settings for systemwide GNOME Shell extensions"
+AUTHOR="tetromino@gmail.com"
+MAINTAINER="gnome@gentoo.org"
+SVN_DATE='$Date: 2011/08/11 19:00:00 -0400 $'
+VERSION=$(svn_date_to_version "${SVN_DATE}")
+
+#
+# Basic idea: eselect manages a gschema override file located in
+# /etc/eselect/gnome-shell-extensions/ that overrides GNOME Shell's
+# 'disabled-extensions' GSettings key; the override file is symlinked
+# from /usr/share/glib-2.0/schemas/
+#
+
+gse_prepare() {
+ EXTDIR="${EROOT}/usr/share/gnome-shell/extensions"
+ ETCDIR="${EROOT}/etc/eselect/gnome-shell-extensions"
+ SCHEMADIR="${EROOT}/usr/share/glib-2.0/schemas"
+ OVERRIDE_FILE="eselect-gnome-shell-extensions.gschema.override"
+ CONFIG_FILE="config"
+ if [[ ! -d "${SCHEMADIR}" ]]; then
+ die -q "No ${SCHEMADIR} directory."
+ elif [[ ! -d "${ETCDIR}" ]]; then
+ die -q "No ${ETCDIR} directory."
+ fi
+
+ warnings=()
+ errors=()
+ available=()
+ enabled=()
+
+ if [[ -e "${ETCDIR}/${CONFIG_FILE}" ]]; then
+ source "${ETCDIR}/${CONFIG_FILE}" || die -q "Failed to source ${ETCDIR}/${CONFIG_FILE}"
+ enabled=( "${enabled_saved[@]}" )
+ fi
+}
+
+has() {
+ # Copied from portage's isolated-functions.sh
+ local needle=$1
+ shift
+
+ local x
+ for x in "$@"; do
+ [[ "${x}" = "${needle}" ]] && return 0
+ done
+ return 1
+}
+
+gse_print_warnings() {
+ local n
+
+ for (( n = 0; n < ${#warnings[@]}; ++n )); do
+ write_warning_msg "${warnings[n]}"
+ done
+
+ for (( n = 0; n < ${#errors[@]}-1; ++n )); do
+ write_error_msg "${errors[n]}"
+ done
+ [[ ${#errors[@]} = 0 ]] && return
+ die -q "${errors[n]}"
+}
+
+gse_die() {
+ errors=( "${errors[@]}" "$@" )
+ gse_print_warnings
+ die # should not happen...
+}
+
+gse_read_available() {
+ local d
+
+ gse_prepare
+ if ! pushd "${EXTDIR}" > /dev/null; then
+ warnings=( "${warnings[@]}" "Failed to open ${EXTDIR}" )
+ return 1
+ fi
+ # Do not expand * to '*' if EXTDIR is empty
+ shopt -s nullglob
+ for d in *; do
+ # skip invalid extension directories
+ if ! [[ -d "${d}" && -f "${d}/metadata.json" && -s "${d}/metadata.json" ]]; then
+ warnings=( "${warnings[@]}" "${EXTDIR}/${d} is not a valid extension" )
+ continue
+ fi
+ available=( "${available[@]}" "${d}" )
+ done
+ popd > /dev/null
+}
+
+gse_write_config_file() {
+ local f="${ETCDIR}/${CONFIG_FILE}"
+
+ # Sort and uniquefy 'enabled'
+ eval enabled_saved=( $(printf '%q\n' "${enabled[@]}" | sort -u ) )
+
+ if [[ -e "${f}" ]]; then
+ [[ -f "${f}" && -w "${f}" ]] || gse_die "${f} is not writable"
+ else
+ [[ -w "${ETCDIR}" ]] || gse_die "${ETCDIR} is not writable"
+ fi
+
+ cat > "${f}" <<EOF || gse_die "Failed to write ${f}"
+# Generated and used by eselect gnome-shell-extensions; do not edit manually
+$(declare -p enabled_saved)
+EOF
+}
+
+gse_write_override_file() {
+ local f="${ETCDIR}/${OVERRIDE_FILE}"
+ local disstring e
+
+ for e in "${available[@]}"; do
+ has "${e}" "${enabled[@]}" || disstring+="'${e}', "
+ done
+ disstring=`echo "${disstring}" | sed -e 's:, $::'`
+
+ if [[ -e "${f}" ]]; then
+ [[ -f "${f}" && -w "${f}" ]] || gse_die "${f} not writable"
+ else
+ [[ -w "${ETCDIR}" ]] || gse_die "${ETCDIR}/ not writable"
+ fi
+
+ cat > "${f}" <<EOF || gse_die "Failed to write ${f}"
+# Generated and used by eselect gnome-shell-extensions; do not edit manually
+[org.gnome.shell]
+disabled-extensions=[${disstring}]
+EOF
+ glib-compile-schemas "${SCHEMADIR}" || gse_die "Failed to compile schemas in ${SCHEMADIR}"
+}
+
+gse_get_name() {
+ perl -e 'use JSON; undef $/; print decode_json(<>)->{name};' \
+ "${EXTDIR}/${1}/metadata.json"
+}
+
+gse_get_description() {
+ perl -e 'use JSON; undef $/; print decode_json(<>)->{description};' \
+ "${EXTDIR}/${1}/metadata.json"
+}
+
+### list action
+
+describe_list() {
+ echo "List ids of available GNOME Shell extensions"
+}
+
+describe_list_options() {
+ echo "-v, --verbose : Display extension names and descriptions"
+}
+
+do_list() {
+ local n
+
+ gse_read_available
+ write_list_start "Available extensions ($(highlight '*') means enabled by default):"
+ for (( n = 0; n < ${#available[@]}; ++n )); do
+ has "${available[n]}" "${enabled[@]}" &&
+ available[n]=$(highlight_marker "${available[n]}")
+ if [[ $1 = "--verbose" || $1 = "-v" ]]; then
+ available[n]+="\n\tfull name : $(gse_get_name ${available[n]})\n\tdescription : $(gse_get_description ${available[n]})"
+ fi
+ done
+ write_numbered_list -m "(none found)" "${available[@]}"
+ gse_print_warnings
+}
+
+### enable action
+
+describe_enable() {
+ echo "Enable specified extension(s) by default"
+}
+
+describe_enable_parameters() {
+ echo "<extension>"
+}
+
+describe_enable_options() {
+ echo "<extension> : Extension id or number (from 'list' action)"
+}
+
+do_enable() {
+ local arg ext n
+
+ gse_read_available
+ for arg in "$@"; do
+ local found=
+ for (( n = 0; n < ${#available[@]}; ++n )); do
+ ext="${available[n]}"
+ if [[ "${arg}" = $((n+1)) || "${arg}" = "${ext}" ]]; then
+ has "${ext}" "${enabled[@]}" &&
+ warnings=( "${warnings[@]}" "Extension ${arg} is already enabled" )
+ # will be uniquefied in gse_write_config_file
+ enabled=( "${enabled[@]}" "${ext}" )
+ found=yes
+ break
+ fi
+ done
+ [[ ${found} = "yes" ]] || errors=( "${errors[@]}" "Failed to find extension ${arg}" )
+ done
+ gse_write_override_file
+ gse_write_config_file
+ gse_print_warnings
+}
+
+### disable action
+
+describe_disable() {
+ echo "Disable specified extension(s) by default"
+}
+
+describe_disable_parameters() {
+ echo "<extension>"
+}
+
+describe_disable_options() {
+ echo "<extension> : Extension id or number (from 'list' action)"
+}
+
+gse_unenable() {
+ # remove $1 from the enabled array
+ local found e
+ local new_enabled=()
+
+ for e in "${enabled[@]}"; do
+ if [[ "$1" = "${e}" ]]; then
+ found="yes"
+ else
+ new_enabled=( "${new_enabled[@]}" "${e}" )
+ fi
+ done
+ enabled=( "${new_enabled[@]}" )
+ [[ "${found}" = "yes" ]] && return 0
+ return 1
+}
+
+do_disable() {
+ local arg ext n
+
+ gse_read_available
+ for arg in "$@"; do
+ local found=
+ for (( n = 0; n < ${#available[@]}; ++n )); do
+ ext="${available[n]}"
+ if [[ "${arg}" = $((n+1)) || "${arg}" = "${ext}" ]]; then
+ gse_unenable "${ext}" ||
+ warnings=( "${warnings[@]}" "Extension ${arg} is already marked as disabled" )
+ found=yes
+ break
+ fi
+ done
+ [[ ${found} = "yes" ]] ||
+ errors=( "${errors[@]}" "Failed to find extension ${arg}" )
+ done
+ gse_write_override_file
+ gse_write_config_file
+ gse_print_warnings
+}
+
+### update action
+
+describe_update() {
+ echo "Scan for installed extensions and disable ones that haven't been enabled earlier"
+}
+
+do_update() {
+ # Run this after emerging a new extension package
+ gse_read_available
+ gse_write_override_file
+ gse_print_warnings
+}
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-commits] proj/gnome:gnome-next commit in: app-admin/eselect-gnome-shell-extensions/files/, ...
@ 2011-09-11 22:13 Alexandre Restovtsev
0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Restovtsev @ 2011-09-11 22:13 UTC (permalink / raw
To: gentoo-commits
commit: c2b74192895c352bb1874e9d7b415a5ccbf9d63d
Author: Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Sun Sep 11 21:56:22 2011 +0000
Commit: Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Sun Sep 11 22:12:55 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=c2b74192
app-admin/eselect-gnome-shell-extensions: 20110811 → 20110911
Version bump. Changes:
* Does not display a warning if no extensions are installed (#381247).
* Respects XDG_DATA_DIRS.
* Now works with all versions of gnome-shell, including >=3.1.90.
---
...eselect-gnome-shell-extensions-20110911.ebuild} | 9 ++-
.../files/{20110811.eselect => 20110911.eselect} | 94 +++++++++++++-------
2 files changed, 68 insertions(+), 35 deletions(-)
diff --git a/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild b/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110911.ebuild
similarity index 80%
rename from app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild
rename to app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110911.ebuild
index f2b3cb0..c35301a 100644
--- a/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110811.ebuild
+++ b/app-admin/eselect-gnome-shell-extensions/eselect-gnome-shell-extensions-20110911.ebuild
@@ -36,12 +36,15 @@ src_install() {
pkg_postinst() {
einfo "Updating list of installed extensions"
eselect gnome-shell-extensions update || die
+ local keyname="disabled-extensions"
+ has_version ">=gnome-base/gnome-shell-3.1.90" &&
+ keyname="enabled-extensions"
elog
elog "eselect gnome-shell-extensions manages the system default value of"
- elog "the org.gnome.shell disabled-extensions key. To override the default"
+ elog "the org.gnome.shell ${keyname} key. To override the default"
elog "for an individual user, use the gsettings command, e.g."
- elog "\$ gsettings set org.gnome.shell disabled-extensions \"['foo', 'bar']\""
+ elog "\$ gsettings set org.gnome.shell ${keyname} \"['foo', 'bar']\""
elog "To undo per-user changes and use the system default, do"
- elog "\$ gsettings reset org.gnome.shell disabled-extensions"
+ elog "\$ gsettings reset org.gnome.shell ${keyname}"
elog
}
diff --git a/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect b/app-admin/eselect-gnome-shell-extensions/files/20110911.eselect
similarity index 69%
rename from app-admin/eselect-gnome-shell-extensions/files/20110811.eselect
rename to app-admin/eselect-gnome-shell-extensions/files/20110911.eselect
index 13f53bc..ef288c7 100644
--- a/app-admin/eselect-gnome-shell-extensions/files/20110811.eselect
+++ b/app-admin/eselect-gnome-shell-extensions/files/20110911.eselect
@@ -6,18 +6,19 @@
DESCRIPTION="Manage default settings for systemwide GNOME Shell extensions"
AUTHOR="tetromino@gmail.com"
MAINTAINER="gnome@gentoo.org"
-SVN_DATE='$Date: 2011/08/11 19:00:00 -0400 $'
+SVN_DATE='$Date: 2011/09/11 18:00:00 -0400 $'
VERSION=$(svn_date_to_version "${SVN_DATE}")
#
# Basic idea: eselect manages a gschema override file located in
# /etc/eselect/gnome-shell-extensions/ that overrides GNOME Shell's
-# 'disabled-extensions' GSettings key; the override file is symlinked
-# from /usr/share/glib-2.0/schemas/
+# 'disabled-extensions' or 'enabled-extensions' (depending on
+# current shell version) GSettings key; the override file is
+# symlinked from /usr/share/glib-2.0/schemas/
#
gse_prepare() {
- EXTDIR="${EROOT}/usr/share/gnome-shell/extensions"
+ XDG_DATA_DIRS=${XDG_DATA_DIRS:="${EROOT}/usr/local/share:${EROOT}/usr/share"}
ETCDIR="${EROOT}/etc/eselect/gnome-shell-extensions"
SCHEMADIR="${EROOT}/usr/share/glib-2.0/schemas"
OVERRIDE_FILE="eselect-gnome-shell-extensions.gschema.override"
@@ -31,6 +32,7 @@ gse_prepare() {
warnings=()
errors=()
available=()
+ available_dirs=()
enabled=()
if [[ -e "${ETCDIR}/${CONFIG_FILE}" ]]; then
@@ -75,27 +77,38 @@ gse_read_available() {
local d
gse_prepare
- if ! pushd "${EXTDIR}" > /dev/null; then
- warnings=( "${warnings[@]}" "Failed to open ${EXTDIR}" )
- return 1
- fi
- # Do not expand * to '*' if EXTDIR is empty
+ # Do not expand * to '*' if $p is empty
shopt -s nullglob
- for d in *; do
- # skip invalid extension directories
- if ! [[ -d "${d}" && -f "${d}/metadata.json" && -s "${d}/metadata.json" ]]; then
- warnings=( "${warnings[@]}" "${EXTDIR}/${d} is not a valid extension" )
- continue
- fi
- available=( "${available[@]}" "${d}" )
+
+ for p in $(echo "${XDG_DATA_DIRS}" | tr -s ':' '\n'); do
+ pushd "${p}/gnome-shell/extensions" &> /dev/null || continue
+ for d in *; do
+ local full_d="${p}/gnome-shell/extensions/${d}"
+ # skip invalid extension directories
+ if ! [[ -d "${d}" && -f "${d}/metadata.json" && -s "${d}/metadata.json" ]]; then
+ warnings=( "${warnings[@]}" "${full_d} is not a valid extension" )
+ continue
+ fi
+ # earlier entries in XDG_DATA_DIRS take precedence
+ if has "${d}" "${available[@]}"; then
+ warnings=( "${warnings[@]}" "Skipping ${full_d}" )
+ continue
+ fi
+ available_dirs=( "${available_dirs[@]}" "${full_d}" )
+ available=( "${available[@]}" "${d}" )
+ done
+ popd > /dev/null
done
- popd > /dev/null
+ # Sort $available
+ if [[ -n "${available[@]}" ]]; then
+ eval available=( $(printf '%q\n' "${available[@]}" | sort ) )
+ fi
}
gse_write_config_file() {
local f="${ETCDIR}/${CONFIG_FILE}"
- # Sort and uniquefy 'enabled'
+ # Sort and uniquefy $enabled
eval enabled_saved=( $(printf '%q\n' "${enabled[@]}" | sort -u ) )
if [[ -e "${f}" ]]; then
@@ -112,12 +125,26 @@ EOF
gse_write_override_file() {
local f="${ETCDIR}/${OVERRIDE_FILE}"
- local disstring e
-
- for e in "${available[@]}"; do
- has "${e}" "${enabled[@]}" || disstring+="'${e}', "
- done
- disstring=`echo "${disstring}" | sed -e 's:, $::'`
+ local local key value e
+
+ case $(gnome-shell --version) in
+ "GNOME Shell 2"* | "GNOME Shell 3.0"* | "GNOME Shell 3.1."[012345678]* )
+ # <gnome-shell-3.1.90 uses 'disabled-extensions' key
+ key="disabled-extensions"
+ for e in "${available[@]}"; do
+ has "${e}" "${enabled[@]}" || value+="'${e}', "
+ done
+ value=`echo "${value}" | sed -e 's:, $::'`
+ ;;
+ * )
+ # >=gnome-shell-3.1.90 uses 'enabled-extensions' key
+ key="enabled-extensions"
+ for e in "${enabled[@]}"; do
+ value+="'${e}', "
+ done
+ value=`echo "${value}" | sed -e 's:, $::'`
+ ;;
+ esac
if [[ -e "${f}" ]]; then
[[ -f "${f}" && -w "${f}" ]] || gse_die "${f} not writable"
@@ -128,19 +155,21 @@ gse_write_override_file() {
cat > "${f}" <<EOF || gse_die "Failed to write ${f}"
# Generated and used by eselect gnome-shell-extensions; do not edit manually
[org.gnome.shell]
-disabled-extensions=[${disstring}]
+${key}=[${value}]
EOF
glib-compile-schemas "${SCHEMADIR}" || gse_die "Failed to compile schemas in ${SCHEMADIR}"
}
gse_get_name() {
+ # $1 is an index into available_dirs
perl -e 'use JSON; undef $/; print decode_json(<>)->{name};' \
- "${EXTDIR}/${1}/metadata.json"
+ "${available_dirs[${1}]}/metadata.json"
}
gse_get_description() {
+ # $1 is an index into available_dirs
perl -e 'use JSON; undef $/; print decode_json(<>)->{description};' \
- "${EXTDIR}/${1}/metadata.json"
+ "${available_dirs[${1}]}/metadata.json"
}
### list action
@@ -157,12 +186,12 @@ do_list() {
local n
gse_read_available
- write_list_start "Available extensions ($(highlight '*') means enabled by default):"
+ write_list_start "Available extensions ($(highlight '*') means enabled for all users by default):"
for (( n = 0; n < ${#available[@]}; ++n )); do
has "${available[n]}" "${enabled[@]}" &&
available[n]=$(highlight_marker "${available[n]}")
if [[ $1 = "--verbose" || $1 = "-v" ]]; then
- available[n]+="\n\tfull name : $(gse_get_name ${available[n]})\n\tdescription : $(gse_get_description ${available[n]})"
+ available[n]+="\n\tfull name : $(gse_get_name $n)\n\tdescription : $(gse_get_description $n)"
fi
done
write_numbered_list -m "(none found)" "${available[@]}"
@@ -172,7 +201,7 @@ do_list() {
### enable action
describe_enable() {
- echo "Enable specified extension(s) by default"
+ echo "Enable specified extension(s) for all users by default"
}
describe_enable_parameters() {
@@ -210,7 +239,7 @@ do_enable() {
### disable action
describe_disable() {
- echo "Disable specified extension(s) by default"
+ echo "Disable specified extension(s) for all users by default"
}
describe_disable_parameters() {
@@ -264,7 +293,8 @@ do_disable() {
### update action
describe_update() {
- echo "Scan for installed extensions and disable ones that haven't been enabled earlier"
+ echo "Scan for installed extensions, disable ones that haven't been enabled"
+ echo "earlier, and update gsettings keys if GNOME Shell has been upgraded"
}
do_update() {
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-09-11 22:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-11 22:13 [gentoo-commits] proj/gnome:gnome-next commit in: app-admin/eselect-gnome-shell-extensions/files/, Alexandre Restovtsev
-- strict thread matches above, loose matches on Subject: below --
2011-08-12 8:29 Alexandre Restovtsev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox