…the personal…

Aside

…is political

From Stallman’s GNU Manifesto:

Why I Must Write GNU
====================

I consider that the Golden Rule requires that if I like
a program I must share it with other people who like
it. Software sellers want to divide the users and
conquer them, making each user agree not to share with
others. I refuse to break solidarity with other users
in this way. I cannot in good conscience sign
a nondisclosure agreement or a software license
agreement. For years I worked within the Artificial
Intelligence Lab to resist such tendencies and other
inhospitalities, but eventually they had gone too far:
I could not remain in an institution where such things
are done for me against my will.

So that I can continue to use computers without
dishonor, I have decided to put together a sufficient
body of free software so that I will be able to get
along without any software that is not free. I have
resigned from the AI Lab to deny MIT any legal excuse
to prevent me from giving GNU away.

Why GNU Will Be Compatible with Unix
====================================

Unix is not my ideal system, but it is not too bad. The
essential features of Unix seem to be good ones, and
I think I can fill in what Unix lacks without spoiling
them. And a system compatible with Unix would be
convenient for many other people to adopt.

How GNU Will Be Available
=========================

GNU is not in the public domain. Everyone will be
permitted to modify and redistribute GNU, but no
distributor will be allowed to restrict its further
redistribution. That is to say, proprietary
modifications will not be allowed. I want to make sure
that all versions of GNU remain free.

Why Many Other Programmers Want to Help
=======================================

I have found many other programmers who are excited
about GNU and want to help.

Many programmers are unhappy about the
commercialization of system software. It may enable
them to make more money, but it requires them to feel
in conflict with other programmers in general rather
than feel as comrades. The fundamental act of
friendship among programmers is the sharing of
programs; marketing arrangements now typically used
essentially forbid programmers to treat others as
friends. The purchaser of software must choose between
friendship and obeying the law. Naturally, many decide
that friendship is more important. But those who
believe in law often do not feel at ease with either
choice. They become cynical and think that programming
is just a way of making money.

By working on and using GNU rather than proprietary
programs, we can be hospitable to everyone and obey the
law. In addition, GNU serves as an example to inspire
and a banner to rally others to join us in sharing.
This can give us a feeling of harmony which is
impossible if we use software that is not free. For
about half the programmers I talk to, this is an
important happiness that money cannot replace.

ubuntu, unity, usability

Standard

some people just can’t be pleased…

diff -uPr a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt    2016-09-07 00:17:02.000000000 +0100
+++ b/CMakeLists.txt    2016-10-01 15:52:04.672948670 +0100
@@ -29,7 +29,7 @@
 option(
   ENABLE_UNIT_TESTS
   "Enable Unity Unit Tests"
-  ON
+  OFF
 )

 # This is due to bug lp:668799 - qemu-arm segfaults executing msgmerge
diff -uPr a/data/com.canonical.Unity.gschema.xml b/data/com.canonical.Unity.gschema.xml
--- a/data/com.canonical.Unity.gschema.xml  2016-09-07 00:17:02.000000000 +0100
+++ b/data/com.canonical.Unity.gschema.xml  2016-10-01 12:06:33.642424463 +0100
@@ -229,7 +229,7 @@
   </schema>
   <schema path="/com/canonical/unity/gestures/" id="com.canonical.Unity.Gestures" gettext-domain="unity">
     <key type="b" name="launcher-drag">
-      <default>true</default>
+      <default>false</default>
       <summary>Multi-touch gesture to reveal the launcher.</summary>
       <description>When this is enabled, a 4 finger swipe from left to right will reveal launcher,
         provided that the launcher is set to auto-hide.</description>
diff -uPr a/launcher/Launcher.cpp b/launcher/Launcher.cpp
--- a/launcher/Launcher.cpp 2016-09-07 00:17:02.000000000 +0100
+++ b/launcher/Launcher.cpp 2016-10-01 13:47:04.931512941 +0100
@@ -1312,7 +1312,7 @@

 LauncherHideMode Launcher::GetHideMode() const
 {
-  return options()->hide_mode;
+  return LAUNCHER_HIDE_AUTOHIDE;
 }

 /* End Launcher Show/Hide logic */
