Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED]No result shown for search in Gnome3 overview
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Desktop Environments
View previous topic :: View next topic  
Author Message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Wed Jun 25, 2014 3:16 am    Post subject: [SOLVED]No result shown for search in Gnome3 overview Reply with quote

Hi,

I finally took a plunge and switched to ~amd64. I'm using desktop/gnome/systemd profile.

Everything seems to be working OK so far except no result is shown when I type in overview mode. But if I click on applications button, all installed applications are shown and I can launch them. Please let me know if you need any log outputs.


Last edited by saivinoba on Wed Aug 06, 2014 7:51 pm; edited 1 time in total
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Wed Jun 25, 2014 6:21 pm    Post subject: Reply with quote

Hi,

Adding a screenshot so it is clear. Please refer No search result in overview (Gnome 3.12.2)

I was googling and found a close one on askubuntu. But that was for missing icons in overview mode. It mentioned something about tracker. I remembered there was some message regarding tracker (mentioned with red colored *) but the emerge continued and almost all desktop ops seems OK. I don't know how to get back to that message. I did re-emerge nautilus with tracker use flag and rebooted system. Nil fix.
Back to top
View user's profile Send private message
jrevi
Tux's lil' helper
Tux's lil' helper


Joined: 08 Sep 2005
Posts: 129

PostPosted: Thu Jul 03, 2014 7:16 am    Post subject: Reply with quote

Hi,

I have exactly the same issue... any help would be appreciated... :)

Best,
Jerome
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Thu Jul 03, 2014 1:24 pm    Post subject: Reply with quote

Sorry, I haven't found a solution. I am checking everyday to see if somebody has any suggestion. :-D
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Thu Jul 03, 2014 5:03 pm    Post subject: Reply with quote

I noticed something strange. I have Fedora 20 on VM on another machine and it has two extra directories 'js' and 'modes' and an image 'wanda.jpg' under /usr/share/gnome-shell. Gentoo has only 'search-providers' and 'theme' directories, as shown below.
Code:

sai@a4741 ~ $ ls -la /usr/share/gnome-shell/
total 16
drwxr-xr-x   4 root root 4096 Jun 24 17:56 .
drwxr-xr-x 195 root root 4096 Jul  3 19:13 ..
drwxr-xr-x   2 root root 4096 Jun 28 15:44 search-providers
drwxr-xr-x   2 root root 4096 Jun 26 15:51 theme

As for as I can see, there are no special use flags for gnome-shell.
Code:

sai@a4741 ~ $ emerge -pv gnome-shell

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] gnome-base/gnome-shell-3.12.2  USE="bluetooth i18n networkmanager (-openrc-force)" PYTHON_TARGETS="python2_7 (-python2_6)" 1,505 kB

Total: 1 package (1 reinstall), Size of downloads: 1,505 kB


Gentoo Gnome is at version 3.12.2 whereas Fedora is at 3.10 but I am not sure, if there were changes between 3.10 and 3.12 and these two directories are no longer present. In Fedora I saw a script /usr/share/gnome-shell/js/ui/search.js. I think this is the one responsible for overview search?!

I then glance through gnome-shell-3.12.2 ebuid. Although I have no clue what they are, I found 'gjs' and 'json-glib' interesting. I checked my system and they are already installed.

Any clues what's going on?
Back to top
View user's profile Send private message
Xander314
n00b
n00b


Joined: 16 Apr 2012
Posts: 61

PostPosted: Thu Jul 03, 2014 5:30 pm    Post subject: Reply with quote

I'm having the exact same issue. I wondered if it was a problem with Tracker (which from what I have read seems to power the GNOME Shell search). However, Tracker seems to be working fine. For example
Code:
tracker-search --software gedit

successfully finds an application shortcut for gedit. Nonetheless searching for gedit in GNOME Shell gives nothing.

Hopefully someone will be able to tell us what's going on here soon enough. In the mean time maybe it's worth the rest of you checking if tracker is working for you, to see if we really have the same issue. If so perhaps we should file a bug report if one doesn't exist yet.
Back to top
View user's profile Send private message
Xander314
n00b
n00b


Joined: 16 Apr 2012
Posts: 61

PostPosted: Thu Jul 03, 2014 5:35 pm    Post subject: Reply with quote

saivinoba wrote:
I noticed something strange. I have Fedora 20 on VM on another machine and it has two extra directories 'js' and 'modes' and an image 'wanda.jpg' under /usr/share/gnome-shell. Gentoo has only 'search-providers' and 'theme' directories, as shown below.


This superuser thread may explain the missing directories.
http://superuser.com/questions/738180/why-is-usr-share-gnome-shell-js-missing

It says that the js files are embedded in a gnome-shell.so. Probing this file with gresource as explained on superuser yields a list of files containing search.js.
Back to top
View user's profile Send private message
Xander314
n00b
n00b


Joined: 16 Apr 2012
Posts: 61

PostPosted: Thu Jul 03, 2014 6:12 pm    Post subject: Reply with quote

Also perhaps it's worth comparing the contents of search-providers on our Gentoo installs and your Fedora VM.

On Gentoo I have
Code:

~ $ ls /usr/share/gnome-shell/search-providers/
epiphany-search-provider.ini
gnome-contacts-search-provider.ini
gnome-control-center-search-provider.ini
gnome-terminal-search-provider.ini
nautilus-search-provider.ini
org.gnome.Documents.search-provider.ini
seahorse-search-provider.ini


PS: Sorry for triple posting -- I'm just eager to get this issue sorted!
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Fri Jul 04, 2014 6:31 pm    Post subject: Reply with quote

Hi jrevi and Xander314, thanks for your inputs. It's some consolation that I'm not alone with this nuisance :-)

Xander314, tracker seems to be working fine just like in your case. Thanks for the link. I confirmed I had a lot of .js files (including search.js) when checked with gresource command. However, the script that was given there did not help solve our problem.

The files under 'search-providers' under Fedora 20 is:
Code:

[svinoba@fedora-vbox ~]$ ls -w 1 /usr/share/gnome-shell/search-providers/
gnome-contacts-search-provider.ini
gnome-control-center-search-provider.ini
gnome-documents-search-provider.ini
nautilus-search-provider.ini
seahorse-search-provider.ini

and under my Gentoo install is
Code:

sai@a4741 ~ $ ls -w 1 /usr/share/gnome-shell/search-providers/
gnome-control-center-search-provider.ini
gnome-terminal-search-provider.ini
nautilus-search-provider.ini
org.gnome.Documents.search-provider.ini
org.gnome.Photos.search-provider.ini


Contents of gnome-control-center-search-provider.ini and nautilus-search-provider.ini which are common is identical.
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Sat Jul 05, 2014 1:04 am    Post subject: Reply with quote

Assuming that we are looking in the right direction, I'm posting the search.js from Gentoo and Fedora. Btw, Fedora VM had one extra file searchDisplay.js. I'm not sure if the files have been combined in Gnome 3.12 to cleanup code or I'm missing something from my Gentoo install.

