LINUX.ORG.RU

Когда коту делать нечего

 , , , , ,


0

2

Ехал в поезде, внезапно подумалось, что неплохо было бы видеть время как «там», так и «тут». В часовом плагине для lxpanel(x) подобная возможность отсутствовала, потому быстренько на коленке накостылял.

Жаль ни манов, ни интернета не было, потому православность способа (setenv «TZ») у меня вызывает некоторые сомнения, ну да ладно, работает - и хорошо.

>>> Просмотр (1024x600, 91 Kb)

★★★★★

Проверено: DoctorSinus ()

Жаль ни манов, ни интернета не было, потому православность способа (setenv «TZ») у меня вызывает некоторые сомнения, ну да ладно, работает - и хорошо.

Добейся православности и кидай патч. Добавлю в svn.

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

как-то так

Index: po/ru.po
===================================================================
--- po/ru.po	(revision 193)
+++ po/ru.po	(working copy)
@@ -780,6 +780,10 @@
 msgid "Tooltip only"
 msgstr "Только подсказки"
 
+#: ../src/plugins/dclock.c:446
+msgid "Timezone"
+msgstr "Часовой пояс"
+
 #: ../src/plugins/dclock.c:458
 msgid "Digital Clock"
 msgstr "Цифровые часы"
Index: src/plugins/dclock.c
===================================================================
--- src/plugins/dclock.c	(revision 193)
+++ src/plugins/dclock.c	(working copy)
@@ -42,6 +42,7 @@
     char * clock_format;			/* Format string for clock value */
     char * tooltip_format;			/* Format string for tooltip value */
     char * action;				/* Command to execute on a click */
+    char * timezone;				/* Timezone */
     gboolean bold;				/* True if bold font */
     gboolean icon_only;				/* True if icon only (no clock value) */
     guint timer;				/* Timer for periodic update */
@@ -169,18 +170,30 @@
     /* Determine the current time. */
     time_t now;
     time(&now);
-    struct tm * current_time = localtime(&now);
 
+    gchar* oldtz = NULL;
+    struct tm * current_time;
+    if (dc->timezone) {
+        oldtz = g_strdup(g_getenv("TZ"));
+        g_setenv("TZ", dc->timezone, 1);
+        current_time = localtime(&now);
+        if(oldtz) 
+            g_setenv("TZ", oldtz, 1);
+        else 
+            g_unsetenv("TZ");
+    } else 
+        current_time = localtime(&now);
+
     /* Determine the content of the clock label and tooltip. */
     char clock_value[64];
     char tooltip_value[64];
+
     clock_value[0] = '\0';
     if (dc->clock_format != NULL)
         strftime(clock_value, sizeof(clock_value), dc->clock_format, current_time);
     tooltip_value[0] = '\0';
     if (dc->tooltip_format != NULL)
         strftime(tooltip_value, sizeof(tooltip_value), dc->tooltip_format, current_time);
-
     /* When we write the clock value, it causes the panel to do a full relayout.
      * Since this function may be called too often while the timing experiment is underway,
      * we take the trouble to check if the string actually changed first. */
@@ -311,6 +324,8 @@
                     dc->bold = str2num(bool_pair, s.t[1], 0);
                 else if (g_ascii_strcasecmp(s.t[0], "IconOnly") == 0)
                     dc->icon_only = 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
                     ERR( "dclock: unknown var %s\n", s.t[0]);
             }
@@ -373,6 +388,7 @@
     g_free(dc->action);
     g_free(dc->prev_clock_value);
     g_free(dc->prev_tooltip_value);
+    g_free(dc->timezone);
     g_free(dc);
 }
 
@@ -427,6 +443,7 @@
         _("Action when clicked (default: display calendar)"), &dc->action, (GType)CONF_TYPE_STR,
         _("Bold font"), &dc->bold, (GType)CONF_TYPE_BOOL,
         _("Tooltip only"), &dc->icon_only, (GType)CONF_TYPE_BOOL,
+        _("Timezone")  , &dc->timezone , (GType)CONF_TYPE_STR,
         NULL);
     if (dlg)
         gtk_window_present(GTK_WINDOW(dlg));
@@ -441,6 +458,7 @@
     lxpanel_put_str(fp, "Action", dc->action);
     lxpanel_put_int(fp, "BoldFont", dc->bold);
     lxpanel_put_int(fp, "IconOnly", dc->icon_only);
+    lxpanel_put_str(fp, "TZ", dc->timezone);
 }
 
 /* Callback when panel configuration changes. */
lazyklimm ★★★★★
() автор топика
Ответ на: комментарий от ertgblasd

это lxpanelx - форк geekless-а с несколькими полезными улучшениями.

Фон стащил с youtube. Иконки - elementaryXubuntu-dark (кроме лого дебиана - обесцвечивал вручную). ШГ - Lucida Grande

lazyklimm ★★★★★
() автор топика

Очень понравилась идея, вы молодец. Захотелось сразу... Знаете игру Uplink? Там в правом вверхнем углу карта была, и по ее клику открывалась увеличенная карта, где прокладывался маршрут. Так вот, захотелось чтобы при клике на часы открывалось небольшое окошечко с картой планеты Земля, с нарисованными часовыми поясами на ней. При наведении на какую-либо точку этой картинки, всплавала подсказка - время в этой точке. Хотя конечно много какой функционал можно придумать с картой планеты.

Но, отображать часы с лишь нужными пунктами «тут» и «там» - тоже гениальная мысль, теперь буду пользоваться.

И раз уж вы первый кто попался под руку, то - вам не мешает мыльное Ш при кодинге? Может я сильно вглядываюсь в код, когда его пишу, и поэтому глаза плывут, если включено сглаживание шрифта; но невыносимо сконцентрироваться на мыльном коде.

По всему остальному - скриншот на «отлично».

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

Так вот, захотелось чтобы при клике на часы открывалось небольшое окошечко с картой планеты Земля, с нарисованными часовыми поясами на ней. При наведении на какую-либо точку этой картинки, всплавала подсказка - время в этой точке. Хотя конечно много какой функционал можно придумать с картой планеты.

А вы напишите такое приложение. ;-) Ну а уж в апплете часов у lxpanelx есть поле для указание, какую команду запускать по щелчку.

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

вам не мешает мыльное Ш при кодинге?

мешает, но без сглаживания на нынешних DPI глаза режет, потому, как компромисс - легкий хинтинг без rgba

p.s. можно на «ты», мне так уютнее

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

расчетное - 118.68, в настройках - 120

lazyklimm ★★★★★
() автор топика
Ответ на: комментарий от le_legioner

дык, уже больше 3 лет как не FreeBSD - устал канпелять и иметь, хоть и небольшие, но постоянные проблемы с железом и софтом.

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

Через гмыловский жаббер: igeekless@gmail.com. Но не сегодня и не завтра. :)

geekless ★★
()

Классная вещица, прям под Новый Год.

Ginki
()

главная фишка кед теперь и в lxpanel :D

tazhate ★★★★★
()

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

Irremann ★★
()

Ностальгия. Напомнило когда я ездил к девушке в Москву накануне НГ. Тоже хотелось постоянно видеть который час у нее =)

observer ★★★
()

Ещё одна идея geekless'у на счёт часов: горизонтальное расположение часов (либо в настройках, либо при условии, если панель находится в боковой части экрана). А то мы с Климом помниться когда-то костылили, добавляя два аплета часов: один с показанием часа, другой - минут.

soko1 ★★★★★
()

А скрин хороший, надо будет себе поставить lxpanelx

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