@@ -1330,22 +1330,7 @@

 void Launcher::OnMonitorChanged(int new_monitor)
 {
-  UScreen* uscreen = UScreen::GetDefault();
-  auto monitor_geo = uscreen->GetMonitorGeometry(new_monitor);
-  unity::panel::Style &panel_style = panel::Style::Instance();
-  int panel_height = panel_style.PanelHeight(new_monitor);
-  RawPixel launcher_height = icon_size_ + ICON_PADDING * 2 + SIDE_LINE_WIDTH - 2;
-  cv_ = unity::Settings::Instance().em(monitor);
-  launcher_height = launcher_height.CP(cv_) - (1_em).CP(cv_);
-
-  if (launcher_position_ == LauncherPosition::LEFT)
-    Resize(nux::Point(monitor_geo.x, monitor_geo.y + panel_height), monitor_geo.height - panel_height);
-  else
-    Resize(nux::Point(monitor_geo.x, monitor_geo.y + monitor_geo.height - launcher_height), monitor_geo.width);
-
-  icon_renderer_->monitor = new_monitor;
-  icon_renderer_->scale = cv_->DPIScale();
-  SetIconSize(options()->tile_size, options()->icon_size);
+  return;
 }

 void Launcher::UpdateOptions(Options::Ptr options)
@@ -1377,9 +1362,9 @@

 void Launcher::SetHideMode(LauncherHideMode hidemode)
 {
-  bool fixed_launcher = (hidemode == LAUNCHER_HIDE_NEVER);
+  bool fixed_launcher = false;
   parent_->InputWindowEnableStruts(fixed_launcher);
-  hide_machine_.SetMode(static_cast<LauncherHideMachine::HideMode>(hidemode));
+  hide_machine_.SetMode(static_cast<LauncherHideMachine::HideMode>(LAUNCHER_HIDE_AUTOHIDE));
 }

 BacklightMode Launcher::GetBacklightMode() const
@@ -1673,31 +1658,12 @@

 int Launcher::GetIconSize() const
 {
-  return icon_size_.CP(cv_);
+  return 0;
 }

 void Launcher::Resize(nux::Point const& offset, int size)
 {
-  RawPixel width = 0, height = 0;
-  if (launcher_position_ == LauncherPosition::LEFT)
-  {
-    width = icon_size_ + ICON_PADDING * 2 + SIDE_LINE_WIDTH - 2;
-    width = width.CP(cv_);
-    height = size;
-    SetMaximumHeight(height);
-  }
-  else
-  {
-    height = icon_size_ + ICON_PADDING * 2 + SIDE_LINE_WIDTH - 2;
-    height = height.CP(cv_);
-    width = size;
-    SetMaximumWidth(width);
-  }
-
-  SetGeometry(nux::Geometry(0, 0, width, height));
-  parent_->SetGeometry(nux::Geometry(offset.x, offset.y, width, height));
-
-  ConfigureBarrier();
+  return;
 }

 void Launcher::OnIconNeedsRedraw(AbstractLauncherIcon::Ptr const& icon, int icon_monitor)
