LINUX.ORG.RU

[q4wine][PATCH] запуск приложений в новых иксах

 


0

1

[dirty hack][untested][utopia][just for fun]...
собсна по быстрому накатал патч для одного из инструментов которым частенько пользуюсь при работе с ваном (авось скоро будет один :) )

вкратце :
при указании DISPLAY: [ :1 ] в параметрах иконки (пусть будет :1)
* создает|перезаписывает файлик с командой запуска приложения
* запускает через /usr/bin/startx файлик — :1

напоминаю, жжоский хак. работать будет только у тех , у кого 1 монитор с 1 иксами клавой и мышкой, одно слово в названии иконки в префиксе ... вобшшем для тех, кто действительно ждет запуска иксов при указании DISPLAY ;)
его никогда в таком виде не примут , ибо много если. писал чисто под себя. просто делюсь.

diff --git a/src/q4wine-lib/q4wine-lib.cpp b/src/q4wine-lib/q4wine-lib.cpp
index f5ba8ef..be36ae3 100644
--- a/src/q4wine-lib/q4wine-lib.cpp
+++ b/src/q4wine-lib/q4wine-lib.cpp
@@ -955,7 +955,34 @@ QStringList corelib::getCdromDevices(void) const{
             qDebug()<<"[ii] corelib::runWineBinary: "<<binary<<args<<" at: "<<wrkdir;
 #endif
 
-            if (detach){
+            if (!execObj.display.isEmpty()){
+                QString runFileName = QDir::homePath();
+                runFileName.append("/.config/");
+                runFileName.append(APP_SHORT_NAME);
+                runFileName.append("/tmp/");
+                runFileName.append(prefix_name);
+                runFileName.append(".");
+                runFileName.append(execObj.name);
+
+                QFile file(runFileName);
+                file.open(QIODevice::Truncate | QIODevice::WriteOnly);
+
+                QTextStream out(&file);
+                out<<binary;
+                for(int p=0;p<args.count();p+=2) {
+                    out<<" "   << args[p];
+                    out<<" \"" << args[p+1] << "\"";
+                }
+                out<<endl;
+                file.close();
+
+                QProcess proc(0);
+                QStringList xarg;
+                xarg.append(runFileName);
+                xarg.append("--");
+                xarg.append(execObj.display);
+                return proc.startDetached("/usr/bin/startx", xarg, wrkdir);
+            }else if (detach){
                 QProcess proc(0);
                 return proc.startDetached(binary, args, wrkdir);
             } else {

★★★★

кстати, ленивые гентушники закидывают патч в /etc/portage/patches/app-emulation/q4wine/
после чего он автоматом применяется на =app-emulation/q4wine-0.120-r1
ессесна не забываемс о них (главное чистота эксперимента. в смысле очистить с новой врсией ;) )

anTaRes ★★★★
() автор топика

Ты конечно молодец, но

+                QString runFileName = QDir::homePath();
+                runFileName.append("/.config/");
+                runFileName.append(APP_SHORT_NAME);
+                runFileName.append("/tmp/");
+                runFileName.append(prefix_name);
+                runFileName.append(".");
+                runFileName.append(execObj.name);

это стыд.

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

это копипаст-программирование ;)
не хотелось бы оправдываться, но цель .... короче скопипастиль и поменял :)
про стыд и пр. кагто не задумывался
+ преждевременная оптимизация :))

anTaRes ★★★★
() автор топика
Ответ на: комментарий от Led

пофик. не называйте патч программированием :)
это патч хак, повторю: без претензии на LOR:ЧСВ и пр.
кто захочет - заюзает/поправит/пропустит

anTaRes ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.