search.js from Gentoo (Gnome 3.12)
Code:

// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-

const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;

const AppDisplay = imports.ui.appDisplay;
const DND = imports.ui.dnd;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const RemoteSearch = imports.ui.remoteSearch;
const Separator = imports.ui.separator;
const Util = imports.misc.util;

const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';

const MAX_LIST_SEARCH_RESULTS_ROWS = 3;
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;

const SearchSystem = new Lang.Class({
    Name: 'SearchSystem',

    _init: function() {
        this._providers = [];

        this._registerProvider(new AppDisplay.AppSearchProvider());

        this._searchSettings = new Gio.Settings({ schema: SEARCH_PROVIDERS_SCHEMA });
        this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
        this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
        this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));

        this._reloadRemoteProviders();

        this._cancellable = new Gio.Cancellable();
    },

    addProvider: function(provider) {
        this._providers.push(provider);
        this.emit('providers-changed');
    },

    _reloadRemoteProviders: function() {
        let remoteProviders = this._providers.filter(function(provider) {
            return provider.isRemoteProvider;
        });
        remoteProviders.forEach(Lang.bind(this, function(provider) {
            this._unregisterProvider(provider);
        }));

        RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
            providers.forEach(Lang.bind(this, this._registerProvider));
        }));

        this.emit('providers-changed');
    },

    _registerProvider: function (provider) {
        this._providers.push(provider);
    },

    _unregisterProvider: function (provider) {
        let index = this._providers.indexOf(provider);
        this._providers.splice(index, 1);

        if (provider.display)
            provider.display.destroy();
    },

    getProviders: function() {
        return this._providers;
    },

    getTerms: function() {
        return this._terms;
    },

    reset: function() {
        this._terms = [];
        this._results = {};
    },

    _gotResults: function(results, provider) {
        this._results[provider.id] = results;
        this.emit('search-updated', provider, results);
    },

    setTerms: function(terms) {
        this._cancellable.cancel();
        this._cancellable.reset();

        let previousResults = this._results;
        let previousTerms = this._terms;
        this.reset();

        if (!terms)
            return;

        let searchString = terms.join(' ');
        let previousSearchString = previousTerms.join(' ');
        if (searchString == previousSearchString)
            return;

        let isSubSearch = false;
        if (previousTerms.length > 0)
            isSubSearch = searchString.indexOf(previousSearchString) == 0;

        this._terms = terms;

        this._providers.forEach(Lang.bind(this, function(provider) {
            let previousProviderResults = previousResults[provider.id];
            if (isSubSearch && previousProviderResults)
                provider.getSubsearchResultSet(previousProviderResults, terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
            else
                provider.getInitialResultSet(terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
        }));
    }
});
Signals.addSignalMethods(SearchSystem.prototype);

const MaxWidthBin = new Lang.Class({
    Name: 'MaxWidthBin',
    Extends: St.Bin,

    vfunc_allocate: function(box, flags) {
        let themeNode = this.get_theme_node();
        let maxWidth = themeNode.get_max_width();
        let availWidth = box.x2 - box.x1;
        let adjustedBox = box;

        if (availWidth > maxWidth) {
            let excessWidth = availWidth - maxWidth;
            adjustedBox.x1 += Math.floor(excessWidth / 2);
            adjustedBox.x2 -= Math.floor(excessWidth / 2);
        }

        this.parent(adjustedBox, flags);
    }
});

const SearchResult = new Lang.Class({
    Name: 'SearchResult',

    _init: function(provider, metaInfo) {
        this.provider = provider;
        this.metaInfo = metaInfo;

        this.actor = new St.Button({ reactive: true,
                                     can_focus: true,
                                     track_hover: true,
                                     x_align: St.Align.START,
                                     y_fill: true });

        this.actor._delegate = this;
        this.actor.connect('clicked', Lang.bind(this, this.activate));
    },

    activate: function() {
        this.emit('activate', this.metaInfo.id);
    },

    setSelected: function(selected) {
        if (selected)
            this.actor.add_style_pseudo_class('selected');
        else
            this.actor.remove_style_pseudo_class('selected');
    }
});
Signals.addSignalMethods(SearchResult.prototype);

const ListSearchResult = new Lang.Class({
    Name: 'ListSearchResult',
    Extends: SearchResult,

    ICON_SIZE: 64,

    _init: function(provider, metaInfo) {
        this.parent(provider, metaInfo);

        this.actor.style_class = 'list-search-result';
        this.actor.x_fill = true;

        let content = new St.BoxLayout({ style_class: 'list-search-result-content',
                                         vertical: false });
        this.actor.set_child(content);

        // An icon for, or thumbnail of, content
        let icon = this.metaInfo['createIcon'](this.ICON_SIZE);
        if (icon) {
            content.add(icon);
        }

        let details = new St.BoxLayout({ vertical: true });
        content.add(details, { x_fill: true,
                               y_fill: false,
                               x_align: St.Align.START,
                               y_align: St.Align.MIDDLE });

        let title = new St.Label({ style_class: 'list-search-result-title',
                                   text: this.metaInfo['name'] })
        details.add(title, { x_fill: false,
                             y_fill: false,
                             x_align: St.Align.START,
                             y_align: St.Align.START });
        this.actor.label_actor = title;

        if (this.metaInfo['description']) {
            let description = new St.Label({ style_class: 'list-search-result-description' });
            description.clutter_text.set_markup(this.metaInfo['description']);
            details.add(description, { x_fill: false,
                                       y_fill: false,
                                       x_align: St.Align.START,
                                       y_align: St.Align.END });
        }
    }
});

const GridSearchResult = new Lang.Class({
    Name: 'GridSearchResult',
    Extends: SearchResult,

    _init: function(provider, metaInfo) {
        this.parent(provider, metaInfo);

        this.actor.style_class = 'grid-search-result';

        let content = provider.createResultObject(metaInfo);
        let dragSource = null;

        if (content == null) {
            let actor = new St.Bin();
            let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
                                             { createIcon: this.metaInfo['createIcon'] });
            actor.set_child(icon.actor);
            actor.label_actor = icon.label;
            dragSource = icon.icon;
            content = { actor: actor, icon: icon };
        } else {
            if (content._delegate && content._delegate.getDragActorSource)
                dragSource = content._delegate.getDragActorSource();
        }

        this.actor.set_child(content.actor);
        this.actor.label_actor = content.actor.label_actor;
        this.icon = content.icon;

        let draggable = DND.makeDraggable(this.actor);
        draggable.connect('drag-begin',
                          Lang.bind(this, function() {
                              Main.overview.beginItemDrag(this);
                          }));
        draggable.connect('drag-cancelled',
                          Lang.bind(this, function() {
                              Main.overview.cancelledItemDrag(this);
                          }));
        draggable.connect('drag-end',
                          Lang.bind(this, function() {
                              Main.overview.endItemDrag(this);
                          }));

        if (!dragSource)
            // not exactly right, but alignment problems are hard to notice
            dragSource = content;
        this._dragActorSource = dragSource;
    },

    getDragActorSource: function() {
        return this._dragActorSource;
    },

    getDragActor: function() {
        return this.metaInfo['createIcon'](Main.overview.dashIconSize);
    },

    shellWorkspaceLaunch: function(params) {
        if (this.provider.dragActivateResult)
            this.provider.dragActivateResult(this.metaInfo.id, params);
        else
            this.provider.activateResult(this.metaInfo.id, this.terms);
    }
});

