HomeHome ArchiveArchive

Letting Twinkle handle ‘callto’ URLs in Firefox

There’s an extension for Firefox called Twinklefox. However it doesn’t run under FF 3.5. I’ve bumped the version in install.rdf, but twinkle won’t get called correctly none the less.

I browsed FF’s settings and … made a little wrapper script to call twinkle:

$ cat /usr/local/bin/twinkle_callto
#!/bin/sh
#
# firefox will call twinkle_callto like this:
#
#   twinkle_callto callto:+41812528006

number=`echo "$1" | sed 's/callto://'`
exec /usr/bin/twinkle --call "$number"

There you go. Very easy.

Go to Preferences->Applications and add this script to handle “callto” URLs. That’s it. You will be able to click on a callto: URL and be handed over to Twinkle.

TaxMe 2008 auf Ubuntu jaunty 9.04 amd64

The saga continues.

Nun ja,wir kennen das Muster mitlerweile: ein neues TaxMe, einen neuen Tag mit herumpröbeln verloren.

Warum schaffen es DV Informatik auch nach 4 Jahren nicht eine Version von TaxMe herauszugeben, ‘’’die einfach läuft’’’? Man nimmt die auf dem Desktop mit Abstand verbreitetste Linux Distribution, startet Taxme und - es tut nicht.

So sieht meine TaxMe2008 Installation aus:

  # apt-get install libswt-gtk-3.4-java libswt-gtk-3.4-java-gcj libswt-gtk-3.4-jni
  $ cd TaxMe2008/libs
  $ mv linux-gtk linux-gtk.32bit
  $ mkdir linux-gtk
  $ for i in 
    libswt-atk-gtk-3448.so 
    libswt-awt-gtk-3448.so 
    libswt-cairo-gtk-3448.so 
    libswt-gnome-gtk-3448.so 
    libswt-gtk-3448.so 
    libswt-mozilla-gtk-3448.so 
    libswt-pi-gtk-3448.so 
    do; 
       ln -s /usr/lib/jni/$i
    done
   $ ln -s /usr/share/java/swt-gtk-3.4.jar swt.jar
   $ cat runTaxMe
   #!/bin/sh
   export MOZILLA_FIVE_HOME=/usr/lib/xulrunner
   export LD_LIBRARY_PATH=${MOZILLA_FIVE_HOME}:${LD_LIBRARY_PATH}
   ./TaxMeBe2008

Resultat:

  • TaxMe2008 startet
  • Hilfe nicht verfügbar
    \$ cat log.txt
     at ch.dvbern.tax.common.presentation.cd.util.BrowserUtil.createBrowser(BrowserUtil.java:76)
     at ch.dvbern.tax.common.presentation.cd.Taxme.createWelcomeContent(Taxme.java:323)
     at ch.dvbern.tax.common.presentation.cd.Taxme.createContents(Taxme.java:313)
     at org.eclipse.jface.window.Window.create(Window.java:431)
     at ch.dvbern.tax.common.presentation.cd.TaxmeController.startup(TaxmeController.java:911)
     at ch.dvbern.tax.common.presentation.cd.TaxmeLauncher\$1.run(TaxmeLauncher.java:145)
     at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
     at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
     at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
     at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
     at ch.dvbern.tax.common.presentation.cd.TaxmeLauncher.launchApplication(TaxmeLauncher.java:155)
     at ch.dvbern.tax.common.presentation.cd.TaxmeLauncher.launchTaxme(TaxmeLauncher.java:86)
     at ch.dvbern.tax.be.np.presentation.cd.TaxmeBeLauncher.main(TaxmeBeLauncher.java:82)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:616)
     at ch.dvbern.lib.update.Launcher.main(Launcher.java:91)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:616)
     at com.zerog.lax.LAX.launch(DashoA8113)
     at com.zerog.lax.LAX.main(DashoA8113)
    Caused by: org.eclipse.swt.SWTError: XPCOM error -1041039359
     at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1597)
     at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:355)
     at org.eclipse.swt.browser.Browser.(Browser.java:118)
     at ch.dvbern.tax.common.presentation.cd.util.BrowserUtil.createBrowser(BrowserUtil.java:58)
     ... 23 more
    org.eclipse.swt.SWTError: XPCOM error -1041039359
     at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1597)
     at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:355)
     at org.eclipse.swt.browser.Browser.(Browser.java:118)
     at ch.dvbern.tax.common.presentation.cd.help.gui.HelpApplication.createContents(HelpApplication.java:171)
     at org.eclipse.jface.window.Window.create(Window.java:431)
     at ch.dvbern.tax.common.presentation.cd.action.menu.HelpMainhelpAction.openHelpWindow(HelpMainhelpAction.java:79)
     at ch.dvbern.tax.common.presentation.cd.action.menu.HelpMainhelpAction.run(HelpMainhelpAction.java:51)
     at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
     at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
     at org.eclipse.jface.action.ActionContributionItem.access\$2(ActionContributionItem.java:500)
     at org.eclipse.jface.action.ActionContributionItem\$5.handleEvent(ActionContributionItem.java:411)
     at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
     at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401)
     at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
    </pre>
    
    

Und es ist notabene nach 4 Jahren immer noch das gleiche Problem: den Browser mit den externen Hilfetexten zu starten.

TaxMe 2006 auf Ubuntu jaunty 9.04 amd64

Was:

Anleitung, um TaxMe 2006 unter amd64 unter Linux, Ubuntu Jaunty 9.04 zum Laufen zu bringen.

Kurzversion:

   $ cd ~/TaxMeBe2006/lib/ && mv linux-gtk linux-gtk.32bit && mkdir linux-gtk && cd linux-gtk
   $ sudo apt-get install libswt3.2-gtk-jni libjna-java
   $ for i in atk awt cairo gnome "" mozilla pi ; do ln -s /usr/lib/jni/libswt-${i}-gtk-3236.so; done
   $ ln -s /usr/lib/java/swt.jar

Herleitung:

Wenn man TaxMe 2006 auf einer amd64 Platform startet, dann passiert nichts.

in TaxMeBe2006/log.txt steht dann:

   $ cat TaxMeBe2006/log.txt
   java.lang.reflect.InvocationTargetException
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:616)
           at ch.dvbern.lib.update.Launcher.main(Launcher.java:91)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:616)
           at com.zerog.lax.LAX.launch(DashoA8113)
           at com.zerog.lax.LAX.main(DashoA8113)
   Caused by: java.lang.UnsatisfiedLinkError: /home/user/TaxMeBe2006/lib/linux-gtk/libswt-pi-gtk-3235.so: /home/user/2006/TaxMeBe2006/lib/linux-gtk/libswt-pi-gtk-3235.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
           at java.lang.ClassLoader$NativeLibrary.load(Native Method)
           at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767)
           at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1692)
           at java.lang.Runtime.loadLibrary0(Runtime.java:840)
           at java.lang.System.loadLibrary(System.java:1047)
           at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
           at org.eclipse.swt.internal.gtk.OS.(OS.java:22)
           at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
           at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
           at org.eclipse.swt.widgets.Display.(Display.java:126)
           at ch.dvbern.tax.common.presentation.cd.util.GuiUtil.getImageRegistry(GuiUtil.java:134)
           at ch.dvbern.tax.common.presentation.cd.action.ActionBase.(ActionBase.java:59)
           at ch.dvbern.tax.common.presentation.cd.action.menu.FilePrintAction.(FilePrintAction.java:26)
           at ch.dvbern.tax.be.presentation.cd.TaxmeBeLauncher.main(TaxmeBeLauncher.java:54)
           ... 11 more
</pre>


Aha - wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) - weisst darauf hin, dass wir irgendwo ein 32bit executable (bzw. hier eine 32bit Bibliothek haben), wo das System 64bit bräuchte.

Wir müssen also libswt-pi-gtk-3235.so durch eine 64bit Version ersetzen. Wir schauen zuerst Mal im Verzeichnis /home/user/TaxMeBe2006/lib/linux-gtk/ nach und sehen, dass es da noch einen Haufen andere Bibliotheken hat. Die sollten also allesammt ersetzt werden. Machen wir also, aber zuerst legen wir Mal die existierenden Dateien auf die Seite:

   $ cd ~/TaxMeBe2006/lib/ && mv linux-gtk linux-gtk.32bit && mkdir linux-gtk
So, nun ist das original linux-gtk Verzeichnis auf der Seite und wir haben ein frisches, leeres linux-gtk zum Basteln. Wo kriegt man nun die entsprechenden libswt-pi-gtk-3235.so 64bit Bibliotheken her? Da mein Rechner unter Ubuntu läuft suche ich dort ein bischen in den Paketen herum - <http://packages.ubuntu.com> bietet das entsprechende Suchinterface und man findet heraus, dass einerseits nur die Version -3236 der Bibliotheken vorliegt, und dass andererseits diese im Ubuntu Paket libswt3.2-gtk-jni zu finden sind. swt.jar wiederum befindet sich im Paket libswt3.2-gtk-java. Also
   $ sudo apt-get install libswt3.2-gtk-jni libjna-java
Nur leider genügt die Installation der Pakete nicht, da TaxMe2006, obwohl ein unter Linux funktionsfähiges Programm in seiner eigenen Welt läuft. Vielleicht müsste, um dem abzuhelfen der richtige Pfad oder die richtige Umgebungsvariable gesetzt werden - hab nicht lange gesucht, und die entsprechenden Bibliotheken einfach verlinkt: </pre> \$ ls -l TaxMeBe2006/lib/linux-gtk/ lrwxrwxrwx … libswt-atk-gtk-3236.so -\> /usr/lib/jni/libswt-atk-gtk-3236.so lrwxrwxrwx … libswt-awt-gtk-3236.so -\> /usr/lib/jni/libswt-awt-gtk-3236.so lrwxrwxrwx … libswt-cairo-gtk-3236.so -\> /usr/lib/jni/libswt-cairo-gtk-3236.so lrwxrwxrwx … libswt-gnome-gtk-3236.so -\> /usr/lib/jni/libswt-gnome-gtk-3236.so lrwxrwxrwx … libswt-gtk-3236.so -\> /usr/lib/jni/libswt-gtk-3236.so lrwxrwxrwx … libswt-mozilla-gtk-3236.so -\> /usr/lib/jni/libswt-mozilla-gtk-3236.so lrwxrwxrwx … libswt-pi-gtk-3236.so -\> /usr/lib/jni/libswt-pi-gtk-3236.so lrwxrwxrwx … swt.jar -\> /usr/lib/java/swt.jar </pre> Und siehe da - es klappt, TaxMe2006 startet. Tomáš Pospíšek