0xcafebabe -- per aspera ad astra

Dokument pobrany z: http://www.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. }