dlech / Keebuntu

KeePass 2.x plugins that provide Ubuntu (Unity) integration
https://launchpad.net/~dlech/+archive/keepass2-plugins
117 stars 5 forks source link

Build & Install instructions #24

Closed PAStheLoD closed 8 years ago

PAStheLoD commented 9 years ago

Hello!

I've managed to compile and sort-of install the ApplicationIndicator plugin (for KDE5) based on the rules file and some tinkering with the KeePassExePath property group, however, it's a bit unclear which .dlls are needed for which plugin(s), and alas there is no icon in the system tray. (So even though I copied the icons from the Resource directory to /usr/share/... none are being used.)

Thanks!

dlech commented 9 years ago

Which Linux distro are you using?

You need to run update-icon-caches or something like that to let the OS know there are new icons.

And you can figure out which dlls are needed by looking at the debian/*.install files and the dependencies in debian/control. It looks like the app indicator plugin needs DBus.dll and ImageMagick.dll.

PAStheLoD commented 9 years ago

Ubuntu Vivid (15.04). Just using KeePass Portable. (Probably I could just migrate to the packaged version, but installing plugins was easier for this. At least for KeePassHttp, though I guess you arranged packaging for that too. :smile: )

No luck with any of the magic update commands (update-icon-caches, which calls gtk-update-icon-cache-3.0 --force --quiet /usr/share/icons/hicolor/, which puts the keepass2-locked into the icon-theme.cache), but nothing happens after several KeePass2 restarts. I tried to lock it too. Maybe I need to relogin?

dlech commented 9 years ago

Does the plugin actually show up in Tools > Plugins... in KeePass? If not, try running from the command line with mono KeePass.exe --debug to see if it gives you an error message.

PAStheLoD commented 9 years ago

I mean the plugin works. I get a "space" on the toolbar, I can right click on it. Just the icon is missing.

dlech commented 9 years ago

I'm with you now...

What is the full path to the icon(s) that you copied?

PAStheLoD commented 9 years ago

cp -r Resources/* /usr/share/icons/ which resulted in

/usr/share/icons/ubuntu-mono-dark/apps/24/keepass2-locked.svg
/usr/share/icons/hicolor/256x256/apps/keepass2-locked.png
/usr/share/icons/ubuntu-mono-light/apps/24/keepass2-locked.svg
dlech commented 9 years ago

Just thought of something... If you accidentally created a Debug build instead of Release build, then it looks for the icons in a different path instead of the icon cache.

dlech commented 9 years ago

Or you could steal the dlls out of the .deb (it's just a zip file) and try them.

https://launchpad.net/~dlech/+archive/ubuntu/keepass2-plugins/+files/keepass2-plugin-application-indicator_0.4.6%2B0.4.8_all.deb

PAStheLoD commented 9 years ago

I used /property:Configuration=Release.

However, now I found a rather ugly ... bug. I don't think it's related to the icons, but probably to using different libs to build different parts of the running KeePass.

SendMessage (14680091, 0x444, 0x1, 0x35a0b10)
SendMessage (14680091, 0x444, 0x1, 0x35a0b10)
SendMessage (14680091, 0x444, 0x1, 0x34d2870)
SendMessage (14680091, 0x444, 0x1, 0x34d2870)
[xcb] Too much data requested from _XRead
[xcb] This is most likely caused by a broken X extension library
[xcb] Aborting, sorry about that.
cli: ../../src/xcb_io.c:736: _XRead: Assertion `!xcb_xlib_too_much_data_requested' failed.
Stacktrace:

  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) System.Windows.Forms.X11Keyboard.XCreateFontSet (intptr,string,intptr&,int&,intptr) <0xffffffff>
  at System.Windows.Forms.X11Keyboard.CreateOverTheSpotXic (intptr,intptr) <0x000af>
  at System.Windows.Forms.X11Keyboard.CreateXic (intptr,intptr) <0x000d7>
  at System.Windows.Forms.X11Keyboard.CreateXicForWindow (intptr) <0x00037>
  at System.Windows.Forms.X11Keyboard.FocusIn (intptr) <0x00087>
  at System.Windows.Forms.XplatUIX11.SetFocus (intptr) <0x000b3>
  at System.Windows.Forms.XplatUI.SetFocus (intptr) <0x0001f>
  at System.Windows.Forms.ContainerControl.SendControlFocus (System.Windows.Forms.Control) <0x00083>
  at System.Windows.Forms.Form.SetVisibleCore (bool) <0x0071f>
  at System.Windows.Forms.Control.set_Visible (bool) <0x00032>
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control.set_Visible (bool) <0xffffffff>
  at System.Windows.Forms.Application.RunLoop (bool,System.Windows.Forms.ApplicationContext) <0x002ef>
  at System.Windows.Forms.Form.ShowDialog (System.Windows.Forms.IWin32Window) <0x008a3>
  at System.Windows.Forms.Form.ShowDialog () <0x00013>
  at System.Windows.Forms.MessageBox/MessageBoxForm.RunDialog () <0x00073>
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.MessageBox/MessageBoxForm.RunDialog () <0xffffffff>
  at System.Windows.Forms.MessageBox.Show (System.Windows.Forms.IWin32Window,string) <0x00057>
  at KeePassHttp.KeePassHttpExt.RequestHandler (System.IAsyncResult) <0x00077>
  at System.Net.ListenerAsyncResult.InvokeCallback (object) <0x00065>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

    /usr/bin/cli() [0x4b5bc0]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x10d10) [0x7f25daf5bd10]
    /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x37) [0x7f25dabb6267]
    /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a) [0x7f25dabb7eca]
    /lib/x86_64-linux-gnu/libc.so.6(+0x2e03d) [0x7f25dabaf03d]
    /lib/x86_64-linux-gnu/libc.so.6(+0x2e0f2) [0x7f25dabaf0f2]
    /usr/lib/x86_64-linux-gnu/libX11.so.6(_XRead+0xd5) [0x7f25d35e8b55]
    /usr/lib/x86_64-linux-gnu/libX11.so.6(_XRead32+0x25) [0x7f25d35e9625]
    /usr/lib/x86_64-linux-gnu/libX11.so.6(XListFontsWithInfo+0x380) [0x7f25d35cc070]
    /usr/lib/x86_64-linux-gnu/libX11.so.6(+0x73db5) [0x7f25d361fdb5]
    /usr/lib/x86_64-linux-gnu/libX11.so.6(XCreateOC+0xec) [0x7f25d35d7dbc]
    /usr/lib/x86_64-linux-gnu/libX11.so.6(XCreateFontSet+0x5c) [0x7f25d35ccaac]
    [0x40ec7b0b]
PAStheLoD commented 9 years ago

Will try the DLLs, try without any "custom" built stuff.

dlech commented 9 years ago

Looks like your bug is with KeePassHttp:

at KeePassHttp.KeePassHttpExt.RequestHandler (System.IAsyncResult) <0x00077>

dlech commented 9 years ago

Is this still an issue or can we close?

PAStheLoD commented 9 years ago

Haven't got around to look at it. If you're interested in it, I'll find some time during the week.

dlech commented 9 years ago

I guess my approach would be to use the packaged version of KeePass and plugins, so I am not particularly interested in making it work. I would rather package the other plugins instead of trying to make the Kebuntu plugins work with non-packaged KeePass. But if you want to try to make it work with the portable version of KeePass, I'm glad to answer questions.

Another idea that I just had (no tested) is that maybe you could use the packaged version of KeePass (keepass2) and create a symbolic link from /usr/lib/keepass2/user to a directory in you home directory. Then you could easily install plugins that are not packaged and use plugins that are packaged.