Bug 10091 - alacarte does not permit any modification to menu
Summary: alacarte does not permit any modification to menu
Status: RESOLVED FIXED
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: Cauldron
Hardware: All Linux
Priority: Normal major
Target Milestone: ---
Assignee: GNOME maintainers
QA Contact:
URL:
Whiteboard:
Keywords: Triaged
Depends on:
Blocks:
 
Reported: 2013-05-14 12:19 CEST by Alberto Girlando
Modified: 2018-04-18 20:59 CEST (History)
2 users (show)

See Also:
Source RPM: alacarte
CVE:
Status comment:


Attachments

Description Alberto Girlando 2013-05-14 12:19:01 CEST
Description of problem:
In the RC of Mageia 3, alacarte runs (so it is not the same case as in bug 2911) but does not allow to modify the menu.

Version-Release number of selected component (if applicable): alacarte 3.7.2 2.mageia3


How reproducible:
always

Steps to Reproduce:
1. start alacarte (from a terminal to see messages)
2. try to change something, e.g., hiding or deleting an item 
3. if try to hide, the cross reapperas after a while; in deleting, the following message appears in terminal:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 452, in on_delete_button_clicked
    self.on_edit_delete_activate(None)
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 299, in on_edit_delete_activate
    self.editor.deleteItem(item)
  File "/usr/lib/python2.7/site-packages/Alacarte/MenuEditor.py", line 271, in deleteItem
    self.writeItem(item, Hidden=True)
  File "/usr/lib/python2.7/site-packages/Alacarte/MenuEditor.py", line 404, in writeItem
    f.write(contents)
  File "/usr/lib/python2.7/codecs.py", line 691, in write
    return self.writer.write(data)
  File "/usr/lib/python2.7/codecs.py", line 351, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 46: ordinal not in range(128)


In summary, no modification of the menu is possible. I am not sure alacarte is supported in gnome 3, in case not, it is better to remove it from the Mageia 3 release.


Reproducible: 

Steps to Reproduce:
Comment 1 Dick Gevers 2013-05-14 20:38:38 CEST
Please compare https://bugs.mageia.org/show_bug.cgi?id=2911

CC: (none) => dvgevers

Comment 2 Jani Välimaa 2013-05-15 20:22:24 CEST
Seems like a commit from upstream git [1] fixes this issue.

You can test it by yourself too. Just edit file /usr/lib/python2.7/site-packages/Alacarte/MenuEditor.py.

I'll submit alacarte to updates with this patch from upstream after mga3 is released.

[1] https://git.gnome.org/browse/alacarte/commit/?id=0d7f35124a0e23a0aaf57edf0e2d84f9ba1f12d8

CC: (none) => jani.valimaa

Manuel Hiebel 2013-05-24 23:27:23 CEST

Keywords: (none) => Triaged
Source RPM: (none) => alacarte

Comment 3 Alberto Girlando 2013-05-25 11:21:28 CEST
Tested modification of MenuEditor.py on the released mageia3 (64 bits). Now I can cancel items, but still cannot move them up and down. In MenuEditor.py there is another point similar to those you suggest to modify (around line 55):
    
    def save(self):
        with codecs.open(self.path, 'w', 'utf8') as f:
            f.write(self.dom.toprettyxml())

    def restoreToSystem(self):

Tried to modify this point also, but no improvement.
Comment 4 Jani Välimaa 2013-05-25 15:21:53 CEST
Can't reproduce this moving up/down issue. It works, but is a bit slow.
Comment 5 Jani Välimaa 2013-05-25 15:55:18 CEST
Pushed alacarte with some patches from upstream git to core/updates_testing. Please test if it's now more usable.

If it's reasonably working, I'll update subrel to 1 and push pkg again for validating process. If not, I'll try to add/search more suitable patches from upstream.
Comment 6 Alberto Girlando 2013-05-27 10:36:32 CEST
I tried, it was able to cancel items, but NOT to create them, or pushing up and down, or moving around (no messages on the terminal). I also realized that some items that I had installed (texstudio) did not show up, even upon re-installment. These items are not seen even if I search them on gnome, they can be started only from a terminal.