const SearchResultsBase = new Lang.Class({
    Name: 'SearchResultsBase',

    _init: function(provider) {
        this.provider = provider;

        this._terms = [];

        this.actor = new St.BoxLayout({ style_class: 'search-section',
                                        vertical: true });

        this._resultDisplayBin = new St.Bin({ x_fill: true,
                                              y_fill: true });
        this.actor.add(this._resultDisplayBin, { expand: true });

        let separator = new Separator.HorizontalSeparator({ style_class: 'search-section-separator' });
        this.actor.add(separator.actor);

        this._resultDisplays = {};

        this._cancellable = new Gio.Cancellable();
    },

    destroy: function() {
        this.actor.destroy();
        this._terms = [];
    },

    _clearResultDisplay: function() {
    },

    clear: function() {
        for (let resultId in this._resultDisplays)
            this._resultDisplays[resultId].actor.destroy();
        this._resultDisplays = {};
        this._clearResultDisplay();
        this.actor.hide();
    },

    _keyFocusIn: function(actor) {
        this.emit('key-focus-in', actor);
    },

    _activateResult: function(result, id) {
        this.provider.activateResult(id, this._terms);
        Main.overview.toggle();
    },

    _setMoreIconVisible: function(visible) {
    },

    _ensureResultActors: function(results, callback) {
        let metasNeeded = results.filter(Lang.bind(this, function(resultId) {
            return this._resultDisplays[resultId] === undefined;
        }));

        if (metasNeeded.length === 0) {
            callback(true);
        } else {
            this._cancellable.cancel();
            this._cancellable.reset();

            this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) {
                if (metas.length == 0) {
                    callback(false);
                    return;
                }
                if (metas.length != metasNeeded.length) {
                    log('Wrong number of result metas returned by search provider');
                    callback(false);
                    return;
                }

                metasNeeded.forEach(Lang.bind(this, function(resultId, i) {
                    let meta = metas[i];
                    let display = this._createResultDisplay(meta);
                    display.connect('activate', Lang.bind(this, this._activateResult));
                    display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
                    this._resultDisplays[resultId] = display;
                }));
                callback(true);
            }), this._cancellable);
        }
    },

    updateSearch: function(providerResults, terms, callback) {
        this._terms = terms;

        if (providerResults.length == 0) {
            this._clearResultDisplay();
            this.actor.hide();
            callback();
        } else {
            let maxResults = this._getMaxDisplayedResults();
            let results = this.provider.filterResults(providerResults, maxResults);
            let hasMoreResults = results.length < providerResults.length;

            this._ensureResultActors(results, Lang.bind(this, function(successful) {
                this._clearResultDisplay();
                if (!successful)
                    return;

                // To avoid CSS transitions causing flickering when
                // the first search result stays the same, we hide the
                // content while filling in the results.
                this.actor.hide();
                this._clearResultDisplay();
                results.forEach(Lang.bind(this, function(resultId) {
                    this._addItem(this._resultDisplays[resultId]);
                }));
                this._setMoreIconVisible(hasMoreResults && this.provider.canLaunchSearch);
                this.actor.show();
                callback();
            }));
        }
    }
});

const ListSearchResults = new Lang.Class({
    Name: 'ListSearchResults',
    Extends: SearchResultsBase,

    _init: function(provider) {
        this.parent(provider);

        this._container = new St.BoxLayout({ style_class: 'search-section-content' });
        this.providerIcon = new ProviderIcon(provider);
        this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
        this.providerIcon.connect('clicked', Lang.bind(this,
            function() {
                provider.launchSearch(this._terms);
                Main.overview.toggle();
            }));

        this._container.add(this.providerIcon, { x_fill: false,
                                                 y_fill: false,
                                                 x_align: St.Align.START,
                                                 y_align: St.Align.START });

        this._content = new St.BoxLayout({ style_class: 'list-search-results',
                                           vertical: true });
        this._container.add(this._content, { expand: true });

        this._resultDisplayBin.set_child(this._container);
    },

    _setMoreIconVisible: function(visible) {
        this.providerIcon.moreIcon.visible = true;
    },

    _getMaxDisplayedResults: function() {
        return MAX_LIST_SEARCH_RESULTS_ROWS;
    },

    _clearResultDisplay: function () {
        this._content.remove_all_children();
    },

    _createResultDisplay: function(meta) {
        return new ListSearchResult(this.provider, meta);
    },

    _addItem: function(display) {
        this._content.add_actor(display.actor);
    },

    getFirstResult: function() {
        if (this._content.get_n_children() > 0)
            return this._content.get_child_at_index(0)._delegate;
        else
            return null;
    }
});
Signals.addSignalMethods(ListSearchResults.prototype);

const GridSearchResults = new Lang.Class({
    Name: 'GridSearchResults',
    Extends: SearchResultsBase,

    _init: function(provider) {
        this.parent(provider);

        this._grid = new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
                                             xAlign: St.Align.START });
        this._bin = new St.Bin({ x_align: St.Align.MIDDLE });
        this._bin.set_child(this._grid.actor);

        this._resultDisplayBin.set_child(this._bin);
    },

    _getMaxDisplayedResults: function() {
        return this._grid.columnsForWidth(this._bin.width) * this._grid.getRowLimit();
    },

    _renderResults: function(metas) {
        for (let i = 0; i < metas.length; i++) {
            let display = new GridSearchResult(this.provider, metas[i]);
            display.connect('activate', Lang.bind(this, this._activateResult));
            display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
            this._grid.addItem(display);
        }
    },

    _clearResultDisplay: function () {
        this._grid.removeAll();
    },

    _createResultDisplay: function(meta) {
        return new GridSearchResult(this.provider, meta);
    },

    _addItem: function(display) {
        this._grid.addItem(display);
    },

    getFirstResult: function() {
        if (this._grid.visibleItemsCount() > 0)
            return this._grid.getItemAtIndex(0)._delegate;
        else
            return null;
    }
});
Signals.addSignalMethods(GridSearchResults.prototype);

