chiark / gitweb /
vala: take command line args to control whether to talk to system or session systemd
[elogind.git] / systemadm.vala
index edb3a38..c761511 100644 (file)
@@ -22,6 +22,8 @@ using GLib;
 using DBus;
 using Pango;
 
+static bool session = false;
+
 public class LeftLabel : Label {
         public LeftLabel(string? text = null) {
                 if (text != null)
@@ -68,7 +70,7 @@ public class MainWindow : Window {
         private RightLabel unit_description_label;
         private RightLabel unit_load_state_label;
         private RightLabel unit_active_state_label;
-        private RightLabel unit_load_path_label;
+        private RightLabel unit_fragment_path_label;
         private RightLabel unit_active_enter_timestamp_label;
         private RightLabel unit_active_exit_timestamp_label;
         private RightLabel unit_can_start_label;
@@ -96,7 +98,6 @@ public class MainWindow : Window {
                 notebook.append_page(job_vbox, new Label("Jobs"));
                 job_vbox.set_border_width(12);
 
-
                 unit_model = new ListStore(6, typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(Unit));
                 job_model = new ListStore(5, typeof(string), typeof(string), typeof(string), typeof(string), typeof(Job));
 
@@ -133,7 +134,7 @@ public class MainWindow : Window {
                 unit_description_label = new RightLabel();
                 unit_load_state_label = new RightLabel();
                 unit_active_state_label = new RightLabel();
-                unit_load_path_label = new RightLabel();
+                unit_fragment_path_label = new RightLabel();
                 unit_active_enter_timestamp_label = new RightLabel();
                 unit_active_exit_timestamp_label = new RightLabel();
                 unit_can_start_label = new RightLabel();
@@ -161,8 +162,8 @@ public class MainWindow : Window {
                 unit_table.attach(unit_load_state_label, 1, 2, 2, 3, AttachOptions.EXPAND|AttachOptions.FILL, AttachOptions.FILL, 0, 0);
                 unit_table.attach(new LeftLabel("Active State:"), 0, 1, 3, 4, AttachOptions.FILL, AttachOptions.FILL, 0, 0);
                 unit_table.attach(unit_active_state_label, 1, 2, 3, 4, AttachOptions.EXPAND|AttachOptions.FILL, AttachOptions.FILL, 0, 0);
-                unit_table.attach(new LeftLabel("Load Path:"), 0, 1, 4, 5, AttachOptions.FILL, AttachOptions.FILL, 0, 0);
-                unit_table.attach(unit_load_path_label, 1, 2, 4, 5, AttachOptions.EXPAND|AttachOptions.FILL, AttachOptions.FILL, 0, 0);
+                unit_table.attach(new LeftLabel("Fragment Path:"), 0, 1, 4, 5, AttachOptions.FILL, AttachOptions.FILL, 0, 0);
+                unit_table.attach(unit_fragment_path_label, 1, 2, 4, 5, AttachOptions.EXPAND|AttachOptions.FILL, AttachOptions.FILL, 0, 0);
                 unit_table.attach(new LeftLabel("Active Enter Timestamp:"), 0, 1, 5, 6, AttachOptions.FILL, AttachOptions.FILL, 0, 0);
                 unit_table.attach(unit_active_enter_timestamp_label, 1, 2, 5, 6, AttachOptions.EXPAND|AttachOptions.FILL, AttachOptions.FILL, 0, 0);
                 unit_table.attach(new LeftLabel("Active Exit Timestamp:"), 0, 1, 6, 7, AttachOptions.FILL, AttachOptions.FILL, 0, 0);
@@ -210,7 +211,7 @@ public class MainWindow : Window {
 
                 bbox.pack_start(cancel_button, false, true, 0);
 
-                bus = Bus.get(BusType.SESSION);
+                bus = Bus.get(session ? BusType.SESSION : BusType.SYSTEM);
 
                 manager = bus.get_object(
                                 "org.freedesktop.systemd1",
@@ -311,7 +312,7 @@ public class MainWindow : Window {
                 unit_description_label.set_text_or_na();
                 unit_load_state_label.set_text_or_na();
                 unit_active_state_label.set_text_or_na();
-                unit_load_path_label.set_text_or_na();
+                unit_fragment_path_label.set_text_or_na();
                 unit_active_enter_timestamp_label.set_text_or_na();
                 unit_active_exit_timestamp_label.set_text_or_na();
                 unit_can_reload_label.set_text_or_na();
@@ -323,7 +324,7 @@ public class MainWindow : Window {
                 unit_description_label.set_text_or_na(unit.description);
                 unit_load_state_label.set_text_or_na(unit.load_state);
                 unit_active_state_label.set_text_or_na(unit.active_state);
-                unit_load_path_label.set_text_or_na(unit.load_path);
+                unit_fragment_path_label.set_text_or_na(unit.fragment_path);
 
                 uint64 t = unit.active_enter_timestamp;
                 if (t > 0) {
@@ -514,14 +515,23 @@ public class MainWindow : Window {
         }
 }
 
+static const OptionEntry entries[] = {
+        { "session", 0,   0,                   OptionArg.NONE,   out session, "Connect to session bus", null },
+        { "system",  0,   OptionFlags.REVERSE, OptionArg.NONE,   out session, "Connect to system bus", null },
+        { null }
+};
+
 int main (string[] args) {
-        Gtk.init(ref args);
 
         try {
+                Gtk.init_with_args(ref args, "[OPTION...]", entries, "systemadm");
+
                 MainWindow window = new MainWindow();
                 window.show_all();
         } catch (DBus.Error e) {
                 message("%s", e.message);
+        } catch (GLib.Error e) {
+                message("%s", e.message);
         }
 
         Gtk.main();