chore: merge package step with build

This commit is contained in:
Mikhail Zolotukhin 2021-11-01 20:28:22 +03:00
parent 7e4cd1bbf5
commit e8461790a8
9 changed files with 16 additions and 799 deletions

View File

@ -29,9 +29,7 @@
"clean": "scripts/clean.sh",
"build": "scripts/build.sh",
"prestart": "npm run build",
"prepackage": "npm run build",
"package": "scripts/package.sh",
"prescript-install": "npm run package",
"prescript-install": "npm run build",
"script-install": "scripts/install.sh",
"script-uninstall": "scripts/uninstall.sh",
"preinstall-and-restart-kwin-x11": "npm run script-install",

View File

@ -26,15 +26,26 @@ npx esbuild \
# Copy resources to the build directory with correct paths
echo "📑 Preparing UI and metadata files..."
cp -r "$KWINSCRIPT_SOURCEDIR/res/ui" "$KWINSCRIPT_BUILDDIR/contents"
cp -r "$KWINSCRIPT_SOURCEDIR/res/config" "$KWINSCRIPT_BUILDDIR/contents"
cp -r "$KWINSCRIPT_SOURCEDIR/ui" "$KWINSCRIPT_BUILDDIR/contents"
# Copy and update metadata
METADATA_FILE="$KWINSCRIPT_BUILDDIR/metadata.desktop"
cp "$KWINSCRIPT_SOURCEDIR/res/metadata.desktop" "$METADATA_FILE"
cp "$KWINSCRIPT_SOURCEDIR/metadata.desktop" "$METADATA_FILE"
sed -i "s/\$VER/${npm_package_version:-1.0}/" "$METADATA_FILE"
echo "📦 Zipping KWin Script..."
KWINPKG_NAME="bismuth.kwinscript"
# Temporary change directory for archive tools
cd "$KWINSCRIPT_BUILDDIR"
# Remove old packages
rm -f "$KWINPKG_NAME"
# Create new .kwinscript package
zip -qr "$KWINPKG_NAME" ./contents/ ./metadata.desktop
# Get back to the original directory
cd - > /dev/null
echo "🏗️ Building KCM..."

View File

@ -1,5 +1,4 @@
# SPDX-FileCopyrightText: none
#
# SPDX-License-Identifier: MIT
[Desktop Entry]

View File

@ -1,183 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
SPDX-FileCopyrightText: 2018-2019 Eon S. Jeon <esjeon@hyunmu.am>
SPDX-License-Identifier: MIT
-->
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="">
<entry name="debug" type="Bool">
<label>Enable logging</label>
<default>false</default>
</entry>
<entry name="enableTileLayout" type="Bool">
<label>Enable/disable Tile layout</label>
<default>true</default>
</entry>
<entry name="enableMonocleLayout" type="Bool">
<label>Enable/disable Monocle layout</label>
<default>true</default>
</entry>
<entry name="enableThreeColumnLayout" type="Bool">
<label>Enable/disable Three Column layout</label>
<default>true</default>
</entry>
<entry name="enableSpiralLayout" type="Bool">
<label>Enable/disable Spiral layout</label>
<default>true</default>
</entry>
<entry name="enableSpreadLayout" type="Bool">
<label>Enable/disable Spread layout</label>
<default>true</default>
</entry>
<entry name="enableStairLayout" type="Bool">
<label>Enable/disable Stair layout</label>
<default>true</default>
</entry>
<entry name="enableQuarterLayout" type="Bool">
<label>Enable/disable Quarter layout</label>
<default>false</default>
</entry>
<entry name="enableFloatingLayout" type="Bool">
<label>Enable/disable Floating layout</label>
<default>false</default>
</entry>
<entry name="ignoreActivity" type="String">
<label>Do not apply tiling on some activities(comma-separated list of activity names)</label>
<default></default>
</entry>
<entry name="ignoreClass" type="String">
<label>Ignore windows with certain classes(comma-separated list)</label>
<default>yakuake,spectacle,Conky</default>
</entry>
<entry name="ignoreRole" type="String">
<label>Ignore windows with specific role(comma-separated list)</label>
<default>quake</default>
</entry>
<entry name="ignoreScreen" type="String">
<label>Do not apply tiling on some screens(comma-separated list of screen number)</label>
<default></default>
</entry>
<entry name="ignoreTitle" type="String">
<label>Ignore windows with certain string in title(comma-separated list)</label>
<default></default>
</entry>
<entry name="floatingClass" type="String">
<label>Float windows with certain classes(comma-separated list)</label>
<default></default>
</entry>
<entry name="floatingTitle" type="String">
<label>Float windows with certain string in title(comma-separated list)</label>
<default></default>
</entry>
<entry name="floatUtility" type="Bool">
<label>Automatically float utility windows (Dialog, Splash, Utility)</label>
<default>true</default>
</entry>
<entry name="layoutPerActivity" type="Bool">
<label>Use separate layouts per activity.</label>
<default>true</default>
</entry>
<entry name="layoutPerDesktop" type="Bool">
<label>Use separate layouts per desktop.</label>
<default>true</default>
</entry>
<entry name="maximizeSoleTile" type="Bool">
<label>If there is only one tile on the screen, remove screen gap and its borde, making it appear almost fullscreen.</label>
<default>false</default>
</entry>
<entry name="monocleMaximize" type="Bool">
<label>Always maximize windows in Monocle layout</label>
<default>true</default>
</entry>
<entry name="monocleMinimizeRest" type="Bool">
<label>Minimize other tiles than the current one in Monocle layout</label>
<default>false</default>
</entry>
<entry name="keepFloatAbove" type="Bool">
<label>Keep tiled windows below floating windows</label>
<default>true</default>
</entry>
<entry name="noTileBorder" type="Bool">
<label>Remove borders of tiled windows</label>
<default>false</default>
</entry>
<entry name="preventMinimize" type="Bool">
<label>Prevent windows from minimizing</label>
<default>false</default>
</entry>
<entry name="preventProtrusion" type="Bool">
<label>Prevent windows from protruding out of screen</label>
<default>true</default>
</entry>
<entry name="screenGapLeft" type="Int">
<label>Gap between tiles and screen borders (Left)</label>
<default>0</default>
</entry>
<entry name="screenGapRight" type="Int">
<label>Gap between tiles and screen borders (Right)</label>
<default>0</default>
</entry>
<entry name="screenGapTop" type="Int">
<label>Gap between tiles and screen borders (Top)</label>
<default>0</default>
</entry>
<entry name="screenGapBottom" type="Int">
<label>Gap between tiles and screen borders (Bottom)</label>
<default>0</default>
</entry>
<entry name="tileLayoutGap" type="Int">
<label>Gap between tiles in Tile layout</label>
<default>0</default>
</entry>
<entry name="limitTileWidth" type="Bool">
<label>Limit the width of tiles</label>
<default>false</default>
</entry>
<entry name="limitTileWidthRatio" type="Double">
<label>Ratio of maximum tile width to the height of screen</label>
<default>1.6</default>
</entry>
<entry name="newWindowAsMaster" type="Bool">
<label>Put new window as master</label>
<default>false</default>
</entry>
</group>
</kcfg>