const SearchResults = new Lang.Class({
    Name: 'SearchResults',

    _init: function() {
        this.actor = new St.BoxLayout({ name: 'searchResults',
                                        vertical: true });

        this._content = new St.BoxLayout({ name: 'searchResultsContent',
                                           vertical: true });
        this._contentBin = new MaxWidthBin({ name: 'searchResultsBin',
                                             x_fill: true,
                                             y_fill: true,
                                             child: this._content });

        let scrollChild = new St.BoxLayout();
        scrollChild.add(this._contentBin, { expand: true });

        this._scrollView = new St.ScrollView({ x_fill: true,
                                               y_fill: false,
                                               overlay_scrollbars: true,
                                               style_class: 'search-display vfade' });
        this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
        this._scrollView.add_actor(scrollChild);
        let action = new Clutter.PanAction({ interpolate: true });
        action.connect('pan', Lang.bind(this, this._onPan));
        this._scrollView.add_action(action);

        this.actor.add(this._scrollView, { x_fill: true,
                                           y_fill: true,
                                           expand: true,
                                           x_align: St.Align.START,
                                           y_align: St.Align.START });

        this._statusText = new St.Label({ style_class: 'search-statustext' });
        this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
                                       y_align: St.Align.MIDDLE });
        this._content.add(this._statusBin, { expand: true });
        this._statusBin.add_actor(this._statusText);

        this._highlightDefault = false;
        this._defaultResult = null;

        this._searchSystem = new SearchSystem();
        this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
        this._searchSystem.connect('providers-changed', Lang.bind(this, this._updateProviderDisplays));
        this._updateProviderDisplays();
    },

    _onPan: function(action) {
        let [dist, dx, dy] = action.get_motion_delta(0);
        let adjustment = this._scrollView.vscroll.adjustment;
        adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
        return false;
    },

    _keyFocusIn: function(provider, actor) {
        Util.ensureActorVisibleInScrollView(this._scrollView, actor);
    },

    _ensureProviderDisplay: function(provider) {
        if (provider.display)
            return;

        let providerDisplay;
        if (provider.appInfo)
            providerDisplay = new ListSearchResults(provider);
        else
            providerDisplay = new GridSearchResults(provider);

        providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
        this._content.add(providerDisplay.actor);
        provider.display = providerDisplay;
    },

    _updateProviderDisplays: function() {
        this._searchSystem.getProviders().forEach(Lang.bind(this, this._ensureProviderDisplay));
    },

    _clearDisplay: function() {
        this._searchSystem.getProviders().forEach(function(provider) {
            provider.display.clear();
        });
    },

    reset: function() {
        this._searchSystem.reset();
        this._statusBin.hide();
        this._clearDisplay();
        this._defaultResult = null;
    },

    startingSearch: function() {
        this.reset();
        this._statusText.set_text(_("Searching…"));
        this._statusBin.show();
    },

    setTerms: function(terms) {
        this._searchSystem.setTerms(terms);
    },

    _maybeSetInitialSelection: function() {
        let newDefaultResult = null;

        let providers = this._searchSystem.getProviders();
        for (let i = 0; i < providers.length; i++) {
            let provider = providers[i];
            let display = provider.display;

            if (!display.actor.visible)
                continue;

            let firstResult = display.getFirstResult();
            if (firstResult) {
                newDefaultResult = firstResult;
                break; // select this one!
            }
        }

        if (newDefaultResult != this._defaultResult) {
            if (this._defaultResult)
                this._defaultResult.setSelected(false);
            if (newDefaultResult) {
                newDefaultResult.setSelected(this._highlightDefault);
                if (this._highlightDefault)
                    Util.ensureActorVisibleInScrollView(this._scrollView, newDefaultResult.actor);
            }

            this._defaultResult = newDefaultResult;
        }
    },

    _updateStatusText: function () {
        let haveResults = this._searchSystem.getProviders().some(function(provider) {
            let display = provider.display;
            return (display.getFirstResult() != null);
        });

        if (!haveResults) {
            this._statusText.set_text(_("No results."));
            this._statusBin.show();
        } else {
            this._statusBin.hide();
        }
    },

    _updateResults: function(searchSystem, provider, results) {
        let terms = searchSystem.getTerms();
        let display = provider.display;

        display.updateSearch(results, terms, Lang.bind(this, function() {
            this._maybeSetInitialSelection();
            this._updateStatusText();
        }));
    },

    activateDefault: function() {
        if (this._defaultResult)
            this._defaultResult.activate();
    },

    highlightDefault: function(highlight) {
        this._highlightDefault = highlight;
        if (this._defaultResult) {
            this._defaultResult.setSelected(highlight);
            if (highlight)
                Util.ensureActorVisibleInScrollView(this._scrollView, this._defaultResult.actor);
        }
    },

    navigateFocus: function(direction) {
        let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
        if (direction == Gtk.DirectionType.TAB_BACKWARD ||
            direction == (rtl ? Gtk.DirectionType.RIGHT
                              : Gtk.DirectionType.LEFT) ||
            direction == Gtk.DirectionType.UP) {
            this.actor.navigate_focus(null, direction, false);
            return;
        }

        let from = this._defaultResult ? this._defaultResult.actor : null;
        this.actor.navigate_focus(from, direction, false);
    }
});

const ProviderIcon = new Lang.Class({
    Name: 'ProviderIcon',
    Extends: St.Button,

    PROVIDER_ICON_SIZE: 48,

    _init: function(provider) {
        this.provider = provider;
        this.parent({ style_class: 'search-provider-icon',
                      reactive: true,
                      can_focus: true,
                      accessible_name: provider.appInfo.get_name(),
                      track_hover: true });

        this._content = new St.Widget({ layout_manager: new Clutter.BinLayout() });
        this.set_child(this._content);

        let rtl = (this.get_text_direction() == Clutter.TextDirection.RTL);

        this.moreIcon = new St.Widget({ style_class: 'search-provider-icon-more',
                                        visible: false,
                                        x_align: rtl ? Clutter.ActorAlign.START : Clutter.ActorAlign.END,
                                        y_align: Clutter.ActorAlign.END,
                                        x_expand: true,
                                        y_expand: true });

        let icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE,
                                 gicon: provider.appInfo.get_icon() });
        this._content.add_actor(icon);
        this._content.add_actor(this.moreIcon);
    }
});


search.js found in Fedora VM
Code:

// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-

const Lang = imports.lang;
const Signals = imports.signals;

const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';

