Не уверенный, если это - соответствующий вопрос для этого сайта, так как это не действительно характерно для Ubuntu. Те, кто чувствует это, не, должен, вероятно, ответить на мой кросспостинг на Unix и Linux stackexchange сайт. Извините за любой беспорядок я все еще согласовываю границы между этими сайтами (и superuser.com, где я также осуществил кросспостинг). Я предполагаю, что все мы.
Я делаю интенсивное использование рабочих областей и имею многие из них (6x4 сетка). Я обычно выполняю openbox, но в настоящее время использую машину, которая не имеет openbox настроенным, таким образом, я использую xfce, потому что это уже главным образом настроено к моей симпатии. Я привык к получению визуальной обратной связи, когда я переключаю рабочие области, показывая мне, в какой я только что переместился, и нахожу меня немного дезориентированным в xfce. В openbox это - большой настороженный дисплей, который в значительной степени идеален. Я знаю, что апплет панели переключателя рабочей области выделит активную рабочую область, но это только, кажется, работает на рабочие области, которые имеют некоторый показ места на рабочем столе; так как у меня обычно есть все свои максимизируемые окна, это не супер полезно.
Существует ли способ включить визуальную обратную связь, показывающую новую рабочую область при переключении рабочих областей в xfce?
Вы могли установить носатый
сохраните это в файл...
# 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 для ДОКУМЕНТОВ.
Единственная вещь, о которой я могу думать, состоит в том, чтобы использовать отдельные обои (я полагаю, что это возможно, но я не могу подтвердить, поскольку я не использую xfce каждый день) для каждого рабочего стола. Если Вы не возражаете использовать compiz, можно настроить его работа во многом как xfwm и установка рабочей области namer плагин, который позволяет Вам иметь названия каждой рабочей области, отображенной, когда Вы переключаетесь.
Я сделал небольшую модификацию к носатому сценарию выше
Это будет допускать прозрачность для чисел под 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}
Я написал маленький код, который показывает уведомление на действии переключателя рабочей области. Этот код требует 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;
}
Я изменил ответ Isaac Pessoa для своих собственных предпочтений. Вместо того, чтобы показать уведомление на измененной рабочей области, это кратко показывает скрытую панель Xfce с виджетом переключателя рабочей области.
Вот то, на что это похоже при переключении рабочих областей:
Сохраните этот файл как 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: Настройки-> Сессия и Запуск-> Автоматический запуск Приложения.
Это точно, что я искал. Спасибо, 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 от списка автоматического запуска приложений, проблема была исправлена..
У меня есть этот небольшой 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()
Большинству ответов 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
(поставьте себя в тот же каталог как исполняемый файл). Можно также теперь установить для выполнения команды при запуске.