@@ -1824,280 +1790,7 @@

 void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
 {
-  nux::Geometry const& base = GetGeometry();
-  nux::Geometry bkg_box;
-  std::list<RenderArg> args;
-  std::list<RenderArg>::reverse_iterator rev_it;
-  float launcher_alpha = 1.0f;
-
-  nux::ROPConfig ROP;
-  ROP.Blend = false;
-  ROP.SrcBlend = GL_ONE;
-  ROP.DstBlend = GL_ONE_MINUS_SRC_ALPHA;
-
-  bool force_show_window;
-  nux::Geometry const& geo_absolute = GetAbsoluteGeometry();
-  RenderArgs(args, bkg_box, &launcher_alpha, geo_absolute, force_show_window);
-
-  if (launcher_position_ == LauncherPosition::LEFT)
-    bkg_box.width -= SIDE_LINE_WIDTH.CP(cv_);
-  else
-    bkg_box.height -= SIDE_LINE_WIDTH.CP(cv_);
-
-  if (options()->hide_mode != LAUNCHER_HIDE_NEVER &&
-      bkg_box.x + bkg_box.width <= 0 &&
-      hide_machine_.reveal_progress <= 0 &&
-      !force_show_window)
-  {
-    parent_->ShowWindow(false);
-  }
-
-  nux::Color clear_colour = nux::Color(0x00000000);
-
-  // clear region
-  GfxContext.PushClippingRectangle(base);
-  gPainter.PushDrawColorLayer(GfxContext, base, clear_colour, true, ROP);
-
-  if (Settings::Instance().low_gfx() == false)
-  {
-    GfxContext.GetRenderStates().SetBlend(true);
-    GfxContext.GetRenderStates().SetPremultipliedBlend(nux::SRC_OVER);
-    GfxContext.GetRenderStates().SetColorMask(true, true, true, true);
-  }
-
-  int push_count = 1;
-
-  if (launcher_position_ == LauncherPosition::LEFT)
-    GfxContext.PushClippingRectangle(nux::Geometry(base.x, bkg_box.y, base.width, bkg_box.height));
-  else
-    GfxContext.PushClippingRectangle(nux::Geometry(bkg_box.x, base.y, bkg_box.width, base.height));
-
-  float reveal_progress = hide_machine_.reveal_progress;
-
-  if ((reveal_progress > 0 || last_reveal_progress_ > 0) && launcher_pressure_effect_.IsValid())
-  {
-    if (std::abs(last_reveal_progress_ - reveal_progress) <= .1f)
-    {
-      last_reveal_progress_ = reveal_progress;
-    }
-    else
-    {
-      if (last_reveal_progress_ > reveal_progress)
-        last_reveal_progress_ -= .1f;
-      else
-        last_reveal_progress_ += .1f;
-    }
-    nux::Color pressure_color = nux::color::White * last_reveal_progress_;
-    nux::TexCoordXForm texxform_pressure;
-
-    int pressure_y = 0, pressure_width = 0, pressure_height = 0;
-    if (launcher_position_ == LauncherPosition::LEFT)
-    {
-      pressure_y = base.y;
-      pressure_width = launcher_pressure_effect_->GetWidth();
-      pressure_height = base.height;
-    }
-    else
-    {
-      pressure_y = base.y + base.height - SIDE_LINE_WIDTH.CP(cv_) - launcher_pressure_effect_->GetHeight();
-      pressure_width = base.width;
-      pressure_height = launcher_pressure_effect_->GetHeight();
-    }
-
-    GfxContext.QRP_1Tex(base.x, pressure_y, pressure_width, pressure_height,
-                        launcher_pressure_effect_->GetDeviceTexture(),
-                        texxform_pressure,
-                        pressure_color);
-  }
-
-  if (!Settings::Instance().low_gfx())
-  {
-    if (IsOverlayOpen() && bg_effect_helper_.enabled)
-    {
-      nux::ObjectPtr<nux::IOpenGLBaseTexture> blur_texture;
-
-      bool visible = false;
-      if ((launcher_position_ == LauncherPosition::LEFT && (bkg_box.x + bkg_box.width > 0)) ||
-          (launcher_position_ == LauncherPosition::BOTTOM && (bkg_box.y < bkg_box.height)))
-        visible = true;
-
-      if (BackgroundEffectHelper::blur_type != unity::BLUR_NONE && visible)
-      {
-        blur_texture = bg_effect_helper_.GetBlurRegion();
-      }
-      else
-      {
-        blur_texture = bg_effect_helper_.GetRegion();
-      }
-
-      if (blur_texture.IsValid())
-      {
-        nux::TexCoordXForm texxform_blur_bg;
-        texxform_blur_bg.flip_v_coord = true;
-        texxform_blur_bg.SetTexCoordType(nux::TexCoordXForm::OFFSET_COORD);
-        texxform_blur_bg.uoffset = ((float) base.x) / geo_absolute.width;
-        texxform_blur_bg.voffset = ((float) base.y) / geo_absolute.height;
-
-        GfxContext.PushClippingRectangle(bkg_box);
-
-#ifndef NUX_OPENGLES_20
-        if (GfxContext.UsingGLSLCodePath())
-        {
-          gPainter.PushDrawCompositionLayer(GfxContext, base,
-                                            blur_texture,
-                                            texxform_blur_bg,
-                                            nux::color::White,
-                                            options()->background_color, nux::LAYER_BLEND_MODE_OVERLAY,
-                                            true, ROP);
-        }
-        else
-        {
-          gPainter.PushDrawTextureLayer(GfxContext, base,
-                                        blur_texture,
-                                        texxform_blur_bg,
-                                        nux::color::White,
-                                        true,
-                                        ROP);
-        }
-#else
-        gPainter.PushDrawCompositionLayer(GfxContext, base,
-                                          blur_texture,
-                                          texxform_blur_bg,
-                                          nux::color::White,
-                                          options()->background_color, nux::LAYER_BLEND_MODE_OVERLAY,
-                                          true, ROP);
-#endif
-        GfxContext.PopClippingRectangle();
-
-        push_count++;
-      }
-
-      unsigned int alpha = 0, src = 0, dest = 0;
-      GfxContext.GetRenderStates().GetBlend(alpha, src, dest);
-
-      // apply the darkening
-      GfxContext.GetRenderStates().SetBlend(true, GL_ZERO, GL_SRC_COLOR);
-      gPainter.Paint2DQuadColor(GfxContext, bkg_box, nux::Color(0.9f, 0.9f, 0.9f, 1.0f));
-      GfxContext.GetRenderStates().SetBlend (alpha, src, dest);
-
-      // apply the bg colour
-#ifndef NUX_OPENGLES_20
-      if (GfxContext.UsingGLSLCodePath() == false)
-        gPainter.Paint2DQuadColor(GfxContext, bkg_box, options()->background_color);
-#endif
-
-      // apply the shine
-      GfxContext.GetRenderStates().SetBlend(true, GL_DST_COLOR, GL_ONE);
-      nux::TexCoordXForm texxform;
-      texxform.SetTexCoordType(nux::TexCoordXForm::OFFSET_COORD);
-      texxform.SetWrap(nux::TEXWRAP_CLAMP, nux::TEXWRAP_CLAMP);
-      texxform.uoffset = (1.0f / launcher_sheen_->GetWidth()); // TODO (gord) don't use absolute values here
-      texxform.voffset = (1.0f / launcher_sheen_->GetHeight()) * panel::Style::Instance().PanelHeight(icon_renderer_->monitor);
-      GfxContext.QRP_1Tex(base.x, base.y, base.width, base.height,
-                          launcher_sheen_->GetDeviceTexture(),
-                          texxform,
-                          nux::color::White);
-
-      //reset the blend state
-      GfxContext.GetRenderStates().SetBlend (alpha, src, dest);
-    }
-    else
-    {
-      nux::Color color = options()->background_color;
-      color.alpha = options()->background_alpha;
-      gPainter.Paint2DQuadColor(GfxContext, bkg_box, color);
-    }
-  }
-  else
-  {
-    nux::Color color = options()->background_color;
-    color.alpha = 1.0f;
-    gPainter.Paint2DQuadColor(GfxContext, bkg_box, color);
-  }
-
-  GfxContext.GetRenderStates().SetPremultipliedBlend(nux::SRC_OVER);
-
-  // XXX: It would be very cool to move the Rendering part out of the drawing part
-  icon_renderer_->PreprocessIcons(args, base);
-  EventLogic();
-
-
-  /* draw launcher */
-  for (rev_it = args.rbegin(); rev_it != args.rend(); ++rev_it)
-  {
-    if ((*rev_it).stick_thingy)
-    {
-      if (launcher_position_ == LauncherPosition::LEFT)
-        gPainter.Paint2DQuadColor(GfxContext,
-                                  nux::Geometry(bkg_box.x, (*rev_it).render_center.y - 3, bkg_box.width, 2),
-                                  nux::Color(0xAAAAAAAA));
-      else
-        gPainter.Paint2DQuadColor(GfxContext,
-                                  nux::Geometry((*rev_it).render_center.x - 3, bkg_box.y, 2, bkg_box.height),
-                                  nux::Color(0xAAAAAAAA));
-    }
-
-    if ((*rev_it).skip)
-      continue;
-
-    icon_renderer_->RenderIcon(GfxContext, *rev_it, bkg_box, base);
-  }
-
-  if (!IsOverlayOpen() && launcher_position_ == LauncherPosition::LEFT)
-  {
-    const double right_line_opacity = 0.15f * launcher_alpha;
-
-    gPainter.Paint2DQuadColor(GfxContext,
-                              nux::Geometry(bkg_box.x + bkg_box.width,
-                                            bkg_box.y,
-                                            SIDE_LINE_WIDTH.CP(cv_),
-                                            bkg_box.height),
-                              nux::color::White * right_line_opacity);
-
-    gPainter.Paint2DQuadColor(GfxContext,
-                              nux::Geometry(bkg_box.x,
-                                            bkg_box.y,
-                                            bkg_box.width,
-                                            8),
-                              nux::Color(0x70000000),
-                              nux::Color(0x00000000),
-                              nux::Color(0x00000000),
-                              nux::Color(0x70000000));
-  }
-
-  if (!IsOverlayOpen() && launcher_position_ == LauncherPosition::BOTTOM)
-  {
-    const double top_line_opacity = 0.15f * launcher_alpha;
-
-    gPainter.Paint2DQuadColor(GfxContext,
-                              nux::Geometry(bkg_box.x,
-                                            bkg_box.y,
-                                            bkg_box.width,
-                                            SIDE_LINE_WIDTH.CP(cv_)),
-                              nux::color::White * top_line_opacity);
-
-    gPainter.Paint2DQuadColor(GfxContext,
-                              nux::Geometry(bkg_box.x,
-                                            bkg_box.y,
-                                            bkg_box.width,
-                                            8),
-                              nux::Color(0x70000000),
-                              nux::Color(0x00000000),
-                              nux::Color(0x00000000),
-                              nux::Color(0x70000000));
-  }
-
-  // FIXME: can be removed for a bgk_box->SetAlpha once implemented
-  GfxContext.GetRenderStates().SetPremultipliedBlend(nux::DST_IN);
-  nux::Color alpha_mask = nux::Color(0xFFAAAAAA) * launcher_alpha;
-  gPainter.Paint2DQuadColor(GfxContext, bkg_box, alpha_mask);
-
-  GfxContext.GetRenderStates().SetColorMask(true, true, true, true);
-  GfxContext.GetRenderStates().SetPremultipliedBlend(nux::SRC_OVER);
-
-  gPainter.PopBackground(push_count);
-  GfxContext.PopClippingRectangle();
-  GfxContext.PopClippingRectangle();
+    return;
 }

 long Launcher::PostLayoutManagement(long LayoutResult)