const SearchSystem = new Lang.Class({
    Name: 'SearchSystem',

    _init: function() {
        this._providers = [];
        this._remoteProviders = [];
        this.reset();
    },

    registerProvider: function (provider) {
        provider.searchSystem = this;
        this._providers.push(provider);

        if (provider.isRemoteProvider)
            this._remoteProviders.push(provider);
    },

    unregisterProvider: function (provider) {
        let index = this._providers.indexOf(provider);
        if (index == -1)
            return;
        provider.searchSystem = null;
        this._providers.splice(index, 1);

        let remoteIndex = this._remoteProviders.indexOf(provider);
        if (remoteIndex != -1)
            this._remoteProviders.splice(remoteIndex, 1);
    },

    getProviders: function() {
        return this._providers;
    },

    getRemoteProviders: function() {
        return this._remoteProviders;
    },

    getTerms: function() {
        return this._previousTerms;
    },

    reset: function() {
        this._previousTerms = [];
        this._previousResults = [];
    },

    setResults: function(provider, results) {
        let i = this._providers.indexOf(provider);
        if (i == -1)
            return;

        this._previousResults[i] = [provider, results];
        this.emit('search-updated', this._previousResults[i]);
    },

    updateSearchResults: function(terms) {
        if (!terms)
            return;

        let searchString = terms.join(' ');
        let previousSearchString = this._previousTerms.join(' ');
        if (searchString == previousSearchString)
            return;

        let isSubSearch = false;
        if (this._previousTerms.length > 0)
            isSubSearch = searchString.indexOf(previousSearchString) == 0;

        let previousResultsArr = this._previousResults;

        let results = [];
        this._previousTerms = terms;
        this._previousResults = results;

        if (isSubSearch) {
            for (let i = 0; i < this._providers.length; i++) {
                let [provider, previousResults] = previousResultsArr[i];
                try {
                    results.push([provider, []]);
                    provider.getSubsearchResultSet(previousResults, terms);
                } catch (error) {
                    log('A ' + error.name + ' has occured in ' + provider.id + ': ' + error.message);
                }
            }
        } else {
            for (let i = 0; i < this._providers.length; i++) {
                let provider = this._providers[i];
                try {
                    results.push([provider, []]);
                    provider.getInitialResultSet(terms);
                } catch (error) {
                    log('A ' + error.name + ' has occured in ' + provider.id + ': ' + error.message);
                }
            }
        }
    }
});
Signals.addSignalMethods(SearchSystem.prototype);


searchDisplay.js found in Fedora 20 VM
Code:

// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-

const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;

const DND = imports.ui.dnd;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const Separator = imports.ui.separator;
const Search = imports.ui.search;
const Util = imports.misc.util;

const MAX_LIST_SEARCH_RESULTS_ROWS = 3;
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;

const MaxWidthBin = new Lang.Class({
    Name: 'MaxWidthBin',
    Extends: St.Bin,

    vfunc_allocate: function(box, flags) {
        let themeNode = this.get_theme_node();
        let maxWidth = themeNode.get_max_width();
        let availWidth = box.x2 - box.x1;
        let adjustedBox = box;

        if (availWidth > maxWidth) {
            let excessWidth = availWidth - maxWidth;
            adjustedBox.x1 += Math.floor(excessWidth / 2);
            adjustedBox.x2 -= Math.floor(excessWidth / 2);
        }

        this.parent(adjustedBox, flags);
    }
});

const SearchResult = new Lang.Class({
    Name: 'SearchResult',

    _init: function(provider, metaInfo, terms) {
        this.provider = provider;
        this.metaInfo = metaInfo;
        this.terms = terms;

        this.actor = new St.Button({ reactive: true,
                                     can_focus: true,
                                     track_hover: true,
                                     x_align: St.Align.START,
                                     y_fill: true });

        this.actor._delegate = this;
        this.actor.connect('clicked', Lang.bind(this, this.activate));
    },

    activate: function() {
        this.provider.activateResult(this.metaInfo.id, this.terms);
        Main.overview.toggle();
    },

    setSelected: function(selected) {
        if (selected)
            this.actor.add_style_pseudo_class('selected');
        else
            this.actor.remove_style_pseudo_class('selected');
    }
});

const ListSearchResult = new Lang.Class({
    Name: 'ListSearchResult',
    Extends: SearchResult,

    ICON_SIZE: 64,

    _init: function(provider, metaInfo, terms) {
        this.parent(provider, metaInfo, terms);

        this.actor.style_class = 'list-search-result';
        this.actor.x_fill = true;

        let content = new St.BoxLayout({ style_class: 'list-search-result-content',
                                         vertical: false });
        this.actor.set_child(content);

        // An icon for, or thumbnail of, content
        let icon = this.metaInfo['createIcon'](this.ICON_SIZE);
        if (icon) {
            content.add(icon);
        }

        let details = new St.BoxLayout({ vertical: true });
        content.add(details, { x_fill: true,
                               y_fill: false,
                               x_align: St.Align.START,
                               y_align: St.Align.MIDDLE });

        let title = new St.Label({ style_class: 'list-search-result-title',
                                   text: this.metaInfo['name'] })
        details.add(title, { x_fill: false,
                             y_fill: false,
                             x_align: St.Align.START,
                             y_align: St.Align.START });
        this.actor.label_actor = title;

        if (this.metaInfo['description']) {
            let description = new St.Label({ style_class: 'list-search-result-description' });
            description.clutter_text.set_markup(this.metaInfo['description']);
            details.add(description, { x_fill: false,
                                       y_fill: false,
                                       x_align: St.Align.START,
                                       y_align: St.Align.END });
        }
    }
});

const GridSearchResult = new Lang.Class({
    Name: 'GridSearchResult',
    Extends: SearchResult,

    _init: function(provider, metaInfo, terms) {
        this.parent(provider, metaInfo, terms);

        this.actor.style_class = 'grid-search-result';

        let content = provider.createResultObject(metaInfo, terms);
        let dragSource = null;

        if (content == null) {
            let actor = new St.Bin();
            let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
                                             { createIcon: this.metaInfo['createIcon'] });
            actor.set_child(icon.actor);
            actor.label_actor = icon.label;
            dragSource = icon.icon;
            content = { actor: actor, icon: icon };
        } else {
            if (content._delegate && content._delegate.getDragActorSource)
                dragSource = content._delegate.getDragActorSource();
        }

        this.actor.set_child(content.actor);
        this.actor.label_actor = content.actor.label_actor;
        this.icon = content.icon;

        let draggable = DND.makeDraggable(this.actor);
        draggable.connect('drag-begin',
                          Lang.bind(this, function() {
                              Main.overview.beginItemDrag(this);
                          }));
        draggable.connect('drag-cancelled',
                          Lang.bind(this, function() {
                              Main.overview.cancelledItemDrag(this);
                          }));
        draggable.connect('drag-end',
                          Lang.bind(this, function() {
                              Main.overview.endItemDrag(this);
                          }));

        if (!dragSource)
            // not exactly right, but alignment problems are hard to notice
            dragSource = content;
        this._dragActorSource = dragSource;
    },

    getDragActorSource: function() {
        return this._dragActorSource;
    },

    getDragActor: function() {
        return this.metaInfo['createIcon'](Main.overview.dashIconSize);
    },

    shellWorkspaceLaunch: function(params) {
        if (this.provider.dragActivateResult)
            this.provider.dragActivateResult(this.metaInfo.id, params);
        else
            this.provider.activateResult(this.metaInfo.id, this.terms);
    }
});

