LINUX.ORG.RU

Debian возвращается к использованию GNOME по умолчанию

 , ,


0

1

Разработчик Joey Hess, сделавший соответствующий коммит назвал среди основных причин успеха GNOME большую доступность для пользователей и расширенную интеграцию с systemd. На данный момент, по его словам, существует 80% вероятность, что победит GNOME. Если же смотреть на совместимость с systemd, то остальные DE «застряли, играя в догонялки и пытаясь наверстать произошедшие изменения».

Кроме того, отмечается, что последние выпуски GNOME 3 привнесли ряд важных усовершенствований, в то время как рабочее окружение MATE пока ещё не обрело достаточного количества сторонников, а команда разработчиков Xfce весьма немногочисленна. Единственной проблемой при переходе на GNOME может стать размер установочных образов, но эта проблема не столь критична, чтобы предпочесть другое DE.

В ноябре прошлого года на роль окружения по умолчанию в Debian выбрали Xfce. Заморозка кодовой базы Debian 8 намечена на ноябрь этого года.

>>> Подробности

anonymous

Проверено: fallout4all ()
Последнее исправление: cetjs2 (всего исправлений: 5)
Ответ на: комментарий от h4tr3d

WinAPI это ахриенная вещь, покрайне мере там не в пример удобнее работать с GUI чем в этих ваших линуксах, ты создаешь оконо, создаешь элементы управления я этим окном, указываешь обработчик (достаточно одного, если тебе не нужно что то экстраординарное, и там отслеживаешь события) и можешь уже заниматься внтуренней логикой. Если вдруг что то надо сделать как тебе хочется, переопределяешь обработчик сообщений для контрола и можешь в нем делать свистоперделки каике тебе хочется. И прелесть в том что API для создания окон единое, приложение написанное с использованием этого API в 98ом году запустится и будет так же работать в 2014ом на последней операционке, (да в 98ом году не был предусмотрен манифест для указания нужной версии комконтролов, но его всегда можно подложить рядом и старое приложение будет выглядеть как вчера написанное)

А в этих ваших линуксах целлая россыпь, фреймфорков для создания окошек, да еще и зубодробительный АПИ для их создания В WinAPI ты создаешь одной командой, окно, попутно в этой же команде настраивая внешний вид окна, его положение и скажем его тип. Следущей же командой опять же одним вызовом, ты создаешь например кнопку указываешь тут же в этой же команде кому она принадлежит, какой у нее кэпшен, стиль, положение. И так со всем контролами, кроме списков, для списков чуть больше строчек нужно написать, потому что в них нужно что то же добавить.

А вот взять в пример GTK, сначало ты создаешь окно одним вызовом, потом 2ым вызовом кэпшен ему указываешь, потом по отдельности для каждого нужного тебе эвента окна создаешь каллбак функцию (в Винпи для этого общая очередь сообщений, где окна опеределяются их хендлами, а сообщения их IDшником + параметры 2 штуки), потом ты создаешь контейнер в него кладешь окно, потом создаешь еще контейнер создаешь кнопку, снова объявляешь каллбеки для кнопки, снова вызовы по ее настройки, потом помещаешь кнопку в контейнер,а контейнер помещаешь в к окно, которое поместил в контейнер.

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

А создание таблиц в GTK? это же капец, ты создаешь таблицу, кладешь ее в контейнер, потом для каждой ячейки таблицы создаешь контейнер, в этот контейнер добавляешь лабел, который опять же обвешал калбеками, этож капец какой то сколько вызовов нужно сделать.

А есть ли IDE в этих ваших линуксах из коробки, чтобы поставил запустил, накидал интерфейс и занимаешься уже непосредственно алгоритмом, нет конечно у нас есть зоопарк фреймфорков, каждый кто во что горазд пишет. Сначало ты выбираешь из тучи IDE, выбираешь для этой IDE лагины, чтобы было удобно и тебя не бесило то как она работает, потом ты смотришь как можно удобно использовать IDE для создания гуевых приложений и оказывается что в ней и нет не фига, тебе надо использовать стороний Дизайнер Форм для GTK например (Glade), ты такой ладно ставишь, разбираешься, делаешь форму, экспортишь ее в xml из глайда, припомощи такой-то матери и соплей прикручиваешь их к коду в своем проекте, начинаешь писать логику приложения, потом оказывается что тебе нужно некоторые, контролы подвигать или спрятать и тут оказывается что использованние Glade накладывает ряд ограничений, ты не можешь делать те вещи которые тебе нужны, и ты такой решаешь что то создовать руками, и в итоге у тебя не проект получается, а какой то франкенштейн из всего по немногу, который кое как работает и ты начинаешь уже заниматся непосредственно логикой приложения, потратив уйму времени. И вот эти люди еще ругают Delphi например, где на форму набросал в дизайн режиме нужные тебе контролы, выбрал события и занимаешься логикой. И делфи уже лет 20ать как существует и там это все с тех пор работает. А линуксам уже 30лет, и до сих пор линукс комюнити не определилось с единым АПИ для создания GUIвых приложений. А гуевые интерфейсы это все в наше время, потому что пользовталю не интересно тратить время на чтение манов и зазубривание команд, у него семья, дети, хобби, и прочие вещи есть, на которые он готов потратить свое время, ему надо просто нажать, где-нить кнопку с понятным описанием, и чтобы все заработало. А пока ничего такого в линуксах нет, он так и будет в жопе со своими 1.2% на десктопе,