View File

@ -1,605 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>KrohnkiteConfigForm</class>
<widget class="QWidget" name="KrohnkiteConfigForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>440</width>
<height>547</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>440</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTabWidget" name="configTabs">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="layoutTab">
<attribute name="title">
<string>Layout</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox_8">
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QCheckBox" name="kcfg_layoutPerActivity">
<property name="toolTip">
<string>Use different layouts for each activity. Can be combined with &quot;Use separate layout per Desktop&quot; option.</string>
</property>
<property name="text">
<string>Use separate layouts for each Activity</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_layoutPerDesktop">
<property name="toolTip">
<string>Use different layouts for each virtual desktop. Can be combined with &quot;Use separate layout per Activity&quot; option.</string>
</property>
<property name="text">
<string>Use separate layouts for each Desktop</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Layouts</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QCheckBox" name="kcfg_enableTileLayout">
<property name="toolTip">
<string>Enable Tile layout</string>
</property>
<property name="text">
<string>Tile Layout</string>
</property>
<property name="tristate">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableMonocleLayout">
<property name="toolTip">
<string>Enable Monocle layout</string>
</property>
<property name="text">
<string>Monocle Layout</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="monocleLayoutConfigLayout">
<property name="leftMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_10">
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<item>
<widget class="QCheckBox" name="kcfg_monocleMaximize">
<property name="toolTip">
<string>All windows will be maximized in Monocle layout</string>
</property>
<property name="text">
<string>Fully maximize windows (no borders, no gaps)</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_monocleMinimizeRest">
<property name="text">
<string>Minimize unfocused windows</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableThreeColumnLayout">
<property name="toolTip">
<string>Enable Three Column layout</string>
</property>
<property name="text">
<string>Three Column Layout</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableSpiralLayout">
<property name="text">
<string>Spiral Layout</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableQuarterLayout">
<property name="toolTip">
<string>Enable Quarter layout</string>
</property>
<property name="text">
<string>Quarter Layout</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableSpreadLayout">
<property name="toolTip">
<string>Enable Spread layout</string>
</property>
<property name="text">
<string>Spread Layout</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableStairLayout">
<property name="toolTip">
<string>Enable Stair layout</string>
</property>
<property name="text">
<string>Stair Layout</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_enableFloatingLayout">
<property name="text">
<string>Floating Layout</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="geometryTab">
<attribute name="title">
<string>Geometry</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Screen Gaps (pixels)</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="2" column="3">
<widget class="QSpinBox" name="kcfg_screenGapTop">
<property name="maximum">
<number>999</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QSpinBox" name="kcfg_screenGapLeft">
<property name="maximum">
<number>999</number>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QSpinBox" name="kcfg_screenGapRight">
<property name="maximum">
<number>999</number>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="screenGapTop">
<property name="text">
<string>Top</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QSpinBox" name="kcfg_screenGapBottom">
<property name="maximum">
<number>999</number>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QLabel" name="screenGapBottom">
<property name="text">
<string>Bottom</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="screenGapLeft">
<property name="text">
<string>Left</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QLabel" name="screenGapRight">
<property name="text">
<string>Right</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_9">
<property name="title">
<string>Maximum Tile Width</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QCheckBox" name="kcfg_limitTileWidth">
<property name="text">
<string>Limit the width of tiled windows</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="limitTileWidthRatioLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Ratio of the max width to screen height </string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="kcfg_limitTileWidthRatio"/>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="tileGapLabel">
<property name="text">
<string>Gaps between tiles (pixels)</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="kcfg_tileLayoutGap">
<property name="maximum">
<number>9999</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="rulesTab">
<attribute name="title">
<string>Rules</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string>Ignore Windows</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="0">
<widget class="QLabel" name="ignoreTitleLabel">
<property name="text">
<string>By Title</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="ignoreClassLabel">
<property name="text">
<string>By Class</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="kcfg_ignoreClass">
<property name="toolTip">
<string>Comma-separated list of window classes. Matching windows will not be tiled.</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="kcfg_ignoreTitle">
<property name="toolTip">
<string>Comma-separated list of keywords(or substrings). Any windows with matching title will not be tiled.</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="ignoreRoleLabel">
<property name="text">
<string>By Role</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="kcfg_ignoreRole"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>Float Windows</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<widget class="QLabel" name="floatingClassLabel">
<property name="text">
<string>By Class</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="kcfg_floatingClass">
<property name="toolTip">
<string>Comma-separated list of window classes. Matching windows will become float automatically.</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="floatingTitleLabel">
<property name="text">
<string>By Title</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="kcfg_floatingTitle">
<property name="toolTip">
<string>Comma-separated list of keywords(or substrings). Any windows with matching title will become float automatically</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="kcfg_floatUtility">
<property name="toolTip">
<string>This is mainly for debugging purpose, but can also be used to meet some specific requirements.</string>
</property>
<property name="text">
<string>Float utility windows
(applies to window type Dialog, Splash, Utility)</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="title">
<string>Disable Tiling</string>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="1">
<widget class="QLineEdit" name="kcfg_ignoreActivity">
<property name="toolTip">
<string>Comma-separated list of activity names. Windows in corresponding activities will not be tiled.</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="ignoreActivityLabel">
<property name="text">
<string>On Activity (name)</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="ignoreScreenLabel">
<property name="text">
<string>On Screen (number)</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="kcfg_ignoreScreen">
<property name="toolTip">
<string>Comma-separated list of screen numbers. Windows in corresponding screens will not be tiled.</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="behaviorTab">
<attribute name="title">
<string>Behavior</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QCheckBox" name="kcfg_newWindowAsMaster">
<property name="text">
<string>Put new window as master</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_maximizeSoleTile">
<property name="toolTip">
<string>&lt;p&gt;If there's only one window to be tiled, the window will be maximized with its borders removed to maximize usable screen space.&lt;/p&gt;&lt;p&gt;When using this option it's advisable to enable the &amp;quot;Allow resizing maximized windows from window edges&amp;quot; in &amp;quot;Breeze Window Decoration&amp;quot; settings, as this will often leave windows maximized, preventing borders from returning when windows are no longer sole otherwise.&lt;/p&gt;</string>
</property>
<property name="text">
<string>Maximize the sole window</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_noTileBorder">
<property name="toolTip">
<string>All tiled windows will have no borders. Borders will be added back if window become float.</string>
</property>
<property name="text">
<string>Remove borders of tiled windows</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_keepFloatAbove">
<property name="text">
<string>Keep floating windows above tiled windows</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_preventMinimize">
<property name="text">
<string>Prevent windows from minimizing (experimental)</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_preventProtrusion">
<property name="text">
<string>Prevent window from protruding from its screen</string>
</property>
</widget>
</item>
<item>
<spacer name="debugSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Maximum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="kcfg_debug">
<property name="toolTip">
<string>Use this option to debug the script or submit detailed bug report.</string>
</property>
<property name="text">
<string>Enable logging</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,3 +0,0 @@
SPDX-FileCopyrightText: 2018-2019 Eon S. Jeon <esjeon@hyunmu.am>
SPDX-License-Identifier: MIT

View File

@ -10,7 +10,7 @@ import org.kde.plasma.core 2.0 as PlasmaCore;
import org.kde.plasma.components 3.0 as PC3
import org.kde.kwin 2.0;
/*
/*
* Component Documentation
* - PlasmaCore global `theme` object:
* https://api.kde.org/frameworks/plasma-framework/html/classPlasma_1_1Theme.html