Получение визуальной обратной связи рабочей области переключается в xfce

Не уверенный, если это - соответствующий вопрос для этого сайта, так как это не действительно характерно для Ubuntu. Те, кто чувствует это, не, должен, вероятно, ответить на мой кросспостинг на Unix и Linux stackexchange сайт. Извините за любой беспорядок я все еще согласовываю границы между этими сайтами (и superuser.com, где я также осуществил кросспостинг). Я предполагаю, что все мы.

Я делаю интенсивное использование рабочих областей и имею многие из них (6x4 сетка). Я обычно выполняю openbox, но в настоящее время использую машину, которая не имеет openbox настроенным, таким образом, я использую xfce, потому что это уже главным образом настроено к моей симпатии. Я привык к получению визуальной обратной связи, когда я переключаю рабочие области, показывая мне, в какой я только что переместился, и нахожу меня немного дезориентированным в xfce. В openbox это - большой настороженный дисплей, который в значительной степени идеален. Я знаю, что апплет панели переключателя рабочей области выделит активную рабочую область, но это только, кажется, работает на рабочие области, которые имеют некоторый показ места на рабочем столе; так как у меня обычно есть все свои максимизируемые окна, это не супер полезно.

Существует ли способ включить визуальную обратную связь, показывающую новую рабочую область при переключении рабочих областей в xfce?

7
задан 13 April 2017 в 05:37

8 ответов

Вы могли установить носатый

сохраните это в файл...

# Static and Variable Values used by Habitual/John Jones

# Static Values
own_window yes
own_window_transparent yes
own_window_type desktop
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
use_xft yes
draw_outline no
draw_borders no
uppercase no
draw_shades no
draw_shades yes
double_buffer yes
border_width 0
text_buffer_size 2048
default_color white
update_interval 1.0

# Variable Values # These values are the ONLY thing that change from widget to widget
alignment bm
gap_x 5
gap_y 44
minimum_size 50 1
maximum_width 100

TEXT
${desktop_number}

выполните его в Xfce. (терминал)-> с носатым-c/path/to/file и

значок/средство запуска носатый-c/path/to/file

Каждый раз Вы переключаете рабочие столы, количество рабочего стола будет на экране.

"значение" BM выравнивания управляет настольным размещением. BM является средним нижней частью.

См. http://conky.sourceforge.net/docs.html для ДОКУМЕНТОВ.

1
ответ дан 23 November 2019 в 06:14

Единственная вещь, о которой я могу думать, состоит в том, чтобы использовать отдельные обои (я полагаю, что это возможно, но я не могу подтвердить, поскольку я не использую xfce каждый день) для каждого рабочего стола. Если Вы не возражаете использовать compiz, можно настроить его работа во многом как xfwm и установка рабочей области namer плагин, который позволяет Вам иметь названия каждой рабочей области, отображенной, когда Вы переключаетесь.

1
ответ дан 23 November 2019 в 06:14

Я сделал небольшую модификацию к носатому сценарию выше

Это будет допускать прозрачность для чисел под XFCE, и также можно изменить размер шрифта. Это также использует корректную переменную для отображения идентификационных данных рабочей области

# Static and Variable Values used by Habitual/John Jones
# Added to by AMH to add transparency under newer XFCE, the gothic font
# for sizing and changed the desktop variable to display the workspace
# correctly

# Static Values
own_window yes
own_window_transparent yes
own_window_type desktop
# Added to allow transparency in XFCE
own_window_argb_visual yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
use_xft yes
draw_outline no
draw_borders no
uppercase no
draw_shades no
draw_shades yes
double_buffer yes
border_width 0
text_buffer_size 2048
default_color white
update_interval 1.0

# Variable Values # These values are the ONLY thing that change from widget to widget
alignment bm
gap_x 5
gap_y 44
minimum_size 50 1
maximum_width 100

TEXT
${color light blue}${font URW Gothic L:size=60}${desktop}
1
ответ дан 23 November 2019 в 06:14

Я написал маленький код, который показывает уведомление на действии переключателя рабочей области. Этот код требует libnotify и libwnck

Для компиляции его используют команду:

gcc -O2 -o wsnd `pkg-config  --cflags --libs libnotify --libs libwnck` wsn.c

