]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/udev/gudev/gjs-example.js
1 #!/usr/bin
/env gjs
-console
3 // This currently depends on the following patches to gjs
5 // http://bugzilla.gnome.org/show_bug.cgi?id=584558
6 // http://bugzilla.gnome.org/show_bug.cgi?id=584560
7 // http://bugzilla.gnome.org/show_bug.cgi?id=584568
9 const GUdev
= imports
.gi
.GUdev
;
10 const Mainloop
= imports
.mainloop
;
12 function print_device (device
) {
13 print (" subsystem: " + device
.get_subsystem ());
14 print (" devtype: " + device
.get_devtype ());
15 print (" name: " + device
.get_name ());
16 print (" number: " + device
.get_number ());
17 print (" sysfs_path: " + device
.get_sysfs_path ());
18 print (" driver: " + device
.get_driver ());
19 print (" action: " + device
.get_action ());
20 print (" seqnum: " + device
.get_seqnum ());
21 print (" device type: " + device
.get_device_type ());
22 print (" device number: " + device
.get_device_number ());
23 print (" device file: " + device
.get_device_file ());
24 print (" device file symlinks: " + device
.get_device_file_symlinks ());
25 print (" foo: " + device
.get_sysfs_attr_as_strv ("stat"));
26 var keys
= device
.get_property_keys ();
27 for (var n
= 0; n
< keys
.length
; n
++) {
28 print (" " + keys
[n
] + "=" + device
.get_property (keys
[n
]));
32 function on_uevent (client
, action
, device
) {
33 print ("action " + action
+ " on device " + device
.get_sysfs_path());
34 print_device (device
);
38 var client
= new GUdev
.Client ({subsystems
: ["block", "usb/usb_interface"]});
39 client
.connect ("uevent", on_uevent
);
41 var block_devices
= client
.query_by_subsystem ("block");
42 for (var n
= 0; n
< block_devices
.length
; n
++) {
43 print ("block device: " + block_devices
[n
].get_device_file ());
48 d
= client
.query_by_device_number (GUdev
.DeviceType
.BLOCK
, 0x0810);
50 print ("query_by_device_number 0x810 -> null");
52 print ("query_by_device_number 0x810 -> " + d
.get_device_file ());
53 var dd
= d
.get_parent_with_subsystem ("usb", null);
55 print ("--------------------------------------------------------------------------");
63 d
= client
.query_by_sysfs_path ("/sys/block/sda/sda1");
64 print ("query_by_sysfs_path (\"/sys/block/sda1\") -> " + d
.get_device_file ());
66 d
= client
.query_by_subsystem_and_name ("block", "sda2");
67 print ("query_by_subsystem_and_name (\"block\", \"sda2\") -> " + d
.get_device_file ());
69 d
= client
.query_by_device_file ("/dev/sda");
70 print ("query_by_device_file (\"/dev/sda\") -> " + d
.get_device_file ());
72 d
= client
.query_by_device_file ("/dev/block/8:0");
73 print ("query_by_device_file (\"/dev/block/8:0\") -> " + d
.get_device_file ());
75 Mainloop
.run('udev-example');