const SearchResultsBase = new Lang.Class({
    Name: 'SearchResultsBase',

    _init: function(provider) {
        this.provider = provider;

        this._terms = [];

        this.actor = new St.BoxLayout({ style_class: 'search-section',
                                        vertical: true });

        this._resultDisplayBin = new St.Bin({ x_fill: true,
                                              y_fill: true });
        this.actor.add(this._resultDisplayBin, { expand: true });

        let separator = new Separator.HorizontalSeparator({ style_class: 'search-section-separator' });
        this.actor.add(separator.actor);
    },

    destroy: function() {
        this.actor.destroy();
        this._terms = [];
    },

    _clearResultDisplay: function() {
    },

    clear: function() {
        this._clearResultDisplay();
        this.actor.hide();
    },

    _keyFocusIn: function(actor) {
        this.emit('key-focus-in', actor);
    },

    _setMoreIconVisible: function(visible) {
    },

    updateSearch: function(providerResults, terms, callback) {
        this._terms = terms;

        if (providerResults.length == 0) {
            this._clearResultDisplay();
            this.actor.hide();
            callback();
        } else {
            let maxResults = this._getMaxDisplayedResults();
            let results = this.provider.filterResults(providerResults, maxResults);
            let hasMoreResults = results.length < providerResults.length;

            this.provider.getResultMetas(results, Lang.bind(this, function(metas) {
                this.clear();

                // To avoid CSS transitions causing flickering when
                // the first search result stays the same, we hide the
                // content while filling in the results.
                this.actor.hide();
                this._clearResultDisplay();
                this._renderResults(metas);
                this._setMoreIconVisible(hasMoreResults && this.provider.canLaunchSearch);
                this.actor.show();
                callback();
            }));
        }
    }
});

const ListSearchResults = new Lang.Class({
    Name: 'ListSearchResults',
    Extends: SearchResultsBase,

    _init: function(provider) {
        this.parent(provider);

        this._container = new St.BoxLayout({ style_class: 'search-section-content' });
        this.providerIcon = new ProviderIcon(provider);
        this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
        this.providerIcon.connect('clicked', Lang.bind(this,
            function() {
                provider.launchSearch(this._terms);
                Main.overview.toggle();
            }));

        this._container.add(this.providerIcon, { x_fill: false,
                                                 y_fill: false,
                                                 x_align: St.Align.START,
                                                 y_align: St.Align.START });

        this._content = new St.BoxLayout({ style_class: 'list-search-results',
                                           vertical: true });
        this._container.add(this._content, { expand: true });

        this._resultDisplayBin.set_child(this._container);
    },

    _setMoreIconVisible: function(visible) {
        this.providerIcon.moreIcon.visible = true;
    },

    _getMaxDisplayedResults: function() {
        return MAX_LIST_SEARCH_RESULTS_ROWS;
    },

    _renderResults: function(metas) {
        for (let i = 0; i < metas.length; i++) {
            let display = new ListSearchResult(this.provider, metas[i], this._terms);
            display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
            this._content.add_actor(display.actor);
        }
    },

    _clearResultDisplay: function () {
        this._content.destroy_all_children();
    },

    getFirstResult: function() {
        if (this._content.get_n_children() > 0)
            return this._content.get_child_at_index(0)._delegate;
        else
            return null;
    }
});
Signals.addSignalMethods(ListSearchResults.prototype);

const GridSearchResults = new Lang.Class({
    Name: 'GridSearchResults',
    Extends: SearchResultsBase,

    _init: function(provider) {
        this.parent(provider);

        this._grid = new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
                                             xAlign: St.Align.START });
        this._bin = new St.Bin({ x_align: St.Align.MIDDLE });
        this._bin.set_child(this._grid.actor);

        this._resultDisplayBin.set_child(this._bin);
    },

    _getMaxDisplayedResults: function() {
        return this._grid.columnsForWidth(this._bin.width) * this._grid.getRowLimit();
    },

    _renderResults: function(metas) {
        for (let i = 0; i < metas.length; i++) {
            let display = new GridSearchResult(this.provider, metas[i], this._terms);
            display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
            this._grid.addItem(display);
        }
    },

    _clearResultDisplay: function () {
        this._grid.removeAll();
    },

    getFirstResult: function() {
        if (this._grid.visibleItemsCount() > 0)
            return this._grid.getItemAtIndex(0)._delegate;
        else
            return null;
    }
});
Signals.addSignalMethods(GridSearchResults.prototype);

const SearchResults = new Lang.Class({
    Name: 'SearchResults',

    _init: function(searchSystem) {
        this._searchSystem = searchSystem;
        this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));

        this.actor = new St.BoxLayout({ name: 'searchResults',
                                        vertical: true });

        this._content = new St.BoxLayout({ name: 'searchResultsContent',
                                           vertical: true });
        this._contentBin = new MaxWidthBin({ name: 'searchResultsBin',
                                             x_fill: true,
                                             y_fill: true,
                                             child: this._content });

        let scrollChild = new St.BoxLayout();
        scrollChild.add(this._contentBin, { expand: true });

        this._scrollView = new St.ScrollView({ x_fill: true,
                                               y_fill: false,
                                               overlay_scrollbars: true,
                                               style_class: 'search-display vfade' });
        this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
        this._scrollView.add_actor(scrollChild);
        let action = new Clutter.PanAction({ interpolate: true });
        action.connect('pan', Lang.bind(this, this._onPan));
        this._scrollView.add_action(action);

        this.actor.add(this._scrollView, { x_fill: true,
                                           y_fill: true,
                                           expand: true,
                                           x_align: St.Align.START,
                                           y_align: St.Align.START });

        this._statusText = new St.Label({ style_class: 'search-statustext' });
        this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
                                       y_align: St.Align.MIDDLE });
        this._content.add(this._statusBin, { expand: true });
        this._statusBin.add_actor(this._statusText);
        this._providers = this._searchSystem.getProviders();
        this._providerDisplays = {};
        for (let i = 0; i < this._providers.length; i++) {
            this.createProviderDisplay(this._providers[i]);
        }

        this._highlightDefault = false;
        this._defaultResult = null;
    },

    _onPan: function(action) {
        let [dist, dx, dy] = action.get_motion_delta(0);
        let adjustment = this._scrollView.vscroll.adjustment;
        adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
        return false;
    },

    _keyFocusIn: function(provider, actor) {
        Util.ensureActorVisibleInScrollView(this._scrollView, actor);
    },

    createProviderDisplay: function(provider) {
        let providerDisplay = null;

        if (provider.appInfo) {
            providerDisplay = new ListSearchResults(provider);
        } else {
            providerDisplay = new GridSearchResults(provider);
        }

        providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
        this._providerDisplays[provider.id] = providerDisplay;
        this._content.add(providerDisplay.actor);
    },

    destroyProviderDisplay: function(provider) {
        this._providerDisplays[provider.id].destroy();
        delete this._providerDisplays[provider.id];
    },

    _clearDisplay: function() {
        for (let i = 0; i < this._providers.length; i++) {
            let provider = this._providers[i];
            let providerDisplay = this._providerDisplays[provider.id];
            providerDisplay.clear();
        }
    },

    reset: function() {
        this._searchSystem.reset();
        this._statusBin.hide();
        this._clearDisplay();
        this._defaultResult = null;
    },

    startingSearch: function() {
        this.reset();
        this._statusText.set_text(_("Searching…"));
        this._statusBin.show();
    },

    _maybeSetInitialSelection: function() {
        let newDefaultResult = null;

        for (let i = 0; i < this._providers.length; i++) {
            let provider = this._providers[i];
            let display = this._providerDisplays[provider.id];

            if (!display.actor.visible)
                continue;

            let firstResult = display.getFirstResult();
            if (firstResult) {
                newDefaultResult = firstResult;
                break; // select this one!
            }
        }

        if (newDefaultResult != this._defaultResult) {
            if (this._defaultResult)
                this._defaultResult.setSelected(false);
            if (newDefaultResult)
                newDefaultResult.setSelected(this._highlightDefault);

            this._defaultResult = newDefaultResult;
        }
    },

    _updateStatusText: function () {
        let haveResults = false;

        for (let i = 0; i < this._providers.length; i++) {
            let provider = this._providers[i];
            let display = this._providerDisplays[provider.id];
            if (display.getFirstResult()) {
                haveResults = true;
                break;
            }
        }

        if (!haveResults) {
            this._statusText.set_text(_("No results."));
            this._statusBin.show();
        } else {
            this._statusBin.hide();
        }
    },

    _updateResults: function(searchSystem, results) {
        let terms = searchSystem.getTerms();
        let [provider, providerResults] = results;
        let display = this._providerDisplays[provider.id];

        display.updateSearch(providerResults, terms, Lang.bind(this, function() {
            this._maybeSetInitialSelection();
            this._updateStatusText();
        }));
    },

    activateDefault: function() {
        if (this._defaultResult)
            this._defaultResult.activate();
    },

    highlightDefault: function(highlight) {
        this._highlightDefault = highlight;
        if (this._defaultResult)
            this._defaultResult.setSelected(highlight);
    },

    navigateFocus: function(direction) {
        let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
        if (direction == Gtk.DirectionType.TAB_BACKWARD ||
            direction == (rtl ? Gtk.DirectionType.RIGHT
                              : Gtk.DirectionType.LEFT) ||
            direction == Gtk.DirectionType.UP) {
            this.actor.navigate_focus(null, direction, false);
            return;
        }

        let from = this._defaultResult ? this._defaultResult.actor : null;
        this.actor.navigate_focus(from, direction, false);
    }
});