При нахождении ошибок компиляции с вышеупомянутой командой попробуйте этого:

gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wsnd `pkg-config  --cflags --libs libnotify --libs libwnck-1.0` wsn.c

Протестировать его от терминала:./wsnd

Включайте его как приложение запуска XFCE: В XFCE необходимо добавить его как запуск applicaion на менеджере настроек-> сессия и запуск-> Автоматический запуск Приложения

Код:

//////////////////////////////////////////////////////////////////////////////////////
// Workspace Switch Notifier                                                        //
// Shows a OSD with workspace name on workspace switching action                    //
//                                                                                  //
// wsn.c -                                                                          //
//                                                                                  //
// Authors:                                                                         //
//    Isaac Maia Pessoa                                                             //
//                                                                                  //
// This program is free software: you can redistribute it and/or modify it          //
// under the terms of the GNU General Public License version 3, as published        //
// by the Free Software Foundation.                                                 //
//                                                                                  //
// This program is distributed in the hope that it will be useful, but              //
// WITHOUT ANY WARRANTY; without even the implied warranties of                     //
// MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR               //
// PURPOSE.  See the GNU General Public License for more details.                   //
//                                                                                  //
// You should have received a copy of the GNU General Public License along          //
// with this program.  If not, see <http://www.gnu.org/licenses/>.                  //
//////////////////////////////////////////////////////////////////////////////////////

#include <libnotify/notify.h>
#include <libwnck/libwnck.h>

#define N_SUMMARY "Workspace Changed"
#define N_ICON    "dialog-information"
#define N_APPNAME "workspace switch notifier"
#define N_TIMEOUT 2000 /*2000ms = 2s */

static NotifyNotification * m_notification = NULL;

static void
on_active_workspace_changed (WnckScreen    *screen,
                             WnckWorkspace *space,
                             gpointer      data)
{

  WnckWorkspace * active_workspace = wnck_screen_get_active_workspace(screen);
  const char * w_name = wnck_workspace_get_name (active_workspace);

  notify_notification_update(m_notification, N_SUMMARY, w_name, N_ICON);
  notify_notification_show(m_notification, NULL);
}

int main(int argc, char ** argv)
{

   GMainLoop *loop;   
   WnckScreen *screen;

   if (notify_init(N_APPNAME))
       m_notification = notify_notification_new(N_SUMMARY, "" , N_ICON);
   else
       fprintf(stderr, "Failed to init notifications\n");
   notify_notification_set_timeout(m_notification, N_TIMEOUT);

   gdk_init (&argc, &argv);

   loop = g_main_loop_new (NULL, FALSE);
   screen = wnck_screen_get_default();

   g_signal_connect (screen, "active-workspace-changed",
                    G_CALLBACK (on_active_workspace_changed), NULL);

   g_main_loop_run (loop);

   g_main_loop_unref (loop);    

   return 0;
}
10
ответ дан 23 November 2019 в 06:14

Я изменил ответ Isaac Pessoa для своих собственных предпочтений. Вместо того, чтобы показать уведомление на измененной рабочей области, это кратко показывает скрытую панель Xfce с виджетом переключателя рабочей области.

Вот то, на что это похоже при переключении рабочих областей: example

Сохраните этот файл как wschanged.c:

#include <libwnck/libwnck.h>
#include <stdlib.h>

static void
on_active_workspace_changed (WnckScreen    *screen,
                             WnckWorkspace *space,
                             gpointer      data)
{
    // Executes a script on workspace change
    system ("~/.workspace-changed");
}

int main(int argc, char ** argv)
{

   GMainLoop *loop;   
   WnckScreen *screen;

   gdk_init (&argc, &argv);

   loop = g_main_loop_new (NULL, FALSE);
   screen = wnck_screen_get_default();

   g_signal_connect (screen, "active-workspace-changed",
                    G_CALLBACK (on_active_workspace_changed), NULL);

   g_main_loop_run (loop);
   g_main_loop_unref (loop);    

   return 0;
}

Теперь создайте новую панель Xfce где угодно на краю Вашего экрана и установите его для автоскрытий. Добавьте виджет переключателя рабочей области. Обратите внимание на число панели, как отображено в выпадающем меню предпочтительного окна панели.

