diff --git a/data/fsp_workarounds_1 b/data/fsp_workarounds_1 new file mode 100644 index 0000000000..15b5dfc2b0 --- /dev/null +++ b/data/fsp_workarounds_1 @@ -0,0 +1,34 @@ +[1] +description=(Default) Disable focus stealing prevention for OopenOffice.org 2.0 +fsplevel=0 +fsplevelrule=2 +wmclass=vclsalframe openoffice.org 2.0 +wmclasscomplete=true +wmclassmatch=1 + +[2] +description=(Default) Disable focus stealing prevention for Mozilla +fsplevel=0 +fsplevelrule=2 +wmclass=mozilla-bin +wmclasscomplete=false +wmclassmatch=1 + +[3] +description=(Default) Disable focus stealing prevention for Firefox +fsplevel=0 +fsplevelrule=2 +wmclass=firefox-bin +wmclasscomplete=false +wmclassmatch=1 + +[4] +description=(Default) Disable focus stealing prevention for Thunderbird +fsplevel=0 +fsplevelrule=2 +wmclass=thunderbird-bin +wmclasscomplete=false +wmclassmatch=1 + +[General] +count=4 diff --git a/data/kwin_fsp_workarounds_1.upd b/data/kwin_fsp_workarounds_1.upd new file mode 100644 index 0000000000..18e7460ff4 --- /dev/null +++ b/data/kwin_fsp_workarounds_1.upd @@ -0,0 +1,8 @@ +Id=kde351 +# the file is intentionally a dummy, as the binary will update kwinrulesrc, +# file kwinrules_update will just remember it has been done +File=kwinrules_update +Group=Dummy +Options=overwrite +ScriptArguments=fsp_workarounds_1 +Script=kwin_update_default_rules diff --git a/data/update_default_rules.cpp b/data/update_default_rules.cpp new file mode 100644 index 0000000000..16684daa76 --- /dev/null +++ b/data/update_default_rules.cpp @@ -0,0 +1,56 @@ +/***************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2005 Lubos Lunak + +You can Freely distribute this program under the GNU General Public +License. See the file "COPYING" for the exact licensing terms. +******************************************************************/ + +// read addtional window rules and add them to kwinrulesrc + +#include +#include +#include +#include +#include + +int main( int argc, char* argv[] ) + { + if( argc != 2 ) + return 1; + KInstance inst( "kwin_update_default_rules" ); + QString file = locate( "data", QString( "kwin/default_rules/" ) + argv[ 1 ] ); + if( file.isEmpty()) + { + kdWarning() << "File " << argv[ 1 ] << " not found!" << endl; + return 1; + } + KConfig src_cfg( file ); + KConfig dest_cfg( "kwinrulesrc" ); + src_cfg.setGroup( "General" ); + dest_cfg.setGroup( "General" ); + int count = src_cfg.readEntry( "count", 0 ); + int pos = dest_cfg.readEntry( "count", 0 ); + for( int group = 1; + group <= count; + ++group ) + { + QMap< QString, QString > entries = src_cfg.entryMap( QString::number( group )); + ++pos; + dest_cfg.deleteGroup( QString::number( pos )); + dest_cfg.setGroup( QString::number( pos )); + for( QMap< QString, QString >::ConstIterator it = entries.begin(); + it != entries.end(); + ++it ) + dest_cfg.writeEntry( it.key(), *it ); + } + dest_cfg.setGroup( "General" ); + dest_cfg.writeEntry( "count", pos ); + src_cfg.sync(); + dest_cfg.sync(); + DCOPClient client; + client.attach(); + client.send("kwin*", "", "reconfigure()", QByteArray()); + }