const ProviderIcon = new Lang.Class({
    Name: 'ProviderIcon',
    Extends: St.Button,

    PROVIDER_ICON_SIZE: 48,

    _init: function(provider) {
        this.provider = provider;
        this.parent({ style_class: 'search-provider-icon',
                      reactive: true,
                      can_focus: true,
                      accessible_name: provider.appInfo.get_name(),
                      track_hover: true });

        this._content = new St.Widget({ layout_manager: new Clutter.BinLayout() });
        this.set_child(this._content);

        let rtl = (this.get_text_direction() == Clutter.TextDirection.RTL);

        this.moreIcon = new St.Widget({ style_class: 'search-provider-icon-more',
                                        visible: false,
                                        x_align: rtl ? Clutter.ActorAlign.START : Clutter.ActorAlign.END,
                                        y_align: Clutter.ActorAlign.END,
                                        x_expand: true,
                                        y_expand: true });

        let icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE,
                                 gicon: provider.appInfo.get_icon() });
        this._content.add_actor(icon);
        this._content.add_actor(this.moreIcon);
    }
});


I have no clue whatsoever as to what does the above code mean. If somebody knowledgeable can take a look at them and see if there are any issues, I would be grateful.

Thanks in advance.
Back to top
View user's profile Send private message
santosjaycee0
n00b
n00b


Joined: 07 Jul 2014
Posts: 5
Location: Los Angeles

PostPosted: Mon Jul 07, 2014 12:47 am    Post subject: I had this problem, too. Reply with quote

I had searched for a way to get the search to work. After messing with my USE flags and checking for updates, which may have fixed this, I was able to get the search to work. I saw an update for gnome-base/gnome, today. That might have solved my problem.
Back to top
View user's profile Send private message
jrevi
Tux's lil' helper
Tux's lil' helper


Joined: 08 Sep 2005
Posts: 129

PostPosted: Mon Jul 07, 2014 11:53 am    Post subject: Re: I had this problem, too. Reply with quote

Hi,

santosjaycee0 wrote:
I had searched for a way to get the search to work. After messing with my USE flags and checking for updates, which may have fixed this, I was able to get the search to work. I saw an update for gnome-base/gnome, today. That might have solved my problem.


With which USE flags did you play ?

Best,
Jerome
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Mon Jul 07, 2014 5:54 pm    Post subject: Reply with quote

Hi santosjaycee0,
I am on ~amd64 with desktop/gnome/systemd profile. Basic USE flags in make.conf
Code:
USE="mmx sse sse2 ssse3 -qt3support -qt4 -kde"
and the rest from the profile itself. I updated the system today. Still no luck for me.

What profile are you using? As jrevi mentioned can you share your USE flags to compare.
Back to top
View user's profile Send private message
santosjaycee0
n00b
n00b


Joined: 07 Jul 2014
Posts: 5
Location: Los Angeles

PostPosted: Mon Jul 07, 2014 10:39 pm    Post subject: Re: I had this problem, too. Reply with quote

saivinoba wrote:
Hi santosjaycee0,
I am on ~amd64 with desktop/gnome/systemd profile. Basic USE flags in make.conf
Code:
USE="mmx sse sse2 ssse3 -qt3support -qt4 -kde"
and the rest from the profile itself. I updated the system today. Still no luck for me.

What profile are you using? As jrevi mentioned can you share your USE flags to compare.


I am using
Code:
  [3]   default/linux/amd64/13.0/desktop
as my profile.

My USE flags are:
Code:
 USE="vaapi -consolekit systemd ffmpeg gd gtk -qt4 -qt5 abi_x86_32 minizip gbm dbus mmx sse sse2 X a52 aac acpi aim alsa ao apache2 audiofile -branding bzip2 cdda cdr css cups dri dv dvd dvdr encode flac ftp geoip gif gimp gphoto2 gzip hddtemp icu ieee1394 imagemagick imlib inifile ios ipod ipv6 java javascript jpeg jpeg2k lame libass libnotify libsamplerate lm_sensors mad matroska modules mp3 mp4 mpeg multilib nls ogg openexr opengl pdf perl php png ppds pulseaudio python raw scanner sound speex ssl svg syslog theora tiff unicode usb vcd vdpau videos vorbis wavpack webkit wifi x264 xmpp xvid zlib vpx vhosts imap postgres mysql gnome"


Some changes, which may have contributed to the solution to my problem, was removing the "bindist" USE flag and adding the "gnome" USE flag, since I am using a /desktop profile.

I decided to do a
Code:
emerge -e system
to rebuild my system packages, since, for some reason, updating would spit out a traceback on line 50 of a certain python script.