Сделайте .workspace-измененный файл в своем корневом каталоге, заменив <P_NUMBER> числом панели, которое Вы просто создали. Удостоверьтесь, что этот файл является исполняемым файлом! (chmod +x .workspace-измененный)

#!/bin/sh

# Show the auto-hidden workspace panel for a moment, then set it to autohide again
xfconf-query -c xfce4-panel -p /panels/panel-<P_NUMBER>/autohide -t bool -s false
xfconf-query -c xfce4-panel -p /panels/panel-<P_NUMBER>/autohide -t bool -s true

Теперь скомпилируйте с:

gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wschanged `pkg-config  --cflags --libs libwnck-1.0` wschanged.c

Протестируйте его в своем терминале (./wschanged), чтобы удостовериться, что все выглядит правильным. При удовлетворении добавьте программу как приложение запуска Xfce: Настройки-> Сессия и Запуск-> Автоматический запуск Приложения.

2
ответ дан 23 November 2019 в 06:14

Это точно, что я искал. Спасибо, Isaac Pessoa и zspotter! Я использую Xfce на Дуге, и в духе хранения его минимальный, я не хотел обращаться к установке Compiz.

Я не уверен, было ли это или происходить с кем-либо еще, но я заметил что-то довольно странное: панель, которую я настроил, чтобы быть индикатором рабочей области, была настроена для показа 3 строк (у меня есть 9 рабочих столов). Это было установлено быть о том же размере как, что Вы войдете в Ubuntu (приблизительно 3x6 дюймов). Однако это только показало бы одну строку, пока я не щелкнул правой кнопкой по панели и выбрал свойства (который, чтобы быть ясным, должен был отобразить окно свойств переключателя рабочей области). Фиксация должна была удалить переключатель рабочей области, который был в другой группе.

Кроме того, для изменения, сколько времени индикаторная панель рабочей области отображается, прежде чем она автоскроется снова, необходимо будет добавить это к .gtkrc-2.0 файлу:

    style "xfce-panel-window-style"
{
  # Time in miliseconds before the panel will unhide on an enter event
  XfcePanelWindow::popup-delay = 225

  # Time in miliseconds before the panel will hide on a leave event
  XfcePanelWindow::popdown-delay = 350

  # Size of autohide window in pixels
  XfcePanelWindow::autohide-size = 3
}
class "XfcePanelWindow" style "xfce-panel-window-style"

Найденный здесь

В моем случае, так как я нахожусь на Arch, не существует gtkrc-2.0 файл. Я должен был добавить это к gtkrc файлу в моем ~/.themes / [имя темы здесь] каталог.

Измените раскрывающуюся задержку и popdown-задержку с Вашей симпатией. По некоторой странной причине я должен был установить значения приблизительно в половине того, чем я хотел, чтобы они были. Вероятно, имеет некоторое отношение к wschanged выполнение сценария.

Если Вы захотите поместить панель посреди своего экрана, показывающего сетку рабочих областей, то (подобный Ubuntu) необходимо будет установить альфу той панели (под вкладкой появления в предпочтениях панели) полностью вниз. Тем путем Вы не будете видеть маленькую панель сверху всех своих окон. Устанавливание значения автоскрывать-размера к 1 сделает почти невозможным для той панели показать случайно.

Одна последняя вещь: если курсор, окажется, будет сверху панели при переключении рабочих областей то это случайным образом покажет подсказку, и я должен переместить курсор прочь панели, чтобы заставить это скрываться снова. Не грандиозное предприятие все же.

Править: Я использовал фиксацию zspotter для этого.

Править: Я просто заметил, что прокрутка мыши, в то время как сфокусировано на рабочем столе переключит рабочие области (использующий фиксацию zspotter). Мило!

Править: Это вызывает мое уведомление popus (т.е. при использовании кнопок громкости, и т.д.) для появления в неправильном месте. А именно, при использовании опций, верхних левых или верхних правых, уведомления появляются в оставленном середине или среднем праве. Я не имею, osd-уведомляют установленный - просто xfce4-notifyd. Все в настройках, казалось, было корректно. Когда я удалил панель и взял wschanged от списка автоматического запуска приложений, проблема была исправлена..