diff -uPr a/launcher/LauncherOptions.cpp b/launcher/LauncherOptions.cpp
--- a/launcher/LauncherOptions.cpp  2016-09-07 00:17:02.000000000 +0100
+++ b/launcher/LauncherOptions.cpp  2016-10-01 13:25:04.501922065 +0100
@@ -32,10 +32,10 @@
   , urgent_animation(URGENT_ANIMATION_WIGGLE)
   , auto_hide_animation(FADE_AND_SLIDE)
   , backlight_mode(BACKLIGHT_NORMAL)
-  , reveal_trigger(RevealTrigger::EDGE)
+  , reveal_trigger(RevealTrigger::CORNER)
   , background_color(nux::Color(95, 18, 45))
   , background_alpha(0.6667)
-  , icon_size(48)
+  , icon_size(0)
   , tile_size(54)
   , super_tap_duration(250)
   , edge_decay_rate(1500)
Only in a
diff -uPr a/plugins/unityshell/unityshell.xml.in b/plugins/unityshell/unityshell.xml.in
--- a/plugins/unityshell/unityshell.xml.in  2016-09-07 00:17:02.000000000 +0100
+++ b/plugins/unityshell/unityshell.xml.in  2016-10-01 12:06:33.646424379 +0100
@@ -240,7 +240,7 @@
                     <_short>Key to show the Dash, Launcher and Help Overlay</_short>
                     <_long>Holding this key makes the Launcher and Help Overlay appear. Tapping it opens the Dash.</_long>
                     <tap_detection>false</tap_detection>