Rebuilding my system packages solved that problem. I was now able to update my system again with "emerge --update --deep --newuse --with-bdeps=y @world"

I had to rebuild packages without the "bindist" USE flag. I'll experiment by adding the bindist USE flag again.

I am also using ~amd64
Back to top
View user's profile Send private message
santosjaycee0
n00b
n00b


Joined: 07 Jul 2014
Posts: 5
Location: Los Angeles

PostPosted: Mon Jul 07, 2014 10:58 pm    Post subject: A Different Problem Reply with quote

Apparently, the "bindist" USE flag was causing the following. It did not contribute to my solution in getting the search in gnome-shell to work.
Code:
Calculating dependencies... done!
Traceback (most recent call last):
  File "/usr/bin/emerge", line 50, in <module>
    retval = emerge_main()
  File "/usr/lib64/portage/pym/_emerge/main.py", line 1037, in emerge_main
    return run_action(emerge_config)
  File "/usr/lib64/portage/pym/_emerge/actions.py", line 4061, in run_action
    emerge_config.args, spinner)
  File "/usr/lib64/portage/pym/_emerge/actions.py", line 320, in action_build
    settings, trees, myopts, myparams, myaction, myfiles, spinner)
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 8403, in backtrack_depgraph
    myaction, myfiles, spinner)
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 8435, in _backtrack_depgraph
    success, favorites = mydepgraph.select_files(myfiles)
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 3093, in select_files
    return self._select_files(args)
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 3429, in _select_files
    return self._resolve(myfavorites)
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 3584, in _resolve
    self.altlist()
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 6229, in altlist
    self._resolve_conflicts()
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 6356, in _resolve_conflicts
    self._process_slot_conflicts()
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 1212, in _process_slot_conflicts
    self._solve_non_slot_operator_slot_conflicts()
  File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 1130, in _solve_non_slot_operator_slot_conflicts
    forced.add(nodes[0])
IndexError: tuple index out of range


Perhaps something among my USE flags or my profile setting should help. I'll continue to look into this.
Back to top
View user's profile Send private message
jrevi
Tux's lil' helper
Tux's lil' helper


Joined: 08 Sep 2005
Posts: 129

PostPosted: Fri Jul 18, 2014 8:00 am    Post subject: Reply with quote

Hi all,

I don't know if it's the same for you but I just see this in the journalctl logs when I type into the search area:

Code:
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: (gnome-shell:4930): Gjs-WARNING **: JS ERROR: TypeError: Gio.DesktopAppInfo.search is not a function
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: AppSearchProvider<.getInitialResultSet@resource:///org/gnome/shell/ui/appDisplay.js:873
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: SearchSystem<.setTerms/<@resource:///org/gnome/shell/ui/search.js:121
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: SearchSystem<.setTerms@resource:///org/gnome/shell/ui/search.js:116
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: SearchResults<.setTerms@resource:///org/gnome/shell/ui/search.js:611
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: ViewSelector<._doSearch@resource:///org/gnome/shell/ui/viewSelector.js:470
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: (gnome-shell:4930): Gjs-WARNING **: JS ERROR: TypeError: Gio.DesktopAppInfo.search is not a function
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: AppSearchProvider<.getInitialResultSet@resource:///org/gnome/shell/ui/appDisplay.js:873
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: SearchSystem<.setTerms/<@resource:///org/gnome/shell/ui/search.js:121
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: SearchSystem<.setTerms@resource:///org/gnome/shell/ui/search.js:116
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: SearchResults<.setTerms@resource:///org/gnome/shell/ui/search.js:611
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: ViewSelector<._doSearch@resource:///org/gnome/shell/ui/viewSelector.js:470
juil. 18 09:59:08 ordiwork.fr gnome-session[4850]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169


Best,
Jerome[/quote]
Back to top
View user's profile Send private message
qwijibow
n00b
n00b


Joined: 27 Dec 2004
Posts: 58

PostPosted: Fri Jul 25, 2014 2:06 pm    Post subject: Reply with quote

Hello world!!!

I am suffering the same problem, only i am using amd64 ( NOT ~amd64 )

It had been a while since my last update, so i did the usual...
emerge --sync
emerge --update --deep --with-bdeps=y --newuse @world

which updated me to gnome 3.12 from gnome 3.10.

My journalctl is also full of the following.
Code:

Jul 25 14:56:59 localhost gnome-session[1544]: (gnome-shell:1620): Gjs-WARNING **: JS ERROR: TypeError: Gio.DesktopAppInfo.search is not a function
Jul 25 14:56:59 localhost gnome-session[1544]: AppSearchProvider<.getInitialResultSet@resource:///org/gnome/shell/ui/appDisplay.js:873
Jul 25 14:56:59 localhost gnome-session[1544]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
Jul 25 14:56:59 localhost gnome-session[1544]: SearchSystem<.setTerms/<@resource:///org/gnome/shell/ui/search.js:121
Jul 25 14:56:59 localhost gnome-session[1544]: SearchSystem<.setTerms@resource:///org/gnome/shell/ui/search.js:116
Jul 25 14:56:59 localhost gnome-session[1544]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
Jul 25 14:56:59 localhost gnome-session[1544]: SearchResults<.setTerms@resource:///org/gnome/shell/ui/search.js:611
Jul 25 14:56:59 localhost gnome-session[1544]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169
Jul 25 14:56:59 localhost gnome-session[1544]: ViewSelector<._doSearch@resource:///org/gnome/shell/ui/viewSelector.js:470
Jul 25 14:56:59 localhost gnome-session[1544]: wrapper@resource:///org/gnome/gjs/modules/lang.js:169


So, whatever this bug is, it has escaped ~amd64, and found its way onto stable.

Can any of you fine gents poke me in the right direction ?

I have no experiance with java-script... so im completely lost.
Not sure if this really is a bug in the java-script script, or the java-script interpreter.

THX.
Chris.
Back to top
View user's profile Send private message
puleglot
n00b
n00b


Joined: 29 Jul 2014
Posts: 3

PostPosted: Tue Jul 29, 2014 9:34 am    Post subject: Reply with quote

Try to reemerge gobject-introspection
https://bugs.gentoo.org/show_bug.cgi?id=518424#c1
Back to top
View user's profile Send private message
jrevi
Tux's lil' helper
Tux's lil' helper


Joined: 08 Sep 2005
Posts: 129

PostPosted: Wed Aug 06, 2014 11:03 am    Post subject: Reply with quote

Great! After a new update (gobject-introspection included) everything work fine again !

Thanks for you help,
Best,
Jerome
Back to top
View user's profile Send private message
saivinoba
n00b
n00b


Joined: 20 May 2014
Posts: 30

PostPosted: Wed Aug 06, 2014 7:35 pm    Post subject: Reply with quote

Hi,

It's fixed for me as well after an update. I don't know if my update included gobject-introspection. All I did was to update my system, update the kernel, then booted with new kernel and an updated system.

Thank you all.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Desktop Environments All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum