So, I figured out what it was. . . the file was fine and onboard is
working fine, but with some unexpected and desired results.  I had
created a ubuntu shortcut file named NextGen in the same directory from
which I was running my program.  This seemed to cause onboard to use
that file instead of the keyboard layouts in
~/.local/share/onboard/layouts.

It seems that onboard has a three stage lookup process for where to find
the layout file it is being asked to load:  1) local directory, 2) users
custom layouts, or 3) global layouts location.  The problem it seems I
uncovered is that when you have another file with the same name as a
custom layout name in your local directory, it tries to load from the
local directory even if the other files aren't there (no svg files).
Also, my local file had no .onboard suffix and onboard still tried to
load it.

This should probably be a pretty low priority, but I would recommend you
move to a stricter name comparison and look for the .onboard suffix to
make sure that the local file really is an onboard configuration file
and not just an unfortunately named file.

I will remember to look at onboard -ddebug next time I have a problem as
well as this again would have solved my problem much quicker by telling
me which file it was loading.  Thanks for the tip!

For now, I am going to just rename the custom layout name to something
much more specific like NextGenKeyboardLayout that will never be
duplicated and go on my way.

Thanks so much for the response, other than this problem I have been
very satisfied with onboard, especially after updating from 0.97 to
0.99.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to onboard in Ubuntu.
https://bugs.launchpad.net/bugs/1249493

Title:
  onboard keyboard crashes when started in node.js running custom layout

Status in “onboard” package in Ubuntu:
  New

Bug description:
  lsb_release -rd:
  Description:  Ubuntu 12.04.1 LTS
  Release:      12.04

  apt-cache policy onboard:
  onboard:
    Installed: 0.99.0-0ppa~precise1
    Candidate: 0.99.0-0ppa~precise1
    Version table:
   *** 0.99.0-0ppa~precise1 0
          500 http://ppa.launchpad.net/onboard/stable/ubuntu/ precise/main 
amd64 Packages
          100 /var/lib/dpkg/status
       0.97.0-0ubuntu4 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
       0.97.0-0ubuntu3 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

  apt-cache policy python:
  python:
    Installed: 2.7.3-0ubuntu2.2
    Candidate: 2.7.3-0ubuntu2.2
    Version table:
   *** 2.7.3-0ubuntu2.2 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
          100 /var/lib/dpkg/status
       2.7.3-0ubuntu2 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

  
  I thought I had everything setup just the way I wanted it, but all the 
sudden, it started having problems on one of my three deployments.  Don't 
really know what happened as everyone swears they didn't do anything.  I have 
installed onboard 0.99 from the stable ppa onto Ubuntu 12.04.  I have python 
2.7.3.

  Here is my situation:
  1)  When I try to open onboard with a custom layout from the console, it 
works fine
  2)  When I try to open onboard with a non-custom layout (like Compact 
specifically is what I tested) programmatically from within a node.js program 
it works fine
  3)  When I try to open onboard with a custom layout (made from Compact, not 
even modified yet) programmatically from within a node.js program, it crashes 
with the following error messages put out to stderr:

   Traceback (most recent call last):
    File "/usr/bin/onboard", line 16, in <module>
      ob = Onboard()
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 111, in 
__init__
      self.init()
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 180, in 
init
      self.reload_layout()
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 560, in 
reload_layout
      self.load_layout(layout_filename, color_scheme_filename)
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 581, in 
load_layout
      layout = LayoutLoaderSVG().load(vk, layout_filename, color_scheme)
    File "/usr/lib/python3/dist-packages/Onboard/LayoutLoaderSVG.py", line 84, 
in load
      os.path.dirname(layout_filename))
    File "/usr/lib/python3/dist-packages/Onboard/LayoutLoaderSVG.py", line 103, 
in _load
      return self._load_layout(layout_filename, parent_item)
    File "/usr/lib/python3/dist-packages/Onboard/LayoutLoaderSVG.py", line 111, 
in _load_layout
      dom = minidom.parse(f).documentElement
    File "/usr/lib/python3.2/xml/dom/minidom.py", line 1945, in parse
      return expatbuilder.parse(file)
    File "/usr/lib/python3.2/xml/dom/expatbuilder.py", line 928, in parse
      result = builder.parseFile(file)
    File "/usr/lib/python3.2/xml/dom/expatbuilder.py", line 207, in parseFile
      parser.Parse(buffer, 0)
  xml.parsers.expat.ExpatError: syntax error: line 2, column 0

  Here is the xml file named NextGen.onboard that it's crashing from:
  <?xml version="1.0" ?>
  <keyboard id="Compact" format="3.1">

      <include file='key_defs.xml'/>

      <box border="1" spacing="1.5" orientation="vertical">

          <!--- word suggestions -->
          <panel filename='Compact-Alpha.svg' scan_priority='1'>
              <include file='word_suggestions.xml'/>
          </panel>

          <box spacing='1.5'>
              <box spacing='2'>
                  <!--- keyboard, multiple layers -->
                  <panel>
                      <panel layer="alpha" filename="Compact-Alpha.svg">
                          <key group="alphanumeric" id="AB01"/>
                          <key group="alphanumeric" id="AE02"/>
                          <key group="alphanumeric" id="AE03"/>
                          <key group="alphanumeric" id="AD09"/>
                          <key group="alphanumeric" id="AE01"/>
                          <key group="alphanumeric" id="AE06"/>
                          <key group="alphanumeric" id="AE07"/>
                          <key group="alphanumeric" id="AE04"/>
                          <key group="alphanumeric" id="AE05"/>
                          <key group="alphanumeric" id="AD03"/>
                          <key group="alphanumeric" id="AD02"/>
                          <key group="alphanumeric" id="AD01"/>
                          <key group="alphanumeric" id="AE09"/>
                          <key group="alphanumeric" id="AD07"/>
                          <key group="alphanumeric" id="AD06"/>
                          <key group="alphanumeric" id="AD05"/>
                          <key group="alphanumeric" id="AD04"/>
                          <key group="alphanumeric" id="AB10"/>
                          <key group="alphanumeric" id="AC11"/>
                          <key group="alphanumeric" id="AC10"/>
                          <key group="alphanumeric" id="TLDE"/>
                          <key group="alphanumeric" id="LSGT"/>
                          <key group="alphanumeric" id="BKSL"/>
                          <key group="alphanumeric" id="AD10"/>
                          <key group="alphanumeric" id="AD11"/>
                          <key group="alphanumeric" id="AD12"/>
                          <key group="alphanumeric" id="AB08"/>
                          <key group="alphanumeric" id="AE11"/>
                          <key group="alphanumeric" id="AE10"/>
                          <key group="alphanumeric" id="AE12"/>
                          <key group="alphanumeric" id="AC04"/>
                          <key group="alphanumeric" id="AC05"/>
                          <key group="alphanumeric" id="AC06"/>
                          <key group="alphanumeric" id="AC07"/>
                          <key group="alphanumeric" id="AB09"/>
                          <key group="alphanumeric" id="AC01"/>
                          <key group="alphanumeric" id="AC02"/>
                          <key group="alphanumeric" id="AC03"/>
                          <key group="alphanumeric" id="AB05"/>
                          <key group="alphanumeric" id="AB04"/>
                          <key group="alphanumeric" id="AE08"/>
                          <key group="alphanumeric" id="AB06"/>
                          <key group="alphanumeric" id="AC08"/>
                          <key group="alphanumeric" id="AC09"/>
                          <key group="alphanumeric" id="AB03"/>
                          <key group="alphanumeric" id="AB02"/>
                          <key group="alphanumeric" id="AD08"/>
                          <key group="alphanumeric" id="AB07"/>

                          <key group='misc'      id='CAPS'/>
                          <key group='shifts'    id='LFSH'/>
                          <key group='shifts'    id='RTSH'/>
                          <key group='bottomrow' id='LCTL'/>
                          <key group='bottomrow' id='LALT'/>
                          <key group='bottomrow' id='RALT'/>
                          <key group="bottomrow" id="LWIN"/>

                          <key group="bottomrow" id="SPCE"/>
                          <key group="bottomrow" id="DELE.next-to-backspace"/>
                          <key group="bottomrow" id="BKSP"/>
                          <key group="misc" id="TAB"/>
                          <key group="misc" id="RTRN"/>
                          <key group="directions_alpha" id="LEFT"/>
                          <key group="directions_alpha" id="RGHT"/>
                          <key group="directions_alpha" id="UP"/>
                          <key group="directions_alpha" id="DOWN"/>
                      </panel>
                      <panel layer="numbers" filename="Compact-Numbers.svg" 
border="2">
                          <key group='keypadmisc' id='NMLK' scan_priority='2'/>
                          <key group="keypadmisc" id="KPDL" scan_priority="2"/>
                          <key group="keypadmisc" id="KPEN" scan_priority="2"/>
                          <key group="keypadnumber" id="KP0" scan_priority="2"/>
                          <key group="keypadnumber" id="KP1" scan_priority="2"/>
                          <key group="keypadnumber" id="KP2" scan_priority="2"/>
                          <key group="keypadnumber" id="KP3" scan_priority="2"/>
                          <key group="keypadnumber" id="KP4" scan_priority="2"/>
                          <key group="keypadnumber" id="KP5" scan_priority="2"/>
                          <key group="keypadnumber" id="KP6" scan_priority="2"/>
                          <key group="keypadnumber" id="KP7" scan_priority="2"/>
                          <key group="keypadnumber" id="KP8" scan_priority="2"/>
                          <key group="keypadnumber" id="KP9" scan_priority="2"/>
                          <key group="keypadoperators" id="KPSU" 
scan_priority="2"/>
                          <key group="keypadoperators" id="KPDV" 
scan_priority="2"/>
                          <key group="keypadoperators" id="KPAD" 
scan_priority="2"/>
                          <key group="keypadoperators" id="KPMU" 
