0xcafebabe -- per aspera ad astra

Dokument pobrany z: http://anadoxin.org/blog/node/88

Linux snips

Synaptics touchpad

Scroll + click-on-tap dla touchpada, który wydaje się nie reagować na wyżej wymienione funkcje:

  1. root # synclient TapButton1=1
  2. root # synclient VertEdgeScroll=1
  3. root # synclient HorizEdgeScroll

Mount offset

Montowanie partycji jako system plików w image'u dysku. Pamiętaj o ro:

  1. root # mount -t [fstype] -o loop,ro,offset=[offset boot blocka w sektorach]

Mingw i FileVersionInfo

Ikony, zasoby, itp, kompilacja:

  1. $ windres rsrc.rc -O coff -o rsrc.o

następnie linkowanie rsrc.o do exeka. Treść pliku rsrc.rc:

  1. 10 ICON "icon.ico"
  2.  
  3. 10 VERSIONINFO
  4. FILEVERSION     1,0,0,0
  5. PRODUCTVERSION  1,0,0,0
  6. BEGIN
  7.   BLOCK "StringFileInfo"
  8.   BEGIN
  9.     BLOCK "040904E2"
  10.     BEGIN
  11.       VALUE "CompanyName", "Company Name"
  12.       VALUE "FileDescription", "Application Name"
  13.       VALUE "FileVersion", "1.0"
  14.       VALUE "InternalName", "myapp"
  15.       VALUE "LegalCopyright", "Copyright info"
  16.       VALUE "OriginalFilename", "myapp.exe"
  17.       VALUE "ProductName", "My App"
  18.       VALUE "ProductVersion", "1.0"
  19.     END
  20.   END
  21.   BLOCK "VarFileInfo"
  22.   BEGIN
  23.     VALUE "Translation", 0x409, 1250
  24.   END
  25. END

(ustalenie ikony w lewym górnym rogu: SetIcon(id))

GIO + D-Bus

Bindingi GIO do obsługi D-Bus. Notatka do g_variant_get_child znajduje się na stackoverflow. output to GVariant *. Rzutowanie z GVariant do Glib::Variant<_Type> wykonuje się standardowo: Variant<ustring> obj(output.gobj());

  1. Glib::RefPtr<Gio::DBus::Connection> bus;
  2. Glib::RefPtr<Gio::DBus::Proxy> proxy;
  3.  
  4. bus = DBus::Connection::get_sync(Gio::DBus::BUS_TYPE_SYSTEM);
  5. proxy = DBus::Proxy::create_sync(bus, "org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks");
  6.  
  7. VariantContainerBase ret = proxy->call_sync("EnumerateDevices");
  8. VariantIter iter(ret.get_child(0));
  9.  
  10. Variant<Glib::ustring> obj_path;
  11. while(iter.next_value(obj_path)) {
  12.         ...
  13. }
  14.  
  15. // czytanie właściwości:
  16.  
  17. try {
  18.         Glib::RefPtr<Gio::DBus::Proxy> props_proxy = DBus::Proxy::create_sync(bus, "org.freedesktop.UDisks", object_path, "org.freedesktop.DBus.Properties");
  19.  
  20.         std::vector<VariantBase> args;
  21.         args.push_back(Variant<ustring>::create("org.freedesktop.UDisks.Device"));
  22.         args.push_back(Variant<ustring>::create(prop_name));
  23.         VariantContainerBase vargs = VariantContainerBase::create_tuple(args);
  24.  
  25.         VariantContainerBase var_props = props_proxy->call_sync("Get", vargs);
  26.         if(var_props.get_n_children() < 1)
  27.                 return false;
  28.  
  29.         g_variant_get_child(var_props.gobj(), 0, "v", & output);
  30.  
  31.         return true;
  32. } catch(Gio::DBus::Error& e) {
  33.         LOG("got Gio::DBus::Error error");
  34.         return false;
  35. }

Znajdowanie pid'a okna w X11

Najpierw xwininfo i klik na oknie. Potem trzeba extractnąć id okna, a następnie dać xprop _NET_WM_PID -id id_okna, albo od razu xprop _NET_WM_PID i kliknąć na oknie.