WinAPI 25 лет назад 3 человека придумало, достаточно удобное и продуманное по сей день, а линукс сообщество все ни как не может выроботать единого API, для создания GUI. А в линях наплодили по 100500 свистоперделок, которые соплями связаны между собой и как то работают, весь гуй что есть в линуксе выглядит минималистичным, как лаба студента из 3 кнопкок и списка, наверника потому что все в ужас и панику вподают, когда решают что то гуевое сделать, и быстро отказываются от этой затеи.

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

Ну ты сравнил. Системное API, где окна - часть системы и сторонние фреймворки, прикрученные к ядру ОС. Ява вот очень хороша для гуя, на swing'е все в момент пишется. Qt, кстати, тоже.

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

Что за бред? Как можно сравнивать ОС, которую разрабатывает одна компания с GNU/Linux. В GNU/Linux по определению не может быть единой API, потому что каждый дистрибутив это сборка различных компонентов системы, и у них только ядро единое.

Что касается IDE. Ты слышал что нибудь о Qt Creator, IntelliJ IDEA? В них все четко и лаконично. Глупо возмущаться не разобравшись в теме.

LexS007
()
Ответ на: комментарий от anonymous

покрайне мере там не в пример удобнее работать с GUI чем в этих ваших линуксах, ты создаешь оконо, создаешь элементы управления я этим окном

...регистрируешь класс окна (10-20 строк кода), обрататываешь какие-то сообщения от него (5-15 строк). Пипец как удобно.

Extraterrestrial ★★★★★
()
Последнее исправление: Extraterrestrial (всего исправлений: 1)
Ответ на: комментарий от Extraterrestrial

...регистрируешь класс окна (10-20 строк кода), обрататываешь какие-то сообщения от него (5-15 строк). Пипец как удобно.

Можно создовать из готовых классов системы, тогда тебе не нужно писать 10-20 строк, ты просто используешь уже объявленный класс для окон в OS Windows (т.е. создаешь окно через CreateWindow), так же и с кнопками, после чего 2ой строчкой подменяешь этот обработчик на свой через функцию SetWindowLong(), и не какие то сообщения обробатываешь, а те что тебе нужны, например WM_KEYDOWN, для остальных событий которые ты не хочешь обрабатывать, есть замечательный вызов DefWindowProc() или CallWindowProc(), который обработает, то что ты не хотел обрабатывать сам (на самом деле этот вызов передает сообщение которое пришло в твой или подмененный обработчик сообщений, дефолтному).

Много всяких понятных сообщений тебе надо обрабатывать, если ты знаешь что например хочешь перерисоввывать окно, тогда ты обрабатываешь например WM_PANIT (но не только его). Хочешь чтобы твой контрол игнорировал ввод каких кто символов, обрабатываешь сообщения ввода, пропуская нежелеательные символы. Но если ты не хочешь заморачиваться, то в обработчике в CASE только нужную проверку делаешь и все.

anonymous
()
Ответ на: комментарий от Extraterrestrial

Ну и чтобы не быть голословным, заходим на http://www.freepascal.org/, качаем себе free pascal, ставим запускаем проект со следущим кодом:

program WinAPIWindow;
{$mode DELPHI}
{$APPTYPE GUI}
uses
  Windows;
var
  MainHandle:HWND;
  MSG:TMsg;
  DefWndProc:Pointer;

function WindowProcMsg(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM):DWORD; stdcall;
begin
  if (hWnd = MainHandle) and (Msg = WM_CLOSE) then begin
    DestroyWindow(hWnd);  //тут мы обработали сами закрытие формы
    ExitProcess(0);
  end;
  result := CallWindowProc(DefWndProc, hWnd,MSG,wParam,lParam);
end;

procedure CreateMainWindow;
begin
  MainHandle:=CreateWindow('#32770', 'Example for www.linux.org.ru by Anonymous', WS_CAPTION or WS_SYSMENU, 150, 100, 800, 600, 0, 0, 0, 0);
  DefWndProc := Pointer(GetWindowLongPtr(MainHandle, GWL_WNDPROC));
  SetWindowLongPtr(MainHandle, GWL_WNDPROC, Integer(@WindowProcMsg));
  UpdateWindow(MainHandle);
  ShowWindow(MainHandle, SW_NORMAL);
end;

begin
  CreateMainWindow;
  while GetMessage(MSG, 0, 0, 0) do begin
    TranslateMessage(MSG);
    DispatchMessage(MSG);
  end;
end.

радуемся окошку.

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

WinAPI это ахриенная вещь, покрайне мере там не в пример удобнее работать с GUI

Совсем заврался, проклятый.

anonymous
()
Ответ на: комментарий от unt1tled

Ты мне хочешь рассказать сказку о том, как жабагуй не тормозит и выглядит красиво? Ну, давай, заводи.

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

Заходим на http://qt-project.org/downloads

качаем сборку, устанавливаем. Запускаем Qt Creator, создаём проект с кодом:

#include <QApplication>
#include <QMainWindow>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    w.setWindowTitle("Example for www.linux.org.ru");
    w.setGeometry(150, 100, 800, 600);
    w.show();

    return a.exec();
}

радуемся окошку. (c)

При это никто не заставляет гуй руками стряпать, плотная интеграция с QtDesigner, возможность как автогенерации кода из описания формы, так и динамической подгрузки формы в рантайме. Плюс адекватнейшая система управления размещением. Чёткое расположение логики обработчиков, а не лапша из if-else/switch-case.

ЗЫ таки повёлся :)

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

ты просто используешь уже объявленный класс для окон в OS Windows

ЕМНИП, они только для всяких кнопок, текстбоксов, и т.д. Когда рисуешь свое окно, нужно новый класс регистрировать.

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

Только если тебе не хватает стилей стандартных, а их достаточно много чтобы получить желаемое окно. Смотри добавили Static и Button:

program WinAPIWindow;
{$mode DELPHI}
{$APPTYPE GUI}
uses
  Windows;
var
  MainHandle:HWND;
  MyButton:HWND;
  MyStatic:HWND;
  MSG:TMsg;
  DefWndProc:Pointer;

function WindowProcMsg(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM):DWORD; stdcall;
begin
  if (hWnd = MainHandle) then begin
    if (Msg = WM_CLOSE) then begin
      DestroyWindow(hWnd);  //тут мы обработали сами закрытие формы
      ExitProcess(0);
    end;
    If (Msg = WM_COMMAND) then
      if (LPARAM = MyButton) then
        MessageBox(MainHandle, @'Wow button is pressed'[1], @'Info'[1], MB_OK);
  end;
    result := CallWindowProc(DefWndProc, hWnd,MSG,wParam,lParam);
end;

procedure CreateMainWindow;
begin
  MainHandle:= CreateWindow('#32770','Example for www.linux.org.ru by Anonymous',WS_CAPTION or WS_SYSMENU, 150, 100, 800, 600, 0, 0, 0, 0);
  MyStatic  := CreateWindow('Static', 'Label for Button', WS_VISIBLE or WS_CHILD, 20, 10, 150, 36, MainHandle, 0, 0, 0);
  MyButton  := CreateWindow('Button', 'Button without created new class', WS_VISIBLE or WS_CHILD, 20, 30, 250, 36, MainHandle, 0, 0, 0);
  DefWndProc := Pointer(GetWindowLongPtr(MainHandle, GWL_WNDPROC));
  SetWindowLongPtr(MainHandle, GWL_WNDPROC, Integer(@WindowProcMsg));
  UpdateWindow(MainHandle);
  ShowWindow(MainHandle, SW_NORMAL);
end;

begin
  CreateMainWindow;
  while GetMessage(MSG,0,0,0) do begin
    TranslateMessage(MSG);
    DispatchMessage(MSG);
  end;
end.

Темболее подменив обработчик стандартного класса окна, мы уже можем с ним делать что хотим, можно сделать ему стиль без кнопок управления и перехватывать события его отририсовки (все в тоей же процедуре WindowProcMsg), и нарисовать такой как нам нужно. Та же идея и с прочими стандартными контролами, списками кнопками и т.д., для них правда тоже придется переопределить обработчик через SetWindowLongPtr, но это опять же в том случае, если нам не хватит стандартных функций кастомизации, которые подбробно описаны в MSDN. Свой класс нужно объявлять, для того если мы прям вообще все хотим реализовать для нашего контрола, наприме переопределить поведение, для клавиатуры, мыши, отрисовки клиенской области, неклиентской, необычный режим отрисовки задать, режим отображения курсора на нем же задать и прочее прочее, свой скрол запилить, и вообще персчет всего сделать руками, щаз прям сходу даж не придумаю для чего могло бы понадобится.

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

Темболее подменив обработчик стандартного класса окна, мы уже можем с ним делать что хотим, можно сделать ему стиль без кнопок управления и перехватывать события его отририсовк

Смысле задать ему стиль (диалоговое окно, popup окно, просто канвас) и уже дальше в подмененном обработчики довести до желаемого.

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

Еще раз прочитай ветку и найди где там говорится о тормозах и красивостях. Говорилось об удобстве инструмента.

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

а как там добавлять фичи для реакции на закрытие,сворачивание приложения? Не надо случаем свою гуйню для этого рисовать?

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