LINUX.ORG.RU
ФорумTalks

Не может пережить кучу обновлений за раз, говорите?

 


0

2

Всем здрасти, господа, обезьяна на проводе. Давно не виделись.

В очередной раз развенчиваем городские легенды про кривой арч vs кривые руки. Арчик не обновлялся месяца 3-4 (а может и больше, не помню даже). 1 гиг обновлений, 474 пакета. Все прекрасно обновляется и работает. Единственное, что пришлось вручную сделать: перегенерировать initramfs, т.к. из-за изменения имени пакета udev получилась такая ситуация: старый udev удаляется, обновляется ядро, ставится новый udev. Из-за такой последовательности в postinstall-скрипте ядра не смог правильно отработать mkinitcpio.

А вот у кого руки действительно на этот раз кривоваты, так это у мейнтейнеров пакета filesystem. Раньше ссылки /var/lock и /var/run создавались при запуске инит-скриптов, теперь они вынесены в пакет, ооооок. Да вот только раньше они создавались с абсолютными путями, а теперь — с относительными. И если /var сам является симлинком на каталог не первого уровня (у меня является), то /var/{lock,run} начинают указывать куда угодно, только не туда, куда нужно. Пришлось поправить после первой перезагрузки, а то lxdm и ppp стартовать отказывались при виде такого счастья.

А, да, чтоб 2 раза не вставать: насчёт багрепортов по lxpanelx и прочим делам — займусь в ближайшие дни.

Ответ на: комментарий от geekless

Ставишь время(21:10), текст(«Беги плиту выключать»), и в назначенное время всплывает напоминание с назначенным текстом.

netcat ★★
()
Ответ на: комментарий от geekless

А в процессе я буду думать как тебя искать и что с тобой делать, если ты не закоммитишь этот код.

netcat ★★
()
Ответ на: комментарий от geekless
Index: src/plugins/dclock.c
===================================================================
--- src/plugins/dclock.c	(revision 495)
+++ src/plugins/dclock.c	(working copy)
@@ -60,6 +60,11 @@
     char * prev_clock_value;			/* Previous value of clock */
     char * prev_tooltip_value;			/* Previous value of tooltip */
     char * timezones;
+    gboolean alarm_on;
+    char* alarm_time;
+    char* alarm_text;
+    GtkWidget* alarm_dlg;
+    int alarm_already_has_called;
 } DClockPlugin;
 
 static void dclock_popup_map(GtkWidget * widget, DClockPlugin * dc);
@@ -74,7 +79,27 @@
 static void dclock_save_configuration(Plugin * p, FILE * fp);
 static void dclock_panel_configuration_changed(Plugin * p);
 
+static void dclock_alarm(DClockPlugin* dc)
+{
+    GtkWidget *dialog, *label, *content_area;
 
+   dialog = dc->alarm_dlg = gtk_dialog_new_with_buttons (_("Alarm"), NULL,\
+    GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT , NULL);
+   content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
+   label = gtk_label_new(dc->alarm_text);
+
+   g_signal_connect_swapped (dialog,
+                             "response",
+                             G_CALLBACK (gtk_widget_destroy),
+                             dialog);
+
+
+   gtk_container_add (GTK_CONTAINER (content_area), label);
+   gtk_widget_show_all (dialog);
+   dc->alarm_on = FALSE; 
+   dclock_apply_configuration(dc->plugin);
+}
+
 static gchar ** dclock_get_format_strings(Plugin * plugin)
 {
     gchar ** result = NULL;
@@ -328,7 +353,14 @@
             g_unsetenv("TZ");
     } else 
         current_time = localtime(&now);
-
+    
+    if(dc->alarm_on)
+    {
+        char buf[128];
+        strftime(buf, 128, "%H:%M", current_time);
+        if(!g_strcmp0(buf, dc->alarm_time))
+            dclock_alarm(dc);
+    }
     /* Determine the content of the clock label and tooltip. */
     char clock_value[64];
     char tooltip_value[64];
@@ -472,6 +504,12 @@
                     dc->center_text = str2num(bool_pair, s.t[1], 0);
                 else if (g_ascii_strcasecmp(s.t[0], "TZ") == 0)
                     dc->timezone = g_strdup(s.t[1]);
+                else if (g_ascii_strcasecmp(s.t[0], "AlarmOn"))
+                    dc->alarm_on = str2num(bool_pair, s.t[1], 0);
+                else if (g_ascii_strcasecmp(s.t[0], "AlarmTime"))
+                    dc->alarm_time = g_strdup(s.t[1]); 
+                else if (g_ascii_strcasecmp(s.t[0], "AlarmText"))
+                    dc->alarm_text = g_strdup(s.t[1]);
                 else
                     ERR( "dclock: unknown var %s\n", s.t[0]);
             }
@@ -616,6 +654,9 @@
         _("Center text"), &dc->center_text, CONF_TYPE_BOOL,
         _("Timezone")  , &dc->timezone , (GType)CONF_TYPE_STR,
         "completion-list", (gpointer)dclock_get_timezones(dc), (GType)CONF_TYPE_SET_PROPERTY,
+	_("Switch alarm on"), &dc->alarm_on, (GType)CONF_TYPE_BOOL,
+	_("Alarm time"), &dc->alarm_time, (GType)CONF_TYPE_STR,
+	_("Alarm text"), &dc->alarm_text, (GType)CONF_TYPE_STR,
         NULL);
     if (dlg)
         gtk_window_present(GTK_WINDOW(dlg));
@@ -632,6 +673,9 @@
     lxpanel_put_int(fp, "IconOnly", dc->icon_only);
     lxpanel_put_int(fp, "CenterText", dc->center_text);
     lxpanel_put_str(fp, "TZ", dc->timezone);
+    lxpanel_put_int(fp, "AlarmOn", dc->alarm_on);
+    lxpanel_put_str(fp, "AlarmTime", dc->alarm_time);
+    lxpanel_put_str(fp, "AlarmText", dc->alarm_text);
 }
 
 /* Callback when panel configuration changes. */

Ок?

netcat ★★
()
Ответ на: комментарий от geekless

Ты выходи в жабер, а то мы тут уже оффтопим по-черному.

netcat ★★
()
Ответ на: комментарий от geekless

И еще, я не понял, почему в data/ui есть как .ui, так и .glade файлы? Одни генерятся из других? И если да, то зачем?

netcat ★★
()
Ответ на: комментарий от geekless

Так, в общем у меня проблема. Я создаю GtkDialog и мне нужно впихнуть в него VBox из созданного мною .glade файла. Но чего-то не получается.

Index: src/plugins/dclock.c
===================================================================
--- src/plugins/dclock.c	(revision 538)
+++ src/plugins/dclock.c	(working copy)
@@ -62,6 +62,9 @@
     char * prev_clock_value;			/* Previous value of clock */
     char * prev_tooltip_value;			/* Previous value of tooltip */
     char * timezones;
+    int alarm_on;
+    char* alarm_time;
+    char* alarm_text;
 } DClockPlugin;
 
 static void dclock_popup_map(GtkWidget * widget, DClockPlugin * dc);
@@ -76,7 +79,37 @@
 static void dclock_save_configuration(Plugin * p, FILE * fp);
 static void dclock_panel_configuration_changed(Plugin * p);
 
-#if GTK_CHECK_VERSION(2,16,0)
+static void dclock_alarm_item_activated(GtkMenuItem *item, DClockPlugin *dc)
+{
+    GtkWidget *dialog, *is_set, *time, *message, *content_area, *main_box;
+    GtkBuilder *builder = gtk_builder_new();
+    char* filename = get_private_resource_path(RESOURCE_DATA, "ui", "dclock-alarm.ui", 0);
+    dialog = gtk_dialog_new_with_buttons("Set alarm",
+                                        NULL,
+                                        GTK_DIALOG_DESTROY_WITH_PARENT,
+                                        GTK_STOCK_OK,
+                                        GTK_RESPONSE_NONE,
+                                        NULL);
+    content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
+    gtk_builder_add_from_file(builder, filename, NULL);
+    main_box = gtk_builder_get_object(builder, "main_box");
+    time = gtk_builder_get_object(builder, "time_text");
+    message = gtk_builder_get_object(builder, "message_text");
+    gtk_container_remove(dialog, content_area);
+    gtk_container_add(dialog, main_box);
+    gtk_widget_show(main_box);
+    g_signal_connect_swapped(dialog,
+                            "response",
+                            G_CALLBACK (gtk_widget_destroy),
+                            dialog);
+    switch(gtk_dialog_run(dialog))
+    {
+        case GTK_RESPONSE_OK:
+            break;
+        default:
+            break;
+    }
+}
 
 static gchar ** dclock_get_format_strings(Plugin * plugin)
 {
@@ -159,8 +192,6 @@
     }
 }
 
-#endif
-
 static char * dclock_get_timezones(DClockPlugin * dc)
 {
     if (!dc->timezones)
@@ -264,6 +295,10 @@
         dclock_generate_copy_to_clipboard_menu(context_menu, plugin);
         gtk_widget_show_all(GTK_WIDGET(context_menu));
 #endif
+        GtkMenuItem* alarm_item = gtk_menu_item_new_with_label(_("Set alarm"));
+        g_signal_connect(G_OBJECT(alarm_item), "activate", G_CALLBACK(dclock_alarm_item_activated), NULL);
+        gtk_menu_shell_prepend(context_menu, alarm_item);
+        gtk_widget_show(alarm_item);
         gtk_menu_popup(context_menu, NULL, NULL, NULL, NULL, evt->button, evt->time);
         return TRUE;
     }

netcat ★★
()

очередной школолоарчевод с болью в заднице не влияет на тот факт, что постов с поломками после обновления арча тут стабильно много.

Deleted
()

Очередная история успеха

Не делал полного обновления около двух месяцев.

Накопилось обновлений на 600 Мб, включая свежие кеды, ядро, NVIDIA-блоб и печально известное обновление glibc с перемещением /lib. Зная последнее, прочитал новость на оф. сайте и выполнил следующие команды для полного обновления:

pacman -Syu --ignore glibc
pacman -Su
Всё работает, ничего не сломалось. Впрочем, как и ожидалось =]

И как после этого относится ко всякого рода нытик-тредам типа «Арч сломался после обновления»?
Арч не для тех, кто не умеет читать и/или имеет руки из задницы, извиняюсь.

neocrust ★★★★★
()
Ответ на: комментарий от geekless

Извини, твой внутренний мир здесь не застрахован. Но ты можешь зарыть голову в песок и думать о приятном.

Deleted
()
Ответ на: комментарий от netcat

Так, ладно, сам разобрался, иду дальше. Настройки таймера буду хранить в оперативной памяти, думаю, в файл их записывать ни к чему.

netcat ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.