現在のワークスペースのアプリケーションのみをランチャーに表示するように設定していますか?


30

現在のワークスペースの開いているアプリケーションをランチャーで持つことはできますが、他のワークスペースのアプリケーションではありませんか?


ctrl +(1,2,3,4)はワークスペースの切り替えに使用されると思います。しかし、システム設定のショートカットを確認してください
...-Alvar

SUPERキー(Windowsキー)を押して、使用可能なすべてのUnityショートカットの概要を表示します。このQ&Aもご覧ください
グルタニメート

あなたの投稿のショートカットに関する2番目の質問を編集しました。これは重複しており、以前に回答されたためです。これが最初の質問であることがわかりました(Askbuntuへようこそ!):投稿ごとに質問を1つだけ質問するほうが簡単です。AUを使用する場合は、今後このことに留意してください。
グルタニメート

ここと同じ質問。しかし、その1つには答えがありません。
RPiAwesomeness

おそらくあなたが探している答えではなく、カスタマイズ性の統一性の欠如。特定のニーズがある場合、またはデスクトップをさらに制御したい場合は、KDEなどのより柔軟なデスクトップ環境への移行を検討する必要があります。
-Conchylicultor

回答:


30

Ubuntu 17.10以降に付属するUbuntu Dock(GNOMEを使用)

まあ、他の回答はかなり古いので、最新の回答を追加する価値があると思います。今のところそうすることは可能ですが、それほど難しいことではありません(Ubuntu 17.10およびGnomeを使用)。

dconf-editorを使用するだけです:

sudo apt install dconf-editor

移動に組織> GNOME>シェル>拡張>ダッシュ・ツー・ドックとチェック分離株、ワークスペース ここに画像の説明を入力してください


1
この質問は、Dash To Dock Gnome Extensionとはまったく関係ありません。問題はUnity Launcherについてです。DashTo DockはUnityとも互換性がありません。
曲がった

2
@crookedleaf Ubuntuは、17.10でデフォルトとしてダッシュからドックを焼き直した状態でGNOMEに切り替えました。
セス

1
@Sethしかし、OPはGnomeではなくUnityを使用しています。そのため、OPが誤って「Unity」タグを使用したか、UnityでUbuntuバージョンを使用しています。
曲がった

3
@crookedleafそれともただ彼らはあまりにも最新の答えを持っているので、更新の質問を保つために必要な:)
セス・

1
18.04 / w gnomeでうまく機能します。ありがとう!拡張機能はWebサイトから簡単にインストールすることもできます:extensions.gnome.org/extension/307/dash-to-dock
Jeff Ward

8

(他の)ワークスペースでアプリケーションを追跡不可能にする方法

使用してxdotoolwindowunmap、完全にウィンドウを非表示にすることも可能です。ウィンドウもそのアプリケーションもランチャーアイコンに表示されなくなり、出力にも表示されなくなります。wmctrl

理論的には、これこれこれで使用された「ワークスペースエンジン」に接続できます。答え。それが最もエレガントなソリューションだったでしょう。

ただし、他のワークスペースのウィンドウのみを非表示にし、現在のワークスペースのウィンドウを自動的に上げるプロセスは、進行中のバックグラウンドスクリプトで使用するには非常に要求が厳しく、「風邪をひく」可能性も低いです。エラーが発生するとウィンドウは永久に失われるため、この手順を自動(バックグラウンド)プロセスとして提供しないことにしました。

それでもこの答えが役に立つかどうかは、状況と、他のワークスペースで実行されているアプリケーションのアイコンを非表示にする理由に依存します。決めるのはあなたです。

ソリューション; それが何であり、実際にどのように機能するか

  • 現在のワークスペースにすべてのウィンドウを作成しているように見える、ショートカットキーの下で使用可能なスクリプト(およびアプリケーション)を完全に非表示にします。つまり、Unityランチャーのアプリケーションのアイコンには、アプリケーションのアクティビティが表示されません。

    実行中の3つのアプリケーション: ここに画像の説明を入力してくださいショートカットキーを押した後:ここに画像の説明を入力してください

  • ショートカットキーの組み合わせをもう一度押すと、ウィンドウとそのアプリケーションが再表示されます。

  • キーの組み合わせにより、現在のワークスペースからウィンドウとアプリケーションのみが非表示になるため、現在のワークスペースに何が(隠されている)かを示すことなく、別のワークスペースに切り替えることができます。
  • また、非表示は現在のワークスペースで(のみ)実行されるため、要するに、非表示と非表示のプロセスはワークスペースごとに完全に独立しています

スクリプト

#!/usr/bin/env python3
import subprocess    
import os
import time

datadir = os.environ["HOME"]+"/.config/maptoggle"
if not os.path.exists(datadir):
    os.makedirs(datadir)
workspace_data = datadir+"/wspacedata_"

def get_wlist(res):
    res = get_res()
    try:
        wlist = [l.split() for l in subprocess.check_output(["wmctrl", "-lG"]).decode("utf-8").splitlines()]
        return [w for w in wlist if all([
            0 < int(w[2]) < res[0],
            0 < int(w[3]) < res[1],
            "_NET_WM_WINDOW_TYPE_NORMAL" in subprocess.check_output(["xprop", "-id", w[0]]).decode("utf-8"),
            ])]
    except subprocess.CalledProcessError:
        pass

def get_res():
    # get resolution
    xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
    pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

def current(res):
    # get the current viewport
    vp_data = subprocess.check_output(
        ["wmctrl", "-d"]
        ).decode("utf-8").split()
    dt = [int(n) for n in vp_data[3].split("x")]
    cols = int(dt[0]/res[0])
    curr_vpdata = [int(n) for n in vp_data[5].split(",")]
    curr_col = int(curr_vpdata[0]/res[0])+1
    curr_row = int(curr_vpdata[1]/res[1])
    return str(curr_col+curr_row*cols)

res = get_res()

try:
    f = workspace_data+current(res)
    wlist = eval(open(f).read().strip())
    for w in wlist:
        subprocess.Popen(["xdotool", "windowmap", w[0]])
    os.remove(f)
except FileNotFoundError:
    current_windows = get_wlist(res)
    open(f, "wt").write(str(current_windows))
    for w in current_windows:
        subprocess.Popen(["xdotool", "windowunmap", w[0]])

使い方

  1. このスクリプトは、両方を必要とするwmctrlxdotool

    sudo apt-get install wmctrl xdotool
    
  2. スクリプトを空のファイルにコピーして、名前を付けて保存します toggle_visibility.py
  3. テスト-スクリプトを実行します。ターミナルウィンドウで、次のコマンドを実行します。

    python3 /path/to/toggle_visibility.py
    

    次に、新しいターミナルウィンドウを開き(最初のウィンドウは地球の表面から見えなくなったように見えるため)、同じコマンドを再度実行します。すべてのウィンドウが再表示されます。

    注意:テスト中に「貴重な」ウィンドウが開いていないことを確認してください

  4. すべてが正常に機能する場合は、コマンドをショートカットキーの組み合わせに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。「+」をクリックして、コマンドを追加します。

    python3 /path/to/toggle_visibility.py
    

説明

スクリプトが使用する、述べxdotoolさんwindowunmap(完全に)非表示ウィンドウに、アプリケーションは、彼らが属します。スクリプト:

  • 現在のワークスペースを読み取ります
  • 現在のワークスペースに存在するウィンドウを読み取ります(のみ)
  • ウィンドウリストを現在のワークスペースにちなんで名付けられたファイルに書き込みます
  • 窓を隠します

次回の実行時に、スクリプトは次のことを行います。

  • 現在のワークスペースに対応するファイルが存在するかどうかを確認します
  • その場合、ウィンドウリストを読み取り、ウィンドウを非表示にします。

したがって、現在のワークスペース上のウィンドウとアプリケーションの可視性を切り替えます。


すばらしいです。これは、他のワークスペースに移動したときにスクリプトを自動的に実行する方法を見つけることができる場合にのみ、それらが魔法のように消えてから戻ったときに再び表示されるようになりました。たぶん、ctrl+ shift+のショートカットキーを置き換えるPythonスクリプトを書くことができますarrow key
トゥイェントゥン

1
17.10では、これが可能になりました。他の回答をご覧ください。
マーティンメルカ

6

残念ながらそれは不可能です。

Unityは常にどこからでもすべてのアプリケーションを表示し、これを変更する方法はありません。バグレポートがあります-https://bugs.launchpad.net/ayatana-design/+bug/683170 しかし、開発者は何もしません。おそらくこのバグがあなたに影響を与えることをページの上部にマークすると、開発者がそのようなオプションの重要性を理解するのに役立ちます。


1
バグレポートにはコメントせずに、ページの上部で自分に影響があるとマークしてください。
フリム

@Flimmは、デスクトップマネージャーがこの機能を持っていることを知っていますか?
セザール

2
団結は素晴らしく見えますが、カスタマイズ性の欠如は本当にイライラさせられます。
Programster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.