I disinstalled alacarte, I have been asked to disinstall also gnome-panel. When I installed again, I was not asked to to re-install gnome-panel.

I am confused: maybe there is some setting in gnome that have to be adjusted ? I am not able to use gconf or dconf, never understood what they were doing.
Comment 7 Alberto Girlando 2013-05-28 10:28:15 CEST
Tryed to disistall all gnome components, deleting configuration files, reinstalled everything, but alacrte refuse to work. The message on the terminal
now is:

(alacarte:12755): GdkPixbuf-WARNING **: Bug! loader 'png12' didn't set an error on failure
Comment 8 Jani Välimaa 2013-05-28 16:06:39 CEST
(In reply to Alberto Girlando from comment #7)
> Tryed to disistall all gnome components, deleting configuration files,
> reinstalled everything, but alacrte refuse to work. The message on the
> terminal
> now is:
> 
> (alacarte:12755): GdkPixbuf-WARNING **: Bug! loader 'png12' didn't set an
> error on failure

You probably have 'libgdk_pixbuf2.0_0-loaders-png12' installed instead of 'libgdk_pixbuf2.0_0-loaders-png15'.

Remove png12 one with 'rpm -e --nodeps libgdk_pixbuf2.0_0-loaders-png12' and install png15 one with 'urpmi libgdk_pixbuf2.0_0-loaders-png15'.
Comment 9 Alberto Girlando 2013-05-28 16:18:38 CEST
I checked, and I had both installed. I removed the png12, and now the message disappears, but alacarte in any case does not work. I have been able to get some item in the list, like "qualculate!" (I could not add them !) by editing some unused item to the desired menu entry. But I cannot move it in the desired place.

I was thinking alacarte could be dropped, as the menus are not used as much in
gnome 3. Howevere, I realized that if an item is not introduced in the menu, it cannot be searched. Perhaps the bug should be made  critical. But first I will try to set it up Megeia3 on as a new installation.
Comment 10 Jani Välimaa 2013-05-28 16:32:15 CEST
You may have some zero size .desktop files under your $HOME/.local/share/applications which may cause some problems. Remove those, just to be sure.

You can find them with:
find ~/.local/share/applications/ -size 0

And delete them with:
find ~/.local/share/applications/ -size 0 -delete
Comment 11 Jani Välimaa 2013-05-28 16:34:40 CEST
Would be nice if people from QA team could test alacarte too..
Comment 12 Alberto Girlando 2013-05-29 11:00:54 CEST
I followed your advice, cancelling first the only files under ./local/share/applications (it was just one file, apparently unrelated), then cancelling all the zero size files in my home directory. I also restarted the computer before testing again alacarte. No way, same behavior described above. No communications in the terminal. No empty files were created.

I then intalled Mageia 3 on an emulator. It was a fresh installement, no upgrade, included the user (I reformatted the user space also). Before doing anything else, I upgraded alacarte from the testing repo, as suggested by Jani.
Then testing alacarte. Same results: I was able to cancel items, but not to add new items or menu, nor move them around. So it is not a problem of installation, and it presents itself both in the 32 bit version (the emuator) and in the 64 bit (my main computer). The problem is probably re;ated to the GNOME desktop, which is still work in progress in release 3.

For these reasons I propose to increase the severity to major (I first filed the bug in the RC release, so at the time in my opinion was different).

Hardware: i586 => All
Severity: normal => major

Thierry Vignaud 2013-12-30 23:15:59 CET

Assignee: bugsquad => olav

Comment 13 andré blais 2015-03-17 09:33:35 CET
I just discovered part of the reason why alacarte doesn't add new items :
They are assigned to the "other" group, which is not visible under alacarte, nor in the actual menu, at least in my installation.
(Fairly recent clean install of mga4, with xfce and most of mate installed.  No other desktop has been installed.)

This became apparent after I installed menulibre (as suggested by Alberto in mga#2911).
I found 8 or 9 entries that I had installed with alacarte, all under the "other" group.  The "other" group is not visible under alacarte.

I have tested adding groups with alacarte, but if they are added, they don't show up under menulibre.

BTW, although menulibre mostly (but not completely) works, I find it very awkward to use.  The alacarte editor presents the menu groups much as in the actual menu, which is less confusing.

Both mate and xfce use conventional menus.
So users of these desktops would probably (like myself) prefer that alacarte be fixed.
When it worked, alacarte was a very convenient and easy to use menu editor.

The only thing that menulibre does better is let users edit the .desktop file directly, but it overrides many changes, which is somewhat dysfunctional.
From the menulibre desktop file, it is apparently designed for Ubuntu.

If someone else doesn't tackle alacarte first, I'll (eventually) try to get it working.  It could use a few enhancements as well.

CC: (none) => andre999mga

Comment 14 Alberto Girlando 2015-03-17 10:01:34 CET
I encourage André in going on in try to fix alacarte (which I am unable to do: I can help only with testing). I also would prefer alacarte to menulibre. But I have shortly tested Mageia 5 beta 3, and alacarte (which is NOT installed by default in gnome) still does not work.

Version: 3 => Cauldron

Comment 15 andré blais 2015-03-22 12:35:10 CET
Taking a quick look at alacarte, the code indicates that it now uses gtk3 (from gtk2), but there are gtk error messages when run in console.
So pgm wasn't fully converted to gtk3.
Also, the coding is unnecessarily obscure, which makes it much less maintainable.
(Aside, despite complaints about drak* tools, at least that code is readable.)

I also installed all the gtk3 packages that seemed likely related.
Now adding a menu item adds a menu line with a blank title, and not usable.

If someone skilled at gtk2 to gtk3 conversions takes a look at it, that may be the solution.
Otherwise it could be other changes related to gnome2 -> 3.
Maybe some needed package that was dropped ?
Comment 16 andré blais 2015-03-22 13:03:50 CET
The various error messages seen in console, hopefully meaningful to someone more familiar with the code :

When loading alacarte :
(alacarte:2114): Gtk-CRITICAL **: gtk_accel_label_set_accel_closure: assertion 'gtk_accel_group_from_accel_closure (accel_closure) != NULL' failed


When collapsing to display only the main menu line (which worked) :
^CTraceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 192, in _cell_data_toggle_func
    def _cell_data_toggle_func(self, tree_column, renderer, model, treeiter, data=None):
KeyboardInterrupt


After adding new menu, which displayed with blank instead of title, errors from testing various interactions with new menu, none of which functioned :
(Looks like null pointer instead of pointing to new menu, so menu not added ?)

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 440, in on_properties_button_clicked
    self.on_edit_properties_activate(None)
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 304, in on_edit_properties_activate
    file_path = os.path.join(util.getUserDirectoryPath(), os.path.split(item.get_desktop_file_path())[1])
  File "/usr/lib/python2.7/posixpath.py", line 92, in split
    i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 345, in on_item_tree_show_toggled
    self.editor.setVisible(item, False)
  File "/usr/lib/python2.7/site-packages/Alacarte/MenuEditor.py", line 193, in setVisible
    self.writeMenu(item, NoDisplay=not visible)
  File "/usr/lib/python2.7/site-packages/Alacarte/MenuEditor.py", line 412, in writeMenu
    file_id = os.path.split(menu.get_desktop_file_path())[1]
  File "/usr/lib/python2.7/posixpath.py", line 92, in split
    i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 75, in menuChanged
    self.loadUpdates()
  File "/usr/lib/python2.7/site-packages/Alacarte/MainWindow.py", line 90, in loadUpdates
    item_id = os.path.split(items[iter][3].get_desktop_file_path())[1]
  File "/usr/lib/python2.7/posixpath.py", line 92, in split
    i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'


----
Note that the main menu display was totally disordered, but pressing the "restore system configuration" button worked, without erasing much if anything in "~/.local/share/applications/".
Numerous entries added by menulibre are still there.
Maybe alacarte is storing customizations elsewhere ?
Jani Välimaa 2015-05-21 19:34:47 CEST

CC: jani.valimaa => (none)

Olav Vitters 2016-09-19 09:55:22 CEST

Assignee: olav => gnome

Comment 17 Alberto Girlando 2018-04-18 20:59:29 CEST
Appears to be solved in Mageia 6 (fresh installation)

Resolution: (none) => FIXED
Status: NEW => RESOLVED


Note You need to log in before you can comment on or make changes to this bug.