Сценарий для открытия терминала в особенности каталог, в особенности рабочая область, затем VIM в конкретный файл

Премия: vsplit в другой файл.;)

Я имею 9 рабочих областей и часто имею несколько терминалов рабочий VIM на различных файлах. Установка является довольно стандартной для проекта — но я должен пойти об открытии пяти терминалов, переместив каждого в его собственную рабочую область, максимизацию, открыв .hpp файл в VIM и vsplitting его соответствующий .cpp файл для каждого терминала.

Я хотел бы записать сценарий для этого, но в замешательстве относительно как! Google Searching и тестирующий на gedit, я начал с чего-то как

wmctrl -s 4 ; gedit & sleep 3; wmctrl -s 0;

Но это только открывает gedit в рабочей области, я в настоящее время включен. Одна потенциальная проблема (но я достаточно не осведомлен об этом, чтобы не знать, является ли это на самом деле проблемой), то, что я использую функцию обоев Compiz, которая позволяет различные обои на различных рабочих областях.

Идеально, я хотел бы работать для сценария, который делает это для меня и не плагина.

Какие-либо подсказки или идеи?

1
задан 22 August 2015 в 01:04

1 ответ

Рев сценария порождает 6 окон для gnome-terminal с vi текстовый редактор и перемещает их в соответствующие области просмотра (иначе рабочие области) в рабочем столе Единицы.

Сценарий определяет математически, какое окно принадлежит на который рабочая область. Это полагается wmctrl сделать большую часть задания. Устанавливать wmctrl , сделать sudo apt-get install wmctrl.

#!/bin/bash
# Author: Serg Kolo
# Date: Aug 22 , 2015
# Description: script that spawns 6 windows and positions
# them on individual workspaces (aka viewports) for Unity
# Written for: https://askubuntu.com/q/664309/295286
#set -x

# get number of vertical and horisontal viewports
HEIGHT=$(gsettings get org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize)
WIDTH=$(gsettings get org.compiz.core:/org/compiz/profiles/unity/plugins/core/ vsize)
# Get size of the desktop from wmctrl -d
# ARRAY[0] is width and ARRAY[1] is height
ARRAY=($( wmctrl -d | awk -v div1=$HEIGHT -v div2=$WIDTH '{gsub(/x/," "); print $4/div1" "$5/div2}' ))
# set number of windows
COUNT=6
# while loop that does all the work
while [ $COUNT -ne 0 ]; do
# reset x and y position on each iteration
XPOS=100
YPOS=100
    # spawn terminal window with appropriate number
    # and send to viewport according to number
    gnome-terminal -e 'sh -c "vi;bash"' -t VP$COUNT &
    sleep 0.250 # delay to make sure window spawns
    # determine if it's a window 3 or 6
    if [ $( expr $COUNT % 3 ) -eq 0 ];then 
        XPOS=$( expr $XPOS + ${ARRAY[0]} + ${ARRAY[0]} )
    fi
    # determine if it's window 4 - 6
    if [ $COUNT -gt 3 ];then
        YPOS=$( expr $YPOS + ${ARRAY[1]} )
    fi
    # determine if it's window 2 or 5
    if [ $( expr $COUNT % 3 ) -eq 2 ];then 
        XPOS=$(  expr $XPOS + ${ARRAY[0]} )
    fi
    sleep 0.250
    # bring that window to focus and move it
    wmctrl -R VP$COUNT
    wmctrl -r VP$COUNT -e 0,$XPOS,$YPOS,250,250
    # decrement counter
    COUNT=$( expr $COUNT - 1 )
done

Ссылки и дополнительный материал:

Сценарий (или программное обеспечение) для открытия окна приложения на определенной области просмотра и положении

Создание и Запущение скрипта

Как я запускаю приложения автоматически на входе в систему

Как я обязываю .sh файлы вводить с клавиатуры комбинацию

0
ответ дан 1 October 2019 в 03:38

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

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