1
ответ дан 23 November 2019 в 06:14

У меня есть этот небольшой python3 блоб кода, который реагирует на переключение рабочей области.

Это не сделано отобразить уведомление, но работать вокруг ошибки перерисовки хрома. Что-либо Вы хотите произойти на переключателе рабочей области, можно легко добавить к функции "fire_the_kludge" все же.

https://github.com/aking1012/chromiumKludge/blob/master/kludge.py

Вот переделанный пример, который использует libnotify2, чтобы сказать Вам Вашу рабочую область:

#!/usr/bin/env python3

from gi.repository import Wnck, Gtk, Notify
import signal, time

class Kludge:
    def __init__(self):
        self.first = True
        signal.signal(signal.SIGINT, signal.SIG_DFL)
        self.screen = Wnck.Screen.get_default()
        Notify.init("Workspace Switch Notifier")

    def fire_the_kludge(self, data_a, data_b):
        time.sleep(.1)
        try:
            workspace_num = str(self.screen.get_active_workspace().get_number())
        except:
            workspace_num = "Some error happened"
        popup = Notify.Notification.new("Workspace: " + workspace_num)
        popup.show()
        time.sleep(1)
        popup.close()

    def main(self):
        self.screen.connect("active-workspace-changed", self.fire_the_kludge)
        Gtk.main()

if __name__ == '__main__':
    print("Here comes the kludge")
    kludge = Kludge()
    kludge.main()
1
ответ дан 23 November 2019 в 06:14

Большинству ответов 5 лет, и с xubuntu 18.04 не работают больше. Я соединил обновленную версию ответа zspotter, который работает 18.04. Для простоты я предположу, что все файлы расположены в корневом каталоге, можно легко адаптировать сценарии к другой папке.

Сначала создайте файл, названный wschanged.c с этим, удовлетворяет:

#include <libwnck/libwnck.h>
#include <stdlib.h>

static void
on_active_workspace_changed (WnckScreen    *screen,
                             WnckWorkspace *space,
                             gpointer      data)
{
    // Executes a script on workspace change
    system ("~/.workspace-changed");
}

int main(int argc, char ** argv)
{

   GMainLoop *loop;   
   WnckScreen *screen;

   gdk_init (&argc, &argv);

   loop = g_main_loop_new (NULL, FALSE);
   screen = wnck_screen_get_default();

   g_signal_connect (screen, "active-workspace-changed",
                    G_CALLBACK (on_active_workspace_changed), NULL);

   g_main_loop_run (loop);
   g_main_loop_unref (loop);    

   return 0;
}

Во-вторых, создайте новую панель Xfce где угодно на краю Вашего экрана и установите его для автоскрытий. Добавьте виджет переключателя рабочей области. Обратите внимание на число панели, как отображено в выпадающем меню предпочтительного окна панели, в нашем примере число панели равняется 2, корректируйтесь соответственно.

В-третьих, здесь вещи начинают становиться отличающимися, создавать другой сценарий в той же папке, названной wschanged.sh с этим, удовлетворяет (не забудьте устанавливать его как исполняемый файл щелчком правой кнопкой-> свойства-> набор как исполняемый файл, или chmod +x .wschanged.sh в терминале):

#!/bin/sh

# Show the auto-hidden workspace panel for a moment, then set it to autohide again
xfconf-query -c xfce4-panel -p /panels/panel-2/autohide-behavior -s 1
xfconf-query -c xfce4-panel -p /panels/panel-2/autohide-behavior -s 2

Панели больше не имеют автоскрыть свойство, но свойство автоскрывать-поведения и таким образом корректировки в сценарии.

В-четвертых, мы должны скомпилировать.c файл, команды в предыдущих ответах больше не работают, как предложено здесь использование:

gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wschanged `pkg-config --cflags libwnck-3.0` wschanged.c `pkg-config --libs libwnck-3.0`

Если Вы получаете ошибочную установку libwnck-3-dev с sudo apt install libwnck-3-dev.

Можно теперь протестировать сценарий с ./wschanged (поставьте себя в тот же каталог как исполняемый файл). Можно также теперь установить для выполнения команды при запуске.

0
ответ дан 23 November 2019 в 06:14

Другие вопросы по тегам:

Похожие вопросы: