2017-02-23 8 views
-1

제목에 정확하게 구두점이 있는지 확실하지 않습니다. 하지만 기본적으로 바탕 화면 배경으로 gif를 설정하려면 xubuntu 및 xfce에서 실행되는 gtk3에 약간의 C 프로그램을 작성하려고합니다. gtk_window_set_keep_below()를 사용하여 다른 모든 창 아래에 창을 유지할 수 있습니다. 그러나 데스크톱 실행기/아이콘은 여전히 ​​그 아래에 있습니다. 또한 나는 창문이 바탕 화면처럼 행동하기를 원한다. 그래서 마우스 오른쪽 버튼을 클릭하면 일반 바탕 화면 오른쪽 클릭 메뉴가 나타난다. gtk를 사용하여 이러한 것들이 가능합니까? 나는 api를 통해보고 있었지만 아무 것도 발견하지 못했습니다. 어떤 아이디어?바탕 화면 배경으로 GTK 창, 스태킹 순서를 낮추는 방법

지금까지 내가 설명한 두 가지 행동을 제외한 모든 것을 가지고 있습니다. 다음은 창을 만드는 데 사용하는 코드입니다.

static void activate (GtkApplication* app, gpointer user_data) 
{ 
    GtkWidget *window; 
    GtkWidget *layout; 
    GtkWidget *image; 

    window = gtk_application_window_new (app); 
    layout = gtk_layout_new(NULL, NULL); 
    image = gtk_image_new_from_file("/some/path/pic.gif"); 

    gtk_container_add(GTK_CONTAINER (window), layout); 
    gtk_widget_show(layout); 
    gtk_layout_put(GTK_LAYOUT(layout), image, 0, 0); 
    gtk_window_set_title (GTK_WINDOW (window), "Window"); 
    gtk_window_set_default_size (GTK_WINDOW (window), 500, 340); 

    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 
    gtk_widget_set_app_paintable(window, TRUE); 
    gtk_window_set_type_hint((GtkWindow*)window, (GdkWindowTypeHint)GDK_WINDOW_TYPE_HINT_DESKTOP); 
    gtk_window_set_decorated((GtkWindow*)window, 0); 
    gtk_window_set_keep_below((GtkWindow*)window, 1); 
    gtk_window_set_accept_focus((GtkWindow*)window, 0); 

    gtk_widget_show_all (window); 
} 
+0

관련없는 언어에 대한 태그를 추가 한 이유는 무엇입니까? – Olaf

+0

아닙니다. 결정된. – Cey

+0

내 의견을 이해하지 못했습니다. 명확하게 : 스팸 태그를 사용하지 마십시오! C와 C++은 서로 다른 언어입니다! – Olaf

답변

0

새 창을 만들어서 마술처럼 바꿀 수 있기를 바랍니다. 이미 실행 프로그램이있는 데스크톱이 있으므로 단순히 뭔가를 추가 할 수는 없으므로 대신해야합니다. 내가 알고있는 예제 인 노틸러스 (일명 GNOME 파일)가 데스크탑을 처리합니다. 그것은 파일 관리자이고, 데스크탑은 디렉토리의 특별한 최대화 된보기입니다.

Xfce도 같은 방식으로 처리해야합니다. 따라서 실행 프로그램과 바탕 화면 배경은 동일한 위젯 트리에서 동일한 응용 프로그램에 있습니다. 나는 당신이 사이에 뭔가를 넣을 수 있다고 생각하지 않습니다. 따라서 기존 파일 관리자를 사용하여 배경 화면을 변경하거나 완전히 대체 한 자신 만의보기를 구현합니다 (하지만 다시 구현하지 않으면 시작 프로그램 기능을 잃어 버릴 수 있습니다. 경험이 없다면 오래 걸릴 수 있습니다) .

데스크톱보기를 자주 사용자 지정하려는 경우 최후의 수단으로이를 처리하는 프로그램을 포크하여 사용자 지정을 추가하면됩니다.

+0

정보를 제공해 주셔서 감사합니다. 지금 당장 의미가있어, 그 다음 가치가있는 것 같아. – Cey