-                    <default><Super></default>
+                    <default>Disabled</default>
                 </option>

                 <option name="keyboard_focus" type="key">
@@ -283,7 +283,7 @@
                     <_long>Make the Launcher hide automatically after some time of inactivity.</_long>
                     <min>0</min>
                     <max>1</max>
-                    <default>0</default>
+                    <default>1</default>
                     <desc>
                         <value>0</value>
                         <_name>Never</_name>
@@ -323,7 +323,7 @@
                     <_long></_long>
                     <min>0</min>
                     <max>1</max>
-                    <default>0</default>
+                    <default>1</default>
                     <desc>
                         <value>0</value>
                         <_name>Left Edge</_name>
@@ -353,7 +353,7 @@
                 <option name="launcher_capture_mouse" type="bool">
                     <_short>Launcher Capture Mouse</_short>
                     <_long>Determines if the Launcher's edges will capture the mousepointer.</_long>
-                    <default>true</default>
+                    <default>false</default>
                 </option>

                 <option name="scroll_inactive_icons" type="bool">
@@ -371,8 +371,8 @@
                 <option name="edge_responsiveness" type="float">
                     <_short>Launcher Reveal Edge Responsiveness</_short>
                     <_long>A conglomerate setting that modifies the overall responsiveness of the Launcher reveal.</_long>
-                    <default>2.0</default>
-                    <min>0.2</min>
+                    <default>0.0</default>
+                    <min>0.0</min>
                     <max>8.0</max>
                     <precision>0.1</precision>
                 </option>
@@ -425,8 +425,8 @@
                 <option name="icon_size" type="int">
                     <_short>Launcher Icon Size</_short>
                     <_long>The size of the icons in the Launcher.</_long>
-                    <default>48</default>
-                    <min>8</min>
+                    <default>0</default>
+                    <min>0</min>
                     <max>64</max>
                     <precision>1</precision>
                 </option>
@@ -464,7 +464,7 @@
                     <_long>The icon animation playing during the launch of a process.</_long>
                     <min>0</min>
                     <max>2</max>
-                    <default>1</default>
+                    <default>0</default>
                     <desc>
                         <value>0</value>
                         <_name>None</_name>
@@ -484,7 +484,7 @@
                     <_long>The icon animation playing when a Launcher Icon is in the urgent state.</_long>
                     <min>0</min>
                     <max>2</max>
-                    <default>2</default>
+                    <default>0</default>
                     <desc>
                         <value>0</value>
                         <_name>None</_name>
diff -uPr a/unity-shared/UnitySettings.cpp b/unity-shared/UnitySettings.cpp
--- a/unity-shared/UnitySettings.cpp    2016-09-07 00:17:02.000000000 +0100
+++ b/unity-shared/UnitySettings.cpp    2016-10-01 12:13:21.684746346 +0100
@@ -72,7 +72,7 @@
 const std::string DASH_TAP = "dash-tap";
 const std::string WINDOWS_DRAG_PINCH = "windows-drag-pinch";

-const int DEFAULT_LAUNCHER_SIZE = 64;
+const int DEFAULT_LAUNCHER_SIZE = 0;
 const int MINIMUM_DESKTOP_HEIGHT = 800;
 const int GNOME_SETTINGS_CHANGED_WAIT_SECONDS = 1;
 const double DEFAULT_DPI = 96.0f;
@@ -473,7 +473,7 @@
   }
   else
   {
-    pimpl->launcher_sizes_[monitor] = launcher_size;
+    pimpl->launcher_sizes_[monitor] = 0;
   }
 }

h/t: jtld‘s self-answered question on askubuntu.com

  • the patch above works with yakkety’s unity 7.5, and with a small change to the path of com.canonical.Unity.gschema.xml will also apply cleanly on xenial’s unity 7.4,
  • ’tis a butchery, of course, nothing subtle, nothing proper, works for me; ymmv

A hack most terrible

Aside

XSL stylesheet for transforming XML jabber-GG transport user data into spectrum2 sqlite user database:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" indent="no"/>

<xsl:template match="/user">
  BEGIN TRANSACTION;
  INSERT OR REPLACE INTO users (jid, uin, password, language, encoding, last_login, vip)
    VALUES
    ('<xsl:value-of select="/user/jid"/>',
     '<xsl:value-of select="/user/uin"/>',
     '<xsl:value-of select="/user/password"/>',
     '',
     '',
     DATETIME('NOW'),
     0);
  COMMIT;

<xsl:for-each select="/user/userlist/contact">
  BEGIN TRANSACTION;
  INSERT INTO buddies (user_id, uin, subscription, groups, nickname, flags)
     select
       id,
       '<xsl:value-of select="@uin"/>',
       '<xsl:value-of select="@subscribe"/>',
       'Transport Gadu-Gadu',
       '',
       0
     from users where uin='<xsl:value-of select="/user/uin"/>';
  COMMIT;
</xsl:for-each>

  BEGIN TRANSACTION;
  INSERT INTO users_settings (user_id, var, type, value)
    select id, 'enable_transport', 4, '1' from users where uin='<xsl:value-of select="/user/uin"/>';
  COMMIT;
  BEGIN TRANSACTION;
  INSERT INTO users_settings (user_id, var, type, value)
    select id, 'send_headlines', 4, '0' from users where uin='<xsl:value-of select="/user/uin"/>';
  COMMIT;
  BEGIN TRANSACTION;
  INSERT INTO users_settings (user_id, var, type, value)
    select id, 'stay_connected', 4, '0' from users where uin='<xsl:value-of select="/user/uin"/>';
  COMMIT;

</xsl:template>
</xsl:stylesheet>

I’m almost sorry. (It worked, though.)