@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b PreparingForShutdown = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly a{sv} PreparingForShutdownWithMetadata = [...];
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b PreparingForSleep = ...;
readonly (st) ScheduledShutdown = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
<variablelist class="dbus-property" generated="True" extra-ref="PreparingForShutdown"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="PreparingForShutdownWithMetadata"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="PreparingForSleep"/>
<variablelist class="dbus-property" generated="True" extra-ref="ScheduledShutdown"/>
<para>The <varname>PreparingForShutdown</varname> and <varname>PreparingForSleep</varname> boolean
properties are true during the interval between the two <function>PrepareForShutdown()</function> and
- <function>PrepareForSleep()</function> signals respectively. Note that these properties do not
- send out <function>PropertyChanged</function> signals.</para>
+ <function>PrepareForSleep()</function> signals respectively. The
+ <varname>PreparingForShutdownWithMetadata</varname> property provides a list of key/value pair
+ metadata fields. Currently it lists a <varname>preparing</varname> boolean that corresponds to the
+ <varname>PreparingForShutdown</varname> property, and, if a shutdown is being prepared, it will also
+ contain a <varname>type</varname> string which defines the type of shutdown. The type can be one of
+ <literal>power-off</literal>, <literal>reboot</literal>, <literal>halt</literal>,
+ <literal>kexec</literal> or <literal>soft-reboot</literal>. Note that these properties do not send out
+ <function>PropertyChanged</function> signals.</para>
<para>The <varname>RebootParameter</varname> property shows the value set with the
<function>SetRebootParameter()</function> method described above.</para>
<varname>SleepOperation</varname>,
<varname>DesignatedMaintenanceTime</varname>, and
<function>ListSessionsEx()</function> were added in version 256.</para>
- <para><varname>HandleSecureAttentionKey</varname>, and
+ <para><varname>HandleSecureAttentionKey</varname>,
+ <varname>PreparingForShutdownWithMetadata</varname>, and
<function>SecureAttentionKey()</function> were added in version 257.</para>
</refsect2>
<refsect2>
return sd_bus_message_append(reply, "b", b);
}
+static int property_get_preparing_shutdown_with_metadata(
+ sd_bus *bus,
+ const char *path,
+ const char *interface,
+ const char *property,
+ sd_bus_message *reply,
+ void *userdata,
+ sd_bus_error *error) {
+
+ Manager *m = ASSERT_PTR(userdata);
+
+ assert(bus);
+ assert(reply);
+
+ if (!m->delayed_action || !(m->delayed_action->inhibit_what & INHIBIT_SHUTDOWN))
+ return sd_bus_message_append(reply, "a{sv}", 1, "preparing", "b", false);
+
+ return sd_bus_message_append(
+ reply,
+ "a{sv}",
+ 2,
+ "preparing",
+ "b",
+ true,
+ "type",
+ "s",
+ handle_action_to_string(m->delayed_action->handle));
+}
+
static int property_get_sleep_operations(
sd_bus *bus,
const char *path,
SD_BUS_PROPERTY("IdleAction", "s", property_get_handle_action, offsetof(Manager, idle_action), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("IdleActionUSec", "t", NULL, offsetof(Manager, idle_action_usec), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PreparingForShutdown", "b", property_get_preparing, 0, 0),
+ SD_BUS_PROPERTY("PreparingForShutdownWithMetadata", "a{sv}", property_get_preparing_shutdown_with_metadata, 0, 0),
SD_BUS_PROPERTY("PreparingForSleep", "b", property_get_preparing, 0, 0),
SD_BUS_PROPERTY("ScheduledShutdown", "(st)", property_get_scheduled_shutdown, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
SD_BUS_PROPERTY("DesignatedMaintenanceTime", "s", property_get_maintenance_time, 0, 0),