scan_priority="2"/>
                          <key group="directions" id="LEFT" scan_priority="1"/>
                          <key group="directions" id="RGHT" scan_priority="1"/>
                          <key group="directions" id="UP" scan_priority="1"/>
                          <key group="directions" id="DOWN" scan_priority="1"/>
                          <key group="editing" id="INS"/>
                          <key group="editing" id="DELE"  label='Del' image=''/>
                          <key group="editing" id="HOME"/>
                          <key group="editing" id="END"/>
                          <key group="editing" id="PGUP"/>
                          <key group="editing" id="PGDN"/>

                          <key group="bottomrow" id="ESC"/>
                          <key group="fkeys" id="F1.rows_of_six"/>
                          <key group="fkeys" id="F2.rows_of_six"/>
                          <key group="fkeys" id="F3.rows_of_six"/>
                          <key group="fkeys" id="F4.rows_of_six"/>
                          <key group="fkeys" id="F5.rows_of_six"/>
                          <key group="fkeys" id="F6.rows_of_six"/>
                          <key group="fkeys" id="F7.rows_of_six"/>
                          <key group="fkeys" id="F8.rows_of_six"/>
                          <key group="fkeys" id="F9.rows_of_six"/>
                          <key group="fkeys" id="F12.rows_of_six"/>
                          <key group="fkeys" id="F10.rows_of_six"/>
                          <key group="fkeys" id="F11.rows_of_six"/>
                          <key group="editing" id="Prnt" scan_priority="1"/>
                          <key group="editing" id="Pause" scan_priority="1"/>
                          <key group="editing" id="Scroll" scan_priority="1"/>
                      </panel>
                      <panel layer="utils" filename="Compact-Utils.svg" 
border="2">
                          <key group='snippets' id='m0'/>
                          <key group='snippets' id='m1'/>
                          <key group='snippets' id='m2'/>
                          <key group='snippets' id='m3'/>
                          <key group='snippets' id='m4'/>
                          <key group='snippets' id='m5'/>
                          <key group='snippets' id='m6'/>
                          <key group='snippets' id='m7'/>
                          <key group='snippets' id='m8'/>
                          <key group='snippets' id='m9'/>
                          <key group='snippets' id='m10'/>
                          <key group='snippets' id='m11'/>
                          <key group='snippets' id='m12'/>
                          <key group='snippets' id='m13'/>
                          <key group='snippets' id='m14'/>
                          <key group='snippets' id='m15'/>
                          <key group='bottomrow' id='quit' scan_priority="1"/>
                          <key group='bottomrow' id='settings' 
scan_priority="1"/>
                      </panel>
                  </panel>

              </box>

              <!--- click helpers -->
              <panel id="click" filename="Compact-Alpha.svg" >
                  <key group='click' id='middleclick'/>
                  <key group='click' id='secondaryclick'/>
                  <key group='click' id='doubleclick'/>
                  <key group='click' id='dragclick'/>
                  <key group='click' id='hoverclick.bottom-row' 
unlatch_layer="false"/>
              </panel>

              <!--- side bar -->
              <panel id="paneswitch" filename="Compact-Alpha.svg">        
                  <box compact="true" orientation='vertical'>
                      <panel group='nowordlist'>
                          <key group='bottomrow' id='hide'/>
                          <box orientation='vertical'>
                              <box orientation="horizontal" expand="false">
                                  <key group="bottomrow" id="showclick"/>
                                  <key group="bottomrow" id="move"/>
                              </box>
                              <key group="bottomrow" id="layer0" 
scan_priority="3"/>
                              <key group="bottomrow" id="layer1" 
scan_priority="3"/>
                              <key group="bottomrow" id="layer2" 
scan_priority="3"/>
                          </box>
                      </panel>
                      <panel group='wordlist'>
                          <box orientation='vertical'>
                              <key group='sidebar' id='move' 
svg_id='move.wordlist' expand='false' label_margin='2.5'/>
                              <key group='sidebar' id='showclick' 
svg_id='showclick.wordlist' label_margin='2' expand='false'/>
                              <key group='bottomrow' id='layer0' 
svg_id='layer0.wordlist' scan_priority='3'/>
                              <key group='bottomrow' id='layer1' 
svg_id='layer1.wordlist' scan_priority='3'/>
                              <key group="bottomrow" id="layer2" 
svg_id='layer2.wordlist' scan_priority="3"/>
                          </box>
                      </panel>
                  </box>
              </panel>

          </box>
      </box>
  </keyboard>

  I have put this file through xml validators and it comes up clean.

  I googled the first error about OnboardGtk.py line 111 and found that
  others fixed their problems by making sure they had librsvg2-common
  installled, but I already had that installed.  Tried to install anyway
  just to make sure there wasn't an upgrade problem, but it said I was
  on the latest version.

  This one has really got me stumped and I wonder if it's not some sort
  of problem with onboard hence why I'm posting what I think is a bug.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/onboard/+bug/1249493/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to